GraphRAG на pgvector: инженерный разбор production-системы
Как устроен SQL-first GraphRAG c гибридным retrieval, Neo4j и диагностикой качества поиска. Подход, который подходит для реальных корпоративных сценариев.
Executive Summary
Это не demo-страница, а прикладной контур GraphRAG: semantic + keyword/fuzzy retrieval, graph enrichment, reranking и управляемая диагностика.
Система разворачивается в Docker, предсказуемо тюнингуется через флаги и пороги и помогает снижать риск галлюцинаций за счет retrieval-first подхода.
AI Overview
Архитектура
FastAPI + PostgreSQL/pgvector + Neo4j + LLM.
Retrieval
Hybrid-поиск, optional query correction и reranker.
GraphRAG
Граф добавляет связи между сущностями и улучшает recall.
Diagnostics
Поля retrieval_query, corrected_query, chunks, graph_context и latency.
Architecture Overview
User Question
↓
Query Rewrite
↓
Hybrid Retrieval
↓
Graph Enrichment
↓
Reranker
↓
Context Builder
↓
LLM Generation
↓
Answer + Citations
Поведение пайплайна управляется флагами: hybrid_enabled, graph_enabled, reranker_enabled, correction_enabled, score_threshold и graph_score_threshold.
Компоненты и роли
Как работает POST /ask
1) Входные параметры
question, top_k, graph_top_k, graph_hops, флаги retrieval/graph/rerank/citations, optional system_prompt и chat_history.
2) Нормализация и rewrite
История диалога обрабатывается отдельно, после чего формируется retrieval-friendly запрос.
3) Hybrid retrieval + graph
Комбинируются semantic и keyword/fuzzy каналы, затем добавляется графовый контекст по ограничениям graph_top_k/graph_hops.
4) Генерация и диагностика
LLM отвечает по собранному контексту, а API возвращает answer и диагностические поля для контроля качества.
retrieval_query vs corrected_query
retrieval_query показывает реальный запрос, ушедший в retrieval-пайплайн (с учетом history rewrite и коррекции ветки поиска).
corrected_query отражает коррекцию исходного вопроса пользователя. Такая развязка удобна для отладки и продуктовой аналитики.
Anti-hallucination подход
Retrieval-first generation
Ответ опирается на найденный контекст, а не на свободную генерацию.
Citations + structured filtering
Источники и метаданные помогают держать ответ в проверяемых границах.
Graph enrichment + reranking
Дополнительные связи и переоценка кандидатов повышают точность.
Thresholds + fallback
Слабые кандидаты отсекаются, при нехватке контекста система честно сообщает об ограничениях.
Docker в продакшне
Стек хорошо масштабируется и наблюдается в контейнерной инфраструктуре.
Обычно: api, postgres+pgvector, neo4j, иногда redis/queue для ingestion.
Флаги конфигурации позволяют быстро переключать профиль точность/скорость.
Диагностика retrieval-этапов облегчает эксплуатацию и инцидент-менеджмент.
Одинаковое окружение для dev/stage/prod уменьшает риск регрессий.
Типовые причины провалов RAG
Слабый chunking
Неправильный размер/границы чанков ухудшают recall и качество ответа.
Отсутствие hybrid-канала
Чистые embeddings пропускают точные названия, коды и ключевые токены.
Нет прозрачной диагностики
Без retrieval_query/chunks трудно понять, почему ответ получился нерелевантным.
Нет fallback-стратегии
Система должна уметь корректно сказать, что контекста недостаточно.
Сравнение подходов
GraphRAG на pgvector
Хороший выбор для SQL-first среды и тесной интеграции с существующей BI/данной инфраструктурой.
Qdrant / Weaviate
Сильны как специализированные vector DB, удобны для быстрого старта и масштабирования retrieval-слоя.
Практический вывод
Выбор зависит от текущего стека, требований к наблюдаемости и зрелости команды эксплуатации.
Важно: критичен не бренд БД, а качество пайплайна: chunking, hybrid retrieval, reranking, фильтры, мониторинг и fallback.
FAQ
Можно ли запускать локально без внешних API?
Да. GraphRAG-контур, vector/graph storage и большинство этапов retrieval могут работать в локальной инфраструктуре.
Когда граф действительно нужен?
Когда важны связи между сущностями и многошаговые косвенные зависимости, которые плохо ловятся только векторным поиском.
Что сильнее влияет на качество: модель или retrieval?
В прикладных задачах чаще критичнее retrieval-контур: данные, chunking, фильтры, ranking и диагностика.
Как быстро получить пилот?
С рабочим Docker-стеком и подготовленным корпусом документов пилот обычно собирается за несколько итераций.
Практический итог
GraphRAG на pgvector с гибридным retrieval и graph enrichment дает управляемый путь к enterprise AI search: прозрачно, воспроизводимо и с контролем качества.
Связаться в Telegram →