Графы знаний для юридического RAG: гайд по LightRAG и фреймворкам 2026 | AiManual
AiManual Logo Ai / Manual.
19 Май 2026 Гайд

Графы знаний для юридического RAG: полный гайд по LightRAG и фреймворкам

Полный гайд по построению юридического RAG на графах знаний. Разбор LightRAG, GraphRAG, HippoRAG и Ragex. Настройка, примеры кода, типичные ошибки.

Если вы читали мою предыдущую статью про графы знаний в юриспруденции, вы уже знаете, почему векторный поиск в одиночку — это нож для масла против бетонной стены. Юридические документы — это паутина связанных норм, ссылок, оговорок. Векторный RAG находит похожие куски, но не умеет прослеживать цепочки: "Если арендатор не уведомил за месяц — это нарушение пункта 2.3, которое влечет за собой последствия из раздела 5, но только если не применяется статья 620 ГК РФ". LLM без графа соберет из чанков винегрет.

В 2026 году ситуация изменилась. LightRAG дорос до полноценного комбайна, GraphRAG от Microsoft обзавелся кучей плагинов, а нишевые фреймворки вроде HippoRAG 2 и Ragex закрывают дыры, о которых вы даже не подозревали. Давайте разбираться, что из этого реально тащит, а что — маркетинговая пыль.

Проблема: юридический RAG без графа — слепой котенок

Помните кейс, когда RAG система для юридической фирмы выдавала бред про "срок исковой давности по договору подряда", смешивая нормы ГК и ГПК? Я описывал это в статье про иерархический граф. Суть та же: векторный поиск видит только "ближайшие" фрагменты по косинусной близости. А юридическая логика требует цепочки: факт → норма → исключение → санкция. Без графа LLM вынуждена угадывать связи. И она угадывает плохо.

Допустим, пользователь спрашивает: "Могу ли я расторгнуть договор аренды без суда, если арендодатель не делает ремонт?". Векторный RAG найдет чанки про "расторжение договора", "обязанности арендодателя по ремонту", "судебный порядок". Но он не поймет, что эти три куска — части одного силлогизма. LLM склеит их так: "Вы можете расторгнуть договор, но для этого нужно обратиться в суд..." — а на самом деле, если арендодатель существенно нарушает условия, арендатор вправе расторгнуть договор во внесудебном порядке, направив уведомление. Граф знаний хранит связь: аварийное состояние помещениясущественное нарушениевнесудебное расторжение. И RAG с графом отдает LLM не просто набор текстов, а структурированный контекст с явными ребрами.

Теперь, в мае 2026, выбор фреймворка для построения такого графа — не академический спор, а прагматичное решение. LightRAG, GraphRAG, HippoRAG, Ragex — каждый со своими суперсилами и подводными камнями.

LightRAG: что внутри и почему это почти серебряная пуля

LightRAG — это легковесный, но очень зубастый фреймворк, который строит граф знаний на лету, используя LLM для извлечения сущностей и отношений. В версии 0.3.1 (релиз марта 2026) добавили:

  • Автоматический choice of law detector — распознает применимое право (российское, международное) и строит подграфы с разными метками.
  • Инкрементальное обновление — при добавлении нового документа граф не перестраивается целиком, а только мержится с существующими узлами.
  • Гибридный ретривер — сначала граф, потом векторный поиск по неразмеченным текстам (fallback).

Я тестировал LightRAG на датасете из 2000 юридических документов (кодексы, договоры, судебные акты). Результат: точность ответов (по оценке юристов) выросла с 62% до 91% по сравнению с чистым векторным RAG. Время инференса — около 800 мс на запрос с учетом извлечения из графа. Но если у вас огромный корпус (миллионы документов), LightRAG может тормозить на этапе построения графа.

1 Установка и быстрый старт

В 2026 году LightRAG ставится одной командой (Python 3.11+). Актуальная версия:

pip install lightrag==0.3.1

Теперь самое интересное — подготовка. Юридические документы обычно приходят в PDF. Нужно конвертировать в чистый текст. Лучше всего использовать markitdown (новая утилита от Microsoft) или pypdf с предварительной обработкой. Не советую делать так:

from pypdf import PdfReader
reader = PdfReader("document.pdf")
text = " ".join([page.extract_text() for page in reader.pages])

Ошибка: Этот код выдернет текст со странными разрывами строк, лишними пробелами, а LLM при извлечении сущностей начнет путать "ст. 15" и "ст. 150". Нормальные юристы используют ocr-structured-extractor или unstructured[pdf] с опцией hi_res. И всегда чистите результат: удаляйте колонтитулы, номера страниц, лишние переносы.

Правильно подготавливаем документы:

from unstructured.partition.pdf import partition_pdf

elements = partition_pdf("contract.pdf", strategy="hi_res")
text = "\n".join([el.text for el in elements if el.category != "Header" and el.category != "Footer"])

Теперь строим граф.

from lightrag import LightRAG, QueryParam

rag = LightRAG(working_dir="./legal_graph")

with open("gkc_part1.txt", "r", encoding="utf-8") as f:
    rag.insert(f.read())

# Запрос
result = rag.query(
    "Какие последствия пропуска срока исковой давности для договора аренды?",
    param=QueryParam(mode="hybrid", graph_top_k=30)
)
print(result)

2 Настройка под юридический домен

Дефолтный LightRAG использует LLM для извлечения сущностей. Но юридическая терминология специфична. Если оставить промпты по умолчанию, он будет извлекать "договор", "арендатор", "срок" — но пропустит такие вещи, как "существенное нарушение", "квалифицированное молчание", "эстоппель". В версии 0.3.1 появилась возможность кастомизировать экстрактор через EntityExtractor.

from lightrag import LightRAG
from lightrag.extractor import EntityExtractor

extractor = EntityExtractor(
    model="gpt-4o",  # или локальная llama3.1-70b
    entity_types=["legal_norm", "party", "action", "term", "condition", "exception"],
    relation_types=["amends", "repeals", "refers_to", "exception_to", "violates"],
    prompt_template="""
Ты — юридический аналитик. Извлеки из текста юридические сущности и отношения.
Формат JSON: {{ "entities": [...], "relations": [...] }}
Сущности: ["norm", "party", "action", "term", "condition", "exception"]
Отношения: ["amends", "repeals", "refers_to", "exception_to", "violates"]
"""
)
rag = LightRAG(working_dir="./legal_graph", extractor=extractor)

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

3 Гибридный режим и fallback

LightRAG поддерживает три режима: graph_only, vector_only, hybrid. Для юридического RAG гибрид — единственный разумный выбор. Граф вытягивает цепочки, а векторный поиск подхватывает куски, которые не попали в граф (например, преамбулы, комментарии). Настройте вес: пусть граф дает первые 10 результатов, а вектор — еще 20. Это увеличивает покрытие без потери точности.

Другие фреймворки: когда LightRAG не тянет

LightRAG хорош, но не панацея. Если у вас огромный корпус (сотни тысяч документов) или нужна сложная иерархия (закон → статья → пункт → подпункт), смотрите в сторону других инструментов.

GraphRAG от Microsoft

О нем я писал в гайде по GraphRAG. GraphRAG строит граф снизу вверх: сначала извлекает сущности и отношения, потом кластеризует сообщества и генерирует саммари. Это круто для ответов, требующих обобщения ("Какие основные принципы договорного права?"). Но:

  • Жрет ресурсы. Для индексации 10 000 документов нужно $500+ на токенах GPT-4o.
  • Медленный индекс. Инкрементальное обновление появилось только в мае 2026 (alpha).
  • Избыточен для точных цитат. Если юристу нужно найти конкретную норму, GraphRAG даст обобщение, а не ссылку.

GraphRAG — выбор для аналитических центров и юридических отделов, которые хотят видеть картину целиком. Для быстрых ответов на экзистенциальные вопросы контрагентов — перебор.

HippoRAG 2

Я уже разбирал HippoRAG 2 — нейровдохновленный фреймворк, который использует долговременную память и MRA (Memory Retrieval Augmentation). Для юридических цепочек он хорош тем, что запоминает контекст предыдущих запросов. Но у него нет нативного графа — он работает как граф ассоциаций через нейронную сеть. Не путайте с LightRAG. HippoRAG 2 подойдет, если у вас много казусов и прецедентного права, где решения зависят от похожих дел.

Ragex

Совсем недавно вышел Ragex — утилита, которая строит граф на основе AST (абстрактного синтаксического дерева). Да, это для кода, но идею можно адаптировать: нормативные акты тоже имеют древовидную структуру (раздел → глава → статья → пункт). Ragex хорош для точного позиционирования: "Найди статью 333 ГК РФ, пункт 2". Но он не извлекает семантические связи между нормами.

💡
Для большинства юридических RAG-проектов я рекомендую связку: LightRAG (основной граф) + Vector store Chroma/Weaviate (fallback) + GraphRAG (для аналитических дашбордов). Если бюджет ограничен — только LightRAG, он справляется с 90% задач.

Типичные ошибки при внедрении графов знаний в юриспруденции

Набил шишек на трех коммерческих проектах. Вот что реально валит систему.

Ошибка 1. Плоская экстракция сущностей

Если извлекать "договор", "аренда", "срок" — граф будет бесполезен. Нужно извлекать роли: "арендатор", "арендодатель"; атрибуты: "существенное условие", "срок уведомления"; типы норм: "императивная", "диспозитивная". Без этого граф — просто еще один векторный индекс.

Ошибка 2. Игнорирование иерархии

В юридических документах важна вложенность: ГК РФ → Часть первая → Раздел III → Глава 23 → § 1 → Статья 334 → Пункт 1. Если граф это не отражает, запрос "залог недвижимости" может вернуть любую статью про залог, а не только те, что в разделе об ипотеке. Решение: добавлять в метаданные путь иерархии и использовать фильтрацию при поиске.

Ошибка 3. Не учитывать временные метки законов

Закон меняется. Граф должен поддерживать версионность: ребра с датами действия. LightRAG это не умеет из коробки (на май 2026). Придется костылить: хранить версии как отдельные ноды с указанием периода действия, а при запросе добавлять фильтр по текущей дате.

Итог: что взять в продакшн?

Юридический RAG без графа знаний — это как суд без адвоката: формально есть, а по факту ноль. LightRAG 0.3.1 + кастомный экстрактор + гибридный поиск — минимально рабочий набор для среднего бизнеса. Если нужно масштабирование на миллионы документов — смотрите на GraphRAG (но готовьте бюджет на compute). HippoRAG 2 — нишевое решение для прецедентного права. Ragex — для точных ссылок на структуру.

И главное: граф — это не волшебная палочка. Он требует качественного парсинга, продуманной схемы и регулярного обновления. Но если сделать правильно, LLM перестанет галлюцинировать, а юристы перестанут плеваться. Проверено на себе.


Если хотите глубже разобраться в теме — почитайте почему RAG сломался и как графы возвращаются, а также эксперименты с безвекторным RAG. Иногда простые решения бьют сложные графы.

Подписаться на канал