Rychagov S.
🧠 GraphRAG · pgvector

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.

Компоненты и роли

Компонент Назначение
FastAPIAPI-слой: /ask, ingestion, debug endpoints.
PostgreSQL + pgvectorХранение эмбеддингов, чанков и метаданных; semantic retrieval.
Neo4jГрафовые связи между сущностями для enrichment.
RerankerДополнительная оптимизация релевантности перед генерацией.
Docker / ComposeВоспроизводимое и управляемое production-окружение.

Как работает POST /ask

1

1) Входные параметры

question, top_k, graph_top_k, graph_hops, флаги retrieval/graph/rerank/citations, optional system_prompt и chat_history.

2

2) Нормализация и rewrite

История диалога обрабатывается отдельно, после чего формируется retrieval-friendly запрос.

3

3) Hybrid retrieval + graph

Комбинируются semantic и keyword/fuzzy каналы, затем добавляется графовый контекст по ограничениям graph_top_k/graph_hops.

4

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