2.1 KiB
2.1 KiB
1C RAG Search
Первый поиск по корпусу реализован как локальный lexical BM25-подобный индекс.
Он нужен для ранней проверки:
- документы попали в корпус;
- чанки имеют нормальный размер;
- поиск возвращает ожидаемые источники;
- ответы модели можно снабжать найденным контекстом.
Это не финальная семантическая RAG-база. Позже добавим embedding-модель и vector store.
Что уже есть:
- нормализация русских окончаний для частых 1С-терминов;
- алиасы
1с/bsl,справочник/catalog,реквизиты/attribute,метаданные/metadata; - смысловые
source_type:metadata,bsl,query,safety,docs; - RAG-профили и auto-routing по вопросу;
- бонус за совпадение в заголовке чанка;
- опциональная дедупликация результатов по документу;
- smoke-проверка качества поиска.
Build Index
python scripts/build_1c_rag_index.py
Для синтетического примера:
python scripts/build_1c_rag_index.py --corpus plugins/1c/datasets/prepared/rag_corpus.example.jsonl --output plugins/1c/datasets/prepared/rag_index.example.json
Search
python scripts/search_1c_rag.py "метаданные справочника" --index plugins/1c/datasets/prepared/rag_index.example.json
python scripts/search_1c_rag.py "реквизиты справочника номенклатура" `
--index plugins/1c/datasets/prepared/rag_index.example.json `
--profile auto `
--limit 5 `
--candidate-limit 30 `
--dedupe-by-document
Quality Smoke
python scripts/check_1c_rag_quality.py --index plugins/1c/datasets/prepared/rag_index.example.json --print