Перейти к основному содержимому

Галлюцинации

Галлюцинация — когда модель уверенно генерирует неверную информацию. Это не баг конкретной реализации, а фундаментальное следствие принципа работы LLM.

Почему это происходит

Модель обучена предсказывать правдоподобный текст, а не истину. У неё нет доступа к "базе фактов" — она генерирует следующий токен на основе статистических паттернов.

Вопрос: "Когда была основана компания XYZ?"
Модель: Не знает → генерирует дату, которая "звучит правдоподобно"
Ответ: "Компания XYZ была основана в 1987 году" (уверенно, неверно)

Модель не умеет сказать "я не знаю" — если не обучена специально на это.

Типы галлюцинаций

Фактические

Выдуманные или неточные факты.

❌ "Эйнштейн получил Нобелевскую премию в 1921 году за теорию относительности"
✓ За фотоэлектрический эффект, не за относительность

Цитатные

Реальный человек, выдуманная цитата.

❌ "Как сказал Билл Гейтс: '640 КБ памяти достаточно для всех'"
✓ Он этого никогда не говорил

Ссылочные

Несуществующие источники с реалистичными деталями.

❌ "Смотри исследование: Smith, J. (2019). Neural efficiency in transformer models.
Journal of AI Research, 14(3), 245-267."
✓ Такой статьи не существует

Логические

Ошибки в рассуждениях, которые выглядят убедительно.

Задача: "Если у меня 5 яблок и я отдал половину, сколько осталось?"
❌ "У вас осталось 3 яблока"

Контекстные

Противоречие тому, что было написано раньше в том же диалоге.

Начало: "Я работаю в компании 3 года"
Позже: Модель пишет "как вы упоминали, вы новичок в компании"

Инструкционные

Модель делает не то, что просили.

Промт: "Ответь только 'да' или 'нет'"
Ответ: "Конечно! Да, это правильное утверждение, потому что..."

Что провоцирует галлюцинации

ФакторПочему
Редкие фактыМало обучающих примеров, модель "додумывает"
Нечёткий вопросМодель угадывает намерение
Высокая temperatureВыбираются менее вероятные токены
Просьба "быть уверенным"Модель подавляет выражение сомнений
Длинный контекстТеряется нить к оригинальным данным
Сложная цепочка рассужденийНакопительная ошибка
Противоречивый контекстМодель выбирает "удобную" версию

Диагностика

Признаки потенциальной галлюцинации

  • Очень конкретные детали (даты, числа, имена) без источников
  • Уверенный тон при нестандартных фактах
  • Ссылки на конкретные документы / статьи
  • Ответ слишком "идеально" соответствует вопросу
  • Модель не выражает неопределённости там, где она должна быть

Самопроверка модели

Промт: "Насколько ты уверен в этом ответе?
Есть ли детали, в которых ты можешь ошибаться?"

Хорошая модель укажет на слабые места. Плохой признак — 100% уверенность в спорных фактах.

Стратегии митигации

1. Grounding — заземление на источники

Давай модели только ту информацию, из которой она должна отвечать.

Системный промт:
"Отвечай ТОЛЬКО на основе предоставленного контекста.
Если ответа нет в контексте — скажи 'не знаю'."

Контекст: [вставляем документы]
Вопрос: [вопрос пользователя]

2. RAG

Вместо того чтобы полагаться на "память" модели — достаём актуальные данные из базы знаний.

3. Temperature = 0

Для фактических задач убирает случайность выбора токена. Не устраняет галлюцинации полностью, но снижает.

4. Chain-of-Thought верификация

Просим модель объяснить рассуждение — ошибки становятся заметнее.

"Перед ответом — пошагово опиши своё рассуждение"

5. Структурированный вывод с confidence

{
"answer": "Компания основана в 1995 году",
"confidence": "low",
"reason": "Точная дата не упоминается в предоставленных материалах"
}

6. Self-consistency

Задать один вопрос несколько раз (разные seed/temperature), сравнить ответы. Консистентные ответы — надёжнее.

7. Внешняя верификация

Для критичных данных — не доверять модели без независимой проверки через API, БД или поиск.

8. Явная инструкция "не знаю"

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

Что НЕ помогает

МетодПочему не работает
"Не галлюцинируй" в промтеМодель не понимает когда она галлюцинирует
Просьба быть точнымУвеличивает уверенность, не точность
Использование более новой моделиГаллюцинации есть у всех LLM
Низкая temperatureСнижает вариативность, не убирает системные ошибки

Галлюцинации в разных задачах

ЗадачаРискМитигация
Поиск по документамВысокийRAG + grounding
Генерация кодаСреднийЗапуск и тесты
СуммаризацияНизкий (если текст в контексте)Указать источник
Креативный текстНе применимо
Юридические/медицинские фактыКритическийОбязательная верификация
SQL генерацияСреднийТестирование запроса

Резюме

ВопросОтвет
Можно ли полностью убрать галлюцинации?Нет — это природа модели
Как снизить?Grounding, RAG, temperature=0, CoT
Как диагностировать?Проверить конкретные факты вручную
Когда критично?Факты, числа, источники, медицина, право
Что делать в продукте?Добавить верификацию и явные оговорки