微信扫码
与创始人交个朋友
我要投稿
RAG应用已成为利用大模型能力的典型代表,受到广泛推广,并不断涌现出多种性能提升技术。然而,全面、准确地评估RAG系统仍然面临挑战。传统评估方法存在诸多局限性:难以有效衡量长文本回复、难以区分检索与生成模块的错误来源,且与人类判断的相关性较低。
为了解决这些问题,亚马逊科学团队与上海交通大学等研究团队联合开发了RAGChecker。这是一款专为RAG系统设计的创新评估框架,能够通过自动检查和验证生成内容的准确性,显著减少“幻觉”等常见生成错误。RAGChecker可集成至现有RAG系统中,从而提升系统回答的可靠性和对真实数据的引用精度,为实际应用提供更稳健的支持。
RAGChecker 是一种先进的自动评估框架,旨在评估和诊断检索增强生成 (RAG) 系统。它提供了一套全面的指标和工具,用于深入分析 RAG 性能。
RAGChecker的主要特点
整体评估:RAGChecker 提供Overall Metrics,支持对整个 RAG 管道的全面评估,帮助用户快速了解系统的整体表现。
诊断指标:RAGChecker包含诊断检索指标(Diagnostic Retriever Metrics)用于分析检索组件,以及诊断生成指标(Diagnostic Generator Metrics)用于评估生成组件。通过这些诊断指标,用户能够深入了解系统性能,为有针对性的优化提供关键数据支持。
细粒度评估:使用基于claim-level entailment的操作,实现细粒度评估,更精确地评估回答的正确性和合理性。
基准数据集:即将推出的全面RAG基准数据集,包含10个领域的4,000个问题,便于在多个领域对系统进行测试和对比。
元评估:包含人工注释的偏好数据集,用于评估RAGChecker的评估结果与人类判断之间的相关性,以确保系统评估结果的准确性和可靠性。
RAGChecker 使开发人员和研究人员能够精确、深入地彻底评估、诊断和增强他们的 RAG 系统。
RAGChecker 论文: https ://arxiv.org/pdf/2408.08067
RAGChecker使用声明级检查(claim-level checking)方法进行细粒度评估。以下是其工作原理:
声明抽取(Claim Extraction):RAGChecker使用大型语言模型(LLM)作为抽取器,将复杂文本(RAG系统响应和标准答案)分解为单独的声明。声明是一个独立的、原子化的信息片段,可以被验证为真或假。示例:文本:"埃菲尔铁塔建于1889年,高324米。" 抽取的声明:
("埃菲尔铁塔", "建于", "1889年")("埃菲尔铁塔", "高度", "324米")
声明检查(Claim Checking): 另一个LLM作为检查器,根据参考文本(检索的上下文或标准答案)验证每个提取的声明的准确性。
RAGChecker执行以下比较:
回复的声明 vs. 标准答案:衡量回复的正确性。
标准答案的声明 vs. 回复:衡量回复的完整性。
回复的声明 vs. 检索上下文:衡量忠实度并识别幻觉。
标准答案的声明 vs. 检索上下文:评估检索信息的质量。
这些比较是计算RAGChecker中各种指标的基础。
RAGChecker提供三类指标来评估RAG系统的不同方面:
这些指标衡量整个RAG流程的整体质量:
精度(Precision): 表示回复的正确性(correctness)
(回复中正确声明的比例)。
召回(Recall): 表示回复的完整性(completeness)
(回复中提到的标准答案声明的比例)。
F1: 精确率和召回率的调和平均值,衡量回复的整体质量。
计算整体指标需要回复和标准答案,不需要检索上下文。
检索指标
检索指标衡量检索模块(如BM25)搜索相关信息和并降低噪音的能力。
声明召回(Claim Recall):检索上下文覆盖的标准答案声明的比例。
上下文精度(Context Precision):相关chunk的比例。不相关的chunk可以被视为噪音。
其中,相关chunk是指包含任意标准答案声明的chunk(图中绿色方块)。计算检索器指标需要标准答案和检索上下文。
生成指标
生成指标可以评估生成器的多个方面性能:
上下文利用率(Context Utilization):生成器有效使用上下文中相关信息的程度。
对相关/不相关chunk中的噪音敏感度(Noise Sensitivity in Relevant/Irrelevant Chunks):生成器受相关和不相关文本块中噪音影响的程度。
幻觉(Hallucination):生成的不在上下文中的错误信息。
自身知识(Self-knowledge):使用模型自身知识而不是检索上下文中的内容。
忠实度(Faithfulness):生成器使用检索上下文的程度。
首先安装依赖:
pip install ragcheckerpython -m spacy download en_core_web_sm
命令行运行RAGChecker
按照所需格式准备您的输入JSON文件(参见上面的描述)。
运行评估脚本(使用我们仓库中的示例文件):
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--metrics all_metrics # all_metrics, overall_metrics, retriever_metrics 或 generator_metrics
from ragchecker import RAGResults, RAGChecker
from ragchecker.metrics import all_metrics
# 从json/dict初始化ragresults
with 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)
代码成功运行后,它将输出如下所示的指标值:
Results for examples/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后,您将收到一组指标。以下是如何解读这些结果并采取行动:
检索模块:
声明召回率低:考虑使用更先进的检索模型或增加检索chunk的数量。
上下文精确率低:尝试减少检索文本块的数量以降低噪声。
如果可能的话,您还可以考虑微调检索器。
生成模块:
忠实度低或幻觉高:调整您的提示以强调仅使用检索到的信息。
上下文利用率低:修改提示以鼓励生成器识别和使用相关信息。
噪音敏感度高:在提示中增加推理步骤,帮助生成器忽略不相关信息。
整体系统改进:
尝试不同的文本块大小和检索文本块数量。
尝试不同的检索器和生成器组合。
如果可能,在特定领域数据上微调两个组件。
RAGChecker 现在与 LlamaIndex 集成,为使用 LlamaIndex 构建的 RAG 应用程序提供了强大的评估工具。有关如何将 RAGChecker 与 LlamaIndex 结合使用的详细说明,请参阅有关 RAGChecker 集成的 LlamaIndex 文档。这种集成允许 LlamaIndex 用户利用 RAGChecker 的综合指标来评估和改进他们的 RAG 系统。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-11-22
如何使用 RAG 提高 LLM 成绩
2024-11-21
提升RAG性能的全攻略:优化检索增强生成系统的策略大揭秘 | 深度好文
2024-11-20
FastGraphRAG 如何做到高达 20%优化检索增强生成(RAG)性能优化
2024-11-20
为裸奔的大模型穿上"防护服":企业AI安全护栏设计指南
2024-11-20
RAG-Fusion技术在产品咨询中的实践与分析
2024-11-19
构建高性能RAG:文本分割核心技术详解
2024-11-19
【RAG竞赛获奖方案】CCF第七届AIOps国际挑战赛季军方案分享EasyRAG:一个面向AIOps的简洁RAG框架
2024-11-19
企业RAG构建中,如何用“行级别权限管控”避免数据泄露
2024-07-18
2024-05-05
2024-07-09
2024-07-09
2024-05-19
2024-06-20
2024-07-07
2024-07-07
2024-07-08
2024-07-09
2024-11-06
2024-11-06
2024-11-05
2024-11-04
2024-10-27
2024-10-25
2024-10-21
2024-10-21