Как проявляются галлюцинации ИИ
Галлюцинация не обязательно выглядит как очевидная нелепость. Нейросеть может правильно объяснить общий принцип, но ошибиться в конкретной дате, названии документа или параметре функции. Особенно опасны ответы, где выдуманная деталь встроена в правдоподобное рассуждение.
При работе с кодом галлюцинации LLM проявляются, например, так:
- модель предлагает вызвать метод библиотеки, которого в установленной версии нет;
- придумывает параметр API и описывает его как официальный;
- ссылается на несуществующую функцию или пакет;
- уверенно утверждает, что изменение исправит ошибку, хотя код не выполнялся и не проверялся.
В других задачах возможны вымышленные научные статьи, неверные цитаты и ссылки на документы, которых не существует. Грамотная формулировка ответа не подтверждает его точность.
Почему нейросети выдумывают факты
Большие языковые модели (LLM) генерируют продолжение текста с учетом усвоенных закономерностей и предоставленного контекста. Они не обращаются к достоверной базе фактов при каждом утверждении и не проверяют автоматически все сказанное.
Вероятность ошибки увеличивается, если в запросе не хватает сведений, исходные данные противоречивы, название продукта неоднозначно или пользователь спрашивает о версии библиотеки, не представленной в контексте. Модель может заполнить пробел правдоподобной догадкой вместо того, чтобы обозначить неопределенность.
Важно отличать галлюцинацию от обычного недопонимания задания. Если ИИ верно использовал ошибочную информацию из запроса, проблема может быть не только в генерации, но и в исходных данных.
Как снизить вероятность галлюцинаций
Полностью исключить их нельзя, но риск можно уменьшить:
- Добавлять проверяемый контекст: фрагменты документации, точные версии библиотек, необходимые файлы проекта и примеры ожидаемого результата.
- Проверять существенные факты: сверять даты, цифры, цитаты и ссылки с первоисточниками, а не доверять уверенной подаче.
- Проверять сгенерированный код: запускать тесты, статический анализ и сборку, сверять вызовы API с документацией нужной версии.
- Разделять факты и предположения: просить модель отмечать неподтвержденные сведения и несуществующие в контексте данные.
Один из способов дополнить контекст модели информацией из подключенных источников — RAG: перед генерацией система ищет подходящие документы и передает их фрагменты в запрос. Однако поиск может вернуть нерелевантные материалы, а модель — неверно их интерпретировать. Поэтому RAG снижает зависимость от внутренних знаний LLM, но не гарантирует отсутствие галлюцинаций.