⚠️ Галлюцинации и надёжность

Галлюцинация (hallucination) — это ситуация, когда LLM выдаёт фактически неверное утверждение так, будто оно бесспорно верно. Не «ошибку» с извинением, а уверенную, гладкую неправду. Для чат-бота это раздражает; для юридического или финансового сценария — недопустимо. Поэтому умение строить достаточно надёжные системы — это и есть то, что отличает production-решение от демо.

Корень проблемы

Модель не различает «я знаю» и «я правдоподобно продолжил». Для неё любой ответ — это статистически вероятное продолжение текста. Уверенность тона ≠ достоверность, и именно этот разрыв порождает галлюцинации. См. 01-chto-takoe-llm.


Виды галлюцинаций

ВидПримерЧем опасно
ФактологическаяНесуществующая норма закона, выдуманный прецедентПрямой риск в праве/финансах
ЦитатнаяСсылка на пункт договора, которого нетЮрист доверяет «своему» тексту
ЧисловаяПерепутанная сумма, дата, срокКритично в расчётах и сроках
«Согласительная»Модель поддакивает ошибочной предпосылке пользователяПодрывает доверие к системе
Источник/ссылкаВыдуманный URL, несуществующая статьяОпасно в research-задачах

Согласительность (sycophancy)

Модели обучены быть «полезными», и это иногда выливается в то, что они соглашаются с пользователем, даже если тот неправ. Задавая модели вопрос с заложенным в него неверным утверждением, вы часто получите подтверждение, а не поправку. Поэтому вопрос пользователя нельзя считать нейтральным входом.

Откуда берутся галлюцинации

  • Данные обучающиеся на правдоподобии, а не на истинности (01-chto-takoe-llm).
  • Устаревание знаний — модель не знает того, что произошло после её обучения (03-kak-sozdayutsya-modeli).
  • Длинный контекст — модель хуже помнит середину длинного документа (02-tokens-context-window).
  • Высокая температура — больше разнообразия, больше риска (07-prompt-engineering).
  • Отсутствие заземления — модель отвечает «из головы», а не по предоставленным источникам.

Многослойная защита

Надёжность — не одна кнопка, а слои, каждый из которых закрывает свою часть риска:

flowchart TD
    L1["1. Заземление (grounding)<br/>через RAG по проверенным источникам"]:::layer
    L2["2. Правильный промпт<br/>«не выдумывай, ссылайся на источник»"]:::layer
    L3["3. Низкая температура + structured output"]:::layer
    L4["4. Guardrails — проверки входа и выхода"]:::layer
    L5["5. Валидация фактов и цифр программно"]:::layer
    L6["6. Human-in-the-loop на критичных решениях"]:::layer
    L7["7. Мониторинг и сбор обратной связи в prod"]:::layer
    L1 --> L2 --> L3 --> L4 --> L5 --> L6 --> L7
    classDef layer fill:#e8f5e9,stroke:#4caf50;

1. Заземление (grounding) через RAG

Самый сильный рычаг: заставить модель отвечать по предоставленным документам, а не из памяти. RAG ([[09-rag]]) даёт модели «источник истины» и резко снижает выдумки — при условии, что промпт явно требует опираться только на извлечённые фрагменты.

2. Промпт против выдумок

Прямо запретите фантазировать и задайте поведение при нехватке данных:

Фраза, которая спасает

«Отвечай только на основе приведённых ниже документов. Если ответа в них нет — ответь: “В предоставленных документах нет достаточной информации”. Не выдумывай нормы, даты и суммы. После каждого утверждения указывай источник (название документа, пункт).»

3. Низкая температура и structured output

Для фактологических задач — temperature ≈ 0 и вывод в фиксированной схеме (11-tools-mcp). Это убирает «творческий» шум и делает ответы предсказуемыми.

4. Guardrails

Guardrails (ограждения) — программные проверки вокруг модели: фильтрация входа (запретные темы, инъекции), проверка выхода (соответствие схеме, отсутствие запрещённой информации), классификация «безопасно/опасно». Реализуются отдельными (часто лёгкими) моделями-классификаторами или правилами.

5. Программная валидация фактов

То, что модель сказала «цифра», не значит, что цифра верна. Критичные числа, даты, расчёты проверяйте кодом, а не моделью: модель извлекает значение «срок — 30 дней», а калькулятор/парсер проверяет арифметику и календарь. См. инструменты.

6. Human-in-the-loop

В высокорисковых сценариях модель не принимает решение сама: она готовит черновик, а решение утверждает человек. Это не слабость архитектуры, а её зрелость — особенно в праве и медицине.

7. Мониторинг

В production нужно видеть, где модель ошибается: логирование, трассировка, сбор «дизлайков» пользователей, регулярный прогон eval-выборок. Без обратной связи надёжность деградирует незаметно.

Калибровка уверенности

Калибровка — это соответствие между тем, насколько модель «уверена», и тем, насколько она реально права. LLM по умолчанию плохо откалиброваны: они одинаково уверенно говорят и правду, и ложь. Поэтому:

  • Не доверяйте «уверенности тона» как сигналу качества.
  • Если нужно ранжировать ответы по надёжности — используйте явные метрики (оценка второй моделью, голосование нескольких прогонов — self-consistency).

Self-consistency

Для сложной задачи модель запускают несколько раз с одной и той же (или чуть разной) постановкой и смотрят, сходятся ли ответы. Если 9 из 10 прогонов дают один результат — он надёжнее, чем единичный ответ. Это дорого, поэтому применяется точечно — на критичных решениях.

Сколько надёжности достаточно

Нельзя требовать 100%

Нулевого риска у LLM-систем не бывает. Вопрос не «убрать галлюцинации полностью», а «снизить их до уровня, приемлемого для задачи, и поймать остаточные людьми/процессом». Для черновика письма хватит 95%; для автоматического расчёта пени — нужен human-in-the-loop и аудит. Цель — знать свою долю ошибок и проектировать процесс вокруг неё.

flowchart LR
    Risk{"Цена ошибки?"}
    Risk -->|Низкая<br/>(черновик, summary)| Auto["🤖 Полная автоматизация"]
    Risk -->|Средняя<br/>(классификация обращений)| Review["👁 Авто + выборочная проверка"]
    Risk -->|Высокая<br/>(юрзаключение, платёж)| Hitl["✋ Human-in-the-loop<br/>обязательно"]

📌 Что запомнить

  • Галлюцинация — уверенная неправда; корень — в том, что правдоподобие для модели важнее истины.
  • Виды: фактологические, цитатные, числовые, согласительные, выдуманные источники.
  • Защита многослойная: grounding (RAG) → промпт → низкая температура/structured → guardrails → программная валидация → human-in-the-loop → мониторинг.
  • Модель не должна считать критичные числа — их проверяет код.
  • LLM плохо откалиброваны: не доверяйте тону уверенности; для ранжирования — self-consistency или оценка второй моделью.
  • Цель — не «ноль ошибок», а приемлемый уровень + процесс для остаточных.

Дальше: 🔎 RAG → — главный механизм заземления модели в ваших данных и снижения галлюцинаций.