Руководство для начинающих по оценке конвейеров RAG с использованием RAGAS

в 10:04, , рубрики: COQA-QUAC, llm, mdd, rag, ragas

Введение

В постоянно развивающемся мире машинного обучения и искусственного интеллекта разработка приложений языковых моделей, в частности систем генерации дополненного извлечения (RAG), становится все более сложной. Однако настоящая проблема возникает не во время первоначального создания, а при постоянном обслуживании и улучшении этих приложений. Именно здесь в игру вступает RAGAS — оценочная библиотека, предназначенная для предоставления метрик для конвейеров RAG. В этой статье мы рассмотрим библиотеку RAGAS и научим вас использовать ее для оценки конвейеров RAG.

Руководство для начинающих по оценке конвейеров RAG с использованием RAGAS - 1

Цели этой статьи

  • Понять, как зарождалась и эволюционировала оценочная библиотека 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), причем более высокие значения указывают на лучшую релевантность.

  • Возврат объекта контекста: предоставляет меру возврата извлеченного контекста на основе количества объектов, присутствующих как в истине, так и в контекстах, относительно количества объектов, присутствующих только в истине.

Руководство для начинающих по оценке конвейеров RAG с использованием RAGAS - 2

Метрики сквозной оценки

Также RAGAS предлагает две метрики сквозной оценки производительности конвейера RAG.

  • Семантическое сходство ответа: оценивает семантическое сходство между сгенерированным ответом и истинным значением. Эта оценка основана на истинном значении и ответе, значения которого находятся в диапазоне от 0 до 1.

  • Корректность ответа: включает в себя измерение точности сгенерированного ответа по сравнению с истинным значением. Эта оценка основана на истинном значении и ответе, значения которого находятся в диапазоне от 0 до 1.

В этой статье мы сосредоточимся на оценке конвейера RAG только с использованием метрик достоверности, релевантности ответа, релевантности контекста и полноты контекста. Единственное требование здесь заключается в том, что входные данные для оценки должны быть словарем, содержащим запрос, ответ и исходные документы. Теперь, когда мы обсудили цели и требования, давайте перейдем непосредственно к использованию RAGAS.

Практическая оценка RAG с использованием RAGAS

Сначала давайте установим все необходимые для работы RAGAS пакеты. Ниже приведен список всех необходимых пакетов с их конкретными версиями для установки:

langchain==0.1.13
openai
ragas==0.0.22

ПРИМЕЧАНИЕ: Избегайте использования последней версии RAGAS, так как в ней нет реализации Langchain. Теперь, когда у нас настроена среда, давайте начнем использовать RAGAS для оценки сгенерированных ответов.

Руководство для начинающих по оценке конвейеров RAG с использованием RAGAS - 3

Шаг 1: Генерация выходных данных конвейера RAG

Сначала мы сгенерируем ответ с помощью конвейера RAG. Выходным ответом конвейера RAG должен быть словарь, имеющий ключи «query», «result» и «source_documents». Мы можем добиться этого, установив параметр «return_source_documents» в значение «True» в цепочке «RetrievalQA» из Langchain. На изображении ниже показаны параметры, которые я использовал:

Руководство для начинающих по оценке конвейеров RAG с использованием RAGAS - 4

Этот формат принимает Ragas Evaluator. Ниже приведен пример того, как должна выглядеть переменная ответа:

 {'query': 'Where are Malayalis found in India?',
 'result': "Malayalis are found in various ...",
 'source_documents': [
     Document(
       page_content=': 0nquestion: 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. Это позволяет им вносить более точные и обоснованные усовершенствования.

Автор: kucev

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js