3.4 KiB
Проверка векторного поиска по коду 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-кандидатов.