Руководство для начинающих по оценке конвейеров RAG с использованием RAGAS
Введение
В постоянно развивающемся мире машинного обучения и искусственного интеллекта разработка приложений языковых моделей, в частности систем генерации дополненного извлечения (RAG), становится все более сложной. Однако настоящая проблема возникает не во время первоначального создания, а при постоянном обслуживании и улучшении этих приложений. Именно здесь в игру вступает RAGAS — оценочная библиотека, предназначенная для предоставления метрик для конвейеров RAG. В этой статье мы рассмотрим библиотеку RAGAS и научим вас использовать ее для оценки конвейеров RAG.
Цели этой статьи
- Понять, как зарождалась и эволюционировала оценочная библиотека RAGAS.
- Получить знания об оценочных баллах RAG.
- Научиться оценивать системы RAG с помощью оценочной библиотеки RAGAS.
Что такое RAGAS?
Создание RAGAS основано на стремлении к постоянному совершенствованию крупных языковых моделей (LLM) и приложений RAG посредством внедрения разработки на основе метрик (MDD). MDD — это не просто модное слово, а стратегический подход к разработке продукта, который использует количественные данные для управления процессами принятия решений.
Последовательно отслеживая ключевые метрики, разработчики и исследователи могут получить глубокое понимание производительности своих приложений, тем самым направляя свои проекты на путь к совершенству. RAGAS стремится закрепить эту методологию, ориентированную на данные, в качестве стандарта с открытым исходным кодом для приложений LLM и RAG, гарантируя, что оценка и мониторинг станут неотъемлемыми частями жизненного цикла разработки.
Метрики оценки являются важной частью RAG, поскольку они позволяют систематически оценивать приложения LLM. Они способствуют созданию среды, в которой эксперименты могут проводиться с высокой степенью надежности. При этом они обеспечивают основу для объективного измерения эффективности различных компонентов в конвейере RAG.
Кроме того, аспект мониторинга предлагает ценную информацию, почерпнутую из производственных данных, что дает разработчикам возможность постоянно совершенствовать и повышать качество своих приложений LLM. Таким образом, RAGAS выступает маяком для тех, кто стремится к совершенству в разработке и обслуживании систем RAG, отстаивая основную идею MDD, которая позволяет с точностью и пониманием ориентироваться в сложных вопросах совершенствования приложений искусственного интеллекта.
Внедрение RAGAS и генерация оценочных баллов
В этом разделе мы продемонстрируем, как работает библиотека оценки RAGAS, реализовав ее на существующем конвейере RAG. Мы не будем создавать конвейер RAG с нуля, поэтому обязательным условием является наличие существующего конвейера RAG, готового генерировать ответы на запросы. Мы будем использовать набор данных COQA-QUAC из Kaggle. Этот набор данных содержит различные вопросы, контекст и их ответы, которые будут использоваться в качестве данных для конвейера RAG. Мы вручную сгенерируем ответы на несколько запросов и будем использовать справочные/достоверные ответы для получения оценок RAGAS.
Оценочные баллы RAGAS
RAGAS предлагает следующие оценочные баллы:
- Верность: измеряет фактическую согласованность сгенерированного ответа по отношению к заданному контексту. Она рассчитывается на основе ответа и извлеченного контекста. Ответ масштабируется в диапазоне (0,1). Чем выше, тем лучше.
- Релевантность ответа: фокусируется на оценке того, насколько сгенерированный ответ релевантен заданной подсказке. Более низкий балл присваивается ответам, которые являются неполными или содержат избыточную информацию, а более высокие баллы указывают на более высокую релевантность. Эта метрика вычисляется с использованием вопроса, контекста и ответа.
- Полнота контекста: измеряет степень, в которой извлеченный контекст соответствует аннотированному ответу, рассматриваемому как истина. Он вычисляется на основе истины и извлеченного контекста, а значения находятся в диапазоне от 0 до 1, причем более высокие значения указывают на лучшую производительность.
- Точность контекста: оценивает, все ли элементы, соответствующие истине и присутствующие в контекстах, ранжированы выше. В идеале все соответствующие фрагменты должны отображаться в верхних рангах. Эта метрика вычисляется с использованием вопроса, истины и контекстов со значениями в диапазоне от 0 до 1, где более высокие баллы указывают на лучшую точность.
- Релевантность контекста: измеряет релевантность извлеченного контекста, вычисляемую на основе как вопроса, так и контекстов. Значения находятся в диапазоне (0, 1), причем более высокие значения указывают на лучшую релевантность.
- Возврат объекта контекста: предоставляет меру возврата извлеченного контекста на основе количества объектов, присутствующих как в истине, так и в контекстах, относительно количества объектов, присутствующих только в истине.
Метрики сквозной оценки
Также RAGAS предлагает две метрики сквозной оценки производительности конвейера RAG.
- Семантическое сходство ответа: оценивает семантическое сходство между сгенерированным ответом и истинным значением. Эта оценка основана на истинном значении и ответе, значения которого находятся в диапазоне от 0 до 1.
- Корректность ответа: включает в себя измерение точности сгенерированного ответа по сравнению с истинным значением. Эта оценка основана на истинном значении и ответе, значения которого находятся в диапазоне от 0 до 1.
В этой статье мы сосредоточимся на оценке конвейера RAG только с использованием метрик достоверности, релевантности ответа, релевантности контекста и полноты контекста. Единственное требование здесь заключается в том, что входные данные для оценки должны быть словарем, содержащим запрос, ответ и исходные документы. Теперь, когда мы обсудили цели и требования, давайте перейдем непосредственно к использованию RAGAS.
Практическая оценка RAG с использованием RAGAS
Сначала давайте установим все необходимые для работы RAGAS пакеты. Ниже приведен список всех необходимых пакетов с их конкретными версиями для установки:
ПРИМЕЧАНИЕ: Избегайте использования последней версии RAGAS, так как в ней нет реализации Langchain. Теперь, когда у нас настроена среда, давайте начнем использовать RAGAS для оценки сгенерированных ответов.
Шаг 1: Генерация выходных данных конвейера RAG
Сначала мы сгенерируем ответ с помощью конвейера RAG. Выходным ответом конвейера RAG должен быть словарь, имеющий ключи «query», «result» и «source_documents». Мы можем добиться этого, установив параметр «return_source_documents» в значение «True» в цепочке «RetrievalQA» из Langchain. На изображении ниже показаны параметры, которые я использовал:
Этот формат принимает Ragas Evaluator. Ниже приведен пример того, как должна выглядеть переменная ответа:
Обратите внимание, что исходные документы представляют собой список документов, содержащих исходные ссылки. Этот словарь будет передан оценщику RAGAS для расчета каждой оценки. Мы сгенерируем ответы на 2-3 запроса и получим их в виде словаря Python в указанном выше формате. Затем мы сохраним их в списке ответов, который будет использоваться позже.
Шаг 2: Создание цепочек оценки
Далее мы создадим цепочки оценки с помощью RAGAS Evaluator. Мы будем использовать цепочки верности, релевантности ответа, релевантности контекста и полноты контекста. Сначала нам нужно импортировать несколько необходимых пакетов из RAGAS.
Для создания оценочных метрик мы будем использовать RagasEvaluatorChain. Он инициализирует метрику, которую мы затем используем для генерации оценок.
Шаг 3: Создание метрик оценки
Далее с помощью RagasEvaluatorChain мы создадим 4 различных метрики.
Этот код создает словарь с 4 различными цепочками оценщиков: верность, релевантность ответа, релевантность контекста и полнота контекста.
Шаг 4: Оценка конвейера RAG
Затем мы пройдемся по сгенерированным словарям ответов и оценим их. Предполагая, что ответы присутствуют в списке под названием «responses», мы переберем их и возьмем каждый словарь ответов, содержащий следующие пары ключ-значение: query, response, source_documents.
Приведенный выше фрагмент кода циклически обрабатывает каждый словарь и генерирует оценки. Внутренний цикл перебирает каждую оценочную метрику для генерации их оценок. Ниже представлен пример выходных данных для приведенного выше кода:
Выше представлена оценка для одного ответа на запрос. Однако мы можем автоматизировать процесс для генерации оценок для большего количества ответов на запросы. Ниже приведен общий код для всех шагов:
Заключение
Сегодня RAGAS становится ключевым инструментом в приложениях языковых моделей, особенно в рамках систем RAG. Интегрируя MDD в ядро конвейеров RAG, RAGAS предоставляет структурированную методологию для оценки и повышения производительности таких систем. Полный набор метрик оценки включает в себя достоверность, релевантность ответа, полноту контекста и релевантность контекста. Они облегчают тщательный анализ ответов, сгенерированных конвейером RAG, обеспечивая их соответствие контексту и истине.
Практическая демонстрация RAGAS на уже существующем конвейере RAG с использованием набора данных COQA-QUAC наглядно иллюстрирует способность библиотеки предоставлять разработчикам поддающуюся количественной оценке информацию и полезную обратную связь. Процесс включает инициализацию среды, генерацию ответов и использование цепочек оценщиков RAGAS для вычисления различных оценок. Этот практический пример подчеркивает доступность и полезность RAGAS в постоянном совершенствовании LLM, тем самым повышая их надежность и эффективность. RAGAS является важным инструментом для разработчиков и исследователей, позволяющим создавать ответственные приложения искусственного интеллекта и машинного обучения.
Основные выводы
- Библиотека оценки RAGAS закрепляет принципы MDD в рабочем процессе разработки LLM и системы RAG.
- Процесс оценки сгенерированных ответов с использованием RAGAS включает в себя генерацию ответов в требуемом формате словаря, а также создание и использование цепочек оценщиков для вычисления оценок.
- Используя RAGAS, разработчики и исследователи могут получить объективную информацию о производительности своих приложений RAG. Это позволяет им вносить более точные и обоснованные усовершенствования.
Понравилась статья? Еще больше информации на тему данных, AI, ML, LLM вы можете найти в моем Telegram канале.
- Как подготовиться к сбору данных, чтобы не провалиться в процессе?
- Какие данные нужны для обучения LLM?
- В чем специфика работы с GenAI проектами? И какие бенчмарки сравнения LLM есть на российском рынке?
Обо всем этом читайте в “Роман с данными”