Graph-RAG и графы знаний
Ваша RAG-система не находит ответы на вопросы, требующие связи информации из разных документов? Graph-RAG строит граф знаний из ваших данных: извлекает сущности и связи, группирует в иерархические сообщества, отвечает на сложные вопросы с multi-hop reasoning. Neo4j, LangChain GraphRAG, Microsoft GraphRAG — в вашем контуре.
- Извлечение сущностей и связей из документов
- Иерархические сообщества, Leiden-кластеризация
- Multi-hop reasoning: от факта к цепочке причин
- Neo4j, NetworkX, Microsoft GraphRAG — on-premise
Когда нужен Graph-RAG
Векторный поиск не справляется, когда вопрос требует связи разрозненной информации
Multi-hop вопросы
Векторный поиск извлекает похожие фрагменты, но не видит связей между ними. Graph-RAG проходит по графу: Entity A → связь → Entity B → связь → ответ. Пример: «Какие поставщики связаны с задержками, упомянутыми в жалобах клиентов?» — требует цепочки: жалоба → продукт → поставщик → контракт.
Глобальный анализ корпуса
Вопросы типа «Какие основные темы в 1000 документов?» или «Какие риски прослеживаются во всех отчётах за год?» — векторный поиск не агрегирует информацию по корпусу. Graph-RAG строит иерархию сообществ и генерирует сводки на каждом уровне — от конкретного документа до глобальной темы.
Юридический и compliance-анализ
Связь прецедентов с нормативными актами, поиск кросс-референсов между документами, выявление противоречий в политике компании. Граф знаний показывает связи, которые не видны при простом поиске по ключевым словам.
Анализ связей и зависимостей
Цепочки поставок, организационные структуры, dependencies в ИТ-инфраструктуре. Graph-RAG находит косвенные связи: «Как изменение в одном подразделении повлияет на другие?» — через граф зависимостей, а не через семантическое сходство.
Исследование и синтез
Медицинские исследования: симптомы → диагнозы → лечение. Финансовый анализ: компания → акционер → дочерняя структура → сделка. Graph-RAG связывает разрозненные факты в осмысленную картину.
Гибридный подход: векторы + граф
Graph-RAG не заменяет векторный поиск — дополняет его. Гибридная архитектура: векторы для точных совпадений и терминов, граф для multi-hop и глобального анализа. Векторы + граф = оптимальное покрытие всех типов запросов.
Как мы строим Graph-RAG
-
01
Аудит данных и постановка задач
Изучаем типы документов, структуру данных, целевые вопросы. Определяем, какие сущности извлекать (компании, люди, продукты, события, нормативные акты), какие связи важны для бизнеса. Выбираем подход: Microsoft GraphRAG (open-source), LangChain GraphRAG, или кастомный пайплайн.
-
02
Извлечение сущностей и связей
Разбиваем документы на текстовые единицы. LLM извлекает сущности (люди, организации, концепты), отношения (принадлежит, связан, влияет) и ключевые утверждения. Используем доменно-специфичные промпты. Для русского языка — Qwen 3.6, DeepSeek V4, GLM-5.1 с инструктивным fine-tuning.
-
03
Построение графа и кластеризация
Сущности становятся узлами, связи — рёбрами. Алгоритм Leiden иерархически группирует узлы в сообщества. Для каждого сообщества на каждом уровне генерируется LLM-сводка. Результат: иерархический граф от конкретных документов до глобальных тем.
-
04
Настройка query-стратегий
Настраиваем три режима поиска: Global Search (вопросы по всему корпусу через сводки сообществ), Local Search (вопросы по конкретной сущности с расширением до соседей), DRIFT Search (гибрид: глобальный primer + локальное уточнение). Для простых запросов — fallback на векторный поиск.
-
05
Интеграция и пилот
Разворачиваем графовую БД (Neo4j) в вашем контуре, настраиваем query-эндпоинты, интегрируем с существующей RAG-системой. Тестируем на реальных вопросах, сравниваем с векторным поиском. Передаём документацию и инструменты мониторинга.
Graph-RAG vs Vector RAG
Когда граф даёт преимущество, а когда — избыточен
| Критерий | Vector RAG | Graph-RAG |
|---|---|---|
| Тип вопросов | Одношаговые, точные совпадения | Многошаговые, синтез, глобальный анализ |
| Метрика Microsoft | 50% правильных ответов | 80% правильных ответов |
| Multi-hop reasoning | Не работает | Основное преимущество |
| Глобальный анализ | Невозможно | Иерархические сводки сообществ |
| Стоимость индексации | Низкая | Высокая (100–1000x vector RAG) |
| Стоимость запроса | Низкая (~$0.002) | Выше (~$0.012) |
| Задержка | ~300 мс | ~1200 мс |
| Лучший для | Поиск по термину, точный ответ | Связи, темы, причинно-следственные цепочки |
Когда Graph-RAG не нужен
Если ваши вопросы одношаговые («Какой срок поставки по договору №247?», «Что такое X?») — векторный поиск с BM25 и reranking справится лучше и дешевле. Graph-RAG — для вопросов, требующих связи разрозненной информации: «Какие риски прослеживаются во всех отчётах?», «Как эта проблема связана с другими инцидентами?». Индексация Graph-RAG в 100–1000 раз дороже векторной — экономическая целесообразность определяется типом вопросов.
Технологический стек
Инструменты для построения графов знаний и Graph-RAG
Neo4j
Графовая БД №1 для enterprise. Cypher-запросы, нативная поддержка графовых алгоритмов (PageRank, community detection, shortest path). Neo4j Vector Index для гибридного поиска: векторы + граф в одной БД.
NetworkX
Python-библиотека для анализа графов. Алгоритмы кластеризации (Leiden, Louvain), centrality measures, community detection. Используется как промежуточный слой для анализа и визуализации графа знаний.
Microsoft GraphRAG
Open-source фреймворк от Microsoft Research. Автоматическое извлечение сущностей и связей, Leiden-кластеризация, иерархические сводки, Global/Local/DRIFT search. 29 800+ звёзд на GitHub. Работает с любой LLM: Qwen, DeepSeek, GLM.
LangChain GraphRAG
LangChain-интеграция для построения графов знаний. GraphCypherQAChain, LoadGraph, DocumentGraphTransformer. Подходит для кастомных пайплайнов с гибкой настройкой извлечения и query-стратегий.
LLM для извлечения
Qwen 3.6-27B, DeepSeek V4, GLM-5.1 — для извлечения сущностей и связей. Инструктивное дообучение на доменных данных повышает точность извлечения на 15–25%. Auto-tuning промптов (Microsoft GraphRAG v1.1+).
LazyGraphRAG
Оптимизация Microsoft GraphRAG: индексация за 0.1% стоимости полного GraphRAG. Компромисс: чуть ниже качество Global Search, но сопоставимо с полным GraphRAG при значительной экономии.
Техническая глубина Graph-RAG
Как устроен Graph-RAG
Graph-RAG — это не просто граф. Это структурированный, иерархический подход к RAG, который решает три проблемы векторного поиска:
Проблема 1: Одношаговое мышление. Vector RAG извлекает похожие фрагменты, но не видит связей. Graph-RAG проходит по графу: Entity A → связь → Entity B → связь → ответ. Для вопросов типа «Как изменение в подразделении X повлияет на подразделение Y?» — это единственный рабочий подход.
Проблема 2: Отсутствие глобальной структуры. Когда нужно понять общую картину — ключевые темы, основные действующие лица, повторяющиеся паттерны — векторный поиск даёт фрагменты, а не синтез. Graph-RAG строит иерархию сообществ и генерирует сводки на каждом уровне — от конкретного документа до глобальной темы.
Проблема 3: Потеря связей. Документы — это сеть связей: люди, места, организации, события, концепты. Векторные эмбеддинги сжимают всю эту структуру в одну точку в пространстве. Связи исчезают. Graph-RAG сохраняет структуру.
Пайплайн построения графа знаний
Шаг 1: Сегментация. Разбиваем corpus на TextUnits — абзацы или семантические блоки. Каждый TextUnit получает уникальный ID для последующих ссылок.
Шаг 2: Извлечение сущностей и связей. LLM анализирует каждый TextUnit и извлекает:
- Сущности: люди, организации, концепты, события, нормативные акты
- Отношения: «принадлежит», «связан», «влияет», «регулирует», «является частью»
- Утверждения: ключевые факты, которые нужно запомнить
Для русского языка используем Qwen 3.6, DeepSeek V4 или GLM-5.1 с доменно-специфичными промптами. Auto-tuning промптов (Microsoft GraphRAG v1.1+) автоматически анализирует язык вашего датасета и генерирует оптимальные промпты.
Шаг 3: Построение графа. Сущности — узлы, отношения — рёбра. Рёбра имеют веса (частота связей). Алгоритм Leiden иерархически группирует узлы в сообщества:
- Level 0: сырой граф
- Level 1: тесно связанные узлы в сообщества
- Level 2: сообщества объединяются в более крупные
- И так далее, пока сообщества можно осмысленно разделить
Шаг 4: Сводки сообществ. Для каждого сообщества на каждом уровне LLM генерирует сводку: какие сущности, как связаны, какие темы и паттерны, какие документы подтверждают.
Шаг 5: Эмбеддинги. Генерируем эмбеддинги для описаний сущностей, сводок сообществ и текстовых единиц. Храним в векторном хранилище для семантического поиска.
Режимы поиска
Global Search — для вопросов по всему корпусу. Выбираем сводки сообществ с нужного уровня иерархии, генерируем частичные ответы, объединяем в комплексный ответ. Для вопросов типа «Какие основные темы в нашем корпусе документов?».
Local Search — для вопросов по конкретной сущности. Находим сущность в графе, расширяемся до соседей, извлекаем текстовые единицы, строим контекст из локального подграфа. Для вопросов типа «Что мы знаем о компании X?».
DRIFT Search — гибридный подход. Primer: сравниваем запрос со сводками сообществ, генерируем начальный ответ и follow-up вопросы. Follow-up: исполняем follow-up через Local Search. Итеративно уточняем. Для запросов, требующих и широты, и глубины.
Basic Search — fallback на стандартный векторный поиск (top-k vector search) для простых запросов.
Гибридная архитектура: векторы + граф
Graph-RAG не заменяет векторный поиск — дополняет его. Гибридная архитектура:
- Векторы (dense + BM25) — для точных совпадений, терминов, конкретных фактов
- Граф — для multi-hop, глобального анализа, связей
- Reranking — cross-encoder (bge-reranker-v2) для финальной сортировки результатов из обоих источников
- Query router — автоматически выбирает стратегию: vector-only, graph-only, или hybrid
Когда Graph-RAG не нужен
Если ваши вопросы одношаговые и требуют точного совпадения — векторный поиск с BM25 и reranking справится лучше и дешевле. Graph-RAG — для вопросов, требующих связи разрозненной информации. Индексация Graph-RAG в 100–1000 раз дороже векторной — экономическая целесообразность определяется типом вопросов.
Нужен Graph-RAG для ваших документов?
Опишите типы документов и вопросы, на которые система не отвечает — предложим архитектуру графа знаний и план пилота.