一个精细化评价和诊断 RAGChecker RAG 清楚逾越RAGAS 系统的翻新框架
RAG运行曾经是当下应用大模型才干的典型运行代表,也取得了极大的推行,各种优化RAG性能的技术层出不穷。但是,如何片面、准确地评价 RAG 系统不时是一个应战。传统评价方法存在诸多局限性:无法有效评价长文本回复、难以辨别检索和生成模块的失误起源、与人类判别的关系性不高。为此,亚马逊和上海交通大学等钻研团队开发了 RAGChecker,这是一个专为 RAG 系统设计的翻新评价框架。
RAGChecker 的外围亮点在于其细粒度的评价方法。它首先经常使用大型言语模型将文本合成为独立的申明,而后经过另一个模型验证每个申明的准确性。这种方法不只能够评价全体性能,还能深化诊断检索和生成模块的详细疑问。
RAGChecker 提供了三类目的:
1)全体目的:包括精度、召回率和 F1 分数,片面反映 RAG 系统的输入品质。
2)检索目的:
3)生成目的:
经常使用方法
RAGChecker 提供了多种经常使用方法,蕴含命令行、python 编码等模式,还可以与干流 LLM 开发框架集成,如 llamaindex。
pip install ragcheckerpython -m spacy download en_core_web_sm
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=64 \--metrics all_metrics \# --disable_joint_check# uncomment this line for one-by-one checking, slower but slightly more accurate
from ragchecker import RAGResults, RAGCheckerfrom ragchecker.metrics import all_metrics# initialize ragresults from json/dictwith open("examples/checking_inputs.json") as fp:rag_results = RAGResults.from_json(fp.read())# set-up the evaluatorevaluator = 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)# evaluate results with selected metrics or certain groups, e.g., retriever_metrics, generator_metrics, all_metricsevaluator.evaluate(rag_results, all_metrics)print(rag_results)"""OutputRAGResults(2 RAG results,Metrics:{"overall_metrics": {"precision": 76.4,"recall": 62.5,"f1": 68.3},"retriever_metrics": {"claim_recall": 61.4,"context_precision": 87.5},"generator_metrics": {"context_utilization": 87.5,"noise_sensitivity_in_relevant": 19.1,"noise_sensitivity_in_irrelevant": 0.0,"hallucination": 4.5,"self_knowledge": 27.3,"faithfulness": 68.2}})"""
# User query and groud truth answeruser_query = "What is RAGChecker?"gt_answer = "RAGChecker is an advanced automatic evaluation framework designed to assess and diagnose Retrieval-Augmented Generation (RAG) systems. It provides a comprehensive suite of metrics and tools for in-depth analysis of RAG performance."# Get response from LlamaIndexresponse_object = rag_application.query(user_query)# Convert to RAGChecker formatrag_result = response_to_rag_results(query=user_query,gt_answer=gt_answer,response_object=response_object,)# Create RAGResults objectrag_results = RAGResults.from_dict({"results": [rag_result]})print(rag_results)
试验结果
RAGChecker 的有效性已经过大规模试验和人工评价获取验证。结果显示,RAGChecker 的评分与人类判别的关系性清楚高于现有评价方法。在 Pearson 关系性上,RAGChecker 到达了 61.93%,而最凑近的基线方法 RAGAS 仅为 48.31%。
关键要点
应用 RAGChecker,钻研人员评价了 8 个最先进的 RAG 系统,笼罩了 10 个不同畛域的数据集。
经过分析结果,他们发现了一些关键洞见:
基于这些发现,钻研者提出了几点改良 RAG 系统的倡导:
小结
RAGChecker 为片面评价和诊断 RAG 系统提供了一个弱小而灵敏的工具。经过提醒 RAG 系统中检索和生成模块的复杂交互,以及不同设计选用带来的影响,RAGChecker 不只能协助钻研人员更好地理解和改良现有 RAG 系统,还为未来 RAG 系统的优化和翻新指明了方向。
参考资料
[1]RAGChecker:
本文转载自,作者: