Инструменты оценки RAG: как оценивать приложения Retrieval Augmented Generation
RAG)), или Retrieval Augmented Generation, — это заметный ИИ-фреймворк в эпоху больших языковых моделей (LLM))) вроде ChatGPT. Он расширяет возможности этих моделей за счет интеграции внешних знаний, обеспечивая более точные и актуальные ответы. Стандартная RAG-система включает LLM, векторную базу данных вроде Milvus и некоторые промпты в виде кода; все это можно оценить с помощью комплексного фреймворка оценки rag.
По мере того как все больше разработчиков и компаний внедряют RAG для создания GenAI-приложений, оценка их эффективности становится все более важной. В предыдущей публикации мы оценивали производительность двух разных RAG-систем, построенных с использованием OpenAI Assistants и векторной базы данных Milvus, что пролило некоторый свет на оценку RAG-систем. В этой публикации мы углубимся в тему и обсудим методологии, используемые для оценки RAG-приложений. Мы также представим несколько мощных инструментов оценки и выделим стандартные метрики.
Оценка RAG-приложений — это больше, чем простое сравнение нескольких примеров. Ключ заключается в использовании убедительных, количественных и воспроизводимых метрик для оценки этих приложений. На этом пути мы представим три категории метрик:
Метрики на основе эталонной истины
Метрики без эталонной истины
Метрики на основе ответов LLM
Эталонная истина относится к хорошо установленным ответам или фрагментам документов знаний в наборе данных, соответствующим пользовательским запросам. Когда эталонной истиной являются ответы, мы можем напрямую сравнивать эталонную истину с ответами RAG, что облегчает сквозное измерение с использованием таких метрик, как семантическое сходство ответа и корректность ответа.
Ниже приведен пример оценки ответов на основе их корректности.
Эталонная истина: Эйнштейн родился в 1879 году в Германии.
Высокая корректность ответа: В 1879 году, в Германии, родился Эйнштейн.
Низкая корректность ответа: В Испании Эйнштейн родился в 1879 году.
Когда эталонной истиной являются фрагменты из документа знаний, мы можем оценивать корреляцию между фрагментами документа и извлеченными контекстами, используя традиционные метрики, такие как Exact Match (EM), Rouge-L и F1. По сути, мы оцениваем эффективность извлечения в RAG-приложениях.
Теперь мы установили важность использования наборов данных с эталонной истиной для оценки RAG-приложений. Однако что, если вы хотите оценить RAG-приложение, используя свои частные наборы данных без размеченной эталонной истины? Как сгенерировать необходимую эталонную истину для ваших наборов данных?
Самый простой метод — попросить LLM, такую как ChatGPT, сгенерировать примеры вопросов и ответов на основе вашего проприетарного набора данных. Такие инструменты, как Ragas и LlamaIndex, также предоставляют методы для генерации тестовых данных, адаптированных к вашим документам знаний.
_Примеры вопросов и ответов, сгенерированных инструментом оценки Ragas (источник: https://docs.ragas.io/en/latest/concepts/testset_generation.html)
Эти сгенерированные тестовые наборы данных, включающие вопросы, контекст и соответствующие ответы, облегчают количественную оценку без опоры на несвязанные внешние базовые наборы данных. Такой подход позволяет пользователям оценивать RAG-системы с использованием их уникальных данных, обеспечивая более индивидуализированный и содержательный процесс оценки.
Метрики без эталонной истины
Мы все еще можем оценивать RAG-приложения без эталонной истины для каждого запроса. TruLens-Eval, инструмент оценки с открытым исходным кодом, вводит инновационную концепцию RAG Triad, которая сосредоточена на оценке релевантности элементов в триплетах запроса, контекста и ответа. Три соответствующие метрики:
Релевантность контекста: Измеряет, насколько хорошо извлеченный контекст поддерживает запрос.
Обоснованность: Оценивает степень, в которой ответ LLM соответствует извлеченному контексту.
Релевантность ответа: Оценивает релевантность итогового ответа запросу.
Ниже приведен пример оценки ответов на основе их релевантности вопросу.
Вопрос: Где находится Франция и какова ее столица?
Ответ с низкой релевантностью: Франция находится в Западной Европе.
Ответ с высокой релевантностью: Франция находится в Западной Европе, и Париж является ее столицей.
Триада RAG, источник: https://www.trulens.org/getting_started/core_concepts/rag_triad/
Кроме того, эти метрики триады могут быть дополнительно подразделены, повышая детализацию оценки. Например, Ragas (фреймворк с открытым исходным кодом, предназначенный для оценки производительности систем RAG) разделил релевантность контекста на три более подробные метрики: точность контекста, релевантность контекста и полнота контекста.
Эта категория метрик оценивает ответы LLM, учитывая такие факторы, как дружелюбность, вредоносность и лаконичность. Например, предлагаются такие метрики, как лаконичность, релевантность, корректность, связность, вредоносность, злонамеренность, полезность, спорность, женоненавистничество, преступность и нечувствительность.
Ниже приведен пример оценки ответов на основе их лаконичности.
Вопрос: Сколько будет 2+2?
Ответ с низкой лаконичностью: Сколько будет 2+2? Это элементарный вопрос. Ответ, который вы ищете, заключается в том, что два плюс два равно четырем.
Ответ с высокой лаконичностью: 4
Использование LLM для оценки метрик
Большинство метрик, упомянутых ранее, требуют ввода текста для получения оценки, что требует усилий. Хорошая новость в том, что с появлением LLM, таких как GPT-4, этот процесс становится более управляемым: все, что вам нужно сделать, — разработать подходящий промпт.
В статье "Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena" предлагается дизайн промпта для GPT-4, чтобы оценивать качество ответа AI-ассистента на вопрос пользователя. Ниже приведен краткий пример:
[System]
Please act as an impartial judge and evaluate the quality of the response provided by an AI assistant to the user question displayed below. Your evaluation should consider factors such as the helpfulness, relevance, accuracy, depth, creativity, and level of detail of the response. Begin your evaluation by providing a short explanation. Be as objective as possible. After providing your explanation, please rate the response on a scale of 1 to 10 by strictly following this format: "[[rating]]", for example: "Rating: [[5]]".
[Question]
{question}
[The Start of Assistant's Answer]
{answer}
[The End of Assistant's Answer]
Этот промпт просит GPT-4 оценить качество ответа и выставить им оценку по шкале от 1 до 10.
Важно отметить, что GPT-4, как и любой судья, не является безошибочным и может иметь предвзятости и потенциальные ошибки. Поэтому дизайн промпта имеет решающее значение. Могут потребоваться продвинутые техники промпт-инжиниринга, такие как multi-shot или Chain-of-Thought (CoT). К счастью, нам не нужно беспокоиться об этой проблеме, потому что многие инструменты оценки для приложений RAG уже интегрировали хорошо спроектированные промпты.
Теперь, когда мы рассмотрели оценку приложения RAG, давайте изучим некоторые инструменты для оценки приложений RAG, которые дают представление о том, как они работают и для каких сценариев использования эти инструменты подходят лучше всего.
Ragas: оптимизированная оценка RAG
Ragas — это инструмент оценки с открытым исходным кодом для оценки приложений RAG. Благодаря простому интерфейсу Ragas упрощает процесс оценки. Создав экземпляр датасета в требуемом формате, пользователи могут быстро запускать оценки и получать такие метрики, как 'ragas_score,' 'context_precision,' 'faithfulness,' and 'answer_relevancy.'
from ragas import evaluate
from datasets import Dataset
# подготовьте ваш датасет huggingface в формате
# Dataset({
# features: ['question', 'contexts', 'answer', 'ground_truths'],
# num_rows: 25
# })
dataset: Dataset
results = evaluate(dataset)
# {'ragas_score': 0.860, 'context_precision': 0.817,
# 'faithfulness': 0.892, 'answer_relevancy': 0.874}
Ragas поддерживает множество метрик и не предъявляет требований к конкретному фреймворку, обеспечивая гибкость при оценке различных RAG-приложений. Ragas позволяет осуществлять мониторинг оценок в реальном времени через LangSmith, предоставляя сведения о причинах каждой оценки и расходе API-ключа.
Понимание RAG-систем
Системы Retrieval Augmented Generation (RAG) — это тип технологии искусственного интеллекта (AI), который сочетает сильные стороны больших языковых моделей (LLMs) с извлечением внешних знаний. RAG-системы состоят из трех основных компонентов: Index, Retrieve и Generate. Компонент Index создает базу данных знаний, в которой можно выполнять поиск и извлекать данные. Компонент Retrieve извлекает релевантную информацию из проиндексированной базы данных. Компонент Generate создает новый текст на основе извлеченной информации.
RAG-системы обычно используются для чат-ботов и систем ответов на вопросы. Они обеспечивают надежный и динамичный подход к AI-диалогам и обработке информации. Используя внешние знания, RAG-системы позволяют получать более точные, контекстуальные, релевантные и актуальные ответы. Это делает их бесценными в различных областях, включая обслуживание клиентов и внутренние чат-боты баз знаний, где точная и своевременная информация имеет решающее значение.
Метрики оценки для RAG
Оценка производительности RAG-систем имеет решающее значение для их надежности и эффективности. Существует несколько метрик оценки для RAG-систем, включая:
Релевантность контекста: измеряет релевантность извлеченного контекста запросу пользователя.
Полнота контекста: измеряет долю релевантного контекста, извлеченного системой.
Достоверность: измеряет точность сгенерированного текста на основе извлеченного контекста.
Релевантность ответа: оценивает релевантность сгенерированного текста запросу пользователя.
Правильность ответа: оценивает точность сгенерированного текста.
Эти метрики предоставляют комплексную основу для оценки производительности RAG-систем. Анализируя эти аспекты, разработчики могут определить области для улучшения и убедиться, что система предоставляет высококачественные, релевантные и точные ответы.
LlamaIndex: простое создание и оценка
LlamaIndex — это надежный AI-фреймворк для создания RAG-приложений, включая инструмент оценки RAG. Он удобен для оценки приложений, созданных в рамках его фреймворка.
from llama_index.evaluation import BatchEvalRunner
from llama_index.evaluation import (
FaithfulnessEvaluator,
RelevancyEvaluator,
)
service_context_gpt4 = ...
vector_index = ...
question_list = ...
faithfulness_gpt4 = FaithfulnessEvaluator(service_context=service_context_gpt4)
relevancy_gpt4 = RelevancyEvaluator(service_context=service_context_gpt4)
runner = BatchEvalRunner(
{"faithfulness": faithfulness_gpt4, "relevancy": relevancy_gpt4},
workers=8,
)
eval_results = runner.evaluate_queries(
vector_index.as_query_engine(), queries=question_list
)
TruLens-Eval: интегрированная оценка для различных фреймворков
TruLens Eval предоставляет простой способ оценки RAG-приложений, созданных с помощью LangChain и LlamaIndex. Следующий фрагмент кода показывает, как настроить оценку для RAG-приложения на основе LangChain.
from trulens_eval import TruChain, Feedback, Tru,Select
from trulens_eval.feedback import Groundedness
from trulens_eval.feedback.provider import OpenAI
import numpy as np
tru = Tru()
rag_chain = ...
# Initialize provider class
openai = OpenAI()
grounded = Groundedness(groundedness_provider=OpenAI())
# Define a groundedness feedback function
f_groundedness = (
Feedback(grounded.groundedness_measure_with_cot_reasons)
.on(Select.RecordCalls.first.invoke.rets.context)
.on_output()
.aggregate(grounded.grounded_statements_aggregator)
)
# Question/answer relevance between overall question and answer.
f_qa_relevance = Feedback(openai.relevance).on_input_output()
tru_recorder = TruChain(rag_chain,
app_id='Chain1_ChatApplication',
feedbacks=[f_qa_relevance, f_groundedness])
tru.run_dashboard()
Trulens-Eval может оценивать приложения RAG, созданные с использованием других фреймворков, но реализация этого в коде может быть сложной. Подробнее см. в официальной документации.
Кроме того, Trulens-Eval также предлагает визуальный мониторинг в браузере для анализа причин оценки и наблюдения за использованием API-ключей.
Phoenix: гибкая оценка LLM
Phoenix предоставляет полный набор метрик для оценки LLM, включая качество сгенерированных эмбеддингов и ответов LLM. Он также может оценивать приложения RAG, но включает меньше метрик, чем другие упомянутые инструменты оценки. Следующий фрагмент кода показывает, как использовать Phoenix для оценки приложения RAG, созданного с помощью LlamaIndex.
import phoenix as px
from llama_index import set_global_handler
from phoenix.experimental.evals import llm_classify, OpenAIModel, RAG_RELEVANCY_PROMPT_TEMPLATE, \
RAG_RELEVANCY_PROMPT_RAILS_MAP
from phoenix.session.evaluation import get_retrieved_documents
px.launch_app()
set_global_handler("arize_phoenix")
print("phoenix URL", px.active_session().url)
query_engine = ...
question_list = ...
for question in question_list:
response_vector = query_engine.query(question)
retrieved_documents = get_retrieved_documents(px.active_session())
retrieved_documents_relevance = llm_classify(
dataframe=retrieved_documents,
model=OpenAIModel(model_name="gpt-4-1106-preview"),
template=RAG_RELEVANCY_PROMPT_TEMPLATE,
rails=list(RAG_RELEVANCY_PROMPT_RAILS_MAP.values()),
provide_explanation=True,
)
Помимо вышеупомянутых инструментов, другие платформы, такие как DeepEval, LangSmith и OpenAI Evals, также предлагают возможности для оценки приложений RAG. Их методологии похожи, но дизайн промптов и особенности реализации различаются, поэтому обязательно выберите инструмент, который лучше всего подходит вам.
В заключение мы рассмотрели несколько методологий, метрик и инструментов оценки приложений RAG. В частности, мы изучили три категории метрик:
основанные на эталонных данных,
не использующие эталонные данные,
и основанные на ответах больших языковых моделей (LLM).
Метрики с эталонными данными предполагают сравнение ответов RAG с установленными ответами. Напротив, метрики без эталонных данных, такие как RAG Triad, фокусируются на оценке релевантности между запросами, контекстом и ответами. Метрики, основанные на ответах LLM, учитывают дружелюбность, вредоносность и краткость.
Мы также изучили использование LLM для оценки метрик с помощью хорошо продуманных промптов и представили набор инструментов оценки RAG, включая Ragas, LlamaIndex, TruLens-Eval и Phoenix, чтобы помочь в этой задаче.
В быстро меняющемся мире ИИ регулярная оценка и улучшение приложений RAG имеют решающее значение для их надежности. Используя обсужденные здесь методологии, метрики и инструменты, разработчики и компании могут принимать обоснованные решения о производительности и возможностях своих систем RAG, способствуя прогрессу приложений ИИ.
Создание набора данных Gold Standard
Создание эталонного набора данных — критически важный шаг в оценке RAG-систем. Эталонный набор данных — это набор примеров, которые используются в качестве ориентира для оценки производительности системы. Набор данных должен включать набор вопросов, ответов и контекстов, релевантных домену RAG-системы.
Чтобы создать эталонный набор данных, вы можете выполнить следующие шаги:
Определите набор релевантных вопросов и ответов для домена RAG-системы.
Создайте набор контекстов, релевантных вопросам и ответам.
Привлеките людей-оценщиков для аннотирования контекстов и ответов, чтобы создать набор данных ground truth.
Используйте набор данных ground truth для оценки производительности RAG-системы.
Этот процесс гарантирует, что оценка основана на точных и релевантных данных, предоставляя надежный ориентир для оценки производительности системы.
Лучшие практики оценки RAG
Оценка RAG-систем требует тщательного учета нескольких факторов. Вот некоторые лучшие практики оценки RAG:
Используйте эталонный набор данных для оценки производительности RAG-системы.
Используйте комбинацию метрик оценки, чтобы получить всестороннее понимание производительности системы.
Учитывайте компромиссы между различными метриками оценки и выбирайте те, которые лучше всего подходят для вашего сценария использования.
Регулярно пересматривайте и уточняйте свои метрики оценки, чтобы они оставались релевантными и эффективными.
Используйте автоматизированные инструменты оценки, чтобы оптимизировать процесс оценки и снизить нагрузку на людей-оценщиков.
Следуя этим лучшим практикам, вы можете обеспечить тщательную и эффективную оценку вашей RAG-системы, что приведет к непрерывному улучшению и оптимальной производительности.
Заключение
RAG-системы — это мощная технология для создания чат-ботов и систем вопросов и ответов. Оценка производительности RAG-систем имеет решающее значение для их надежности и эффективности. Понимая RAG-системы, используя метрики оценки, создавая эталонный набор данных и следуя лучшим практикам оценки RAG, вы можете убедиться, что ваша RAG-система работает оптимально и предоставляет пользователям точные и релевантные ответы.
В быстро меняющемся мире AI регулярная оценка и совершенствование RAG-приложений имеют решающее значение для их надежности. Используя методологии, метрики и инструменты, рассмотренные здесь, разработчики и компании могут принимать обоснованные решения о производительности и возможностях своих RAG-систем, способствуя прогрессу AI-приложений.
Читать далее

Zilliz Cloud On-Demand Compute: Pay Only for What You Use
The customer case behind Zilliz Cloud On-Demand: how a $10K vector search bill came down to under $500, and the engineering changes that made it possible.

Why and How to Migrate from Self-Hosted Milvus to Zilliz Cloud
A simple, step-by-step guide to migrating from Milvus to Zilliz Cloud. Learn both endpoint and backup methods for a smooth, scalable vector database migration.

Zilliz Cloud Enterprise Vector Search Powers High-Performance AI on AWS
Zilliz Cloud on AWS powers secure, scalable, ultra-fast vector search for enterprise AI apps, with BYOC, sub-10ms latency, and zero-DevOps simplicity.



