Как GEOZR находит галлюцинации нейросетей
Нейросеть уверенно пишет, что ваш бренд работает с 2009 года, хотя компания открылась в 2017-м. Или приписывает продукту функцию, которой никогда не было. Или ссылается на исследование, которого не существует. Это и есть галлюцинация – момент, когда модель звучит максимально достоверно, но говорит чушь.
В моей практике это самая болезненная штука при работе с генеративными ответами в поиске. Если бренд представлен в ChatGPT, Perplexity или Gemini с ошибками, это бьёт по доверию сильнее, чем плохой сайт. Пользователь не пойдёт перепроверять — он просто запомнит неправильное.Нейросеть уверенно пишет, что ваш бренд работает с 2009 года, хотя компания открылась в 2017-м. Или приписывает продукту функцию, которой никогда не было. Или ссылается на «ваш» сайт, которого не существует. Это и есть галлюцинация — момент, когда модель звучит максимально достоверно, но говорит чушь.
Поэтому в GEOZR мы построили процесс, который ловит такие моменты чтобы их исправить. Дальше расскажу, как именно это работает: три метода, которые мы используем параллельно, плюс логика, почему один без другого не работает.

Почему одной проверки недостаточно
Сначала о главном: ни один из методов в одиночку не закрывает задачу. У каждого свои слепые зоны.
NLI (это метод сравнения смыслов через векторы) хорошо ловит прямые противоречия, но плохо работает с тонкими искажениями — например, когда модель «дофантазировала» деталь, которой нет, но и противоречия как такового нет.
LLM-as-a-Judge (когда другая нейросеть выступает арбитром) видит контекст и нюансы, но сама может ошибаться. Если судья тоже модель, у неё свои галлюцинации.
Факт-чекинг по сущностям (NER + парсинг утверждений) идеально находит конкретные ошибки в фактах — даты, цифры, названия. Но он слеп к смысловым искажениям, где факты вроде бы верные, но собраны в неправильную картину.
Поэтому мы используем все три подхода вместе. Один проверяет другого, и только то, что прошло все три фильтра, считается чистым ответом.
Метод 1: Natural Language Inference (NLI)
NLI — это техника, которая отвечает на простой вопрос: следует ли утверждение B из утверждения A, противоречит ему или вообще не связано.
Метод 1: Natural Language Inference (NLI)
Как это работает у нас
Берём два текста:
описание проекта, которое задается в настройках бренда,
ответ нейросети на тестовый запрос.
Дальше оба текста переводятся в векторы — математические представления смысла. Каждое предложение становится точкой в многомерном пространстве, где близкие по смыслу фразы лежат рядом, а противоречивые — далеко.
Затем модель сверяет пары утверждений и для каждой выдаёт один из трёх вердиктов:
Следствие — утверждение следует из источника, всё ок;
Противоречие — утверждение противоречит источнику, это галлюцинация;
Нейтрал— связи нет, требуется дополнительная проверка.
Что это ловит
Допустим, в описании бренда указано: «Доставка работает по Москве и области». Нейросеть в ответе пишет: «Компания доставляет заказы по всей России». NLI ловит это как противоречие, потому что в векторном пространстве «Москва и область» и «вся Россия» — разные регионы охвата.
Если же модель пишет «Доставка возможна в пределах столичного региона» — это следствие, потому что смысл совпадает с исходником, просто другими словами.
Где NLI промахивается
Главная слабость — нейтральные случаи. Если нейросеть выдумала факт, которого в исходнике нет вообще (например, «у компании 500 сотрудников», хотя такой цифры нигде не было), NLI пометит это как neutral. Технически противоречия нет — исходник просто молчит на эту тему. Но это и есть классическая галлюцинация.
Поэтому всё, что попадает в neutral, мы отправляем дальше — на следующий уровень проверки.
Метод 2: LLM-as-a-Judge
Второй слой — когда мы используем отдельную нейросеть в роли строгого проверяющего. Звучит парадоксально (проверяем нейросеть нейросетью), но при правильной настройке это работает.
Метод 2: LLM-as-a-Judge
Логика подхода
Судье даётся три вещи:
Промпт с жёсткими критериями оценки.
Исходные данные — то, что считается правдой (описание бренда).
Ответ модели-подсудимого — тот текст, который мы проверяем.
Критерии в промпте прописаны максимально однозначно. Не «оцени качество ответа», а конкретно: «Проверь каждое фактическое утверждение в ответе на соответствие исходным данным. Если факт отсутствует в исходных данных или противоречит им — помечай как галлюцинацию. Указывай конкретное место в тексте».
Почему это работает
Судья видит то, что NLI пропускает. Особенно тонкие искажения:
неправильную интерпретацию цифр («рост на 30%» превратился в «рост в 30 раз»),
подмену причинно-следственных связей,
придуманные функции продукта, которых нет в спецификации,
ложные ассоциации с другими брендами.
Мы не просим судью «оценить хорошо или плохо». Мы заставляем его выписать конкретные утверждения и сопоставить с источником построчно. Это похоже на работу редактора, который сверяет статью с первоисточником.
Настройки, которые критичны
По опыту, без жёстких параметров судья начинает «помогать» и сглаживать. Поэтому:
Температура низкая — чтобы модель не фантазировала.
Формат ответа структурированный — JSON с полями claim, verdict, source_reference. Никакой свободной формы.
Запрет на оправдания — судья не может сказать «возможно, имелось в виду». Либо факт есть в источнике, либо нет.
Чек двойной — мы запускаем двух разных судей и сравниваем их вердикты. Если они расходятся более чем на 20%, кейс уходит на ручную проверку. Но такое случается действительно редко.
Слабое место
Судья сам может галлюцинировать. Был случай, когда модель-судья «придумала», что в исходнике есть упоминание о сертификации, хотя его там не было, и на этом основании одобрила ответ. Поэтому одного судьи недостаточно — нужен либо второй контур проверки.
Метод 3: Факт-чекинг через NER и парсинг утверждений
Третий метод самый «инженерный». Здесь мы не просим нейросеть оценить ответ — мы разбираем его на атомарные факты и проверяем каждый по отдельности.
Метод 3: Факт-чекинг через NER и парсинг утверждений
Как разбираем текст
Сначала из сгенерированного ответа извлекаются именованные сущности через NER (named entity recognition — распознавание имён, дат, организаций, локаций, цифр). Это даёт нам сырой список:
персоны,
организации,
даты,
денежные суммы,
проценты,
географические объекты,
продукты,
технологии.
Дальше парсер строит из этих сущностей конкретные утверждения. Не просто «компания» и «2017», а связное утверждение: «Компания была основана в 2017 году».
Проверка по описанию бренда
Каждое утверждение сопоставляется с базой знаний о бренде. База — это структурированное описание: когда основана компания, какие продукты выпускает, в каких регионах работает, кто руководители, какие сертификации, какие цены, какие сроки доставки и т.д. Все что мы можем собрать из описания бренда.
Для каждого утверждения возможны три исхода:
подтверждено — факт есть в базе и совпадает;
противоречит — факт есть в базе, но значение другое;
не найдено — такого факта в базе нет вообще.
Третий случай самый интересный. Если нейросеть пишет «компания получила премию X в 2022 году», а в базе никаких упоминаний этой премии нет — это сигнал. Либо модель сгенерировала несуществующий факт, либо база неполная. В обоих случаях нужно разбираться.
Где факт-чекинг сильнее всего
Этот метод бьёт точечно по конкретным ошибкам:
Даты — год основания, дата выхода продукта, сроки гарантии.
Числа — цены, проценты, количественные характеристики.
Имена — ФИО руководителей, названия продуктов, имена партнёров.
География — регионы работы, адреса офисов.
Сертификации и награды — самая частая зона галлюцинаций, модели любят придумывать сертификаты.
Именно через этот разбор на атомы мы и находим большую часть галлюцинаций. Один разбитый факт = одна проверка. Никаких общих оценок.
Что метод не видит
Слепая зона факт-чекинга — смысловые искажения без конкретных сущностей. Если нейросеть пишет «компания позиционирует себя как премиум-сегмент», а на деле бренд работает в среднем ценовом диапазоне, NER не извлечёт из этой фразы проверяемый факт. Здесь нужен либо NLI, либо судья.
Как три метода работают вместе
В одиночку каждый метод даёт около 50-65% точности. Вместе они закрывают большинство сценариев. Логика последовательности:
Шаг 1: NLI прогоняет ответ через сравнение с источником. Получаем разметку: что подтверждено, что противоречит, что нейтрально.
Шаг 2: Факт-чекинг разбирает текст на атомарные утверждения. Параллельно проверяем все конкретные факты по базе.
Шаг 3: LLM-as-a-Judge оценивает спорные случаи. Всё, что попало в neutral у NLI или «не найдено» у факт-чекера, отправляется судье.
Шаг 4: Сводный отчёт. На выходе получаем три типа меток для каждого утверждения в ответе:
зелёное — все три метода подтвердили;
жёлтое — есть расхождение между методами, нужна ручная проверка;
красное — минимум один метод нашёл противоречие.
Это даёт реальную картину, а не общую оценку «ответ хороший / плохой».
Реальные кейсы галлюцинаций, которые мы ловили
Пара примеров из практики, чтобы было понятно, о чём речь.
Кейс 1. Несуществующая функция продукта. Нейросеть в ответе на вопрос о CRM-системе клиента описала функцию автоматической интеграции с конкретным мессенджером. В реальности такой интеграции не было. NLI пометил как neutral (в описании продукта про этот мессенджер просто не было ни слова). Факт-чекинг извлёк сущность «мессенджер» + «интеграция» и не нашёл её в базе. Судья подтвердил: факт выдуман. Метка — красное.
Кейс 2. Сдвиг по дате. Модель написала, что компания работает «более 15 лет». В реальности — 8 лет. NLI поймал противоречие сразу (так как в описании было «основана в 2017»). Факт-чекинг извлёк «15 лет» как количественный факт и сверил с актуальной датой — противоречие. Двойное подтверждение.
Кейс 3. Тонкое смысловое искажение. Нейросеть описала бренд как «бюджетный вариант для тех, кто не хочет переплачивать». В реальности бренд позиционируется как «доступная альтернатива премиальному сегменту с акцентом на качество». NLI не увидел противоречия — фразы близки по векторам. Факт-чекинг ничего не извлёк — нет конкретных сущностей. Поймал только судья, потому что у него в промпте было прописано проверять соответствие позиционированию.
Реальные кейсы галлюцинаций ИИ, которые мы ловили
Что важно понимать про базу знаний
Все три метода работают настолько хорошо, насколько качественная база знаний о бренде. Если в базе пробелы — проверка ничего не покажет, потому что «нечего проверять».
В моей практике подготовка базы занимает больше времени, чем сама настройка проверок. Что в неё входит:
Фактологический слой — даты, цифры, имена, география.
Продуктовый слой — список продуктов, их характеристики, функции, цены.
Позиционный слой — как бренд себя описывает, какие у него ценности, тон коммуникации.
Контекстный слой — с кем сравнивают, в какой нише работает, какие частые заблуждения существуют.
Чем подробнее эти слои, тем точнее проверка. Особенно для смысловых галлюцинаций — без описания позиционирования судья не поймёт, что «бюджетный» и «доступный» в данном бренде означают разное.
Что делать с найденными галлюцинациями
Когда система выдаёт список проблемных мест, следующий шаг — не просто их зафиксировать. Нужно понять, почему модель ошиблась, и закрыть источник ошибки.
Чаще всего причины такие:
Пробел в публичных данных. Если в открытых источниках о бренде мало информации, модели «додумывают». Решение — публиковать больше структурированной информации: на сайте, в Wikipedia, в отраслевых каталогах.
Конфликт источников. Где-то в интернете осталась старая информация (например, прежний адрес или старая цена), и модель её цитирует. Решение — зачистить устаревшие упоминания.
Шумные ассоциации. Бренд путают с похожим по названию или из той же ниши. Решение — усиливать уникальные идентификаторы (полное название, домен, уникальные характеристики)
Слабый authority-сигнал. Если о бренде пишут только сам бренд и пара мелких каталогов, модели не доверяют этому как источнику. Решение — работать над упоминаниями на авторитетных площадках.
Найти галлюцинации это половина задачи. Вторая половина — закрыть причины, чтобы эти галлюцинации не появлялись снова при следующем обновлении модели.
Куда движется эта история
Галлюцинации в LLM не исчезнут полностью — это особенность архитектуры моделей. Но проверка становится точнее, и инструменты вроде наших постоянно дообучаются на новых паттернах ошибок.
Главное, что меняется — подход к работе с генеративным поиском. Раньше задача была «появиться в выдаче». Сейчас задача шире: появиться + быть корректно описанным + контролировать, что о тебе говорят модели. Без слоя проверки галлюцинаций эта задача не решается.
Вывод
Три метода проверки — NLI, LLM-as-a-Judge и факт-чекинг через NER — закрывают разные типы ошибок. NLI ловит противоречия смыслов. Судья видит тонкие искажения и контекст. Факт-чекинг бьёт по конкретным фактам. Вместе они дают картину, которой нет, если использовать только один подход.
Получите полный отчет об ИИ-галлюцинациях, связанных с вашим брендом, и готовый план из 50+ конкретных шагов по улучшению ситуации в нашем трекере AI-видимости: geozr.com
FAQ
В чём разница между NLI и LLM-as-a-Judge, если оба сравнивают тексты?
NLI работает на уровне векторов и даёт формальный вердикт: противоречие, следование или нейтральность. Это быстрая математическая проверка. Судья видит контекст, нюансы позиционирования, тон — то, что в векторное представление не упаковывается. Один метод не заменяет другой.
Можно ли проверить ответ нейросети без базы знаний о бренде?
Технически можно — через сверку с публичными источниками. Но точность будет низкой, потому что в публичных источниках тоже бывают ошибки и противоречия. Структурированная база, подтверждённая владельцем бренда, остаётся главным эталоном.
Как часто нужно перепроверять ответы моделей?
По опыту, раз в 3–5 недель для активных запросов. Модели обновляются, контекст в их обучающих данных смещается, и то, что было корректным месяц назад, может измениться. Для критически важных запросов (продуктовые карточки, цены, контакты) — чаще.
Что делать, если разные модели описывают бренд по-разному?
Это нормальная ситуация. У каждой модели свои источники и алгоритмы. Задача — не добиться идентичности, а убрать фактические ошибки в каждой из них отдельно. Проверка по описанной схеме делается для каждой модели в отдельности.
Что считать галлюцинацией, а что — допустимым перефразированием?
Перефразирование сохраняет смысл и факты, галлюцинация искажает или придумывает их. Если модель пишет «доступная цена» вместо «средний ценовой сегмент» — это перефраз. Если пишет «премиум-сегмент» — это галлюцинация, потому что искажается позиционирование.
