共计 2576 个字符,预计需要花费 7 分钟才能阅读完成。
AIxiv专栏是机器之心发布学术、技术内容的栏目。过去数年,机器之心AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。如果您有优秀的工作想要分享,欢迎投稿或者联系报道。投稿邮箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com
亚马逊上海人工智能研究院成立于 2018 年,已成为深度学习研究领域的领先机构之一,共发表了~90 篇论文。研究领域包括深度学习的基础理论、自然语言处理、计算机视觉、图机器学习、高性能计算、智能推荐系统、欺诈检测与风险控制、知识图谱构建以及智能决策系统等。研究院率先研究和开发了世界领先的深度图学习库 Deep Graph Library (DGL),结合了深度学习和图结构表示的优势,影响许多重要应用领域。
检索增强生成(Retrieval-Augmented Generation, RAG)技术正在彻底革新 AI 应用领域,通过将外部知识库和 LLM 内部知识的无缝整合,大幅提升了 AI 系统的准确性和可靠性。然而,随着 RAG 系统在各行各业的广泛部署,其评估和优化面临着重大挑战。现有的评估方法,无论是传统的端到端指标还是针对单一模块的评估,都难以全面反映 RAG 系统的复杂性和实际表现。特别是,它们只能提供一个最终打分报告,仅反映 RAG 系统的性能优劣。
人生病了需要去医院做检查,那 RAG 系统生病了,如何诊断呢?
近日,亚马逊上海人工智能研究院推出了一款名为 RAGChecker 的诊断工具为 RAG 系统提供细粒度、全面、可靠的诊断报告,并为进一步提升性能,提供可操作的方向。本文详细介绍了这个 RAG 的 “显微镜”,看看它如何帮助开发者们打造更智能、更可靠的 RAG 系统。
RAGChecker: RAG 系统的全面诊断工具
想象一下,如果我们能对 RAG 系统进行一次全面的 “体检”,会是什么样子?RAGChecker 就是为此而生的。它不仅能评估系统的整体表现,还能深入分析检索和生成两大核心模块的性能。
RAGChecker 的主要特点包括:
细粒度评估:RAGChecker 采用基于声明(claim)级别的蕴含关系检查,而非简单的回复级别评估。这种方法能够对系统性能进行更加详细和微妙的分析,提供深入的洞察。
全面的指标体系:该框架提供了一套涵盖 RAG 系统各个方面性能的指标,包括忠实度(faithfulness)、上下文利用率(context utilization)、噪声敏感度(noise sensitivity)和幻觉(hallucination)等。
经过验证的有效性:可靠性测试表明,RAGChecker 的评估结果与人类判断有很强的相关性,其表现超过了其他现有的评估指标。这保证了评估结果的可信度和实用性。
可操作的洞察:RAGChecker 提供的诊断指标为改进 RAG 系统提供了明确的方向指导。这些洞察能够帮助研究人员和实践者开发出更加有效和可靠的 AI 应用。
RAGChecker 的核心指标
RAGChecker 的指标体系可以用下图直观的理解:
这些指标被分为三大类:
1. 整体指标:
2. 检索模块指标:
3. 生成模块指标:
这些指标就像是 RAG 系统的 “体检报告”,帮助开发者全面了解系统的健康状况,并找出需要改进的地方。
开始使用 RAGChecker
对于想要尝试 RAGChecker 的开发者来说,上手过程非常简单。以下是快速入门的步骤:
1. 环境设置:首先,安装 RAGChecker 及其依赖:
pip install ragchecker
python -m spacy download en_core_web_sm
2. 准备数据:将 RAG 系统的输出准备成特定的 JSON 格式,包括查询、标准答案、模型回答和检索的上下文。数据格式应如下所示:
{
"results": [
{
"query_id": "",
"query": "",
"gt_answer": "",
"response": "",
"retrieved_context": [
{
"doc_id": "",
"text": ""
},
...
]
},
...
]
}
3. 运行评估:
ragchecker-cli
--input_path=examples/checking_inputs.json
--output_path=examples/checking_outputs.json
from ragchecker import RAGResults, RAGChecker
from ragchecker.metrics import all_metrics
# 从 JSON 初始化 RAGResults
with open ("examples/checking_inputs.json") as fp:
rag_results = RAGResults.from_json (fp.read ())
# 设置评估器
evaluator = RAGChecker ()
# 评估结果
evaluator.evaluate (rag_results, all_metrics)
print (rag_results)
4. 分析结果:RAGChecker 会输出 json 格式的文件来展示评估指标,帮助你了解 RAG 系统的各个方面表现。
输出结果的格式如下:
通过分析这些指标,开发者可以针对性地优化 RAG 系统的各个方面。例如:
通过这种方式,RAGChecker 不仅提供了详细的性能评估,还为 RAG 系统的具体优化方向提供了清晰的指导。
在LlamaIndex 中使用 RAGChecker
RAGChecker 现在已经与 LlamaIndex 集成,为使用 LlamaIndex 构建的 RAG 应用提供了强大的评估工具。如果你想了解如何在 LlamaIndex 项目中使用 RAGChecker,可以参考 LlamaIndex 文档中关于 RAGChecker 集成的部分。
结语
RAGChecker 的推出为 RAG 系统的评估和优化提供了一个新的工具。它为开发者提供了一把 “显微镜”,帮助他们深入了解、精准优化 RAG 系统。无论你是正在研究 RAG 技术的学者,还是致力于开发更智能 AI 应用的工程师,RAGChecker 都将是你不可或缺的得力助手。读者可以访问 获取更多信息或参与到项目的开发中来。