Введение
В постоянно развивающемся мире машинного обучения и искусственного интеллекта разработка приложений языковых моделей, в частности систем генерации дополненного извлечения (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 пакеты. Ниже приведен список всех необходимых пакетов с их конкретными версиями для установки:
langchain==0.1.13
openai
ragas==0.0.22
ПРИМЕЧАНИЕ: Избегайте использования последней версии RAGAS, так как в ней нет реализации Langchain. Теперь, когда у нас настроена среда, давайте начнем использовать RAGAS для оценки сгенерированных ответов.
Шаг 1: Генерация выходных данных конвейера RAG
Сначала мы сгенерируем ответ с помощью конвейера RAG. Выходным ответом конвейера RAG должен быть словарь, имеющий ключи «query», «result» и «source_documents». Мы можем добиться этого, установив параметр «return_source_documents» в значение «True» в цепочке «RetrievalQA» из Langchain. На изображении ниже показаны параметры, которые я использовал:
Этот формат принимает Ragas Evaluator. Ниже приведен пример того, как должна выглядеть переменная ответа:
{'query': 'Where are Malayalis found in India?',
'result': "Malayalis are found in various ...",
'source_documents': [
Document(
page_content=': 0\nquestion: Where is Malayali located?',
metadata={'source': 'data/dummy-rag.csv', 'row': 0}
),
...
]
}
Обратите внимание, что исходные документы представляют собой список документов, содержащих исходные ссылки. Этот словарь будет передан оценщику RAGAS для расчета каждой оценки. Мы сгенерируем ответы на 2-3 запроса и получим их в виде словаря Python в указанном выше формате. Затем мы сохраним их в списке ответов, который будет использоваться позже.
Шаг 2: Создание цепочек оценки
Далее мы создадим цепочки оценки с помощью RAGAS Evaluator. Мы будем использовать цепочки верности, релевантности ответа, релевантности контекста и полноты контекста. Сначала нам нужно импортировать несколько необходимых пакетов из RAGAS.
from ragas.langchain.evalchain import RagasEvaluatorChain
from ragas.metrics import (
faithfulness,
answer_relevancy,
context_relevancy,
context_recall,
)
Для создания оценочных метрик мы будем использовать RagasEvaluatorChain. Он инициализирует метрику, которую мы затем используем для генерации оценок.
Шаг 3: Создание метрик оценки
Далее с помощью RagasEvaluatorChain мы создадим 4 различных метрики.
eval_chains = {
m.name: RagasEvaluatorChain(metric=m)
for m in [faithfulness, answer_relevancy, context_relevancy, context_recall]
}
Этот код создает словарь с 4 различными цепочками оценщиков: верность, релевантность ответа, релевантность контекста и полнота контекста.
Шаг 4: Оценка конвейера RAG
Затем мы пройдемся по сгенерированным словарям ответов и оценим их. Предполагая, что ответы присутствуют в списке под названием «responses», мы переберем их и возьмем каждый словарь ответов, содержащий следующие пары ключ-значение: query, response, source_documents.
for response in responses:
for name, eval_chain in eval_chains.items():
score_name = f"{name}_score"
print(f"{score_name}: {eval_chain(response)[score_name]}")
Приведенный выше фрагмент кода циклически обрабатывает каждый словарь и генерирует оценки. Внутренний цикл перебирает каждую оценочную метрику для генерации их оценок. Ниже представлен пример выходных данных для приведенного выше кода:
faithfulness_score: 1.0
answer_relevancy_score: 0.7461039226035786
context_relevancy_score: 0.0
context_recall_score: 1.0
Выше представлена оценка для одного ответа на запрос. Однако мы можем автоматизировать процесс для генерации оценок для большего количества ответов на запросы. Ниже приведен общий код для всех шагов:
from ragas.langchain.evalchain import RagasEvaluatorChain
from ragas.metrics import (
faithfulness,
answer_relevancy,
context_relevancy,
context_recall,
)
eval_chains = {
m.name: RagasEvaluatorChain(metric=m)
for m in [faithfulness, answer_relevancy, context_relevancy, context_recall]
}
for response in responses:
for name, eval_chain in eval_chains.items():
score_name = f"{name}_score"
print(f"{score_name}: {eval_chain(response)[score_name]}")
Заключение
Сегодня RAGAS становится ключевым инструментом в приложениях языковых моделей, особенно в рамках систем RAG. Интегрируя MDD в ядро конвейеров RAG, RAGAS предоставляет структурированную методологию для оценки и повышения производительности таких систем. Полный набор метрик оценки включает в себя достоверность, релевантность ответа, полноту контекста и релевантность контекста. Они облегчают тщательный анализ ответов, сгенерированных конвейером RAG, обеспечивая их соответствие контексту и истине.
Практическая демонстрация RAGAS на уже существующем конвейере RAG с использованием набора данных COQA-QUAC наглядно иллюстрирует способность библиотеки предоставлять разработчикам поддающуюся количественной оценке информацию и полезную обратную связь. Процесс включает инициализацию среды, генерацию ответов и использование цепочек оценщиков RAGAS для вычисления различных оценок. Этот практический пример подчеркивает доступность и полезность RAGAS в постоянном совершенствовании LLM, тем самым повышая их надежность и эффективность. RAGAS является важным инструментом для разработчиков и исследователей, позволяющим создавать ответственные приложения искусственного интеллекта и машинного обучения.
Основные выводы
Библиотека оценки RAGAS закрепляет принципы MDD в рабочем процессе разработки LLM и системы RAG.
Процесс оценки сгенерированных ответов с использованием RAGAS включает в себя генерацию ответов в требуемом формате словаря, а также создание и использование цепочек оценщиков для вычисления оценок.
Используя RAGAS, разработчики и исследователи могут получить объективную информацию о производительности своих приложений RAG. Это позволяет им вносить более точные и обоснованные усовершенствования.