AI-инжиниринг
GraphRAG: граф знаний вместо векторного поиска
Цели урока
- Понять где ломается векторный RAG и какой класс задач требует графа
- Разобраться как Microsoft GraphRAG строит граф: entity extraction, Leiden, community summaries
- Сравнить LightRAG и HippoRAG с полным GraphRAG по trade-off
- Построить гибридную архитектуру с маршрутизацией запросов между vector и graph
Корпус из 10 000 документов, 50 000 сущностей, 200 000 отношений. Вопрос: 'Какие сотрудники компании X работали над проектами, упомянутыми в контракте Y?' Naive RAG находит чанки о компании X и чанки о контракте Y. Связи нет. LLM галлюцинирует. Microsoft GraphRAG даёт точный ответ через граф - за 3 секунды. Это edge case? Нет. 40% вопросов в enterprise Q&A системах требуют multi-hop рассуждения.
- Microsoft использует GraphRAG внутри для анализа корпоративной документации и M&A due diligence
- Notion AI интегрировал граф сущностей для cross-page linking - находит связи между заметками
- Neo4j + GraphRAG - production паттерн для pharma (связи между молекулами, болезнями, исследованиями)
- LightRAG набрал 10K+ GitHub звёзд за 3 месяца (2024) - самый быстрорастущий RAG-фреймворк
От Knowledge Graphs к GraphRAG
**2012 - Google Knowledge Graph**: первый крупный граф знаний в продакшне, панели знаний в поиске. **2019 - KGQA (Knowledge Graph Question Answering)**: академические работы по ответам на вопросы через граф, но без LLM. **2023 - G-RAG, KG-RAG**: первые попытки соединить LLM с графом для RAG. **Февраль 2024 - Microsoft GraphRAG paper** (Edge et al.): полная система entity extraction -> Leiden community detection -> hierarchical summaries -> global/local search. **Сентябрь 2024 - LightRAG** (Guo et al.): более лёгкая альтернатива с dual-level retrieval и инкрементальным индексированием. **Ноябрь 2024 - HippoRAG v2**: Personalized PageRank на графе сущностей как замена exhaustive traversal.
Предварительные знания
Где ломается обычный RAG
Векторный поиск находит семантически похожие фрагменты. Это работает когда вопрос и ответ находятся в одном тексте. Но реальные вопросы часто требуют связей между разными документами - и вектор это не умеет.
| Тип вопроса | Проблема RAG | Пример |
|---|---|---|
| Multi-hop | Ответ требует нескольких шагов рассуждения через разные документы | 'Кто руководил командой, которая написала протокол X, упомянутый в контракте Y?' |
| Global summary | Нет одного чанка с нужным обобщением | 'Какие основные темы обсуждались на всех встречах за Q3?' |
| Relationship query | Близость векторов не равна наличию связи | 'Какие компании конкурировали за контракт Z?' |
| Entity-centric | Информация о сущности разбросана по документам | 'Перечисли все проекты, где участвовал Алексей Иванов' |
Vector search находит **похожий текст**. Граф знаний хранит **связанные факты**. Это принципиально разные структуры. Поиск по документу 'Алексей работал в Microsoft' и по другому документу 'Microsoft купила GitHub' даёт два несвязанных чанка. Граф сразу показывает путь: Алексей -> работал в -> Microsoft -> купила -> GitHub.
Edge et al. (Microsoft Research, 2024) показали: на вопросах типа 'global sensemaking' (обобщение по всему корпусу) GraphRAG превосходит naive RAG на 40-60% по comprehensiveness и diversity оценок. На точечных фактических вопросах разница меньше - vector RAG достаточен.
Почему векторный RAG не справляется с multi-hop вопросами?
GraphRAG: извлечение сущностей и построение графа
Microsoft GraphRAG (Edge et al., 2024) - двухфазный процесс. Фаза индексирования: LLM читает весь корпус, извлекает сущности и отношения, строит граф, применяет community detection. Фаза запроса: маршрутизирует вопрос через граф к релевантным сообществам.
**Фаза 1 - Индексирование** (дорогая, однократная):
**Leiden algorithm** - улучшенный Louvain, оптимизирует modularity. Находит иерархические сообщества: крупные (весь технологический сектор) -> средние (ML-компании) -> мелкие (команда конкретного продукта). Это позволяет GraphRAG отвечать как на локальные, так и на глобальные вопросы.
Индексирование GraphRAG дорогое. На 1 миллионе токенов документов: 3-5 проходов LLM по всему корпусу = примерно USD 5-15 на gpt-4o-mini. Для корпуса 100M токенов - USD 500-1500 только на индексирование. GraphRAG оправдан для стабильных корпусов с редкими обновлениями.
Зачем GraphRAG применяет Community Detection (Leiden algorithm) после построения графа?
LightRAG и HippoRAG: более лёгкие альтернативы
Microsoft GraphRAG - функциональный, но тяжёлый. Community detection + иерархические summary требуют полного переиндексирования при добавлении документов. LightRAG и HippoRAG предлагают другие trade-off.
LightRAG (Guo et al., 2024)
**Dual-level retrieval**: низкоуровневый (конкретные сущности) + высокоуровневый (абстрактные понятия). Граф строится инкрементально - новые документы добавляются без полного переиндексирования. Retrieval через граф + vector search одновременно.
HippoRAG (Gutierrez et al., 2024)
Вдохновлён моделью памяти гиппокампа. **Два компонента**: Parahippocampal Cortex (PHC) - кодирование документов через named entity extraction; Hippocampal Indexing Theory - граф связей между именованными сущностями с Personalized PageRank для multi-hop traversal.
| Система | Индексирование | Инкрементальное добавление | Multi-hop | Стоимость |
|---|---|---|---|---|
| Microsoft GraphRAG | Полный LLM-проход по корпусу | Полное переиндексирование | Отличное (community summaries) | Высокая |
| LightRAG | LLM entity extraction | Инкрементальное | Хорошее (dual-level) | Средняя |
| HippoRAG | NER + граф сущностей | Быстрое добавление | Хорошее (PageRank) | Низкая |
| Naive RAG | Только embedding | Мгновенное | Плохое | Минимальная |
Главное практическое преимущество LightRAG перед Microsoft GraphRAG - это...
Когда граф, когда вектор, когда гибрид
GraphRAG не замена RAG. Это специализированный инструмент для специализированных задач. Production-архитектура часто использует оба подхода параллельно - маршрутизируя запрос к нужному движку.
Для старта: LightRAG как первая Graph RAG система. Легче установки, инкрементальное добавление, decent качество. Microsoft GraphRAG - когда корпус стабилен (не меняется чаще раза в неделю) и нужны глобальные summary по всему корпусу.
Запрос 'Какие темы обсуждались на всех встречах за Q3?' - какой подход подойдёт лучше?
GraphRAG заменяет vector RAG - лучше всегда строить граф
GraphRAG дополняет vector RAG для специфических задач; для большинства вопросов vector RAG достаточен и дешевле
Индексирование GraphRAG стоит в 10-100 раз дороже embedding. Для простых factual Q&A это переусложнение. 80% вопросов в типичном корпоративном чатботе - точечные факты, где vector RAG работает отлично.
GraphRAG быстрее обычного RAG - граф быстро обходится
GraphRAG медленнее при запросе: обход графа + генерация summary сообществ + несколько LLM-вызовов
Global search GraphRAG делает map-reduce: для каждого community summary отдельный LLM-вызов, потом финальный reduce. Это может быть 10-50 LLM-вызовов на один пользовательский запрос. Latency 5-30 секунд, стоимость USD 0.01-0.10 за запрос.
Итоги
- Vector RAG ломается на multi-hop, global summary и relationship queries - 40% enterprise вопросов
- GraphRAG строит граф: entity extraction -> Leiden community detection -> hierarchical summaries
- Microsoft GraphRAG: лучшее качество на глобальных вопросах, дорогое индексирование, нет инкрементального обновления
- LightRAG: dual-level retrieval, инкрементальное добавление - лучший старт для production
- Гибридная архитектура: маршрутизировать запросы между vector и graph по типу вопроса
Вопросы для размышления
- Какие вопросы пользователи задают в текущем проекте - преимущественно точечные факты или вопросы про отношения?
- Если корпус обновляется ежедневно, что это означает для выбора между GraphRAG и LightRAG?
- Индексирование GraphRAG на 1M токенов стоит около USD 10. При каком объёме это оправдано?
Связанные темы
GraphRAG строит граф поверх документов. Knowledge Graphs - более широкая тема структурированных знаний.
- Knowledge Graphs — Теоретическая основа: как устроены графы знаний и ontology
- Advanced RAG — GraphRAG расширяет Advanced RAG для relational queries
- AI System Design — Как интегрировать GraphRAG в production архитектуру