3,583 papers
arXiv:2510.14271 63 16 окт. 2025 г. FREE

DEG-RAG: очистка графов знаний от дублей и ошибок

КЛЮЧЕВАЯ СУТЬ
DEG-RAG — метод улучшения графов знаний (knowledge graphs), которые LLM автоматически строят из документов для RAG-систем. Метод работает в два шага: entity resolution убирает дубли сущностей (синонимы, аббревиатуры, разный регистр), triple reflection удаляет ненадёжные связи между сущностями. Уменьшает граф на ~40% и одновременно улучшает качество ответов.
Адаптировать под запрос

TL;DR

DEG-RAG — метод улучшения графов знаний (knowledge graphs), которые LLM автоматически строят из документов для RAG-систем. Метод работает в два шага: entity resolution убирает дубли сущностей (синонимы, аббревиатуры, разный регистр), triple reflection удаляет ненадёжные связи между сущностями. Уменьшает граф на ~40% и одновременно улучшает качество ответов.

Проблема: когда LLM извлекает сущности из большого объёма текста, она создаёт множество дублей одного понятия. Например, "LLMs", "LLM", "llms", "Large Language Models", "модели большого языка" — всё это разные узлы в графе, хотя означают одно. Это происходит потому что LLM обрабатывает текст батчами и не удерживает в памяти все ранее созданные сущности. Граф раздувается, поиск ухудшается, затраты растут. Плюс в графе появляются ошибочные связи из-за неточностей в исходных документах.

Метод состоит из нескольких технических шагов: блокирование сущностей (группировка кандидатов на слияние), создание векторных представлений (KG embeddings или LLM embeddings), сравнение по сходству, слияние дублей, проверка связей через LLM-as-judge. Исследователи протестировали разные варианты каждого компонента и выявили лучшие комбинации: блокирование по типу сущностей работает лучше семантического, традиционные KG embeddings иногда превосходят LLM embeddings.


🔬

Схема метода

Entity Resolution (удаление дублей сущностей):

ШАГ 1: Blocking — группировка похожих сущностей
├─ Semantic blocking: кластеризация по embeddings описаний
├─ Type-based blocking: группировка по типу (персона/место/организация)
└─ Structural blocking: группировка сущностей с общими соседями в графе

ШАГ 2: Matching — поиск дублей внутри групп
├─ Создание embeddings (KG embeddings / LLM embeddings)
├─ Расчёт сходства (ego node / neighbor / type-aware neighbor)
└─ Группировка сущностей с similarity > порога

ШАГ 3: Merging — слияние дублей
├─ Direct merge: один узел остаётся, остальные удаляются, связи переносятся
├─ Synonym linking: дубли остаются, добавляются связи "синоним"
└─ Merge + linking: слияние атрибутов + связи-синонимы

Triple Reflection (очистка связей):

ШАГ 4: LLM оценивает надёжность каждой связи (entity1, relation, entity2)
ШАГ 5: Удаляются связи с оценкой ниже порога

Все шаги требуют инфраструктуры: API, векторные БД, embeddings модели, код.


🚀

Пример применения

⚠️ Важно: Метод требует инфраструктуры (API, векторные БД, embeddings, код). Примеры ниже показывают концепцию, а не прямое применение в чате.

Концепция 1: Обнаружение дублей при работе с информацией

Задача: Ты собираешь информацию про российский рынок электромобилей из разных источников. В разных статьях встречаются: "Evolute", "Эволют", "бренд Evolute", "российские электромобили Evolute", "Evolute i-Pro".

Принцип из исследования: LLM создаёт дубли сущностей при обработке больших объёмов текста. Нужна явная инструкция на консолидацию.

Промпт:

Я собираю факты про рынок электромобилей. 

Вот список упоминаний из разных источников:
- Evolute показал рост продаж
- Эволют открыл новый завод
- бренд Evolute входит в группу КАМАЗ
- российские электромобили Evolute i-Pro
- Evolute i-Pro — флагманская модель

Задача:
1. Определи какие упоминания относятся к одной сущности
2. Выбери каноническое название для каждой группы
3. Покажи связи между сущностями

Формат:
ГРУППА 1: [каноническое название]
- синонимы: [список]
- описание: [краткое]

СВЯЗИ:
- [сущность А] -> [тип связи] -> [сущность Б]

Результат: LLM покажет что "Evolute" и "Эволют" — одна сущность (бренд), "Evolute i-Pro" — отдельная (модель), связь "Evolute производит Evolute i-Pro". Ты получишь структурированную карту сущностей вместо хаоса дублей.


Концепция 2: Проверка надёжности утверждений (Triple Reflection)

Задача: Готовишь презентацию про влияние нейросетей на рынок труда. Нашёл утверждение: "ChatGPT привёл к сокращению 30% дизайнеров в IT-компаниях России в 2024 году".

Принцип из исследования: Triple reflection — LLM оценивает надёжность связи между сущностями.

Промпт:

Оцени надёжность этого утверждения по шкале 0-1:

"ChatGPT" -> "привёл к сокращению" -> "30% дизайнеров в IT-компаниях России в 2024"

Критерии:
- Есть ли причинно-следственная связь?
- Можно ли проверить цифры?
- Нет ли логических противоречий?

Формат ответа:
Оценка: [0.0-1.0]
Аргументы ЗА: [список]
Аргументы ПРОТИВ: [список]
Вывод: [использовать / проверить дополнительно / отклонить]

Результат: LLM укажет что связь слабая (корреляция vs причинность), цифра "30%" не верифицируема, нужен дополнительный фактчекинг. Получишь сигнал проверить источник перед включением в презентацию.


🧠

Почему это работает

Слабость LLM: При обработке больших объёмов текста батчами модель не удерживает в памяти все ранее созданные сущности. Обрабатывая 100-й документ, она не "помнит" что в документе №5 уже создала сущность "Large Language Models" — и создаёт дубль "LLMs". Результат: граф с десятками узлов для одного понятия.

Структурное решение проблемы: Entity resolution использует векторные представления (embeddings) для поиска семантически идентичных сущностей. TransE, ComplEx и другие KG embeddings учитывают не только текст описания, но и структурный контекст — с какими сущностями связан узел, через какие отношения. Это ловит дубли которые пропустит простое string matching.

Рычаги управления (для технической реализации):

  • Entity reduction ratio (40% по умолчанию) → уменьши до 20% для консервативной очистки, увеличь до 60% для агрессивного сжатия
  • Blocking strategy (type-based / semantic / structural) → type-based для доменных графов, structural для сильно связанных графов
  • Similarity threshold δ_ER → подними для точного matching (меньше ложных слияний), понизь для полноты (больше дублей найдётся)
  • Triple reflection threshold δ_TR (0.2 по умолчанию) → подними до 0.5 для строгой фильтрации ненадёжных связей

Особенность: исследование показало что type-aware blocking (группировка сущностей одного типа: персоны/места/организации) эффективнее семантического clustering. Это работает потому что типы дают естественную границу — "Apple" как компания и "apple" как фрукт не должны сливаться, хотя семантически близки.


⚠️

Ограничения

⚠️ Требует инфраструктуры: Метод работает только с технической реализацией — нужен API к LLM, векторные базы данных (Llama Index), embeddings модели, KG база, код на Python. Невозможно применить в обычном чате ChatGPT/Claude.

⚠️ Только для Graph-RAG систем: Ценность только если ты строишь собственную RAG-систему с графами знаний. Для обычной работы с LLM в чате это не применимо напрямую.

⚠️ Риск ошибочных слияний: Если порог similarity слишком низкий, метод может слить разные сущности ("Apple компания" + "Apple фрукт"). Требует настройки под конкретный домен.

⚠️ Зависимость от качества embeddings: Для редких доменов (узкая специализация, редкие языки) LLM embeddings могут работать хуже традиционных KG embeddings, как показали эксперименты на Legal и Agriculture датасетах.


🔗

Ресурсы

Less is More: Denoising Knowledge Graphs for Retrieval Augmented Generation — исследование методов очистки LLM-генерируемых графов знаний, сравнение blocking стратегий, entity embeddings (TransE, DistMult, ComplEx, CompGCN, R-GCN, LLM embeddings), matching techniques, merging approaches

Авторы: Yilun Zheng, Dan Yang, Jie Li (Nanyang Technological University), Lin Shang (Nanjing University), Lihui Chen, Jiahao Xu (Nanyang Technological University), Sitao Luan (Mila, Quebec AI Institute / University of Montreal)

Код: https://github.com/157114/Denoise

Связанные работы: LightRAG (Guo et al., 2024), MS GraphRAG (Edge et al., 2024), HippoRAG (Jimenez Gutierrez et al., 2024) — Graph-based RAG системы которые исследователи улучшили через denoising


Концепты не выделены.

📖 Простыми словами

DEG-RAG: очистка графов знаний от дублей и ошибок

arXiv: 2510.14271

Графы знаний в RAG-системах сейчас работают как свалка: LLM читает текст и на каждый чих создает новый узел. Проблема в том, что нейронка не помнит, что она записала пять страниц назад. В итоге в базе данных плодятся сущности-клоны: «нейросети», «НС», «neural networks» и «искусственные нейронные сети» живут как абсолютно разные объекты. Это фундаментальный баг извлечения, из-за которого граф превращается в запутанный клубок дубликатов и мусорных связей, где найти верный ответ — задача со звездочкой.

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

Метод DEG-RAG решает это через жесткую зачистку в два этапа. Сначала идет entity resolution — это когда система берет все похожие названия и склеивает их в одну сущность, понимая, что «LLM» и «Large Language Models» — это одно и то же лицо. Затем включается triple reflection: LLM перепроверяет каждое созданное утверждение (триплет) на адекватность. Если связь между объектами выглядит как бред или ошибка парсинга, она безжалостно удаляется. Меньше данных — выше точность, потому что шум больше не сбивает модель с толку.

Хотя метод тестировали на графах знаний, принцип «сначала почисти, потом спрашивай» универсален для любого ИИ-проекта. Это работает и для векторного поиска, и для обычных баз данных: если ты скармливаешь модели сырой, нефильтрованный контекст, ты получаешь мусор на выходе. DEG-RAG доказывает, что качество ответов растет не от объема загруженных данных, а от того, насколько грамотно ты выкинул лишнее.

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

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с