# ГЛАВА 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)