# Проверка векторного поиска по коду 1С

Дата проверки: 2026-07-26. База: `upo_test`.

## Контур

- актуальный SQL-derived индекс адаптера: 1 080 модулей, 22 538 chunks;
- очередь изменений: 0, snapshot чистый;
- модель: `Qwen3-Embedding-0.6B-GGUF`, `Q8_0`;
- runtime: `llama.cpp`, CPU-only на Ryzen 9 5900X;
- endpoint: `http://docker-gpu.cin.su:8082/v1/embeddings`;
- вектор модели: 1024, сохраняемый Matryoshka-срез: 384;
- RTX 4090 сервисом эмбеддингов не используется.

## Измерения

Прогретый короткий запрос к endpoint: 0,03–0,08 с. Индексация 100 процедур и
функций длиной до 1 000 символов заняла 54,52 с, ошибок и конфликтов нет.

Контрольные запросы к строгому поиску:

| Запрос | Top-1 | Время |
|---|---|---:|
| проверить является ли объект документом | `ЭтоДокумент` | 0,70 с |
| преобразовать число из строки | `ЧислоИзСтроки` | 0,44 с |
| добавить реквизит в HTML представление | `ДобавитьРеквизитКHTML` | 0,50 с |

Каждый результат был повторно проверен по live SQL. Чтение `read_selector`
вернуло точное тело `ЭтоДокумент`, а не сохранённый текст из векторного кеша.

## Решение по отдельной векторной БД

Пока не добавлять. SQLite остаётся достаточным для текущего инкрементального
контура и проще связывает `chunk_id`, `text_sha1`, outbox и проверку
актуальности. Векторный кеш не является источником истины.

Повторно оценить ANN-хранилище после заполнения не менее 5 000 актуальных
384-мерных vectors. Практические триггеры:

- p95 строгого поиска выше 1 секунды;
- более 50 000 актуальных chunks;
- SQLite-файл адаптера больше 1 ГиБ из-за embeddings.

Если триггер сработает, Qdrant/pgvector должен быть только производной копией:
ключ `chunk_id`, обязательный `text_sha1`, namespace базы/модели/размерности,
удаление через outbox. Перед ответом адаптер всё равно проверяет live SQL.

## Выявленный следующий приоритет

Глобально найденные активные модули пока часто имеют `object_ref=null`.
Безопасный `read_selector` и имя процедуры присутствуют, но публичное имя
владельца 1С не восстановлено. Это не проблема вектора; это неполный
`metadata.module_owner_cache`. Следующая доработка — фоновое построение
name-first карты владельцев и lazy backfill только для top-кандидатов.
