Skip to content

Instantly share code, notes, and snippets.

@niquola
Last active March 16, 2026 16:39
Show Gist options
  • Select an option

  • Save niquola/1c8ddac813d959edc587b51e90aed4fe to your computer and use it in GitHub Desktop.

Select an option

Save niquola/1c8ddac813d959edc587b51e90aed4fe to your computer and use it in GitHub Desktop.

Обзор подходов к структурно-семантическому RAG на базе графов знаний и онтологий

Обычный RAG хорошо решает поиск близких фрагментов текста, но плохо держит связи между сущностями, документами и шагами рассуждения. Поэтому в инженерной практике все чаще строят не только векторный индекс, но и структурированный слой знаний: граф сущностей, граф чанков, онтологию домена или гибрид этих представлений. Этот сдвиг не отменяет классический RAG [Lew20]. Он добавляет к нему явную память о связях, типах и путях, что особенно важно для многошаговых запросов, обзорных вопросов по корпусу и доменных систем, где важны точность и трассируемость [Edg24, Gut24, Zhu25, Wu25].

Литература показывает, что GraphRAG не является одной техникой. Это семейство систем с разными инженерными целями. Одни строят граф поверх самих документов и чанков, чтобы улучшить навигацию по корпусу [Edg24, Guo24, Zhu25, Xia24]. Другие подключают внешний граф знаний или доменную онтологию, чтобы опереться на уже нормализованные сущности и отношения [Wu25, Men24]. Третьи делают гибридный слой, где граф используется не вместо векторного поиска, а вместе с ним [Sar24, Lee24, Min25].

Ключевые находки

  • Граф дает наибольшую пользу там, где запрос требует пройти по нескольким связям, собрать ответ из нескольких документов или удержать структуру предметной области [Sun18, Sun19, Gut24, Xia25].
  • Для простых factoid запросов и коротких локальных ответов чистый векторный RAG часто дешевле и не хуже по качеству. Графовый слой оправдан не всегда [Xia25, Han25].
  • На практике лучше всего работают гибридные схемы. Сначала семантический поиск находит стартовые узлы или чанки, затем граф расширяет и упорядочивает контекст [Zhu25, Sar24, Lee24, Wu25].
  • Самое слабое место GraphRAG не retrieval, а construction. Если сущности плохо склеены, отношения шумные, а схема расплывчата, то граф лишь формализует ошибки [Sa16, Don14, Ao21, Mih23].
  • Онтология особенно полезна в узких доменах. Она задает типы сущностей, допустимые отношения и ограничения, тем самым снижая шум и галлюцинации при построении графа [Wim10, Ana13, Men24, Mih23].
  • Главный инженерный trade off состоит не между графом и векторами, а между качеством структуры и стоимостью ее поддержки. Последние работы показывают, что умеренно сложные графы и классические NLP методы нередко дают почти ту же пользу, что и дорогая LLM экстракция [Guo24, Min25].

Классификация подходов

Класс подхода Как устроен Сильные стороны Слабые стороны
Граф по корпусу и чанкам Из документов извлекаются сущности, связи, иерархия и соседство чанков. Поиск идет по локальным и глобальным структурам [Edg24, Guo24, Xia24] Хорошо собирает разрозненный контекст. Удобен для обзорных и многошаговых запросов Качество сильно зависит от chunking и entity linking. Индекс быстро усложняется
KG-guided retrieval Векторный поиск дает seed chunks, затем граф расширяет и упорядочивает контекст [Zhu25, Che24b] Хороший баланс между recall и связностью ответа. Легко встроить в существующий RAG Нужна аккуратная настройка расширения, иначе растет шум и токены
Внешний граф знаний как второй источник Система использует готовый KG вместе с текстовым корпусом [Wu25, Xu22, Sun18] Нормализованные сущности, явные отношения, интерпретируемость Внешний KG может быть неполным, устаревшим или плохо состыкованным с корпусом
Гибридный Graph плюс Vector RAG Отдельные каналы поиска по тексту и по графу объединяются на этапе rerank или fusion [Sar24, Lee24, Min25] Лучшее практическое соотношение пользы и риска. Устойчив к неполноте любого одного источника Больше компонентов, сложнее отладка, труднее понять вклад каждого слоя
Онтологически управляемое построение KG Онтология задает типы, отношения и ограничения для извлечения знаний [Men24, Wim10, Mih23] Высокая точность в домене. Лучше контроль качества и согласованность Дорого проектировать и поддерживать. Сложно масштабировать на открытый домен
Query layer через графовые запросы Вопрос переводится в подграф, SPARQL или иной структурный запрос, затем ответ дополняется генерацией [Yih15, Ban23] Максимальная точность при хорошо заданной схеме. Сильная трассируемость Хрупкость к формулировкам пользователя. Высокая цена подготовки схемы и линковки

Как эволюционировала область

До LLM эпохи основная задача была такой: как совместить неполный knowledge base и неструктурированный текст для QA. Классические работы показали, что лучший ответ часто требует обоих источников сразу, а retrieval должен строить question-specific subgraph, а не просто список документов [Sun18, Sun19]. В параллель развивались системы knowledge base construction, где ключевыми были probabilistic fusion, извлечение из шума и контроль качества [Don14, Sa16].

Современный GraphRAG унаследовал оба направления. От QA над графами он взял идею многошагового поиска по структуре. От knowledge base construction он взял проблему качества фактов и canonicalization. Новое в LLM эпохе состоит в том, что граф теперь нужен не только для точного ответа, но и для сборки хорошего контекста для генератора [Edg24, Gut24, Zhu25].

Что реально работает в инженерии

1. Гибридная retrieval схема как базовый дизайн

Самый устойчивый паттерн в работах таков: семантический retriever быстро находит кандидатов, после чего графовый слой расширяет контекст по связям, ранжирует пути и убирает фрагментацию знаний [Zhu25, Sar24, Lee24]. Это лучше, чем пытаться заменить dense retrieval чистым обходом графа. Граф полезен как структурный корректор, а не как единственный источник релевантности.

2. Многогранулярный индекс

Хорошие системы индексируют не один объект, а несколько уровней сразу: сущности, отношения, chunks, документы, сообщества сущностей. KG-Retriever строит иерархический индекс графа и документов [Che24b]. GraphRAG и LightRAG используют не только локальные связи, но и более крупные единицы вроде community summaries или dual-level retrieval [Edg24, Guo24]. Это снижает разрыв между локальным фактом и глобальной темой.

3. Граф нужен прежде всего для организации контекста

В сильных работах граф используется не только для отбора, но и для сборки итогового контекста. KG$^2$RAG показывает, что важен не просто retrieval соседних узлов, но и организация чанков в связный порядок [Zhu25]. TKG-RAG делает то же на уровне chunk graph и за счет этого снижает шум и число токенов [Xia24].

4. Дешевое построение графа часто достаточно

Практический барьер GraphRAG состоит в цене построения и обновления графа. Поэтому особенно важны работы, где показывается, что dependency parsing, rules и простая fusion логика могут приблизиться к дорогой LLM экстракции [Min25]. Это важный сигнал для продакшна: полный LLM-first pipeline не всегда нужен.

5. Онтология нужна там, где ошибка дорога

Если система работает в финансах, медицине, промышленности или enterprise knowledge base, выигрыш дает не самый большой граф, а самый дисциплинированный. Онтология задает разрешенные типы и отношения, а значит уменьшает ложные ребра и делает retrieval более управляемым [Wim10, Men24]. Text2KGBench особенно ценен тем, что оценивает не только полноту извлечения, но и соответствие онтологии и уровень галлюцинаций [Mih23].

Сильные и слабые стороны по типам систем

Тип системы Где сильна Где слаба
Chunk graph и document graph Корпусные QA, обзорные вопросы, поиск по связанным документам [Edg24, Guo24] Сложно поддерживать чистую сущностную нормализацию
External KG plus text Доменные ассистенты, где есть готовый справочник сущностей [Wu25, Sun18] Интеграция с текстом и покрытие внешнего KG часто ограничены
Ontology-first KG Регулируемые и узкие домены, где важны типы и ограничения [Men24, Mih23] Высокий входной порог и медленное расширение схемы
Graph-only retrieval Многошаговая логика и path reasoning [Gut24, Li24] Хуже стартует, если вопрос выражен не через сущности, а через свободный текст
Hybrid Graph plus Vector Наиболее универсальный продакшн выбор [Sar24, Lee24, Min25] Архитектурно сложнее, требуется tuning fusion и observability

Главные инженерные риски

  • Ошибки entity linking и deduplication. Если одна сущность распадается на несколько узлов, граф теряет смысл.
  • Ложные отношения, извлеченные из слабого prompt или шумного OpenIE, быстро портят traversal и reranking [Mar18, Jar23].
  • Слишком агрессивное graph expansion увеличивает токены и снижает точность.
  • Слишком жесткая онтология тормозит ingestion новых типов данных.
  • Отсутствие оценки по слоям скрывает проблему. Нужно измерять отдельно качество extraction, linking, retrieval и final answer [Mih23, Xia25].

Практическая рамка выбора

Для инженерного проектирования область удобно свести к трем сценариям.

  1. Если корпус в основном текстовый, а вопросы локальные, достаточно обычного RAG с хорошим rerank.
  2. Если важны междокументные связи, обзорные ответы и multi hop reasoning, нужен graph over chunks or entities [Edg24, Gut24, Zhu25].
  3. Если домен узкий, цена ошибки высока и есть стабильная терминология, стоит строить ontology-guided KG и затем добавлять гибридный retrieval [Men24, Sar24, Wu25].

На сегодня наиболее зрелый вывод литературы прост: не стоит противопоставлять GraphRAG и RAG. Графовый слой приносит пользу не сам по себе, а когда он компенсирует конкретую слабость текстового retrieval: разрыв связей между фактами, потерю глобальной структуры или потребность в типизированном доменном знании [Xia25, Han25]. Поэтому лучший практический дизайн обычно не graph-only, а hybrid-by-default.

Вывод

GraphRAG и KG-RAG следует понимать как инженерный способ добавить в RAG явную структуру памяти. Самые сильные результаты дают системы, которые строят умеренно качественный граф, соединяют его с векторным поиском и используют структуру для расширения, сжатия и упорядочивания контекста [Zhu25, Sar24, Lee24, Min25]. Самые слабые результаты возникают там, где граф строится ради самого графа, без контроля качества сущностей, схемы и стоимости обновления [Sa16, Don14, Xia25].

Для практики это означает следующее. Граф знаний и онтология оправданы не как модный индекс, а как средство сделать retrieval более связным, объяснимым и доменно дисциплинированным. Если задача требует именно этого, структурно-семантический RAG дает заметный выигрыш. Если нет, то простой RAG остается более дешевым и часто достаточным решением [Lew20, Xia25].

Как извлекают онтологию для KG RAG

В инженерной практике онтологию почти никогда не извлекают из текста одним проходом. Обычно строят итеративный pipeline, где из корпуса сначала получают кандидаты на понятия и связи, затем нормализуют их, собирают схему, вводят ограничения и только после этого используют ее для наполнения графа. Поэтому полезно различать две задачи: ontology learning и ontology-guided extraction. Первая строит саму схему. Вторая заполняет уже заданную схему фактами из текста [Wim10, Ana13].

Главный вывод литературы таков: для KG-RAG лучше всего работает не полностью свободное извлечение, а извлечение под схему. Онтология снижает шум, помогает различать типы сущностей и ограничивает набор допустимых отношений. Это особенно важно в узких доменах, где ошибка дорого стоит и где retrieval должен быть управляемым, а не просто похожим по embedding [Men24, Ao21, Mih23].

Какие есть режимы построения онтологии

Режим Как устроен Когда подходит Главный риск
Ontology first Схему задают заранее, затем извлекают факты под нее [Ana13, Wim10] Узкий домен, высокий контроль качества Долго и дорого на старте
Ontology learning from text Классы и связи выводят из корпуса, затем вручную чистят Новый домен, мало готовой схемы Много дублей и плохих иерархий
Hybrid Есть черновая схема, а LLM и NLP предлагают расширения [Zha25, Cru25] Самый практичный вариант для KG-RAG Нужен жесткий этап валидации

Типичный pipeline

1. Сбор кандидатов на понятия

Из текста извлекают:

  • термины и noun phrases
  • именованные сущности
  • повторяющиеся паттерны атрибутов
  • relation mentions

На этом шаге используют NER, term extraction, dependency parsing, словари домена и LLM extraction. Цель не в том, чтобы сразу получить онтологию, а в том, чтобы собрать сырой словарь предметной области [Wim10, Men24].

2. Нормализация понятий

Дальше нужно склеить:

  • синонимы
  • аббревиатуры
  • варианты написания
  • слишком близкие классы

Это критично, потому что без нормализации онтология распадается на дубли. На практике здесь сочетают string matching, embeddings, rules и ручную проверку. Если этот шаг слабый, downstream graph становится шумным независимо от качества LLM [Don14, Ao21].

3. Разделение class, instance и attribute

Один из самых частых источников ошибок состоит в том, что pipeline смешивает:

  • класс
  • экземпляр
  • атрибут
  • текстовый chunk

Например, Large language model это класс, GPT-4 это экземпляр или модель в каталоге, а context length это атрибут. Без этого разделения онтология быстро превращается в плоский список узлов. В реальных системах этот шаг часто требует правил домена и ручной ревизии [Wim10, Cru25].

4. Построение таксономии

После нормализации определяют:

  • какие классы являются базовыми
  • какие являются подклассами
  • какие классы слишком узки и должны быть сведены
  • где проходит граница между class hierarchy и relation graph

Это и есть ядро ontology learning. Автоматически строить таксономию можно через pattern mining, clustering и LLM judgment, но без проверки человеком обычно появляются слабые иерархии и псевдоклассы [Wim10, Zho22].

5. Выделение relation types

Следующий шаг состоит в том, чтобы из множества relation mentions вывести компактный набор нормализованных отношений. Обычно начинают с широкого списка, а затем схлопывают его до небольшого управляемого набора вроде:

  • part of
  • uses
  • causes
  • measured by
  • located in
  • treats

Этот шаг важен для KG-RAG, потому что retrieval по графу становится полезным только тогда, когда relation types семантически устойчивы. Иначе path expansion начинает собирать шум [Ana13, Men24].

6. Добавление ограничений

Именно здесь список классов и связей становится онтологией. Обычно задают:

  • domain and range
  • допустимые типы аргументов связи
  • cardinality
  • обязательные свойства
  • правила совместимости и валидации

Литература показывает, что ontology conformance надо оценивать отдельно от обычной extraction quality. Text2KGBench как раз полезен тем, что измеряет не только полноту фактов, но и соответствие онтологии и склонность к галлюцинациям [Mih23].

7. Формализация схемы

Дальше схему задают в одном из форматов:

  • OWL или RDF Schema
  • SHACL или ShEx для валидации
  • внутренняя schema model для property graph

Выбор зависит от того, нужен ли строгий semantic web stack или достаточно прикладной схемы для retrieval и filtering. Для KG-RAG часто достаточно более прагматичной schema layer, если она строго отделяет типы, связи и ограничения [Zho22, Cru25].

8. Выравнивание и слияние

Если данные идут из разных источников, возникает ontology matching. Нужно понять, что два близких класса или свойства на деле совпадают или находятся в отношении broader narrower. Для этого теперь все чаще используют LLM-assisted alignment, но без rule-based и retrieval steps качество нестабильно [Qia23, Gig24].

Что показывает литература

Онтология лучше всего работает как направляющая рамка

Классические работы по ontology-based information extraction исходят не из идеи полного open-ended extraction, а из идеи направляемого извлечения. Сначала выбирают или задают релевантную доменную онтологию, а затем используют ее как фильтр и как словарь ожиданий при извлечении фактов [Wim10, Ana13]. Для KG-RAG это особенно полезно, потому что downstream retrieval выигрывает не от большого числа ребер, а от их устойчивого смысла.

Domain ontology снижает шум

Современные работы подтверждают эту линию. В [Men24] доменная онтология используется прямо внутри end-to-end text-to-KG pipeline, что помогает лучше извлекать domain nodes и relations. В [Ao21] акцент сделан на trustworthy KG population, то есть не просто на извлечении триплетов, а на согласовании результатов с данной domain vocabulary. Для продакшна это важнее, чем сырой recall.

Онтология из текста возможна, но дорога в поддержке

Работы вроде [Cru25] показывают, что ontology-guided KGs, построенные из текстовых корпусов, могут давать сильный эффект в RAG. Но у text-derived ontology есть цена: merge конфликтов, чистка типов, регулярные обновления схемы. Поэтому если в домене уже есть реляционная схема, справочник или нормативный классификатор, он часто оказывается более дешевым основанием для ontology learning, чем свободный текст [Cru25].

Схему почти всегда приходится reshaping

Даже хорошая доменная схема не всегда удобна для construction и query. В [Zho22] показано, что слишком общая knowledge-oriented schema может плохо ложиться на реальные данные. Поэтому на практике часто нужен промежуточный data-oriented слой: схема остается семантически чистой, но адаптируется к тому, как информация реально выражена в документах.

Сильные и слабые стороны подходов

Подход Сильные стороны Слабые стороны
Manual ontology first Лучший контроль качества, понятная логика retrieval Высокая цена проектирования
Text-driven ontology learning Быстрый старт в новом домене Шум, дубли, нестабильные relation types
LLM-assisted schema induction Быстро предлагает классы и свойства [Zha25] Часто выдумывает лишние distinctions
Ontology-guided extraction Лучший practical trade off для KG-RAG [Men24, Ao21] Требует хотя бы минимальной схемы заранее
Pure open extraction plus cleanup Прост в начале Потом очень дорого чинить и нормализовать

Практический рецепт для KG RAG

Для инженерной системы разумный путь обычно такой:

  1. Взять 100–500 репрезентативных документов.
  2. Вытащить термины, сущности и relation candidates.
  3. Собрать маленькую task ontology, а не полную онтологию мира.
  4. Ограничить relation set до управляемого числа.
  5. Задать domain and range constraints.
  6. Прогнать extraction под эту схему.
  7. Замерить ошибки по слоям: concept quality, ontology conformance, entity linking, relation precision, retrieval gain.
  8. Сделать 2–3 итерации до очистки основных конфликтов.

На практике лучше маленькая, строгая и живая онтология, чем большая и рыхлая. Для KG-RAG ценнее не богатство формализма, а то, насколько схема помогает retrieval, reranking и grounding ответа.

Вывод

Онтологию для KG-RAG обычно не извлекают автоматически в чистом виде. Ее строят как управляемую схему поверх корпуса: частично из доменной экспертизы, частично из статистики текста, частично с помощью LLM. Лучший инженерный паттерн сегодня это hybrid pipeline: ontology-guided extraction, обязательная нормализация понятий, ограниченный набор relation types и отдельная валидация соответствия схеме [Wim10, Ana13, Men24, Mih23, Cru25].

Именно такой подход дает не просто красивый граф, а рабочую структурную память, которая реально улучшает KG-RAG.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment