Перейти к содержимому
← Все кейсыHybrid RetrievalAI

Гибридный 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 контрольных вопросах. Внедрил как внутренний инструмент для работы с корпоративной документацией.

Демо

Как это выглядит

Скриншоты

Реальные скриншоты

Архитектура

Архитектура системы

QueryVector SearchQdrant HNSW12 docsBM25Keyword Index8 docsGraph TraversalNeo4j5 docs, ~2K/8KRRF Fusion0.4 / 0.3 / 0.3LLMAnswerRAGAS eval: faithfulness 0.91, MRR 0.79AI/LLMDataEval
Реализация

Как это работает

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.

Методы

Алгоритмы и паттерны

RAG (Vector + BM25 + Graph)Reciprocal Rank FusionKnowledge Graph (Neo4j)Entity ResolutionSemantic Chunking (AST)RAGAS evalQdrant HNSW
Стек

Технологии

  • Python
  • Qdrant
  • Neo4j
  • Sentence-Transformers
  • RAGAS
  • FastAPI

Готовы обсудить?

Если вам нужен архитектор, который строит автономные AI-системы — напишите.

Сербия (Белград) · CET/CEST · рабочие часы совпадают с EU · Опыт международных контрактов