Содержание
  1. Граф, узел, связь и источник
  2. Семейство GraphRAG и реализация Microsoft
  3. Индексация, извлечение, сообщества, поиск, ответ
  4. Вопрос к одному факту, к связям и ко всему корпусу
  5. Учебный мини-граф: документы и эталоны
  6. Проверка ошибочной связи и отсутствующего факта
  7. Затраты, обновление и границы гарантий
  8. Частые вопросы
Справочник

Что такое GraphRAG: поиск связей в документах

10 ноября 2026 · 8 минут чтения

Что такое GraphRAG: поиск связей в документах — это подход к ответам по корпусу текстов, при котором система строит граф сущностей и связей и опирается на него при поиске. В рассматриваемой реализации Microsoft из текста извлекаются связи, строятся сообщества и их сводки. Это устройство конкретной реализации; всё семейство не обязано повторять её конвейер. Точечный вопрос про один факт решается обычным поиском по фрагментам.

Граф, узел, связь и источник

Граф — это набор узлов и соединяющих их связей. Узел обозначает сущность: компанию, сервис, команду, человека, место. Связь обозначает отношение между двумя узлами: «использует», «поддерживает», «обучает». Источник — документ, из которого извлечены узел или связь; без ссылки на источник связь невозможно проверить.

В нашем мини-графе единицей проверки служит DOC-A, DOC-B или DOC-C. Например, связь Сосна → использует → Портал проверяется по первому предложению DOC-A; соседнее предложение задаёт другую связь — о поддержке сервиса.

Практическое следствие для читателя: граф без источников превращается в набор догадок. Если связь «Север поддерживает Портал» не отсылает к документу, проверить её нельзя. Поэтому в рабочей схеме рядом с каждой связью хранят идентификатор документа, тип отношения и дату источника. Дата важна: корпус меняется, и связь, верная в прошлом месяце, может устареть.

Узел и связь — это ещё и способ увидеть структуру корпуса. Один документ описывает локальный факт. Множество документов, связанных общими сущностями, показывает, как устроена предметная область: какие сервисы обслуживает одна команда, какие компании зависят от одного поставщика. Такой обзор использует связи между несколькими фрагментами корпуса.

Семейство GraphRAG и реализация Microsoft

GraphRAG — семейство подходов, объединённых идеей графа сущностей и связей. Конкретные реализации различаются тем, как строится граф, как хранятся узлы и как формулируется поиск. Обобщать устройство одной реализации на всё семейство нельзя.

Ниже разбирается именно реализация Microsoft: её последовательность этапов и названия режимов поиска. Выбор этой реализации для объяснения не означает обязательного стека или способа хранения графа для других проектов.

Первичная работа на arXiv описывает двухэтапное построение графового индекса: сначала из исходных документов выводится граф знаний о сущностях, затем заранее готовятся сводки сообществ для групп тесно связанных сущностей. При вопросе каждая сводка даёт частичный ответ, а частичные ответы сводятся в итоговый. Здесь прочитана аннотация работы, а количественные выводы эксперимента не используются для обещания качества на другом корпусе.

Реализация Microsoft не задаёт обязательный стек для всего семейства. Документация проекта называет Leiden для кластеризации в своём процессе; другие реализации вправе использовать иные способы группировки и иные хранилища.

Индексация, извлечение, сообщества, поиск, ответ

Порядок работы удобно разложить на пять шагов.

  1. Индексация. Корпус нарезается на TextUnit — фрагменты, которые дальше служат опорой и дают точные ссылки в результатах.
  2. Извлечение. Из фрагментов достаются сущности, отношения и ключевые утверждения. Здесь появляются узлы и связи с привязкой к источникам.
  3. Сообщества. Граф кластеризуется иерархически; документация проекта называет метод Leiden. Для каждого сообщества и его состава генерируется сводка снизу вверх, что помогает целостному пониманию набора.
  4. Поиск. На этапе запроса структуры наполняют контекст модели. Документация проекта перечисляет режимы: Global Search, Local Search, DRIFT Search и Basic Search.
  5. Ответ. Модель формирует ответ, опираясь на подобранные материалы.

Режимы различаются по задаче. Global Search идёт по всем сводкам сообществ в схеме map-reduce; в документации проекта он назван ресурсоёмким и предназначен для вопросов о наборе целиком. Local Search соединяет данные графа с текстовыми фрагментами исходных документов и подходит для вопросов о конкретных сущностях. DRIFT Search добавляет к локальному поиску сведения о сообществах, расширяя стартовую точку запроса и разнообразие используемых фактов. Basic Search — простейшая векторная реализация для сравнения результатов по типу вопроса; число фрагментов top k задаётся.

Отдельная функция — генерация вопросов: список запросов превращается в следующие кандидаты, что полезно для продолжения беседы или для списка тем, которые стоит изучить в наборе.

Вопрос к одному факту, к связям и ко всему корпусу

Три типа вопросов требуют разной механики.

Тип вопроса Что нужно найти Подходящий режим
Один факт Фрагмент с прямым утверждением Basic Search, обычный поиск по фрагментам
Связи между сущностями Цепочку узлов и отношений Local Search, DRIFT Search
Обобщение по корпусу Тему, закономерность, сводку Global Search

Вопрос «Какой сервис использует Сосна?» упирается в один абзац. Ответ лежит в одном фрагменте, и граф здесь избыточен: достаточно найти нужный текст. Вопрос «Какие компании связаны с сервисами, которые поддерживает Север?» требует пройти по связям: от команды к сервисам, от сервисов к компаниям. Граф позволяет явно проследить этот путь. Ответ можно собрать и другими процедурами поиска по нескольким фрагментам; обязательность графа из примера не следует.

Вопрос «Какие темы преобладают в наборе?» требует обзора корпуса. Аннотация первичной работы рассматривает его как суммаризацию по запросу. Наши три учебных документа показывают связи, но не измеряют качество такого обобщения на большом наборе.

Выбор режима — это выбор того, что искать: фрагмент, цепочку или сводку.

Учебный мини-граф: документы и эталоны

Ниже — условный пример для тренировки. Все документы и связи заданы вручную; GraphRAG не запускался, рост качества не измерялся.

ТЕКСТ3 строки
DOC-A: «Компания Сосна использует сервис Портал. За поддержку Портала отвечает команда Север».
DOC-B: «Компания Берег использует сервис Портал. За обучение сотрудников Берега отвечает команда Юг».
DOC-C: «Компания Роща использует сервис Каталог. Команда Север обслуживает сервис Каталог».

Узлы: Сосна, Берег, Роща, Портал, Каталог, Север, Юг. Связи с источниками: Сосна → использует → Портал [A]; Берег → использует → Портал [B]; Север → поддерживает → Портал [A]; Север → поддерживает → Каталог [C]; Роща → использует → Каталог [C]; Юг → обучает → Берег [B].

Ручные эталоны для проверки:

Вопрос Эталонный ответ Опора
Какой сервис использует Сосна? Портал A
Какие компании связаны с сервисами, которые поддерживает Север? Сосна и Берег через Портал; Роща через Каталог A, B, C
Север обучает сотрудников Берега? Неизвестно B

Третий эталон показывает границу метода. В корпусе сказано, что Юг обучает Берег. Связи «Север обучает Берег» в документах нет. Отсутствие связи означает, что сведений нет, и превращать это в доказательство отрицания нельзя. Граф отвечает на вопрос о том, что в нём есть.

Проверка ошибочной связи и отсутствующего факта

Проверка результата — отдельный шаг, который стоит делать до того, как ответ уйдёт читателю.

Возьмём ошибочное извлечение: «Юг поддерживает Портал». Такая связь не проходит сверку, поскольку исходный фрагмент B говорит об обучении сотрудников Берега. Тип отношения в источнике — «обучает», и подмена его на «поддерживает» меняет смысл. Проверка идёт по трём полям: идентификатор фрагмента, тип отношения, дата источника. У всех учебных документов дата 10.11.2026.

Порядок ручной сверки:

  1. Открыть фрагмент, на который ссылается связь.
  2. Сравнить тип отношения в графе с формулировкой в тексте.
  3. Убедиться, что оба конца связи упомянуты в этом фрагменте.
  4. Отдельно отметить вопросы, на которые в корпусе нет ответа, и не выдавать по ним утверждений.

Первая проверяемая ошибка — считать пустоту доказательством. Другая — склеивать две связи в одну: если Север поддерживает Портал, а Берег использует Портал, из этого не следует, что Север поддерживает Берег. Цепочку из двух рёбер помечайте как вывод о пути и сохраняйте источники обоих рёбер.

Третья ошибка — терять источник при обобщении. Сводка сообщества полезна для обзора, и проверять её следует по тем фрагментам, из которых она собрана.

Затраты, обновление и границы гарантий

Подготовка графа и сводок добавляет работу к обработке фрагментов. Руководство Query Engine называет Global Search ресурсоёмким. Для своего корпуса отдельно фиксируйте вызовы индексации и запросов; в нашем ручном наборе ни один такой вызов не выполнялся.

Обновление корпуса проверяйте на уровне источников и производных связей. Если DOC-A заменён, найдите все рёбра со ссылкой A и проверьте их заново. Затем проверьте ответы, которые использовали эти рёбра, и относящиеся к ним сводки. Перед изменением рабочего индекса сохраните версию корпуса и настройки; конкретные команды миграции сверяйте с установленной версией проекта.

Документация Microsoft рекомендует настраивать промпты под свои данные. Для учебного набора критерий остаётся конкретным: связи соответствуют A/B/C, а отсутствие факта об обучении Севером не превращается в отрицание. Качество на другом корпусе требует отдельной проверки.

Частые вопросы

Что такое GraphRAG простыми словами?
Это поиск с опорой на граф сущностей и связей. В нашем примере путь от Севера через Портал приводит к Сосне и Берегу; каждое ребро сохраняет источник.

Чем GraphRAG отличается от обычного RAG?
Базовый поиск опирается на векторное сходство и возвращает похожие фрагменты. Рассматриваемая реализация Microsoft дополнительно строит граф и сводки сообществ для вопросов о связях и корпусе в целом. Документация проекта описывает оба варианта и называет базовый поиск частью своей реализации.

GraphRAG от Microsoft — это единственная реализация?
Нет. Здесь разобрана конкретная реализация Microsoft. Для другого проекта проверяйте его собственные этапы индексации и поиска.

Когда хватает обычного поиска?
Когда ответ лежит в одном фрагменте: название сервиса, дата, имя ответственного. В учебном примере вопрос «Какой сервис использует Сосна?» закрывается одним документом. При вопросе к нескольким источникам граф — один из способов явно представить путь между общими сущностями.

Почему граф может ошибаться?
Связи извлекает модель, и она может подменить тип отношения: вместо «обучает» записать «поддерживает». Проверка по источнику, типу отношения и дате отсекает такие случаи. Отсутствие связи в графе означает нехватку сведений, и вывод об отрицании из него не следует.

Читайте также

3 материала