链载Ai

标题: 用 RAGAS 评估 RAG 流水线的初学者指南 [打印本页]

作者: 链载Ai    时间: 2025-12-2 10:00
标题: 用 RAGAS 评估 RAG 流水线的初学者指南

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.2em;font-weight: bold;display: table;margin: 2em auto 1em;padding-right: 1em;padding-left: 1em;border-bottom: 2px solid rgb(0, 152, 116);color: rgb(63, 63, 63);">用 RAGAS 评估 RAG 流水线的初学者指南

ingFang SC";letter-spacing: normal;text-wrap: wrap;text-align: center;line-height: 1.75;font-size: 1.2em;font-weight: bold;display: table;margin: 4em auto 2em;padding-right: 0.2em;padding-left: 0.2em;background: rgb(0, 152, 116);color: rgb(255, 255, 255);">引言

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">在不断发展的机器学习和人工智能领域中,语言模型应用的开发,尤其是检索增强生成(RAG)系统,变得越来越复杂。然而,真正的挑战不在于初始创建,而在于对这些应用的持续维护和增强。这就是 RAGAS 的用武之地——一个专门提供 RAG 管道度量的评估库。本文将探讨 RAGAS 库,并教你如何使用它来评估 RAG 管道。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.2em;font-weight: bold;display: table;margin: 4em auto 2em;padding-right: 0.2em;padding-left: 0.2em;background: rgb(0, 152, 116);color: rgb(255, 255, 255);">学习目标

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.2em;font-weight: bold;display: table;margin: 4em auto 2em;padding-right: 0.2em;padding-left: 0.2em;background: rgb(0, 152, 116);color: rgb(255, 255, 255);">目录

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.2em;font-weight: bold;display: table;margin: 4em auto 2em;padding-right: 0.2em;padding-left: 0.2em;background: rgb(0, 152, 116);color: rgb(255, 255, 255);">什么是 RAGAS?

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">RAGAS 的起源根植于通过采用度量驱动开发(MDD)的方式,推动语言大型模型(LLM)和 RAG 应用的持续改进的愿景。MDD 不仅仅是一个流行词,而是产品开发中的一种战略方法,利用可量化的数据来指导决策过程。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">通过持续跟踪关键指标,开发人员和研究人员可以深入了解其应用的性能,从而将项目引向卓越。RAGAS 的目标是将这种数据中心的方法论确立为 LLM 和 RAG 应用的开源标准,确保评估和监控成为开发生命周期的组成部分。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">评估指标是 RAG 的重要组成部分,因为它们使得可以对 LLM 应用进行系统评估。它们营造了一个可以高度可靠和可重现地进行实验的环境。通过这样做,它们为客观地衡量 RAG 管道中的各个组件的有效性提供了一个框架。此外,监控方面提供了大量的可行动见解,这些见解是从生产数据中获得的,使开发人员能够不断改进和提高他们的LLM应用程序的质量。因此,RAGAS是那些致力于在RAG系统的开发和维护中追求卓越的人的指南,以精确和深入的洞察力引领MDD事业,以应对AI应用增强的复杂挑战。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.2em;font-weight: bold;display: table;margin: 4em auto 2em;padding-right: 0.2em;padding-left: 0.2em;background: rgb(0, 152, 116);color: rgb(255, 255, 255);">实施RAGAS并生成评估分数

在本节中,我们将演示如何通过在现有的RAG流水线上实施RAGAS评估库来工作。我们不会从头开始构建一个RAG流水线,所以有一个现有的RAG流水线可以生成查询的响应是前提条件。我们将使用来自Kaggle的COQA-QUAC数据集。该数据集包含各种问题、上下文和它们的响应,将用作RAG流水线的数据。我们将手动为一些查询生成响应,并使用参考/真实响应生成RAGAS分数。

RAGAS评估分数

RAGAS提供以下评估分数:

端到端评估指标

此外,RAGAS还提供了两个端到端评估指标,用于评估RAG流水线的端到端性能。

使用 RAGAS 进行实践评估

首先,让我们安装 RAGAS 的所有必要包。下面是安装所需的所有包及其特定版本的列表:

langchain==0.1.13
openai
ragas==0.0.22

注意:避免使用最新版本的 RAGAS,因为它没有实现 Langchain。现在我们已经设置好了环境,让我们开始使用 RAGAS 进行生成的响应的评估。

第一步:生成 RAG 管道输出

首先,我们将使用 RAG 管道生成一个响应。RAG 管道的输出必须是一个包含“query”、“result”和“source_documents”键的字典。我们可以通过在 Langchain 的 RetrievalQA 链中将 return_source_documents 参数设置为 True 来简单地实现这一点。下面的图片显示了我用于相同目的的参数:

这是 Ragas 评估器接受的格式。下面是一个响应变量应该是什么样子的示例:

{'query':'印度的马拉雅利人分布在哪里?',
'result':'马拉雅利人分布在各个...',
'source_documents':[
Document(
page_content=':0\nquestion:马拉雅利人位于哪里?',
metadata={'source':'data/dummy-rag.csv','row':0}
),
...
]
}

注意,源文档是一个包含源参考的文档列表。这个字典本身将被传递给 RAGAS 评估器来计算每个分数。我们将为2-3个查询生成响应,并以上述格式作为 Python 字典存储它们,然后将它们存储在 responses 列表中,稍后将使用它们。

第二步:创建评估链

接下来,我们将使用 RAGAS 评估器创建评估链。我们将使用忠实度、答案相关性、上下文相关性和上下文召回链。首先,我们需要从 RAGAS 中导入一些必要的包。

fromragas.langchain.evalchainimportRagasEvaluatorChain
fromragas.metricsimport(
faithfulness,
answer_relevancy,
context_relevancy,
context_recall,
)

我们使用 RagasEvaluatorChain 来创建评估的指标。它接受一个指标并初始化我们用来生成评估分数的指标。

第三步:创建评估指标

接下来,我们将使用 RagasEvaluatorChain 创建4个不同的指标。

eval_chains={
m.name:RagasEvaluatorChain(metric=m)
formin[faithfulness,answer_relevancy,context_relevancy,context_recall]
}

这段代码创建了一个包含4个不同评估链的字典:忠实度、答案相关性、上下文相关性和上下文召回。

第四步:评估 RAG 管道

现在,我们将循环遍历生成的响应字典并对其进行评估。假设响应存在于名为“responses”的列表中,我们将遍历它并获取每个响应字典,其中包含以下键值对:查询、响应、源文档。

forresponseinresponses:
forname,eval_chainineval_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

上面是单个查询响应的分数。然而,我们可以自动化它以生成更多查询响应的分数。下面是所有步骤的完整代码:

fromragas.langchain.evalchainimportRagasEvaluatorChain
fromragas.metricsimport(
faithfulness,
answer_relevancy,
context_relevancy,
context_recall,
)
eval_chains={
m.name:RagasEvaluatorChain(metric=m)
formin[faithfulness,answer_relevancy,context_relevancy,context_recall]
}
forresponseinresponses:
forname,eval_chainineval_chains.items():
score_name=f"{name}_score"
print(f"{score_name}:{eval_chain(response)[score_name]}")

结论

RAGAS在语言模型应用中崭露头角,尤其在RAG系统范围内。通过将MDD集成到RAG流程的核心中,RAGAS提供了一种结构化的方法来评估和提升这类系统的性能。全面的评估指标包括忠实度、答案相关性、上下文回忆和上下文相关性。这些指标有助于对RAG流程生成的响应进行全面分析,确保其与上下文和真实情况相一致。

在使用COQA-QUAC数据集对现有的RAG流程进行实际演示时,RAGAS展示了其为开发人员提供可量化的见解和可操作的反馈的能力。该过程涉及初始化环境、生成响应,并利用RAGAS评估器链计算各种得分。这个实际例子突显了RAGAS在持续改进LLM的可访问性和实用性,从而增强了它们的可靠性和效率。RAGAS作为一个开源标准和开发人员、研究人员确保提供负责任的AI和ML应用的重要工具。

主要观点







欢迎光临 链载Ai (http://www.lianzai.com/) Powered by Discuz! X3.5