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

В опубликованных оценках доля таких ответов у современных моделей лежит в диапазоне от 1% до 30%, в том числе когда релевантный фрагмент уже передан в запрос. Уверенный тон этот диапазон не сужает. В 2024 году чат-бот Air Canada описал пассажиру несуществующее правило льготного тарифа, и трибунал обязал авиакомпанию возместить разницу. В 2023 году суд в США оштрафовал адвокатов на 5 000 долларов: в процессуальном документе стояли судебные решения, которые сгенерировал ChatGPT и которых не существовало. Ответ клиенту, коллеге или в публикацию — зона ответственности компании, а не модели.

Ниже — как отличить дословную цитату от выдуманного абзаца, где без специалиста ответ выпускать нельзя, минимальный чек-лист, сравнение инструментов и матрица рисков. Это общий порядок для любой организации, а не регламент конкретной компании. Нормы и редакции документов перед решением сверяйте с действующим официальным текстом.

Что такое галлюцинация нейросети

Модель не хранит ваши договоры, приказы и регламенты как записи в справочнике. Она продолжает текст так, как это похоже на тексты, которые видела при обучении, плюс то, что вы положили в текущий запрос. Если в запросе нет нужного фрагмента, она всё равно может собрать правдоподобную статью закона, фамилию или процент: похожие конструкции встречались часто, а проверки «есть ли это в источнике» у самой генерации нет.

Отсюда два следствия. Первое: даже ответ «по загруженному файлу» нужно сверять с файлом, а не с формулировкой модели. Второе: запрет «не выдумывай» снижает число домыслов, но не заменяет поиск по тексту. Фраза в промпте вроде «если в документах этого нет — так и напиши, не угадывай» и требование «к каждому факту приложи цитату и имя файла» задают формат. Совпадение цитаты с оригиналом проверяет уже программа или человек.

Галлюцинация — не то же самое, что утечка. Утечка случается, когда сотрудник вставляет договор в чужой публичный чат. Как устроен этот канал и что с ним делать по 152-ФЗ, разобрано в материале про Shadow AI. Здесь другая задача: документ остаётся у вас, а проверить нужно, не приписала ли модель к нему лишнее.

Как отличить цитату документа от выдуманного абзаца

Надёжный приём простой по смыслу и скучный по исполнению: вытащить из ответа проверяемые конструкции и найти их в корпусе документов. Ищут даты, суммы, проценты, номера статей и договоров, ИНН и ОГРН, имена, названия организаций, URL и куски текста длиннее нескольких слов. Совпадение «по смыслу» не считается. Цитата либо есть в файле дословно, либо ответ помечают как сомнительный.

Для шаблонов хватает регулярных выражений. Дата в формате ISO ловится шаблоном \d{4}-\d{2}-\d{2}, номер с символом «№» — шаблоном №\s*\d+. Имена, организации и суммы в свободном тексте устойчивее забирает распознавание сущностей, например модель spaCy, а не один универсальный шаблон. Дальше каждое значение ищут полнотекстовым поиском по корпусу: есть ли такая статья в тексте закона, совпадает ли дата с контекстом, отвечает ли URL кодом 200 и есть ли на странице ожидаемое название.

Сильно помогает структурированный вывод. Вместо «расскажи про раздел 152-ФЗ» запрашивают JSON и заранее говорят: пустое поле, если в переданных документах значения нет.

{
  "article_number": "",
  "law_name": "",
  "key_points": [],
  "effective_date": ""
}

Пустое или явно битое поле проще поймать скриптом, чем гладкое предложение, в которое выдумка уже вплетена. Поля потом сверяют с источником по отдельности.

Второй моделью можно пользоваться как фильтром, не как судьёй последней инстанции. В неё отправляют исходный фрагмент документа и готовый ответ и просят оценку: насколько утверждение опирается на фрагмент, по шкале от 1 до 5. Низкая оценка — повод не публиковать ответ. Минусы прямые: второй запрос стоит денег и времени, а модели склонны повторять одну и ту же ошибку. Для чисел, номеров статей и дословных формулировок оценка не заменяет поиск по тексту.

Цитату, которую модель сама указала как источник, сравнивают с файлом нечётким сопоставлением — в Python для этого достаточно стандартной библиотеки difflib. Если фрагмент совпал только после перестановки слов или смены числа, абзац помечают. Каркас проверки выглядит так:

facts = extract_claims(answer)  # числа, даты, ссылки, имена, цитаты
for fact in facts:
    if not verify_in_source(fact, source_docs):
        flag_hallucination(fact)
Пять шагов проверки ответа нейросети по документу компании: запрос с фрагментами, черновик с цитатой, автоматическая сверка, развилка к эксперту и запись даты проверки

Где ответ нельзя выпускать без человека

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

  • Юридические тексты. Законы, договоры, судебная практика, внутренние положения. Выдуманная статья или несуществующий прецедент — это риск претензии и санкции. Для юридических организаций галлюцинация — прямой риск нарушения норм. Такой ответ читает юрист, а нормативные формулировки сверяют дословно.
  • Медицина. Назначения, дозировки, диагнозы, названия препаратов. Название и дозу можно сопоставить со справочником, но итог подтверждает врач. Ошибка здесь бьёт по правам пациента, а не по «качеству текста».
  • Финансы. Выручка, ставки, лимиты, инвестиционные формулировки, цифры отчётности. Неверное число даёт убыток или претензию регулятора. Проценты, валюты и суммы сверяет экономист или аудитор, а не только скрипт.
  • Персональные данные. Сведения о сотрудниках и клиентах. 152-ФЗ требует, чтобы персональные данные были точными и актуальными. Подмена поля или «достройка» пустой анкеты моделью этот принцип ломает. Обработка таких сведений идёт под контролем ответственного сотрудника.
  • Конфиденциальное и стратегическое. Ноу-хау, внутренние политики, планы. Даже небольшая подмена смысла вредит решению. Такой текст смотрит руководитель направления или профильный эксперт, не один только автор запроса.

Низкий риск — общая справка, черновик структуры, пересказ уже проверенного фрагмента для внутреннего чтения. Его всё равно прогоняют через автоматические проверки, но отдельный эксперт на каждую фразу не обязателен.

Чек-лист перед тем, как ответ уйдёт дальше

Минимум для критичного сценария. Что можно автоматизировать — автоматизируют. Последний просмотр спорных пунктов остаётся за человеком.

  1. Формат. Ответ пришёл в оговорённой структуре: JSON, таблица, список полей. Свободный абзац хуже поддаётся сверке.
  2. Сущности. Из текста забраны числа, даты, номера законов и договоров, ИНН и ОГРН, имена, проценты, валюты, URL.
  3. Ссылки. Каждый URL отвечает кодом 200, а в теле страницы есть ожидаемый якорь: название организации, номер акта, заголовок документа.
  4. Цитаты. Фрагмент, который модель выдала за цитату, находится в исходном файле. Сравнение идёт по тексту, с допуском только на пробелы и переносы, не на пересказ.
  5. Свежесть. Дата в ответе не относится к отменённой редакции. Событие и норма сопоставлены с действующей версией документа и с сегодняшней датой.
  6. Цифры и даты вручную. Каждое число, от которого зависит решение, сверяет тот, кто отвечает за учёт или расчёт.
  7. Нормы вручную. Каждое упоминание закона, стандарта и «типовой» формулировки читает юрист или владелец регламента.
  8. Имена. Человек и организация существуют, роль указана верно. Ошибка в имени часто и есть выдумка, а не опечатка.
  9. Логика. Внутри ответа нет взаимоисключающих утверждений: одно и то же значение не может одновременно расти и падать.
  10. Версия. На результате стоят дата проверки и имя ответственного. Источники, от которых зависит ответ, поставлены на повторную сверку, когда меняется редакция.
  11. Исправление. Если ответ уже ушёл с ошибкой, фиксируют дату правки и что именно изменилось. Для публичного текста это та же дисциплина, что у корректурной пометки.
  12. Эскалация. Несовпадение на автоматической проверке создаёт задачу профильному специалисту, а не «ещё одну генерацию в надежде, что повезёт».

Короткая формула чек-листа: у каждого утверждения есть источник. Нет источника — ответ не отправляют.

Чем проверять: модель, RAG, правила и человек

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

Метод Как работает Где силён Где ломается
Вторая модель как фильтр Оценивает, опирается ли тезис на переданный фрагмент Смысловые перекосы, которые не ловит регулярное выражение Дорого, медленно; модели могут повторить одну ошибку. Сервисы вроде Braintrust закрывают прогон таких оценок, но не снимают сверку с источником
RAG и RAG-триада Ответ собирается по найденным фрагментам и оценивается по трём осям: релевантность контекста, обоснованность, полнота Видно, есть ли у тезиса опора в корпусе Нужны индекс и его обновление. Логическое противоречие и неверная арифметика могут остаться при «хорошей» опоре на текст
Шаблоны и разбор сущностей Числа, даты, ИНН, номера, URL проверяются программой Быстро и предсказуемо на счетах, актах, карточках Ломается на нетипичном формате и не понимает, верный ли смысл у верного числа
Формальные правила Для поля задано условие: диапазон, ссылка на справочник, логическое ограничение. Такой подход есть в Automated Reasoning у Amazon Bedrock Guardrails AWS заявляет точность верификации до 99% на задачах, где правила заданы явно Правила пишут вручную. Метод узкий: структурированные поля и политики, не свободный абзац
Внешние фактчекеры FactCC, ClaimBuster, Google Fact Check Explorer, Snopes сверяют тезис с публичными базами Массовые публичные утверждения Внутренний договор, регламент и учётная цифра туда не попадают
Эксперт Спорные пункты читает юрист, врач, финансист или владелец процесса Самая высокая достоверность и понимание контекста Дорого и не масштабируется на каждый черновик. Поэтому эксперт видит флаги, а не весь поток

Иногда тот же вопрос задают трём разным моделям и смотрят расхождение. Если ответы разъехались, это сигнал к проверке, а не голосование большинством. Время и счёт за запросы вырастают примерно втрое, поэтому приём оставляют для запросов с высоким риском.

Как устроен сам поиск фрагментов по внутренним документам — в разборе RAG. Доступ модели к учётной системе без выгрузки базы наружу — в статье про MCP-серверы для 1С.

Пять типов галлюцинаций

Пять типов галлюцинаций LLM: выдуманная ссылка, цифры не из документа, противоречие внутри ответа, устаревшая редакция и уверенность без основания
  • Выдуманная ссылка или цитата. Модель собирает правдоподобный реквизит. Образец такой выдумки, а не реального акта: «Постановление Правительства № 256-ФЗ от 15.03.2015». Постановления правительства не нумеруются как федеральные законы, и этого документа нет. На глаз реквизит выглядит аккуратно, расхождение находится только сверкой с базой.
  • Факты не из источника. Неверная дата вступления нормы, чужая сумма, имя человека, которого в деле нет, название препарата, которого не существует. Расхождение видно, как только значение ищут в исходном файле или справочнике.
  • Противоречие внутри ответа. В тексте «рост на 20%», в таблице по тому же показателю «снижение на 5%». Или выручка в выводе растёт, а в строках отчёта падает. Это ловится разбором всех числовых утверждений и проверкой, что они не исключают друг друга.
  • Устаревшая редакция. Модель ссылается на норму 2012 года там, где действует редакция 2024 года, или на документ, который уже отменён. Признак — дата и контекст вне актуального периода. Сверка идёт с действующей версией, а не с первой найденной.
  • Уверенность без основания. Допущение выдано за факт: «заключение будет положительным», хотя лицензия ещё не получена и в документах решения нет. Здесь нужен человек: скрипт не всегда отличает прогноз от свершившегося события, если оба звучат утвердительно.

Опасный случай — не абсурд, а склейка настоящих фрагментов. Каждая цитата по отдельности есть в корпусе, а вывод из них модель достроила сама. Поэтому в чек-листе отдельно стоят и дословность цитаты, и логика всего ответа.

Пошаговая проверка

  1. Генерация. Запрос на русском, рядом — фрагменты документа компании, лучше через RAG, а не «ответь из общих знаний». В промпте прямо сказано: не добавляй сведений, которых нет в переданных фрагментах, и на каждый факт верни ссылку на файл и цитату.
  2. Автопроверка. Шаблоны и распознавание сущностей забирают факты. Поиск по корпусу проверяет, что они есть в документах. Параллельно можно спросить вторую модель про обоснованность. Если всплыли цитата или реквизит, которых в базе нет, задача сразу помечается на эскалацию.
  3. Эксперт. При высоком риске или при флаге ответ читает назначенный сотрудник: слова, цифры, нормы. Он либо подтверждает текст, либо возвращает его на правку. У блока есть владелец, иначе флаг висит без адресата.
  4. Правка и запись. Неверный ответ не «чуть-чуть догенерируют» втихую. Либо уточняют запрос и получают новый черновик, либо пишут ответ сами. В журнале остаются дата, имя и что изменилось. Это нужно для аудита, а не для отчёта ради отчёта.
  5. Эскалация. Если сотрудник сам не уверен или видит серьёзный разъезд с документом, вопрос уходит выше — руководителю юридического блока, главному бухгалтеру, врачу, владельцу регламента. Для этого хватает короткого письма по шаблону ниже.

Периодически имеет смысл выборочно перечитывать уже одобренные ответы, а не только новые. Источники меняются, и вчерашняя верная цитата сегодня указывает на отменённую редакцию.

Письмо, если факт в документе не нашёлся

Письмо короткое: что спросили, чего нет в корпусе, что нужно подтвердить по первоисточнику. Адресат сам решает, ошибка это модели или пробел в базе.

Тема: Нужно подтвердить данные в ответе ИИ

Добрый день!

В ответе ассистента на запрос «[суть вопроса]» есть сведения, которых нет в наших документах. Он ссылается на [например: ст. 15 закона, которого нет в переданном тексте] и указывает [например: 20%], хотя в исходнике этого значения нет.

Проверьте, пожалуйста, существует ли такая норма или цифра. Если это ошибка модели, пришлите формулировку из первоисточника. Иначе мы отдадим клиенту неверный факт.

Спасибо.
[Имя, должность, отдел]

Матрица рисков

«Критично» значит: ответ блокируют и сразу зовут эксперта. «Высокий» — тщательная проверка до отправки. «Средний» — обычная сверка по чек-листу. «Низкий» — обычно хватает автоматических проверок.

Тип ошибки Юриспруденция Медицина Финансы Обычные внутренние тексты
Выдуманная ссылка или цитата Критично. Проверяет юрист, в выдачу не пропускают Высокий. Ссылки на протоколы и инструкции пересматривает врач Средний. Реквизиты и источники смотрят аудит или методолог Низкий или средний. Достаточно сверки редактором
Цифры и имена не из источника Критично. ФИО, сроки, суммы статей Критично. Любое медицинское значение Высокий. Перекрёстная сверка с учётом Низкий. Обычно хватает автоматической проверки
Противоречие внутри ответа Высокий. Текст читают целиком Высокий. Риск неверного вывода, смотрит врач Высокий. Смотрит бухгалтер или финансовый аналитик Средний. Смотрит редактор
Устаревшая редакция Высокий. Базу актов обновляют постоянно Высокий. Следят за актуальными инструкциями и перечнями Средний. Контролируют версию норматива и отчёта Средний. Стоит слежение за изменениями регламентов
Уверенность без основания Средний. Нет данных — так и пишут, без догадки Критично. Уровень уверенности обозначает врач Средний. Экономист даёт диапазон или оговорку, не точку Низкий. Внутренний просмотр по необходимости

На каждую критичную клетку назначают роль, а не «отдел в целом». Иначе флаг некому закрыть.

Что снижает риск на практике:

  • в юриспруденции и медицине финальную отметку ставит человек соответствующей квалификации;
  • на критичных полях работают и автоматические проверки согласованности, и формальные правила — например, процент не может быть выше 100, если поле это запрещает;
  • источники обновляются по фиду или API, а не «когда-нибудь перечитаем папку»;
  • в договоре с подрядчиком прямо написано, что модель может ошибаться, а ответы по нормативам и деньгам проверяет заказчик; одна только оговорка ответственность не снимает, но убирает иллюзию, что генерация равна заключению;
  • раз в период выборочно перечитывают уже принятые ответы.

Что поставить вокруг проверки

Сверка цитат не заменяет контур, в котором документы вообще не уезжают наружу. Поиск по внутренним файлам собирают как RAG, изоляцию без исходящего канала — как закрытый контур, а локальную модель на сервере заказчика — как услугу on-premise. Готовность процессов до пилота удобно прогнать по чек-листу руководителя.

Если модель должна не только ответить, но и сделать шаги в учётной системе, это уже агент: у него те же галлюцинации плюс риск действия. Как устроены такие системы и из чего складывается стоимость, разобрано в статье про ИИ-агентов для бизнеса и на странице разработки ИИ-агентов.

Отдельный сценарий — пакет договора контрагента, риски с цитатой и протокол разногласий. Его не закрывают общим фактчекингом ответа: для этого есть YasnoDoc. Юрист по-прежнему правит формулировки сам.

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