Привет, Хабр! Мы в команде «Вычислительная семантика» в AIRI сфокусированы на исследовании галлюцинаций и решении проблем доверительной генерации. Мы учимся находить галлюцинации и бороться с ними. Большие языковые модели (LLMs) вроде GPT-4 стали незаменимыми помощниками в повседневной жизни — от генерации текстов до поддержки в кодинге и ответов на вопросы. Однако у них есть ахиллесова пята: они часто галлюцинируют.
В этом посте мы разберем нашу последнюю работу Will It Still Be True Tomorrow?, посвященную тому, как на надёжность моделей влияет феномен неизменного вопроса (evergreen question) — то есть вопроса, ответ на который не зависит ни от времени, когда вы его задаёте, ни от места, вопроса про факт, который зафиксирован в истории и не меняется от обстоятельств.
В рамках этой работы мы совместно с MWS AI собрали датасет изменяемых и неизменных вопросов EverGreenQA (открытый доступ), обучили классификатор на базе многоязычного энкодера E5 и применили его для оценки собственных знаний модели. Наши результаты показывают, что большие языковые модели чаще всего правильно отвечают на неизменные вопросы, не прибегая к помощи RAG-пайплайна.
Теперь обо всем по порядку.

Всегда ли нам следует применять RAG?
При разработке вопросно‑ответной системы мы практически всегда прибегаем к разработке пайплайна генерации, дополненного поиском (Retrieval‑Augmented Generation, RAG). RAG — это подход, при котором генерация ответа LLM осуществляется на основе данных, полученных в результате поиска во внешних источниках (файлы, базы данных, Интернет и другие источники).
RAG‑система работает в два основных этапа: сначала происходит извлечение релевантных документов или их частей из внешней базы знаний на основе запроса пользователя, а затем полученная информация подставляется в контекст языковой модели для генерации итогового ответа. RAG помогает устранить такие ограничения LLM, как устаревание информации, наличие неточностей или галлюцинации [1].

Почему нет необходимости применять RAG постоянно? На это есть несколько причин. Самая простая — на поиск релевантного контекста уходит бесценное время. Многие скажут, что, если уже есть проиндексированная база знаний, то скорость её работы обычно несущественна на фоне скорости инференса большой языковой модели, и будут правы. А что, если индекс вернул нерелевантный контекст?
Исследования показывают, что LLM чувствительны к шумному контексту, то есть очень часто неверный контекст вызывает неправильную генерацию [2]. Кроме того, RAG значительно увеличивает размер входной последовательности модели, что, зачастую, даже при наличии правильного ответа в контексте, может привести к неправильной генерации [3]. Во всех этих случаях неправильная генерация, кажется, является следствием какой‑то другой проблемы: неверного контекста или верного, но длинного контекста. А что, если LLM может без контекста сгенерировать правильный ответ на вопрос? В этом случае вообще нет необходимости применять RAG.
Методы оценки собственных знаний модели
Для того чтобы понять, когда применять RAG‑пайплайн, а когда можно обойтись без него, нам необходимо каким‑то образом оценить собственные знания (self‑knowledge) модели о вопросе. — задача классификации вопроса
, где модель выводит 1, если LLM правильно ответила на вопрос в рамках определенной метрики качества, и 0, если неправильно. То есть, если LLM знает ответ на вопрос, то нет необходимости запускать пайплайн RAG, если нет — то запускаем.
Есть масса методов, которые пытаются оценить собственные знания модели, наиболее эффективные из них полагаются на неуверенность модели при генерации ответа [4]. Это означает, что во время генерации мы применяем заранее предобученный классификатор self‑knowledge к различным метрикам неуверенности модели, и, если знание LLM на этот вопрос ниже определенного порога, то необходимо запускать RAG‑пайплайн. В качестве метрик неуверенности может быть любой uncertainty score, в том числе:
Максимальная энтропия: вычисляется энтропия каждого токена генерации, и максимальная из них назначается энтропией последовательности.
Усредненная энтропия: по аналогии с предыдущим пунктом, только выбирается усредненное значение энтропии всех токенов генерации.
SAR: сумма потокенной энтропии, перевзвешенная на релевантность токенов, которая вычисляется на основе того, как сильно семантика генерации меняется при удалении этого токена из последовательности [5].
Описанный подход позволяет достаточно точность оценить self‑knowledge, однако у него есть несомненный недостаток: для получения оценки необходимо сделать один инференс LLM. Этот инференс не добавляет дополнительно времени вычисления, если LLM уверена в своей генерации — в этом случае мы берем результат её генерации за ответ. Однако если неуверенность LLM превышает определенный порог, то нам необходимо запустить пайплайн RAG, то есть получить контекст и ещё раз запустить генерацию LLM. Таким образом, для получения ответа нам необходимо сделать два инференса LLM (один для оценки self‑knowledge, другой для генерации ответа в пайплайне RAG), что во многих приложениях можем быть недопустимым, например, в чат-боте клиентской поддержки.
Оценка собственных знаний на основе типа вопроса
А что, если бы мы могли оценить собственные знания языковой модели на основе вопроса без инференса LLM? В этом случае надо обращать внимание на свойства самого вопроса.
Есть вполне очевидные вещи: длина вопроса, количество именованных сущностей в вопросе, частотные характеристики сущностей, упомянутых в вопросе. Да, все это важно, и мы рассмотрим это в отдельном посте. Но какие еще свойства вопроса мы можем использовать?
Давайте рассмотрим два вопроса:
«Кто первый президент США?»
«Кто президент США?»
Несомненно, это два разных вопроса. У них два абсолютно разных ответа, хотя в какой‑то момент времени их ответы совпадали. Они отличаются тем, что первый из них неизменный (evergreen) вопрос — ответ на него независим ни от времени, ни от места, где задают вопрос, это зафиксированный факт, который не меняется от обстоятельств. Второй вопрос относится к изменяемым (mutable) вопросам, ответ на него зависит от времени или иного контекста, когда этот вопрос задают. То есть в разное время разные ответы на него будут правильными.

Но неужели эта классификация как‑то вообще нам может помочь при разработке вопросно‑ответной системы? Оказывается, да.
Большие языковые модели обучаются на статичных данных. В обучающую выборку может попасть текст, где в качестве президента США будут упомянуты Джордж Вашингтон, Барак Обама и Дональд Трамп. Тогда каким образом LLM поймет, как правильно ответить на вопрос «Кто президент США?», ведь в разное время все эти люди были президентами США?
Если LLM задать изменяемый вопрос без контекста, они рискуют дать устаревший или ошибочный ответ. Чтобы проверить это, мы собрали датасет EverGreenQA, который состоит из 4,757 вопросов и вручную разметили их по критерию изменяемости. Половина данных — реальные запросы пользователей, другая половина — синтетически сгенерированные, но проверенные лингвистами. Все вопросы проверены и размечены аннотаторами.
Далее мы перевели датасет на 6 языков с помощью GPT-4.1, которая показала хорошие способности к переводу c учетом культурных особенностей языка [6]. Наконец, на выборке собранного датасета мы обучили классификатор EverGreen‑E5 (EG‑E5) на основе энкодера E5 (мы пробовали и другие многоязычные энкодеры, но E5 был лучше остальных). В результате наш классификатор по метрике F1 превзошел даже LLM в режиме few‑shot (Таблица 1).
LLaMA 3.1-70B-it |
0.875 |
Qwen 2.5 32B-it |
0.874 |
GPT-4.1 |
0.807 |
EG-E5 |
0.906 |
Таблица 1. F1, усредненная по всем языкам. Больше сравнений и деталей можно найти в статье.
Итак, обучив собственный классификатор, мы оценили собственные знания LlaMA 3.1-8B-Instruct в трех режимах: только на основе результатов работы нашего классификатора EG‑E5, только на основе метрики неопределенности модели и на основе их комбинации. В качестве метрики качества мы использовали AUCROC и AUPRC. Это площадь под кривой точности‑полноты, которая является особенно актуальной для несбалансированных наборов данных, где классы имеют различное количество примеров. В Таблице 2 приведены эксперименты для трех датасетов: Natural Questions, SQuAD, TriviaQA и одной метрики неопределенности — SAR (эксперименты с дополнительными датасетами и метриками неопределенности можно найти всё там же, в нашей статье).
Метод |
Natural Questions |
SQuAD |
TriviaQA |
|||
AUPRC |
AUROC |
AUPRC |
AUROC |
AUPRC |
AUROC |
|
SAR |
0.39 |
0.61 |
0.12 |
0.67 |
0.51 |
0.72 |
SAR+EG-E5 |
0.41 |
0.58 |
0.12 |
0.70 |
0.54 |
0.66 |
EG-E5 |
0.72 |
0.50 |
0.20 |
0.52 |
0.65 |
0.47 |
Таблица 2. Результаты для трёх датасетов и трёх режимов с метрикой SAR.
Какие выводы тут можно сделать?
Во‑первых, стоит отметить, что решение задачи по оценке собственных знаний модели еще далеко от завершения. Во‑вторых, EG‑E5 превосходит все остальные методы по метрике AUPRC, однако уступает всем методам по метрике AUROC. Это может свидетельствовать о следующей корреляции: если вопрос неизменный, то LLM, вероятно, знает на него ответ, однако если вопрос изменяемый, это не значит, что LLM не знает на него ответ. Другими словами, во втором случае результат модели может быть равнозначно как правильный, так и неправильный.
Оценка собственных знаний закрытых моделей
Если вы хоть раз пользовались современными закрытыми моделями (например, GPT-4o), то наверняка замечали, что некоторые из них иногда запускают RAG‑пайплайн на основе каких‑то своих, понятных только им критериев. Ни в одном техническом отчете мы не нашли подробного описания этого механизма для проприетарных моделей.
Но мы попробовали ответить на вопрос: насколько хорошо работа этого механизма коррелирует со свойством неизменности вопроса? Мы взяли 400 вопросов из нашего тестового сета, сбалансированные по изменяемости и неизменности, прогнали их через веб‑интерфейс ChatGPT и выяснили, что этот механизм достаточно сильно коррелирует со свойством вопроса (0.77).
Таким образом, можно предположить, что GPT-4o действительно использует свойства вопроса для принятия решения: когда запускать RAG‑пайплайн, а когда можно обойтись без него. Эту точку зрения дополнительно подтверждает релиз вопросно-ответного датасета SimpleQA от OpenAI [7].
SimpleQA — это небольшой QA датасет (4,326 пар), который содержит короткие фактологические вопросы, и эти вопросы достаточно сложные для языковых моделей. Разработчики подчеркнули, что в датасет вошли только неизменяемые вопросы. Таким образом, OpenAI тоже обращает внимание на проблему изменяемых и неизменяемых вопросов.
Надеемся, что наше исследование поможет научить LLM точнее и надёжнее отвечать на вопросы. А пока на вопросы готовы отвечать мы, если они у вас возникнут. Если же вам понравилась работа, просим поддержать ее на HuggingFace papers.
Благодарности
Благодарю нашу команду состоящую из ученых AIRI, MWS AI, Сколтеха, Физтеха и ВШЭ: Сергей Плетенев, Мария Марьина, Николай Иванов, Дарья Галимзянова, Никита Крайко, Михаил Сальников, Василий Коновалов, Александр Панченко, Виктор Москворецкий.
Отдельно благодарю Марата Хамадеева за помощь в создании данного материала.
Ещё больше про нашу борьбу с галлюцинациями вы можете прочитать в каналах Машин лернинг и Рандомные галлюцинации.
Список литературы
[1] Retrieval‑Augmented Generation for Large Language Models: A Survey.
[3] Lost in the Middle: How Language Models Use Long Contexts.
[4] Adaptive Retrieval Without Self‑Knowledge? Bringing Uncertainty Back Home.
[6] All Languages Matter: Evaluating LMMs on Culturally Diverse 100 Languages.
[7] Measuring short‑form factuality in large language models.