Вы просите нейросеть назвать статью, где описан нужный метод, — и получаете красивую ссылку с автором, журналом и годом. Открываете: такой статьи нет. Просите подсказать библиотеку — модель уверенно называет пакет, которого не существует в репозитории. Это и есть галлюцинация: правдоподобный по форме и ложный по сути ответ, выданный тем же ровным тоном, что и верный.
Главная неприятность не в том, что нейросеть выдумывает, а в том, что она выдумывает без предупреждения. Модель не подаёт сигнала «здесь я не уверена» — уверенный ответ и выдумка выглядят одинаково. Разберём, откуда это берётся на уровне механики, и соберём рабочий процесс проверки, который ловит большую часть выдумок до того, как они попадут в текст, код или отчёт.
Что считать галлюцинацией
Термин «галлюцинация» (hallucination) прижился, хотя он неточен: модель ничего не «видит» и не «верит». Практичнее считать галлюцинацией уверенное утверждение о фактах, которое не подкреплено ни источником, ни данными в запросе. Типичные виды:
- Выдуманные ссылки и цитаты. Несуществующие статьи, судебные решения, страницы документации. Самый частый и самый заметный вид.
- Выдуманные сущности в коде. Методы, параметры, флаги CLI и целые пакеты, которых нет в API.
- Точные числа из ниоткуда. Цены, лимиты, доли рынка, даты релизов — модель подставляет правдоподобный по порядку величины ответ.
- Искажение поданного текста. Вы дали документ, а в пересказе появились детали, которых там не было. Это опаснее всего: кажется, что данные-то свои.
Отдельно стоит отличать галлюцинацию от устаревания. Если модель говорит, что актуальная версия — прошлогодняя, это не выдумка, а знание на дату отсечки обучения. Лечится это по-другому: не проверкой, а подключением поиска.
Почему модель выдумывает
Предобучение: статистика текста, а не база знаний
Языковая модель обучена предсказывать следующий фрагмент текста. Внутри у неё нет таблицы фактов с пометкой «проверено» — есть распределение вероятностей, выученное на корпусе. Для устойчивых закономерностей (грамматика, синтаксис языка программирования) этого достаточно: они встречаются в данных миллионы раз. А вот одиночные факты — конкретная дата, конкретный номер дела, конкретное имя параметра — встречаются в обучении один-два раза, и модель не может надёжно отличить их от похожих по форме.
Авторы работы «Why Language Models Hallucinate» (OpenAI и Georgia Tech; препринт вышел в сентябре 2025-го, рецензированная версия — в Nature в апреле 2026-го) показывают это формально: статистическое давление в сторону ошибок возникает даже при идеально верных обучающих данных. То есть дело не в «грязном интернете» — сам способ обучения делает галлюцинации неизбежными на редких фактах.
Оценка моделей поощряет угадывание
Вторая причина — экономическая, и она объясняет, почему проблема не уходит сама. Почти все популярные бенчмарки ставят бинарную оценку: ответ верный или неверный. В такой системе «не знаю» даёт ровно ноль, а угадывание — ненулевой шанс. Значит, для модели, которую тренируют и отбирают по этим метрикам, угадывать всегда выгоднее, чем признавать неуверенность.
В статье приводится наглядный пример на наборе SimpleQA: модель с точностью 24% и ошибками в 75% случаев оказалась в рейтинге выше модели, которая в 52% случаев воздержалась от ответа и ошиблась лишь в 26%. Вторая ведёт себя честнее и полезнее в работе, но по метрике проигрывает. Предложение авторов — «открытые рубрики»: заранее объявлять штраф за уверенную ошибку и давать частичный балл за корректно выраженную неуверенность. Пока индустрия на это не перешла, воздержание от ответа остаётся невыгодным поведением.
Что усиливает эффект на практике
Поверх двух фундаментальных причин работают ситуативные:
- Узкая или редкая тема. Чем меньше материала было в обучении, тем выше шанс выдумки. Внутренние продукты компании, локальные нормы, свежие релизы — зона риска.
- Форма вопроса, предполагающая ответ. «Назови три исследования, доказывающие X» почти заставляет модель что-то назвать. «Существуют ли исследования по X? Если нет — так и скажи» даёт ей выход.
- Длинный контекст. При большом объёме поданных документов модель чаще подменяет цитату пересказом по памяти.
- Давление продолжить. Если вы спорите и требуете «всё-таки найди», модель склонна согласиться и придумать.
Во сколько это обходится
Цифры полезнее общих слов. База AI Hallucination Cases, которую ведёт исследователь Дамьен Шарлотен, к сентябрю 2026-го собрала более двух тысяч судебных дел по всему миру, где суд отдельно разбирал выдуманные ИИ ссылки и цитаты в поданных документах. Показательно распределение: заметная часть приходится не на юристов, а на людей, которые представляли себя сами, — то есть на тех, кому некому было перепроверить.
В разработке цена другая. Исследование, представленное на USENIX Security 2025, прогнало генерацию кода через 16 моделей и обнаружило, что 19,7% рекомендованных пакетов не существуют; у открытых моделей доля выше (около 21,7%), у закрытых — порядка 5,2%. Всего набралось свыше 205 тысяч уникальных выдуманных имён пакетов. Отсюда выросла отдельная атака — slopsquatting: злоумышленник заранее регистрирует часто выдумываемое имя и кладёт туда вредоносный код. Если вы устанавливаете зависимости по подсказке ассистента не глядя, проверка имени пакета в официальном реестре — не паранойя, а гигиена. Полезно и держать агента в изолированной среде: об этом — песочница для ИИ-агента.
Как проверять факты: рабочий процесс
1. Дайте модели источник вместо памяти
Самый результативный приём — не спрашивать модель о мире, а дать ей данные и попросить ответить строго по ним. Это и есть RAG: поиск по вашей базе плюс генерация ответа по найденным фрагментам. Качество здесь упирается в то, как порезаны документы, — тема разобрана в заметке про чанкинг документов.
Для актуальных фактов из открытого интернета работает grounding — привязка ответа к веб-поиску. В Gemini API это инструмент google_search: модель сама решает, когда сделать запрос, а в ответе возвращает аннотации со ссылками на использованные страницы (оплата идёт за каждый выполненный поисковый запрос). Похожие инструменты веб-поиска есть у OpenAI и Anthropic. Важно понимать границу: grounding резко снижает долю выдумок, но не отменяет проверку — модель может сослаться на страницу, которая говорит не совсем то.
2. Требуйте дословную цитату, а не пересказ
Если ответ строится по вашим документам, просите приводить точный фрагмент, на котором основано утверждение. Пересказ проверить нельзя, дословную цитату — можно поиском по исходнику за секунду.
У Anthropic это вынесено в отдельную возможность API — Citations: документ передаётся с флагом citations.enabled, и в ответе каждый блок текста сопровождается объектами со ссылкой на источник — cited_text с точной цитатой, индексом документа и координатами (символы для текста, номера страниц для PDF). Ключевое отличие от «попроси в промпте указывать источники» в том, что указатели формирует API, а не сама модель, — выдумать их она не может. Приятный побочный эффект: cited_text не тарифицируется как выходные токены.
3. Разрешите «не знаю» — явно
Раз модели по умолчанию выгоднее угадать, разрешение воздержаться нужно прописывать руками. Рабочая формулировка в системном промпте: «Отвечай только на основании предоставленных документов. Если данных недостаточно — напиши "в источниках нет ответа" и остановись. Не восполняй пробелы догадками». Это не вежливая просьба, а снятие того самого стимула угадывать. Другие приёмы формулировок — в заметке про промпт-инжиниринг.
4. Спросите дважды и сравните
Дешёвый детектор для одиночных фактов: задайте тот же вопрос ещё раз в чистом контексте, а лучше — другой модели. Реальный факт воспроизводится устойчиво; выдумка каждый раз новая — номер, дата или имя поплывут. Приём не даёт гарантии (обе модели могут ошибаться одинаково, если ошибка есть в обучающих данных), но отсекает основную массу разовых выдумок и хорошо автоматизируется.
5. Проверяйте то, что проверяется машинно
Часть утверждений не нуждается в человеке. Ссылки можно прогнать HTTP-запросом и отсеять 404. Имена пакетов — сверить с реестром. Названия методов — с сигнатурами библиотеки. Числа — с исходной таблицей. Если модель отдаёт ответ структурированным JSON, такие проверки встают в конвейер автоматически. А регулярный прогон на своём наборе примеров — это уже evals: без них вы не заметите, что после смены модели доля выдумок выросла.
Чек-лист перед публикацией
- Каждое число, имя, дата и версия — сверены с первоисточником, а не с тем, что «звучит правильно».
- Каждая ссылка открыта руками: страница существует и говорит то, что ей приписано.
- Цитаты найдены поиском в оригинале дословно.
- Имена пакетов, методов и параметров — сверены с документацией или реестром.
- Утверждения, которые не удалось подтвердить, убраны или переписаны с честной оговоркой.
Пункт про оговорку — не формальность. Разница между «по данным такого-то исследования, доля составила 19,7%» и «примерно каждый пятый пакет оказывается выдуманным» в том, что второе можно написать, даже когда точная цифра не проверена, и это не будет ложью.
Коротко
Галлюцинации — не баг конкретной модели и не признак того, что она «плохая». Это следствие того, как модели устроены (статистика текста вместо базы фактов) и как их оценивают (угадывать выгоднее, чем воздержаться). Ждать, что следующая версия решит проблему целиком, не стоит: авторы исследований говорят прямо — снизить долю можно, обнулить нельзя.
Зато проблема хорошо управляется процессом. Дайте модели источники вместо памяти, требуйте дословные цитаты, явно разрешайте «не знаю», сверяйте машинно всё, что сверяется машинно, и оставьте себе финальный проход по чек-листу. При такой дисциплине нейросеть перестаёт быть источником фактов и становится тем, в чём она действительно сильна, — быстрым черновиком, который вы проверяете.
Частые вопросы
Нет. Исследователи показывают, что статистическое давление в сторону ошибок на редких фактах возникает даже при идеально верных обучающих данных — это свойство самого способа обучения. Новые модели выдумывают реже, но не перестают. Доля снижается процессом: подачей источников, дословными цитатами и проверкой, а не ожиданием следующей версии.
Потому что по популярным бенчмаркам это невыгодно. Оценка обычно бинарная: воздержание даёт ноль, а угадывание — ненулевой шанс на балл. В работе OpenAI и Georgia Tech приводится пример на SimpleQA, где модель с 24% точности и 75% ошибок обошла в рейтинге модель, которая в половине случаев честно воздержалась. Разрешение не отвечать имеет смысл прописывать в системном промпте явно.
Заметно помогает, но не отменяет проверку. Grounding привязывает ответ к найденным страницам и возвращает ссылки на них — выдумать источник модель уже не может. Однако она может сослаться на реальную страницу, которая говорит не совсем то, что ей приписано, поэтому ключевые утверждения всё равно стоит открыть и сверить.
Это атака на цепочку поставок, выросшая из галлюцинаций в коде. Модели регулярно рекомендуют несуществующие пакеты — в исследовании USENIX Security 2025 таких оказалось 19,7% от всех рекомендованных. Злоумышленник заранее регистрирует часто выдумываемое имя и кладёт туда вредоносный код, а разработчик устанавливает его по подсказке ассистента. Защита простая: сверять имя пакета с официальным реестром перед установкой.
Источники
- 1.Why language models hallucinate — OpenAIhttps://openai.com/index/why-language-models-hallucinate/
- 2.Evaluating large language models for accuracy incentivizes hallucinations — Naturehttps://www.nature.com/articles/s41586-026-10549-w
- 3.Why Language Models Hallucinate — arXiv:2509.04664https://arxiv.org/abs/2509.04664
- 4.AI Hallucination Cases Database — Damien Charlotinhttps://www.damiencharlotin.com/hallucinations/
- 5.We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code Generating LLMs — arXiv:2406.10279https://arxiv.org/abs/2406.10279
- 6.Grounding with Google Search — Gemini APIhttps://ai.google.dev/gemini-api/docs/google-search
- 7.Citations — Claude Platform Docshttps://platform.claude.com/docs/en/build-with-claude/citations



