3,583 papers
arXiv:2508.05179 72 7 авг. 2025 г. FREE

RAG против галлюцинаций: контекст + структурированная проверка

КЛЮЧЕВАЯ СУТЬ
Проблема: LLM уверенно придумывает факты, когда не знает ответа. Команда Airbus AI Research нашла простое решение – добавление релевантного документа в промпт снижает галлюцинации на 40-50%. Метод позволяет проверять факты в текстах (статьи, отчёты, ответы моделей) через сравнение с источником. Фишка: контекст превращает модель из генератора в редактора – она перестаёт придумывать и начинает сравнивать. Результат: точность выросла с 0.39 до 0.54 просто от загрузки фактов в промпт.
Адаптировать под запрос

TL;DR

Команда Airbus AI Research показала, что добавление релевантного контекста в промпт резко снижает галлюцинации LLM. Они протестировали разные методы детекции ошибок в ответах моделей: от простого промптинга до fine-tuning. Главное открытие — few-shot промптинг с примерами проверки плюс релевантные документы работает лучше всего.

Основная находка: LLM галлюцинирует на 40-50% меньше, когда видит релевантные факты в промпте. Без контекста модель придумывает — с контекстом проверяет. Исследователи загружали куски из Wikipedia в промпт перед вопросом. Результат: точность выросла со 0.39 до 0.54 (метрика IoU) просто от добавления контекста. Это работает даже с простым промптингом, без сложных систем.

Метод: Возьми релевантный документ → покажи LLM 2-3 примера как сравнивать ответ с фактами → попроси структурированный output (JSON) с пометками что верно, что нет. Можно варьировать уровень строгости: "опирайся только на контекст" (жёстко) или "используй контекст + свои знания" (гибко). Жёсткий режим находит больше ошибок, гибкий — лучше для спорных случаев.


🔬

Схема метода

Вариант 1: Промптинг (без кода)

1. Загрузи релевантный документ/статью в чат
2. Добавь few-shot примеры (2-3 образца проверки фактов)
3. Задай вопрос + попроси проверить ответ на галлюцинации
4. Получи структурированный output (какие факты верны/неверны)

Вариант 2: RAG система (требует код)

1. Индексация: загрузи документы в векторную БД
2. Retrieval: найди топ-3 релевантных кусков по запросу
3. Промпт: запрос + контекст + инструкции проверки
4. Получи ответ с детекцией галлюцинаций

Для читателя доступен Вариант 1 — ручная загрузка документа в чат.


🚀

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

Задача: Проверяем факты в статье про российский стартап. LLM написал текст, нужно найти где наврал.

Промпт:

Вот оригинальный текст пресс-релиза компании:

[вставить пресс-релиз или статью про стартап]

Теперь проверь этот текст на галлюцинации:

"Стартап Selectel получил раунд на $50 млн от Yandex в 2024 году. 
Компания специализируется на облачных сервисах и работает с 2008 года.
Их главный дата-центр находится в Казани."

Для каждого факта укажи:
- ВЕРНО (есть в исходном тексте)
- НЕВЕРНО (противоречит исходному тексту) 
- НЕЯСНО (нет информации в исходном тексте)

Ответ дай в формате:
{
 "факт": "текст факта",
 "статус": "ВЕРНО/НЕВЕРНО/НЕЯСНО",
 "пояснение": "почему"
}

Результат: Модель выдаст JSON для каждого факта с пометкой верно/неверно/неясно. Если данных нет в контексте — пометит "НЕЯСНО" вместо выдумывания. Это ключ: контекст заставляет модель признавать незнание, а не галлюцинировать.


🧠

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

Слабость LLM: Модель генерирует правдоподобный текст даже когда не знает ответа. Вероятностный автокомплит — она выбирает следующее слово по паттернам, не проверяя факты. Результат: уверенная ложь.

Сильная сторона LLM: Модель отлично сравнивает тексты. Дай два документа — она найдёт сходства, различия, противоречия. Это не требует "знаний", только логику и внимательность.

Как метод использует это: Загружаешь контекст → модель сравнивает ответ с контекстом → находит расхождения. Вместо генерации по памяти она работает как редактор с документом перед глазами. Галлюцинации резко падают, потому что модель видит факты, а не придумывает.

Рычаги управления:

  • Уровень строгости — "опирайся ТОЛЬКО на контекст" vs "используй контекст + свои знания". Первое — жёстче, второе — гибче для спорных ситуаций.
  • Формат output — JSON структурирует проверку, заставляя модель явно обосновать каждый факт.
  • Количество примеров — 2-3 few-shot примера показывают модели паттерн проверки. Больше примеров = точнее работа.

📋

Шаблон промпта

Вот исходный документ с фактами:

{текст_документа}

---

Проверь следующий текст на галлюцинации и ошибки:

{текст_для_проверки}

---

Для каждого утверждения определи:
- ВЕРНО — полностью подтверждается исходным документом
- НЕВЕРНО — противоречит исходному документу
- НЕЯСНО — информация отсутствует в исходном документе

Правила проверки:
1. Опирайся ТОЛЬКО на информацию из исходного документа
2. Если данных нет — пиши "НЕЯСНО", не придумывай
3. Числа, даты, имена — сверяй точно

Ответ дай в формате JSON:
[
 {
 "утверждение": "текст утверждения",
 "статус": "ВЕРНО/НЕВЕРНО/НЕЯСНО",
 "обоснование": "почему такой статус"
 }
]

Плейсхолдеры:

  • {текст_документа} — исходный текст с фактами (статья, пресс-релиз, отчёт)
  • {текст_для_проверки} — текст который нужно проверить (ответ LLM, черновик, чужой текст)

Рычаги:

  • Убери "ТОЛЬКО на документ" → модель будет использовать свои знания (гибче, но больше риск галлюцинаций)
  • Добавь "учитывай синонимы и перефразирования" → для проверки смысла, а не буквальных совпадений
  • Замени JSON на таблицу → если тебе так удобнее читать

⚠️

Ограничения

⚠️ Качество контекста критично: Если загрузил нерелевантный документ — модель будет путаться. Мусор на входе = мусор на выходе.

⚠️ Субъективные оценки не работают: Метод хорош для фактов (даты, имена, числа). Для оценочных суждений ("компания успешна") — бесполезен.

⚠️ Объём контекста ограничен: Если документ больше context window модели — часть фактов потеряется. Решение: разбивай на куски или используй длинноконтекстные модели.

⚠️ Противоречивые источники: Если в контексте два противоречащих факта — модель растеряется. Нужно чистить контекст или указывать что приоритетнее.


🔍

Как исследовали

Команда Airbus взяла датасет MKQA (вопросы + ответы на 14 языках) и прогнала через несколько подходов. Протестировали 4 языка: английский, немецкий, испанский, французский. Для каждого вопроса извлекали топ-3 куска из Wikipedia через поиск (BAAI/bge-large-en-v1.5 для embeddings + BM25 для sparse retrieval, потом reranker).

Сравнивали 3 стратегии:

  1. Overlap-based — тупой baseline: если слова из ответа нет в контексте = галлюцинация (IoU 0.36)
  2. Few-shot промптинг с Gemini 1.5 Pro — 2 примера + контекст → IoU 0.54 (лучший результат)
  3. Fine-tuning — XLM-RoBERTa и Llama-3.2-3B на синтетических данных → IoU 0.49-0.54

Ключевой инсайт: Промптинг с контекстом обогнал fine-tuned модели в 3 из 4 языков. Удивительно: Llama-3.2-3B (3 миллиарда параметров) показала тот же средний результат что и Gemini Pro (гораздо больше). Значит, правильная настройка маленькой модели конкурирует с гигантом.

Что удивило: Без контекста разброс огромный — от 0.27 (испанский) до 0.50 (французский). С контекстом — все языки подтянулись к 0.50-0.57. RAG сглаживает различия между языками — работает универсально.

Синтетические данные: Генерировали через LLM (Gemini) — брали вопрос + контекст из Wikipedia → просили сгенерить короткий ответ → потом инжектили галлюцинацию few-shot промптингом. Получили ~48000 примеров для обучения. Это позволило обучить модели без ручной разметки.


📄

Оригинал из исследования

Контекст: Исследователи использовали Gemini 1.5 Pro с промптом на английском (Listing 2 в статье). Промпт структурирован: задача → примеры → правила проверки → формат output (JSON).

You are an expert evaluator tasked with detecting hallucinated spans in answers.

Given:
- Question: {question}
- Retrieved Context: {context_chunks}
- Answer to evaluate: {answer}

Instructions:
1. Compare the answer against the retrieved context
2. Identify any spans in the answer that are NOT supported by the context
3. Mark hallucinated spans clearly

Output format:
{
 "hallucinated_spans": [
 {
 "span_text": "text of hallucinated content",
 "start_position": start_char_index,
 "end_position": end_char_index,
 "reason": "why this is hallucinated"
 }
 ]
}

Examples:
[Example 1: Question about city, context mentions Paris, answer says "London" - marked as hallucination]
[Example 2: Question about date, context says 2020, answer says "2020" - not hallucination]

Remember:
- Focus on factual accuracy
- Minor paraphrasing is acceptable
- Numbers, dates, names must match exactly

Полный текст промптов в Appendix статьи (Listings 1-6).


💡

Адаптации и экстраполяции

📌

Адаптация 1: Проверка фактов в новостях

💡 Адаптация для фактчекинга: Используй тот же принцип для проверки новостных статей.

Загрузи в чат:
1. Оригинальное интервью или пресс-релиз (первоисточник)
2. Новостную статью которая на него ссылается

Промпт:
"Сравни факты из новости с первоисточником. 
Найди где журналист исказил, додумал или вырвал из контекста.
Для каждого расхождения укажи: что было в источнике vs что написали в новости."

Модель вытащит все искажения — факт-чекинг вместо ручной сверки.

📌

Адаптация 2: Проверка AI-саммари

💡 Адаптация для работы с саммари: LLM сжал большой документ? Проверь не наврал ли.

1. Загрузи оригинальный документ
2. Дай LLM сгенерить саммари
3. Запусти проверку: "Сравни саммари с оригиналом. 
 Найди где саммари содержит факты которых нет в документе."

Особенно полезно для юридических, финансовых, медицинских документов — там ошибка = катастрофа.

📌

Адаптация 3: Дебаты с контекстом

🔧 Техника: несколько источников → аргументы с обеих сторон

Загрузи 2 статьи с противоположными мнениями (например, про новый закон)

Промпт:
"Вот две статьи с разными позициями.
Для каждой позиции найди:
- Факты которые подтверждаются в тексте
- Утверждения без подтверждения
- Противоречия между источниками

Цель: понять где объективные факты, где мнения, где манипуляции."

Модель покажет где автор опирается на факты, где на эмоции. Полезно для критического мышления.


🔗

Ресурсы

ATLANTIS at SemEval-2025 Task 3: Detecting Hallucinated Text Spans in Question Answering

Авторы: Catherine Kobus, Francois Lancelot, Marion-Cecile Martin, Nawal Ould Amer (Airbus AI Research)

Датасеты: MKQA (Longpre et al., 2020), Wikipedia (November 2023)

Модели: Gemini 1.5 Pro, XLM-RoBERTa large, Llama-3.2-3B-Instruct

Ключевые ссылки:

  • BAAI/bge-large-en-v1.5 (embedding model)
  • BAAI/bge-reranker-large (reranking)
  • SemEval-2025 MuSHROOM Task (14 языков)

📋 Дайджест исследования

Ключевая суть

Проблема: LLM уверенно придумывает факты, когда не знает ответа. Команда Airbus AI Research нашла простое решение – добавление релевантного документа в промпт снижает галлюцинации на 40-50%. Метод позволяет проверять факты в текстах (статьи, отчёты, ответы моделей) через сравнение с источником. Фишка: контекст превращает модель из генератора в редактора – она перестаёт придумывать и начинает сравнивать. Результат: точность выросла с 0.39 до 0.54 просто от загрузки фактов в промпт.

Принцип работы

Загружаешь документ с фактами → показываешь 2-3 примера как проверять утверждения → просишь структурированный ответ (JSON) с пометками ВЕРНО/НЕВЕРНО/НЕЯСНО для каждого факта. Ключ: модель без контекста генерирует правдоподобную ложь, с контекстом – сравнивает и признаёт "данных нет". Можешь крутить строгость: "опирайся ТОЛЬКО на документ" (жёстко, находит больше ошибок) или "используй документ + свои знания" (гибко, для спорных случаев).

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

Парадокс навыка: LLM плохо генерирует факты из памяти (вероятностный автокомплит – выбирает следующее слово по паттернам, не проверяя истину), но отлично сравнивает тексты. Дай два документа – найдёт сходства, различия, противоречия без "знаний", только по логике. Метод использует сильную сторону: модель работает как редактор с документом перед глазами, а не как выдумщик. Цифры подтверждают: −40-50% галлюцинаций, точность с 0.39 до 0.54 (метрика IoU – насколько совпадают выделенные ошибки). Структурированный формат (JSON) заставляет модель явно обосновать каждый факт вместо общих фраз.

Когда применять

Проверка фактов в текстах → конкретно для статей, отчётов, пресс-релизов, ответов LLM, особенно когда есть исходный документ для сравнения (пресс-релиз компании, научная статья, официальный отчёт). НЕ подходит для субъективных оценок ("компания успешна", "перспективная идея") – метод работает только с проверяемыми фактами: даты, имена, числа, события.

Мини-рецепт

1. Загрузи документ с фактами: вставь в промпт исходный текст (статью, пресс-релиз, отчёт) – это база для сравнения
2. Добавь инструкцию проверки: попроси для каждого утверждения указать ВЕРНО (подтверждается документом) / НЕВЕРНО (противоречит) / НЕЯСНО (данных нет)
3. Задай структурированный формат: JSON с полями "утверждение", "статус", "обоснование" – модель не сможет уйти в общие фразы
4. Настрой строгость: добавь "опирайся ТОЛЬКО на документ" (жёстко) или убери это (гибко, модель использует свои знания)
5. Опционально – покажи примеры: 2-3 образца проверки фактов (few-shot) – модель точнее поймёт паттерн

Примеры

[ПЛОХО] : Проверь этот текст на ошибки и галлюцинации (модель не знает с чем сравнивать, будет использовать свою память – ненадёжно)
[ХОРОШО] : Вот пресс-релиз компании: [вставить документ]. Проверь следующий текст: "Стартап получил $50 млн от Yandex в 2024, работает с 2008 года". Для каждого факта укажи ВЕРНО/НЕВЕРНО/НЕЯСНО в JSON. Опирайся ТОЛЬКО на пресс-релиз – если данных нет, пиши НЕЯСНО
Источник: ATLANTIS at SemEval-2025 Task 3: Detecting Hallucinated Text Spans in Question Answering
ArXiv ID: 2508.05179 | Сгенерировано: 2026-01-12 06:00

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

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

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