01 Простыми словами
Обычный поиск по документам похож на предметный указатель в конце книги — находит страницы, где встречается нужное слово. GraphRAG больше похож на карту связей: сущности вроде компаний, людей и договоров становятся узлами, а связи между ними — рёбрами, и по этой карте можно пройти на несколько шагов вперёд от исходного вопроса.
02 Как это работает
Построение графа знаний обычно проходит в несколько этапов.
- Из документов извлекаются сущности — компании, люди, продукты, даты — и связи между ними.
- Сущности и связи собираются в граф, где повторяющиеся упоминания одного и того же объекта под разными именами объединяются в один узел.
- При вопросе система находит в графе узел-отправную точку и проходит по связям на один-два шага, собирая контекст из соседних узлов.
- Собранный контекст вместе с вопросом передаётся модели для финального ответа.
Для самого извлечения сущностей на первом этапе часто достаточно быстрой и недорогой модели вроде GigaChat — задача там простая и повторяющаяся. Для финального ответа по собранному графу нужна модель посильнее, способная удержать в голове длинную цепочку связей, — здесь чаще берут Claude или другую модель с более развитым рассуждением. Извлечение сущностей на первом этапе неизбежно даёт часть ошибок, поэтому граф полезно периодически пересобирать заново по свежей версии документов вместо одной лишь достройки новыми узлами сверху.
Есть ещё один уровень, которого нет в обычном RAG: граф делят на сообщества — плотно связанные группы узлов вокруг одной темы, проекта или контрагента, — и для каждого сообщества заранее готовят краткое обобщение. Обычный RAG находит похожие фрагменты и отвечает на вопрос про конкретный документ, но с вопросом уровня «о чём вообще вся переписка с этим контрагентом за год» справляется плохо — фрагментов слишком много, а единого обобщения по теме у него нет. GraphRAG отвечает на такой глобальный вопрос через готовое обобщение сообщества, вместо того чтобы читать заново каждый документ.
03 Где применяется
- Due diligence. Поиск всех договоров и писем, связанных с конкретным контрагентом через цепочку дочерних компаний.
- Строительство. Связь между проектной документацией, актами и подрядчиками одного объекта, разбросанными по разным папкам.
- Юридическая практика. Поиск судебных дел, где фигурирует та же сторона под разными формулировками названия.
- Служба поддержки. Связь тикета с историей всех предыдущих обращений того же клиента под разными контактами.
- Слияния и поглощения. Быстрая проверка, есть ли пересечения интересов между двумя компаниями через общих акционеров или директоров.
- Комплаенс. Отслеживание цепочки собственников контрагента на несколько уровней вглубь для проверки перед крупной сделкой.
04 Вопрос обо всём архиве
Юридический отдел задаёт вопрос, с которым обычный поиск по документам справляется плохо: «о чём в целом велась переписка с этим контрагентом за последний год?» — вопрос касается содержания сотен писем сразу вместо одного документа.
- Система заранее разбивает граф на сообщества — плотно связанные группы узлов вокруг одного крупного контрагента или темы.
- Для каждого сообщества заранее готово краткое обобщение — о чём вообще эта группа документов и связей.
- На вопрос про контрагента система находит нужное сообщество и берёт готовое обобщение вместо чтения каждого письма заново.
- Если юрист уточняет вопрос до конкретного эпизода — например, спора о сроках поставки, — система спускается с уровня обобщения обратно к исходным документам внутри этого сообщества.
Ответ приходит за секунды, потому что обобщение по теме подготовлено заранее, вместо того чтобы собираться заново под каждый новый вопрос.
05 Ограничения
- Построение графа занимает время и вычислительные ресурсы на этапе подготовки — это дороже обычного RAG на старте.
- Качество графа зависит от точности извлечения сущностей: ошибка на этом этапе размножается на все связанные ответы.
- Для простых вопросов без связей между объектами обычный векторный поиск обходится дешевле и справляется на том же уровне.
- Граф нужно обновлять по мере поступления новых документов — иначе связи устаревают быстрее, чем в обычном RAG, где достаточно добавить новый фрагмент в индекс.
- Доступ к графу стоит ограничивать так же аккуратно, как к исходным документам, — граф связей раскрывает больше контекста, чем разрозненные файлы по отдельности.
Как устроен поиск по базе документов на практике — в статье про бота для поиска по базе договоров. Как подключить такой поиск к своим документам — в разделе RAG-систем для документов.