- PVSM.RU - https://www.pvsm.ru -
В постоянно развивающемся мире машинного обучения [1] и искусственного интеллекта [2] разработка приложений языковых моделей, в частности систем генерации дополненного извлечения (RAG [3]), становится все более сложной. Однако настоящая проблема возникает не во время первоначального создания, а при постоянном обслуживании и улучшении этих приложений. Именно здесь в игру вступает RAGAS — оценочная библиотека, предназначенная для предоставления метрик для конвейеров RAG. В этой статье мы рассмотрим библиотеку RAGAS и научим вас использовать ее для оценки конвейеров RAG.
Понять, как зарождалась и эволюционировала оценочная библиотека RAGAS.
Получить знания об оценочных баллах RAG.
Научиться оценивать системы RAG с помощью оценочной библиотеки RAGAS.
Создание RAGAS основано на стремлении к постоянному совершенствованию крупных языковых моделей [4] (LLM) и приложений RAG посредством внедрения разработки на основе метрик (MDD). MDD — это не просто модное слово, а стратегический подход к разработке продукта, который использует количественные данные для управления процессами принятия решений.
Последовательно отслеживая ключевые метрики, разработчики и исследователи могут получить глубокое понимание производительности своих приложений, тем самым направляя свои проекты на путь к совершенству. RAGAS стремится закрепить эту методологию, ориентированную на данные, в качестве стандарта с открытым исходным кодом для приложений LLM и RAG, гарантируя, что оценка и мониторинг станут неотъемлемыми частями жизненного цикла разработки.
Метрики оценки являются важной частью RAG, поскольку они позволяют систематически оценивать приложения LLM. Они способствуют созданию среды, в которой эксперименты могут проводиться с высокой степенью надежности. При этом они обеспечивают основу для объективного измерения эффективности различных компонентов в конвейере RAG.
Кроме того, аспект мониторинга предлагает ценную информацию, почерпнутую из производственных данных, что дает разработчикам возможность постоянно совершенствовать и повышать качество своих приложений LLM [5]. Таким образом, RAGAS выступает маяком для тех, кто стремится к совершенству в разработке и обслуживании систем RAG, отстаивая основную идею MDD, которая позволяет с точностью и пониманием ориентироваться в сложных вопросах совершенствования приложений искусственного интеллекта.
В этом разделе мы продемонстрируем, как работает библиотека оценки RAGAS, реализовав ее на существующем конвейере RAG. Мы не будем создавать конвейер RAG с нуля, поэтому обязательным условием является наличие существующего конвейера RAG, готового генерировать ответы на запросы. Мы будем использовать набор данных COQA-QUAC [6] из Kaggle. Этот набор данных содержит различные вопросы, контекст и их ответы, которые будут использоваться в качестве данных для конвейера RAG. Мы вручную сгенерируем ответы на несколько запросов и будем использовать справочные/достоверные ответы для получения оценок RAGAS.
RAGAS предлагает следующие оценочные баллы:
Верность [7]: измеряет фактическую согласованность сгенерированного ответа по отношению к заданному контексту. Она рассчитывается на основе ответа и извлеченного контекста. Ответ масштабируется в диапазоне (0,1). Чем выше, тем лучше.
Релевантность ответа [8]: фокусируется на оценке того, насколько сгенерированный ответ релевантен заданной подсказке. Более низкий балл присваивается ответам, которые являются неполными или содержат избыточную информацию, а более высокие баллы указывают на более высокую релевантность. Эта метрика вычисляется с использованием вопроса, контекста и ответа.
Полнота контекста [9]: измеряет степень, в которой извлеченный контекст соответствует аннотированному ответу, рассматриваемому как истина. Он вычисляется на основе истины и извлеченного контекста, а значения находятся в диапазоне от 0 до 1, причем более высокие значения указывают на лучшую производительность.
Точность контекста [10]: оценивает, все ли элементы, соответствующие истине и присутствующие в контекстах, ранжированы выше. В идеале все соответствующие фрагменты должны отображаться в верхних рангах. Эта метрика вычисляется с использованием вопроса, истины и контекстов со значениями в диапазоне от 0 до 1, где более высокие баллы указывают на лучшую точность.
Релевантность контекста [11]: измеряет релевантность извлеченного контекста, вычисляемую на основе как вопроса, так и контекстов. Значения находятся в диапазоне (0, 1), причем более высокие значения указывают на лучшую релевантность.
Возврат объекта контекста [12]: предоставляет меру возврата извлеченного контекста на основе количества объектов, присутствующих как в истине, так и в контекстах, относительно количества объектов, присутствующих только в истине.
Также RAGAS предлагает две метрики сквозной оценки производительности конвейера RAG.
Семантическое сходство ответа: [13] оценивает семантическое сходство между сгенерированным ответом и истинным значением. Эта оценка основана на истинном значении и ответе, значения которого находятся в диапазоне от 0 до 1.
Корректность ответа: [14]включает в себя измерение точности сгенерированного ответа по сравнению с истинным значением. Эта оценка основана на истинном значении и ответе, значения которого находятся в диапазоне от 0 до 1.
В этой статье мы сосредоточимся на оценке конвейера RAG только с использованием метрик достоверности, релевантности ответа, релевантности контекста и полноты контекста. Единственное требование здесь заключается в том, что входные данные для оценки должны быть словарем, содержащим запрос, ответ и исходные документы. Теперь, когда мы обсудили цели и требования, давайте перейдем непосредственно к использованию RAGAS.
Сначала давайте установим все необходимые для работы RAGAS пакеты. Ниже приведен список всех необходимых пакетов с их конкретными версиями для установки:
langchain==0.1.13
openai
ragas==0.0.22
ПРИМЕЧАНИЕ: Избегайте использования последней версии RAGAS, так как в ней нет реализации Langchain. Теперь, когда у нас настроена среда, давайте начнем использовать RAGAS для оценки сгенерированных ответов.
Сначала мы сгенерируем ответ с помощью конвейера 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=': 0nquestion: Where is Malayali located?',
metadata={'source': 'data/dummy-rag.csv', 'row': 0}
),
...
]
}
Обратите внимание, что исходные документы представляют собой список документов, содержащих исходные ссылки. Этот словарь будет передан оценщику RAGAS для расчета каждой оценки. Мы сгенерируем ответы на 2-3 запроса и получим их в виде словаря Python в указанном выше формате. Затем мы сохраним их в списке ответов, который будет использоваться позже.
Далее мы создадим цепочки оценки с помощью RAGAS Evaluator. Мы будем использовать цепочки верности, релевантности ответа, релевантности контекста и полноты контекста. Сначала нам нужно импортировать несколько необходимых пакетов из RAGAS.
from ragas.langchain.evalchain import RagasEvaluatorChain
from ragas.metrics import (
faithfulness,
answer_relevancy,
context_relevancy,
context_recall,
)
Для создания оценочных метрик мы будем использовать RagasEvaluatorChain. Он инициализирует метрику, которую мы затем используем для генерации оценок.
Далее с помощью RagasEvaluatorChain мы создадим 4 различных метрики.
eval_chains = {
m.name: RagasEvaluatorChain(metric=m)
for m in [faithfulness, answer_relevancy, context_relevancy, context_recall]
}
Этот код создает словарь с 4 различными цепочками оценщиков: верность, релевантность ответа, релевантность контекста и полнота контекста.
Затем мы пройдемся по сгенерированным словарям ответов и оценим их. Предполагая, что ответы присутствуют в списке под названием «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
Источник [15]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/llm/404368
Ссылки в тексте:
[1] машинного обучения: https://www.analyticsvidhya.com/blog/2022/01/machine-learning-algorithms/
[2] искусственного интеллекта: https://www.analyticsvidhya.com/blog/2021/09/introduction-to-artificial-intelligence-for-beginners/
[3] RAG: https://www.analyticsvidhya.com/blog/2023/09/retrieval-augmented-generation-rag-in-ai/
[4] крупных языковых моделей: https://www.analyticsvidhya.com/blog/2023/03/an-introduction-to-large-language-models-llms/
[5] приложений LLM: https://www.analyticsvidhya.com/blog/2023/07/building-llm-powered-applications-with-langchain/
[6] COQA-QUAC: https://www.kaggle.com/datasets/parthplc/quaccoqa
[7] Верность: https://docs.ragas.io/en/latest/concepts/metrics/faithfulness.html
[8] Релевантность ответа: https://docs.ragas.io/en/latest/concepts/metrics/answer_relevance.html
[9] Полнота контекста: https://docs.ragas.io/en/latest/concepts/metrics/context_recall.html
[10] Точность контекста: https://docs.ragas.io/en/latest/concepts/metrics/context_precision.html
[11] Релевантность контекста: https://docs.ragas.io/en/latest/concepts/metrics/context_relevancy.html
[12] Возврат объекта контекста: https://docs.ragas.io/en/latest/concepts/metrics/context_entities_recall.html
[13] Семантическое сходство ответа:: https://docs.ragas.io/en/latest/concepts/metrics/semantic_similarity.html
[14] Корректность ответа: : https://docs.ragas.io/en/latest/concepts/metrics/answer_correctness.html
[15] Источник: https://habr.com/ru/articles/863902/?utm_campaign=863902&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.