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

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

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