Оценка RAG с помощью Ragas
Системы Retrieval-Augmented Generation (RAG) объединяют компонент поиска и генератор. Оценка качества только по итоговому ответу часто недостаточна: ошибки могут возникать из-за нерелевантного или неполного поиска, генерации, отклоняющейся от источников, или из-за обоих факторов.
Ragas (Retrieval-Augmented Generation Assessment) — это Python-фреймворк, который оценивает поведение RAG с помощью метрик достоверности контекста, релевантности ответа, качества поиска и других — в зависимости от включённых метрик и доступных столбцов в наборе для оценки.
На этой странице основное внимание уделено прямому использованию SDK Ragas в ноутбуке или пакетной задаче. Интеграция с другими платформами оценки является опциональной и здесь не рассматривается.
Содержание
Что записывать для каждого примера оценкиОбзор метрик RagasОсновные метрики RAGДополнительные метрики RAGВыбор минимального набора RAGВызов SDK RagasТребованияРабочий ноутбукУстранение неполадокИнтерпретация результатовДополнительные материалыЧто записывать для каждого примера оценки
Типичная строка с одним ходом включает:
Обзор метрик Ragas
Ragas предоставляет большой каталог метрик. Для типичного прохода оценки RAG требуется только подмножество. Каждая метрика ожидает определённые столбцы набора данных (например, question, contexts, answer, ground_truth) и может требовать LLM, эмбеддинги, оба или ни того, ни другого. Имена и пути импорта меняются с релизами; уточняйте в документации Ragas metrics для установленной версии.
Ниже приведены списки с кратким описанием назначения и распространённого использования; они не заменяют подробности API.
Основные метрики RAG
Эти метрики наиболее напрямую связаны с качеством retrieval-augmented generation и обычно являются первым набором для отслеживания:
Если не указано иное, классы в этом разделе из ragas.metrics.collections.
Требования к полям и импортам могут варьироваться в зависимости от версии Ragas и варианта метрики. Проверяйте документацию для установленной версии на Ragas metrics documentation.
Дополнительные метрики RAG
Эти метрики полезны в специфических сценариях оценки, особенно при наличии эталонных ответов или необходимости проверки устойчивости:
Для метрик, слабо связанных с ядром RAG (например, общие метрики перекрытия текста, метрики на основе рубрик, метрики агентов/инструментов, SQL-метрики или мультимодальные метрики), смотрите Ragas metrics documentation.
Выбор минимального набора RAG
Практическим стандартом для многих бенчмарков RAG является набор: faithfulness, answer relevancy, context precision и context recall (recall и некоторые варианты precision требуют ground_truth или эквивалента). Добавляйте answer correctness или semantic similarity, если доступен эталонный ответ. Подбирайте метрики в соответствии с доступными столбцами набора данных и ограничениями по стоимости (метрики с LLM работают медленнее и дороже).
Вызов SDK Ragas
Для современного использования Ragas создавайте экземпляры метрик из ragas.metrics.collections и оценивайте каждую строку с помощью ascore() (или score() в синхронных скриптах).
-
Подготовьте OpenAI-совместимых клиентов (
AsyncOpenAI) для LLM и эмбеддингов, затем подключитеllm_factoryиOpenAIEmbeddings(см. пример ноутбука для настройки через переменные окружения). -
Создайте экземпляры метрик с явными зависимостями (
llm,embeddingsтам, где требуется). -
Итеративно проходите по строкам и вызывайте
metric.ascore(...)с аргументами, специфичными для метрики.
При выборе метрик следующие различия влияют на подготовку вызова оценки:
На практике основная задача — согласовать поля набора данных и выбор метрик, затем оценить строки выбранными экземплярами метрик.
Требования
- Рекомендуется Python 3.10+.
- Доступ в сеть к API LLM (и к API эмбеддингов для метрик, требующих эмбеддинги). Пример ноутбука предполагает настройку, совместимую с OpenAI, и поддерживает конфигурацию учётных данных и опционального базового URL для совместимых шлюзов.
- Учёт того, что оценка делает много вызовов модели; стоимость и задержка масштабируются с количеством строк и метрик.
- Фиксация версии: API Ragas и классы метрик меняются между релизами. Для воспроизводимых бенчмарков фиксируйте версии
ragas(и связанных пакетов) в окружении или ноутбуке; см. закомментированную строку установки в примере ноутбука.
Рабочий ноутбук
Скачайте и откройте ноутбук в JupyterLab или другой среде Jupyter:
Ноутбук начинается с краткого обзора SDK, сосредоточенного на современных метриках (ragas.metrics.collections) и явной настройке LLM/эмбеддингов. Каноническое объяснение — раздел Calling the Ragas SDK на этой странице.
В ноутбуке:
- Устанавливаются зависимости (с опциональной закомментированной фиксацией версии для воспроизводимости).
- Создаётся небольшой
datasets.Datasetс полямиuser_input,retrieved_contexts,responseиreference. - Выполняется базовая оценка с помощью faithfulness и answer relevancy с использованием современных классов метрик.
- Добавляются дополнительные метрики, ориентированные на поиск (context precision и context recall) с использованием современных классов метрик.
- Показываются агрегированные и построчные результаты, затем краткий раздел по устранению неполадок.
Устранение неполадок
- Настройка учётных данных или эндпоинта: настройте учётные данные API LLM (и опциональный базовый URL для совместимых шлюзов). Если эмбеддинги используют отдельный эндпоинт, настройте учётные данные для эмбеддингов и передайте отдельные клиенты
AsyncOpenAIвllm_factoryиOpenAIEmbeddings. - Ошибки валидации набора данных: проверьте требуемые аргументы для выбранных метрик и убедитесь, что ключи набора данных соответствуют современным примерам (
user_input,retrieved_contexts,response,reference). - Асинхронное выполнение в ноутбуке: пример ноутбука использует
await metric.ascore(...). Для синхронных скриптов используйтеmetric.score(...)или оберните асинхронный код вasyncio.run(...). - Предупреждения, связанные с версией: классы метрик и их сигнатуры могут меняться между версиями Ragas. Фиксируйте версии пакетов для воспроизводимых запусков и сверяйтесь с документацией для установленной версии.
Интерпретация результатов
- Сравнивайте оценки только при использовании одного и того же набора данных и конфигурации оценки (одинаковый LLM, эмбеддинги и подсказки); иначе сдвиги могут отражать изменения конфигурации, а не качество RAG.
- Для оценки, ориентированной на поиск, по возможности используйте ту же модель эмбеддингов, что и в продакшен-ретривере RAG, чтобы уменьшить дрейф метрик из-за несовпадения пространств эмбеддингов.
- Используйте агрегированные оценки для отслеживания тенденций или контроля качества, а построчные — для диагностики (например, отсутствующий контекст, галлюцинации или нерелевантный поиск). Рассматривайте значения метрик как направляющие сигналы, а не абсолютную истину.
Дополнительные материалы
- Документация Ragas: https://docs.ragas.io/
- Репозиторий Ragas на GitHub: https://github.com/vibrantlabsai/ragas