Генерация с дополненным поиском (Retrieval Augmented Generation, RAG) часто позиционируется как главное решение для оптимизации языковых моделей (LLM). Однако даже несмотря на интеграцию RAG в агентные системы, LLM всё ещё могут выдавать недостоверные или противоречивые утверждения по отношению к извлечённым данным.
Представьте себе бизнес-аналитика в логистической компании, который использует внутреннего AI-ассистента, работающего на базе RAG, для взаимодействия с финансовыми отчётами. Когда аналитик спрашивает: «Каковы наши показатели за второй квартал?», ассистент отвечает: «Наш доход во втором квартале снизился на 15% по сравнению с первым из-за сбоев в цепочке поставок после блокировки Суэцкого канала».
Хотя система правильно извлекла финансовый отчёт, отметив снижение доходов на 15%, она сфабриковала причину, приписав падение блокировке Суэцкого канала — объяснение, которого нет в исходных материалах.
Извлечение документов не гарантирует точность, поэтому сам RAG необходимо оптимизировать. Это означает настройку поиска для возврата правильных результатов, минимизацию шума и согласование ответов LLM с извлечённым контекстом.
Именно поэтому в этой статье мы обсудим, как системы RAG всё ещё могут “галлюцинировать”, а также предложим структуру для оценки приложений RAG с использованием фреймворка Ragas. В заключении мы покажем, как реализовать оценки RAG в n8n.
Четыре типа галлюцинаций в RAG
Галлюцинации имеют несколько иную трактовку в контексте RAG. Мы используем этот термин для обозначения того, что ответ не подкреплён или не согласован с извлечённым контекстом. Галлюцинацией считается ситуация, когда LLM генерирует содержание не на основе текстовых данных, предоставленных в процессе поиска RAG, а на основе своих предварительно обученных знаний.
Vectara, создатели моделей оценки HHEM, дают следующий пример:
если извлечённый контекст говорит “Столица Франции — Берлин”, а LLM выдаёт “Столица Франции — Париж”, то ответ LLM считается галлюцинацией, несмотря на его фактическую правильность.
Мы можем разделить специфические для RAG галлюцинации на четыре категории:
– Очевидный конфликт: когда генерируемое содержание прямо противоречит предоставленной информации. Эти конфликты легко проверяемы без глубокого контекста, часто включая явные фактические ошибки, неправильные имена, неверные числа и т. д.
– Скрытый конфликт: когда генерируемое содержание отклоняется от предоставленной информации, изменяя её предполагаемое контекстуальное значение. Эти конфликты часто связаны с заменой терминов, которые имеют разные значения или степень важности, требуя более глубокого понимания их контекстного применения.
– Очевидное введение беспочвенной информации: когда генерируемое содержание включает информацию, не подтверждённую предоставленными данными. Это влечёт за собой создание гипотетических, вымышленных или галлюцинаторных деталей, лишённых доказательств или поддержки.
– Скрытое введение беспочвенной информации: когда генерируемое содержание выходит за рамки предоставленной информации, включая выводы, идеи или эмоции. Эта дополнительная информация не поддаётся проверке и может включать субъективные предположения или общепринятые нормы вместо явных фактов.
Двуосновная система оценки RAG
Хорошая реализация RAG может проверять два ключевых момента:
– Убедиться, что RAG извлекает правильную информацию. Это называется Релевантность документа RAG.
– Гарантировать, что ответы LLM согласуются с контекстом, извлечённым через RAG. Это называется Обоснованность RAG.
Большинство современных инструментов используют библиотеку Ragas, которая предоставляет набор функций для оценки RAG.
Мы будем использовать оценки из библиотеки Ragas в описаниях ниже.
Релевантность документа RAG: Извлечение правильного контекста
Оценка Контекстного отзыва измеряет, сколько релевантных документов было успешно извлечено. Высокий отзыв означает, что меньше релевантных документов осталось вне выборки. Контекстная точность — это метрика, которая измеряет долю релевантных фрагментов в извлечённых контекстах. Расчёт контекстного отзыва всегда требует эталона для сравнения.
И отзыв, и точность могут быть рассчитаны с помощью судейской LLM или детерминистских расчётов.
Контекстный отзыв на основе LLM вычисляется с использованием трёх переменных: пользовательского ввода, эталона и извлечённых контекстов. Для оценки отзыва по эталону он разбивается на утверждения, каждое из которых анализируется, чтобы определить, можно ли его отнести к извлечённому контексту.
Контекстная точность на основе LLM используется для оценки релевантности извлечённого контекста путём сравнения каждого извлечённого фрагмента с ответом.
Не-LMM методы контекстного отзыва и точности сравнивают извлечённые контексты или фрагменты с эталонными контекстами. Эти метрики используют такие показатели, как семантическое сходство, коэффициент схожести Левенштейна и метрики сравнения строк для определения релевантности.
Обоснованность RAG: Оценка ответов относительно извлечённого контекста
Достоверность определяет, насколько фактически последовательным является ответ с извлечённым контекстом. Ответ считается достоверным, если все его утверждения подтверждаются извлечённым контекстом. HHEM-2.1-Open от Vectara — это открытая классификаторная модель, обученная обнаруживать галлюцинации в тексте, сгенерированном LLM. Она может использоваться для перепроверки утверждений с учётом данного контекста, чтобы определить, можно ли их вывести из него.
Релевантность ответа измеряет, насколько ответ соответствует пользовательскому запросу. Ответ считается релевантным, если он напрямую и соответствующим образом отвечает на исходный вопрос. Эта метрика фокусируется на том, насколько хорошо ответ соответствует намерению вопроса, не оценивая фактическую точность. Она штрафует ответы, которые являются неполными или включают лишние детали.
Оценка RAG в n8n
Вы можете оценить производительность RAG в n8n без использования внешних библиотек или вызовов. Встроенные оценки включают как релевантность документов RAG, так и обоснованность ответов. Они вычисляют, являются ли извлечённые документы релевантными вопросу и основан ли ответ на извлечённых документах. Оценки RAG выполняются на тестовом наборе данных, и результаты можно сравнивать между запусками, чтобы увидеть, как меняются метрики, и углубиться в причины этих изменений.
Шаблон Оценка точности ответа RAG с OpenAI использует релевантность ответа, основанную на LLM, чтобы оценить, основан ли ответ на извлечённых документах. Высокий балл указывает на соответствие и согласованность LLM, тогда как низкий балл может сигнализировать о недостаточном запросе или галлюцинации модели.
Рабочий процесс Релевантность документа RAG использует контекстный отзыв, основанный на LLM, для расчёта балла извлечения для каждого входа и определения, хорошо ли работает рабочий процесс.