Галлюцинации
Галлюцинация — когда модель уверенно генерирует неверную информацию. Это не баг конкретной реализации, а фундаментальное следствие принципа работы 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 |
| Как диагностировать? | Проверить конкретные факты вручную |
| Когда критично? | Факты, числа, источники, медицина, право |
| Что делать в продукте? | Добавить верификацию и явные оговорки |