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 стратегии:
- Overlap-based — тупой baseline: если слова из ответа нет в контексте = галлюцинация (IoU 0.36)
- Few-shot промптинг с Gemini 1.5 Pro — 2 примера + контекст → IoU 0.54 (лучший результат)
- 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 языков)
