Гибридный RAG + Knowledge Graph
3 метода поиска × RRF-фузия — RAGAS faithfulness 0.91 на 200 вопросах по корпоративной документации (3K+ страниц)
Что не работает
Корпоративная документация 3K+ страниц (техническая, бизнес, регуляторная). Vector search находит семантически похожие документы, но пропускает точные совпадения и связи между сущностями. На 200 контрольных вопросах чистый vector search давал RAGAS faithfulness 0.67.
Архитектурный подход
Три параллельных метода поиска: Vector (Qdrant HNSW), BM25 (точные совпадения), Knowledge Graph (Neo4j, связи между сущностями). Результаты объединяются через Reciprocal Rank Fusion (RRF). Качество измеряется через RAGAS eval на 200 вопросах с экспертной разметкой.
Что было сложно
Entity resolution в графе знаний — NLP-задача без идеального решения: «ПГК», «Первая грузовая» и «PGK» должны быть одним узлом. Подбор весов RRF (vector 0.4, BM25 0.3, graph 0.3) — итеративный процесс на 200 контрольных вопросах, каждая итерация требует полного пересчёта. Semantic chunking для кода и текста — принципиально разные алгоритмы, AST-based для кода ломается на невалидных фрагментах.
Моя роль и вклад
Архитектор и единственный разработчик
Спроектировал и реализовал с нуля полную RAG-систему: выбор и настройка Qdrant HNSW, граф знаний в Neo4j с entity resolution, BM25 индекс, RRF-фузия с подбором весов. Провёл RAGAS eval на 200 контрольных вопросах. Внедрил как внутренний инструмент для работы с корпоративной документацией.
Как это выглядит
Реальные скриншоты
Архитектура системы
Как это работает
Semantic chunking через AST для кода и paragraph-based для текста. Entity extraction + resolution строит граф знаний в Neo4j. BM25 индекс для keyword search. RRF агрегирует ранжирования из трёх источников с подбором весов (vector 0.4, BM25 0.3, graph 0.3). RAGAS eval: faithfulness, relevancy, context precision.
Почему именно так
RRF-фузия вместо каскада
Каскадный поиск: сначала vector, потом BM25 на результатах, потом graph
Каскад теряет документы, которые не прошли первый этап. RRF: каждый метод ищет независимо, затем ранжирования сливаются. Ни один релевантный документ не теряется.
+25% точности по сравнению с каскадным подходом
Результаты
- 01
- RAGAS faithfulness: 0.67 → 0.91 (на 200 контрольных вопросах)
- 02
- MRR (Mean Reciprocal Rank): 0.48 → 0.79
- 03
- 3 метода поиска параллельно, RRF-фузия с подобранными весами
- 04
- Knowledge Graph: Neo4j, ~2K сущностей, ~8K связей
- 05
- Корпоративная документация: 3K+ страниц
Влияние на бизнес
RAGAS faithfulness с 0.67 до 0.91 на 200 контрольных вопросах по корпоративной документации (3K+ страниц). MRR с 0.48 до 0.79 — первый релевантный результат в среднем на 1-2 позиции вместо 3-4. Граф знаний (~2K сущностей, ~8K связей) выявляет связи, невидимые для vector search.
Алгоритмы и паттерны
Технологии
- Python
- Qdrant
- Neo4j
- Sentence-Transformers
- RAGAS
- FastAPI