# ГЛАВА 3. ГАЛЛЮЦИНАЦИИ — НЕ ПОЛОМКА, А РЕЖИМ РАБОТЫ

---

> *«Система уверенно назвала шесть судебных решений в поддержку иска. Проблема в том, что ни одного из них не существовало.»*

В 2023 году нью-йоркский адвокат Стивен Шварц подал в суд ходатайство, подкреплённое ссылками на прецеденты: *Varghese v. China Southern Airlines*, *Martinez v. Delta Airlines* и ещё четыре кейса. Судья не нашёл ни одного из них в базе данных. Все шесть были выдуманы ChatGPT — вместе с номерами дел, датами и цитатами из «решений». Шварц и его коллега ЛоДука были совместно оштрафованы на $5 000 и стали символом главного практического риска LLM.

Это не единичный курьёз. Google Bard в своём первом публичном демо заявил, что телескоп James Webb сделал первое в истории фото экзопланеты — что было фактически неверно. В юридических, медицинских и финансовых сценариях такие ошибки особенно опасны не потому, что модель «редко ошибается», а потому что она ошибается **уверенно и правдоподобно**.

Всё это — не ошибки в привычном понимании. Программа не «упала», не выдала сообщение об ошибке. Модель не «сломалась» — она работала *именно так, как была обучена*. 

Галлюцинация LLM — это **уверенная конфабуляция**: модель заполняет пробелы в знаниях правдоподобными, но вымышленными деталями. Точно так же, как человек с синдромом Корсакова искренне «вспоминает» события, которых не было, — не лжёт, а достраивает картину мира до целостной. Разница в том, что человеку мы можем сказать «подумай ещё раз», а модель каждый раз думает, что говорит правду.

Почему это должно волновать каждого, кто строит продукты на LLM? Потому что галлюцинация — самый коварный режим отказа: **система не сигнализирует об ошибке**. Она возвращает ответ с той же уверенностью, что и при корректных фактах. Без внешних контуров проверки вы не узнаете о проблеме, пока она не дойдёт до пользователя, суда или пациента.

---

## 3.1. Модель обучена предсказывать правдоподобное продолжение, а не истину

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

### Функция потерь: правдоподобие, не истинность

LLM оптимизируют **авторегрессионный cross-entropy loss** (как мы видели во Введении): на каждом шаге модель предсказывает распределение вероятностей по всему словарю (~100K–200K токенов) и штрафуется за то, насколько её прогноз расходится с «правильным» следующим токеном из тренировочных данных.

**Ключевое следствие:** модель не знает, верен ли факт. Она знает, что «Париж — столица Франции» — вероятное продолжение после «Столица Франции —». Но если в тренировочных данных часто встречалось «CERN расположен в Женеве, Швейцария, недалеко от границы с Францией», модель может сгенерировать «CERN расположен во Франции» — потому что `Франция` имеет высокую статистическую ассоциацию с контекстом CERN.

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

Классификация из обзорных работ (Ji et al., 2023; Huang et al., 2023):

**1. Intrinsic hallucinations (внутренние):**
Модель генерирует информацию, **противоречащую** предоставленному контексту или общеизвестным фактам.

Пример:
```
Контекст: "Компания основана в 2015 году."
Модель: "Компания, основанная в 2012 году, показала..."
```

Причина: attention не «подхватил» дату из контекста, MLP-слои активировали ассоциации с другой датой, которая статистически более вероятна в похожих контекстах.

**2. Extrinsic hallucinations (внешние):**
Модель генерирует **правдоподобную, но полностью выдуманную** информацию, которую невозможно ни подтвердить, ни опровергнуть на основе контекста.

Пример:
```
Запрос: "Расскажи о исследовании Smith et al. (2024) о квантовых вычислениях."
Модель: "В работе Smith et al. (2024) был предложен алгоритм QuBit-3, 
который показал 47% ускорение на задачах факторизации..."
```

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

**3. Faithfulness hallucinations (неверность):**
Модель отклоняется от собственной цепочки рассуждений. Промежуточные шаги CoT ведут к одному выводу, но финальный ответ — другой.

### Распространённость: масштаб проблемы

Чтобы оценить масштаб, представьте: ваш коллега даёт верные факты только в 6 из 10 случаев. Вы бы доверили ему писать документацию? А именно такой «коллега» — ранние модели на задачах атомарной точности.

| Метрика | Результат | Источник |
|---------|-----------|----------|
| TruthfulQA: сильные модели всё ещё далеки от человека | ~75–80% правдивых ответов | Lin et al. (2022); результаты моделей — из последующих оценок на TruthfulQA leaderboard |
| TruthfulQA: человек | 94% | Lin et al. (2022) |
| FActScore: ChatGPT на биографиях | 58% атомарная точность | Min et al. (EMNLP 2023) |
| SimpleQA: GPT-4o | ~39% точных ответов | OpenAI (2024) |
| HELMET: оценка в длинном контексте | Галлюцинации растут с длиной контекста | Yen et al. (2024) |
| Парадокс масштабирования | Более крупные модели (GPT-3) были *менее* правдивы, чем мелкие | Lin et al. (2022) |

**SimpleQA** (OpenAI, 2024) — бенчмарк из ~4 300 коротких фактуальных вопросов с однозначными ответами. Он показал, что даже сильные модели ошибаются на банальных фактах. **HELMET** добавил важное измерение: точность модели деградирует по мере увеличения длины контекста, что критично для длинных документов.

**Прогресс reasoning-моделей (2025–2026).** Модели с test-time compute и extended thinking действительно улучшают качество на сложных задачах и нередко ловят часть собственных ошибок. Но — и это ключевой вывод — **они не устраняют галлюцинации**. Архитектура остаётся авторегрессионной: модель по-прежнему предсказывает следующий токен, а не выполняет внешний фактчекинг.

Последний пункт таблицы критически важен: **масштабирование не решает проблему галлюцинаций автоматически**. Более крупные модели знают больше фактов, но и более уверенно генерируют правдоподобную ложь. RLHF частично исправляет это, но не устраняет.

---

## 3.2. Локальный оптимум и «капитан очевидность»

### Проблема сглаживания

Обучение LLM включает два этапа:

1. **Pre-training**: максимизация правдоподобия на огромном корпусе. Модель учится генерировать текст, похожий на интернет.
2. **Alignment (RLHF/DPO)**: модель обучается генерировать ответы, которые нравятся людям-оценщикам.

На втором этапе происходит **сглаживание**: модель подавляет «рискованные» продолжения (необычные идеи, спорные утверждения, нестандартные формулировки) в пользу **консервативных, безопасных, шаблонных**.

### Как это проявляется

1. **Банальные обобщения**: «Это сложная тема с множеством аспектов...»
2. **Списки трюизмов**: «Плюсы: гибкость, масштабируемость, удобство. Минусы: сложность, стоимость, кривая обучения.»
3. **Хеджирование**: «Это зависит от конкретного случая и может варьироваться...»
4. **Избыточные предупреждения**: «Важно учитывать, что данный подход может не подойти для всех ситуаций...»

### Почему это режим, а не баг

Выравнивание (alignment) оптимизирует **предпочтения оценщиков**, а не качество инженерного вывода. Оценщики — часто не эксперты — предпочитают:
- Структурированные списки → модель генерирует списки даже когда нужен связный анализ.
- Осторожные формулировки → модель хеджирует даже когда факт однозначен.
- Длинные ответы → модель раздувает текст даже когда достаточно одного предложения.

### Sycophancy: модель как «поддакиватель»

Одно из самых коварных последствий RLHF — **сикофантия**. Модель обучена на данных, где согласие с пользователем получает более высокую оценку. Результат:

```
Пользователь: "Мне кажется, что Python быстрее C++ для числовых вычислений. Верно?"
Модель: "Да, вы правы! Python действительно может быть быстрее C++ 
в ряде сценариев числовых вычислений, особенно с NumPy..."
```

Модель начинает с «Да, вы правы!» — хотя утверждение фактически неверно. Она подстраивает объяснение под заданный вывод, а не корректирует ошибку. Исследования (Sharma et al., 2024) показали, что модели систематически меняют свой ответ, когда пользователь выражает несогласие — даже если изначальный ответ был верным.

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

### Verbosity bias: длинный ≠ правильный

**Verbosity bias** — системное предпочтение длинных ответов в данных RLHF. Оценщики чаще выбирают развёрнутый ответ, даже если краткий точнее. Модель это усвоила:

```
Вопрос: "Какой порт по умолчанию у PostgreSQL?"

Ответ модели (verbosity bias): 
"Отличный вопрос! PostgreSQL — это мощная объектно-реляционная 
система управления базами данных с открытым исходным кодом. 
Она была разработана в Университете Калифорнии в Беркли 
и имеет более 35 лет активной разработки. 
Порт по умолчанию для PostgreSQL — 5432. 
Важно отметить, что этот порт можно изменить..."

Правильный ответ: "5432"
```

В «водянистом» ответе каждое дополнительное предложение — шанс для галлюцинации. Чем больше текста генерирует модель, тем выше вероятность, что она «соскользнёт» с фактов на правдоподобные, но выдуманные детали.

**DPO** (Rafailov et al., 2023) и более поздние методы (KTO, ORPO) частично решают эти проблемы, позволяя более тонкое выравнивание без нестабильности PPO, но фундаментальный компромисс «безопасность vs точность» остаётся.

---

## 3.3. Faithfulness reasoning: цепочка рассуждений может быть фасадом

### Chain-of-Thought: мощный, но хрупкий инструмент

Chain-of-Thought (CoT, Wei et al., 2022) — техника, при которой модель генерирует промежуточные шаги рассуждения перед финальным ответом. Результаты впечатляют:

| Бенчмарк | Без CoT | С CoT | Улучшение |
|----------|---------|-------|-----------|
| GSM8K (математика) | ~18% (PaLM 540B) | ~57% | +39 п.п. |
| StrategyQA | — | заметное улучшение | Self-Consistency |

**Zero-shot CoT** (Kojima et al., NeurIPS 2022): достаточно добавить фразу «Let's think step by step» чтобы получить значительное улучшение на математических задачах. На GSM8K: с 10.4% до 40.7%.

### Проблема: post-hoc rationalization

Однако **внутренние рассуждения модели не обязательно отражают реальный вычислительный путь**. Это показали исследования Turpin et al. (2023) и Lanham et al. (2023):

1. **Модель «знает» ответ до рассуждения**. В некоторых случаях финальный ответ определяется уже первыми токенами CoT-цепочки. Остальные шаги — пост-рационализация.

2. **CoT можно сломать контекстом**. Если в промпте содержится подсказка неверного ответа (например, «Подсказка: ответ, вероятно, 42»), модель подстроит рассуждения под 42, даже если правильный ответ — 37.

3. **Unfaithful CoT**: модель генерирует логически корректные шаги, которые не соответствуют её внутренним вычислениям.

### Пример unfaithful reasoning

```
Задача: 247 × 13 = ?

Модель (CoT):
"Разобьём на шаги:
247 × 10 = 2470
247 × 3 = 741
2470 + 741 = 3211
Ответ: 3211"
```

Выглядит как правильное рассуждение. Но:
- Модель не выполняла умножение — она сгенерировала числа, которые «выглядят правильно» для этого паттерна.
- Иногда промежуточные шаги верны, но отдельные числа подставлены из ассоциативной памяти, а не вычислены.
- Если усложнить числа (373 × 4729), ошибки станут очевидными.

### Интерпретируемость усилила этот аргумент

До 2025 года тезис про unfaithful CoT в основном опирался на поведенческие эксперименты: модель отвечала так, будто рассуждала, но при манипуляции подсказками выяснялось, что объяснение ненадёжно. Механистическая интерпретируемость добавила **внутренние свидетельства**.

В кейс-стади Anthropic по circuit tracing видно различие между задачами, где модель действительно проходит через промежуточные вычислительные шаги, и задачами, где она выстраивает правдоподобное объяснение уже после выбора направления ответа. Особенно показателен режим **motivated reasoning**: если модели подсунуть неверную подсказку, она может не просто ошибиться, а буквально подобрать цепочку промежуточных аргументов под желаемый вывод.

Тот же инструментарий дал ещё одно важное наблюдение для темы галлюцинаций: в ряде кейсов модель изначально склонна **не спекулировать**, а выдуманный ответ появляется, когда другой внутренний контур подавляет этот отказ и активирует ощущение «я знаю ответ». Практический смысл прост: chain-of-thought полезен как интерфейс декомпозиции, но **не должен считаться аудиторским следом**, если вы не проверяете ответ внешними источниками или отдельным verifier-контуром.

### Когда CoT помогает, а когда вредит

| Ситуация | CoT помогает? | Почему |
|----------|---------------|--------|
| Многошаговая математика | Да | Структурирует генерацию, снижает ошибки переноса |
| Логические задачи | Да | Позволяет отслеживать состояние |
| Простые фактуальные вопросы | Нет | Добавляет шум, может «убедить» модель в неверном ответе |
| Классификация | Скорее нет | Прямой паттерн-матчинг эффективнее |
| Творческие задачи | Зависит | Может загнать в одну колею рассуждений |

Полноценный разбор chain-of-thought и стратегий декомпозиции — в [Главе 9](09_multistep_reasoning.md).

---

## 3.4. Таксономия причин галлюцинаций

### 1. Тренировочные данные

- **Шумные данные**: интернет содержит ошибки, мифы, устаревшие факты. Модель учится на всём.
- **Дублирование**: часто повторяемые ошибки получают больший вес.
- **Противоречия**: один и тот же факт может быть представлен по-разному в разных источниках.

### 2. Архитектурные ограничения

- **Нет явного механизма фактчекинга**: модель не сверяет свои выходы с базой знаний.
- **Soft attention**: модель не может точно «скопировать» информацию из контекста — она интерполирует через attention-веса.
- **Ограниченная глубина**: сложные многошаговые рассуждения требуют больше слоёв, чем доступно.

### 3. Процесс декодирования

- **Sampling**: при ненулевой температуре модель сэмплирует из распределения, что вносит случайность.
- **Top-k / top-p фильтрация**: отсекает маловероятные, но потенциально корректные токены.
- **Greedy decoding**: может застрять в локальном оптимуме.

### 4. Alignment

- **RLHF reward hacking**: модель учится генерировать ответы, которые обманывают reward model, а не которые корректны.
- **Sycophancy**: модель соглашается с пользователем, даже если он неправ (подробнее — в разделе 3.2).
- **Verbosity bias**: более длинные ответы получают более высокие reward-оценки, что стимулирует «разбавление» фактов общими фразами (подробнее — в разделе 3.2).
- **Мультимодальные галлюцинации**: с ростом vision- и video-моделей проблема распространилась на изображения. Модели «видят» объекты, которых нет на фото, выдумывают текст на вывесках, неверно интерпретируют графики. В медицинской визуализации это особенно опасно.

---

## 3.5. Что может помочь: инженерные решения

### RAG (Retrieval Augmented Generation)

**Принцип**: вынос фактов во внешний индекс. Модель получает релевантные документы в контексте и основывает ответ на них, а не на параметрической памяти.

```
[Запрос пользователя] → [Embedding запроса] → [Поиск в векторном индексе] 
    → [Top-K релевантных чанков] → [Промпт: запрос + чанки] → [LLM: ответ с цитатами]
```

**Эффективность**: RAG часто заметно снижает hallucination rate на фактуальных задачах, если retrieval действительно приносит релевантные источники (Lewis et al., 2020; Gao et al., 2024). К 2026 году RAG + verification loops стали обычной production-практикой, а не лабораторным трюком.

Но есть важная тонкость: retrieved context не становится «истиной автоматически». Работа *ClashEval* показала, что между внешним контекстом и внутренним prior модели идёт постоянная борьба. Если retrieval ошибся, модель может послушно повторить неверный факт; если retrieval прав, модель всё равно может упрямо держаться за свой prior. Поэтому production-RAG требует не только retrieval, но и **отдельной оценки качества retrieval, проверки противоречий и метрик faithfulness**.

Подробно о RAG-пайплайнах, стратегиях чанкинга, GraphRAG, RAPTOR и типичных ошибках — в [Главе 12](12_rag.md).

### Constrained Decoding

**Принцип**: ограничение пространства вывода грамматикой или схемой. Модель может генерировать только валидный JSON, SQL, XML и т.д.

К 2026 году constrained decoding стал частью основных API-платформ:
- **OpenAI Structured Outputs**: JSON Schema с гарантированной валидацией, включая `enum`, `required`, вложенные объекты
- **Anthropic Tool Use / JSON mode**: строгая JSON-генерация через tool definitions
- **Google Gemini**: controlled generation с JSON Schema
- **Outlines / llama.cpp grammar**: grammar-guided generation для локальных моделей
- **Instructor** (Python): обёртка для Pydantic-валидации поверх любого API

**Что это даёт на практике**: если вы запрашиваете ответ в формате `{"city": string, "population": integer}`, модель *физически не может* вернуть текст вместо числа или пропустить поле. Синтаксические ошибки устранены полностью.

**Чего это не решает**: семантические галлюцинации. Модель может вернуть `{"city": "Москва", "population": 25000000}` — валидный JSON, но неверное число. Constrained decoding — необходимый, но недостаточный барьер.

### Verification Loops

**Принцип**: отдельный агент или промпт проверяет выход генератора.

```
[Генератор] → [Выход] → [Верификатор: проверка фактов, ссылок, кода] → [Финальный ответ / Запрос повторной генерации]
```

Подробно — в [Главе 13](13_anti_hallucination_loop.md).

### Методы детекции галлюцинаций

Прежде чем исправлять галлюцинации, их нужно **обнаружить**. В 2025–2026 сложился набор практичных подходов:

#### 1. Self-consistency (самосогласованность)

Генерируем N ответов (например, 5) на один вопрос при ненулевой температуре. Если все ответы совпадают — высокая уверенность. Если разброс значительный — маркер галлюцинации.

```python
# Псевдокод самосогласованности
responses = [generate(prompt, temperature=0.7) for _ in range(5)]
if len(set(responses)) > 2:
    flag_as_uncertain()
```

**Ограничение**: модель может стабильно галлюцинировать (все 5 ответов одинаково неверны), если заблуждение «зашито» в веса.

Подробный анализ Self-Consistency как техники генерации, включая стоимость и масштабирование — в [Главе 8](08_multiple_hypotheses.md).

#### 2. NLI-based verification (проверка через Natural Language Inference)

Модель NLI (DeBERTa, BART-MNLI) проверяет, **следует ли** утверждение из источника:

```
Предпосылка (из RAG): "Компания основана в 2015 году в Берлине."
Гипотеза (из ответа LLM): "Компания, основанная в 2012 году..."
NLI-вердикт: CONTRADICTION → галлюцинация
```

Это можно автоматизировать для каждого атомарного факта в ответе (подход FActScore).

**Промпт для ИИ:** «Напиши Python-скрипт, который детектирует потенциальные фактические ошибки (галлюцинации) в ответах LLM через NLI-модель (natural language inference). Скрипт принимает: (1) исходный текст/запрос, (2) ответ модели. Разбивает ответ на атомарные утверждения (claims), каждое утверждение проверяет через NLI (entailment/contradiction/neutral) относительно ground-truth фактов. Используй библиотеку HuggingFace transformers, модель типа `microsoft/deberta-v3-large-mnli` или актуальный аналог. Результат — таблица: claim → NLI verdict → confidence. Покажи пример использования на 3 утверждениях.»

#### 3. Анализ log-вероятностей

Многие API возвращают `logprobs` для каждого токена. Низкая log-вероятность конкретного факта — сигнал неуверенности модели:

- Если модель пишет "основана в **2015** году" с logprob −0.1 — она уверена.
- Если logprob −3.5 — она «угадывает». Стоит перепроверить.

**На практике**: установите порог и автоматически маркируйте low-confidence факты для человеческой проверки.

#### 4. Перекрёстная верификация моделями

Используйте модель A для генерации, модель B для проверки. Разные модели имеют разные паттерны галлюцинаций, и расхождение — надёжный сигнал. Дороже, но эффективнее self-consistency.

### Temperature Tuning

| Параметр | Значение | Применение |
|----------|----------|------------|
| `temperature` = 0.0–0.1 | Почти детерминированный | Фактуальные задачи, код, structured output |
| `temperature` = 0.3–0.5 | Умеренный | Баланс точности и разнообразия |
| `temperature` = 0.7–0.9 | Высокий | Брейншторм, креативные задачи, исследование пространства |
| `temperature` = 1.0+ | Максимальный | Только для генерации разнообразных кандидатов с последующей фильтрацией |

**Важно**: температура меняет распределение, но не устраняет галлюцинации. При `temp=0` модель всё ещё может галлюцинировать — просто делает это **детерминированно** (один и тот же неверный ответ каждый раз).

---

## Практический вывод

### Принцип: галлюцинация — ожидаемое поведение, проектируйте контуры

| # | Правило | Действие |
|---|---------|----------|
| 1 | **Галлюцинация — не баг, а режим** | Проектируйте системы с ожиданием ошибок, не надейтесь на «умную» модель |
| 2 | **Разделяйте генерацию и проверку** | Generator ≠ Verifier. Используйте отдельные модели или промпты |
| 3 | **Внешние источники для фактов** | RAG для данных, инструменты для вычислений, API для актуальной информации |
| 4 | **Логируйте hallucination rate** | Измеряйте на ваших задачах: FActScore, ручная проверка выборки |
| 5 | **Не доверяйте CoT как доказательству** | CoT улучшает accuracy, но не гарантирует faithful reasoning |
| 6 | **Снижайте temperature для фактов** | 0.0–0.3 для детерминированных задач |
| 7 | **Используйте constrained decoding** | Structured outputs устраняют формальные ошибки |
| 8 | **Отдельно измеряйте retrieval quality и faithfulness** | Если RAG ошибся, выясняйте отдельно: не нашли документ, нашли мусор или модель проигнорировала контекст |

### Ментальная модель

> Относитесь к LLM как к **очень начитанному стажёру, который никогда не говорит «я не знаю»**. Он прочитал миллионы документов и может убедительно говорить о чём угодно. Но он не проверяет свои слова перед тем, как их сказать. Ваша задача — построить систему ревью, которая ловит ошибки до того, как они попадут к конечному пользователю.

---

### Стратегии по уровню сложности

Не все проекты требуют одинаковой защиты от галлюцинаций. Вот прогрессия — от простого к сложному:

#### Уровень 1: «Минимальная гигиена» (1 день работы)

- Установить `temperature=0` для фактуальных задач
- Использовать structured outputs (JSON Schema) для всех API-вызовов
- Добавить системный промпт: *«Если ты не уверен в факте — скажи об этом явно. Не выдумывай ссылки, даты или имена.»*
- Включить few-shot примеры с корректным ответом «Я не знаю» в промпт

**Эффект**: заметно снижает грубые галлюцинации. Бесплатно.

#### Уровень 2: «RAG-фундамент» (1–2 недели)

- Подключить векторную БД с вашими документами
- Реализовать базовый RAG-пайплайн (embed → retrieve → generate)
- Добавить правило: *«Отвечай только на основе предоставленных документов. Если ответа нет в документах — скажи об этом.»*
- Настроить чанкинг под ваш тип контента (размер, перекрытие, стратегия)

**Эффект**: существенно снижает hallucination rate на фактуальных задачах — при условии, что retrieval приносит релевантные источники.

#### Уровень 3: «Верификация» (2–4 недели)

- Добавить verification loop: отдельный вызов LLM проверяет ответ генератора
- Реализовать self-consistency (3–5 параллельных генераций, мажоритарное голосование)
- Подключить NLI-модель для автоматической проверки фактов против источников
- Логировать hallucination rate на выборке (ручная разметка 50–100 ответов в неделю)

**Эффект**: ощутимо сокращает оставшиеся ошибки. Главное — вы начинаете *видеть* проблему количественно.

#### Уровень 4: «Продакшн-контур» (1–2 месяца)

- GraphRAG или RAPTOR для сложных мультихоповых запросов
- Перекрёстная верификация (модель A генерирует, модель B проверяет)
- Log-probability мониторинг: автоматический флаг для low-confidence фактов
- Цепочка: генерация → проверка → извлечение цитат → финальная валидация
- A/B-тестирование hallucination rate на реальных пользователях
- Человек в контуре (human-in-the-loop) для критичных решений

**Эффект**: hallucination rate выходит на уровень, приемлемый для регулируемых отраслей — при условии постоянного мониторинга и human-in-the-loop для критичных решений.

### Задания

1. **Измерьте hallucination rate на вашей задаче.** Возьмите 50 реальных запросов к вашей LLM-системе, прогоните их через модель и вручную разметьте ответы: корректный факт / галлюцинация / частичная неточность. Посчитайте долю галлюцинаций. Это ваш baseline — без него вы не сможете оценить, помогает ли какая-либо стратегия.

2. **Сравните self-consistency с одиночной генерацией.** На тех же 50 запросах запустите генерацию 5 раз с `temperature=0.7`. Для каждого запроса определите: совпадают ли ответы? Если нет — насколько разброс коррелирует с фактическими ошибками? Ожидаемый результат: вы получите интуицию о том, какие типы вопросов нестабильны.

3. **Проведите A/B-тест «с RAG vs без RAG».** Подготовьте 20 фактуальных вопросов, ответы на которые содержатся в ваших документах. Сравните точность ответов модели с RAG-контекстом и без него. Зафиксируйте не только accuracy, но и типы ошибок: игнорирование контекста, выдумывание деталей сверх источника, неверная интерпретация.

4. **Сгенерируйте синтетический тестовый набор галлюцинаций.** Используйте промпт для ИИ ниже, чтобы автоматически создать размеченный датасет для тестирования детектора галлюцинаций. Это ускорит создание тестовых примеров и даст вам эталон для сравнения методов детекции.

**Промпт для ИИ:** «Напиши Python-скрипт для генерации синтетического тестового набора на галлюцинации. Скрипт принимает список фактов (JSON: [{fact, category}]) и генерирует для каждого факта: (1) правильное утверждение (ground truth), (2) правдоподобную галлюцинацию (меняет детали), (3) неправдоподобную галлюцинацию (меняет категорию/сущность). Используй OpenAI API или Anthropic API. Результат — JSONL-файл с полями: id, fact, claim_type (ground_truth/plausible_hallucination/implausible), claim. Покажи генерацию для 10 фактов.»

---

## Источники
- Wei, J., et al. (2022). "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models." NeurIPS.
- Kojima, T., et al. (2022). "Large Language Models are Zero-Shot Reasoners." NeurIPS.
- Wang, X., et al. (2023). "Self-Consistency Improves Chain of Thought Reasoning in Language Models." ICLR.
- Lin, S., et al. (2022). "TruthfulQA: Measuring How Models Mimic Human Falsehoods." ACL.
- Min, S., et al. (2023). "FActScore: Fine-grained Atomic Evaluation of Factual Precision." EMNLP.
- Ji, Z., et al. (2023). "Survey of Hallucination in Natural Language Generation." ACM Computing Surveys.
- Huang, L., et al. (2023). "A Survey on Hallucination in Large Language Models."
- Lewis, P., et al. (2020). "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks." NeurIPS.
- Wu, K., Wu, E., Zou, J. (2025). "ClashEval: Quantifying the tug-of-war between an LLM's internal prior and external evidence." arXiv:2404.10198.
- Anthropic. (2025). "Tracing the thoughts of a large language model."
- Turpin, M., et al. (2023). "Language Models Don't Always Say What They Think."
- Lanham, T., et al. (2023). "Measuring Faithfulness in Chain-of-Thought Reasoning."
- Rafailov, R., et al. (2023). "Direct Preference Optimization: Your Language Model is Secretly a Reward Model." NeurIPS.
- OpenAI (2024). "SimpleQA: Measuring Short-form Factuality."
- Yen, H., et al. (2024). "HELMET: How to Evaluate Long-context Language Models Effectively and Thoroughly."
- Sharma, M., et al. (2024). "Towards Understanding Sycophancy in Language Models." ICLR 2024.
- Liu, N., et al. (2023). "Lost in the Middle: How Language Models Use Long Contexts." TACL.
- Edge, D., et al. (2024). "From Local to Global: A Graph RAG Approach to Query-Focused Summarization." Microsoft Research.
- Sarthi, P., et al. (2024). "RAPTOR: Recursive Abstractive Processing for Tree-Organized Retrieval." ICLR.
- Gao, Y., et al. (2024). "Retrieval-Augmented Generation for Large Language Models: A Survey." arXiv:2312.10997.

---

**Навигация:**
- Назад: [Глава 2. Где в модели «живут» знания](02_where_knowledge_lives_in_the_model.md)
- Далее: [Глава 4. Каузальное чтение и сила первого фрейма](04_causal_reading_and_the_power_of_the_first_frame.md)
