链载Ai

标题: RAG评估:RAGChecker重磅发布!精准诊断RAG系统的全新细粒度框架! [打印本页]

作者: 链载Ai    时间: 昨天 11:48
标题: RAG评估:RAGChecker重磅发布!精准诊断RAG系统的全新细粒度框架!

RAG应用已成为利用大模型能力的典型代表,受到广泛推广,并不断涌现出多种性能提升技术。然而,全面、准确地评估RAG系统仍然面临挑战。传统评估方法存在诸多局限性:难以有效衡量长文本回复、难以区分检索与生成模块的错误来源,且与人类判断的相关性较低。

为了解决这些问题,亚马逊科学团队与上海交通大学等研究团队联合开发了RAGChecker。这是一款专为RAG系统设计的创新评估框架,能够通过自动检查和验证生成内容的准确性,显著减少“幻觉”等常见生成错误。RAGChecker可集成至现有RAG系统中,从而提升系统回答的可靠性和对真实数据的引用精度,为实际应用提供更稳健的支持。

RAGChecker 是一种先进的自动评估框架,旨在评估和诊断检索增强生成 (RAG) 系统。它提供了一套全面的指标和工具,用于深入分析 RAG 性能。

RAGChecker的主要特点

RAGChecker 使开发人员和研究人员能够精确、深入地彻底评估、诊断和增强他们的 RAG 系统。

RAGChecker 论文:https://arxiv.org/pdf/2408.08067

RAGChecker的工作原理

RAGChecker使用声明级检查(claim-level checking)方法进行细粒度评估。以下是其工作原理:

声明抽取(Claim Extraction):RAGChecker使用大型语言模型(LLM)作为抽取器,将复杂文本(RAG系统响应和标准答案)分解为单独的声明。声明是一个独立的、原子化的信息片段,可以被验证为真或假。示例:文本:"埃菲尔铁塔建于1889年,高324米。" 抽取的声明:

("埃菲尔铁塔","建于","1889年")("埃菲尔铁塔","高度","324米")

声明检查(Claim Checking): 另一个LLM作为检查器,根据参考文本(检索的上下文或标准答案)验证每个提取的声明的准确性。

RAGChecker执行以下比较:

这些比较是计算RAGChecker中各种指标的基础。

RAGChecker的指标


RAGChecker提供三类指标来评估RAG系统的不同方面:

整体指标

这些指标衡量整个RAG流程的整体质量:

计算整体指标需要回复和标准答案,不需要检索上下文。


检索指标

检索指标衡量检索模块(如BM25)搜索相关信息和并降低噪音的能力。

其中,相关chunk是指包含任意标准答案声明的chunk(图中绿色方块)。计算检索器指标需要标准答案和检索上下文。

生成指标

生成指标可以评估生成器的多个方面性能:

RAGChecker指标总结

如何使用RAGChecker

首先安装依赖:

pipinstallragcheckerpython-mspacydownloaden_core_web_sm

命令行运行RAGChecker

  1. 按照所需格式准备您的输入JSON文件(参见上面的描述)。

  2. 运行评估脚本(使用我们仓库中的示例文件):

ragchecker-cli\--input_path=examples/checking_inputs.json\#这是您的输入数据--output_path=examples/checking_outputs.json\#此指定输出文件--extractor_name=bedrock/meta.llama3-1-70b-instruct-v1:0\#关于如何设置模型,请参考下面的描述--checker_name=bedrock/meta.llama3-1-70b-instruct-v1:0\#关于如何设置模型,请参考下面的描述--batch_size_extractor=64\--batch_size_checker=128\#可以大于batch_size_extractor--metricsall_metrics#all_metrics,overall_metrics,retriever_metrics或generator_metrics

在Python代码中使用RAGChecker

from ragchecker import RAGResults, RAGCheckerfrom ragchecker.metrics import all_metrics

# 从json/dict初始化ragresultswith open("examples/checking_inputs.json") as fp:rag_results = RAGResults.from_json(fp.read())
# 设置评估器evaluator = RAGChecker(extractor_name="bedrock/meta.llama3-1-70b-instruct-v1:0",checker_name="bedrock/meta.llama3-1-70b-instruct-v1:0",batch_size_extractor=32,batch_size_checker=32)
# 使用选定的指标(如retriever_metrics、generator_metrics、all_metrics)评估结果evaluator.evaluate(rag_results, all_metrics)print(rag_results)

代码成功运行后,它将输出如下所示的指标值:

Resultsforexamples/checking_outputs.json:{"overall_metrics":{"precision":73.3,"recall":62.5,"f1":67.3},"retriever_metrics":{"claim_recall":61.4,"context_precision":87.5},"generator_metrics":{"context_utilization":87.5,"noise_sensitivity_in_relevant":22.5,"noise_sensitivity_in_irrelevant":0.0,"hallucination":4.2,"self_knowledge":25.0,"faithfulness":70.8}}

运行RAGChecker后,您将收到一组指标。以下是如何解读这些结果并采取行动:

  1. 检索模块:

如果可能的话,您还可以考虑微调检索器。

  1. 生成模块:






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