RAG应用已经是当下利用大模型能力的典型应用代表,也获得了极大的推广,各种提升RAG性能的技术层出不穷。然而,如何全面、准确地评估 RAG 系统一直是一个挑战。传统评估方法存在诸多局限性:无法有效评估长文本回复、难以区分检索和生成模块的错误来源、与人类判断的相关性不高。为此,亚马逊和上海交通大学等研究团队开发了 RAGChecker[1],这是一个专为 RAG 系统设计的创新评估框架。
RAGChecker 的核心亮点在于其细粒度的评估方法。它首先使用大型语言模型将文本分解为独立的声明,然后通过另一个模型验证每个声明的准确性。这种方法不仅能够评估整体性能,还能深入诊断检索和生成模块的具体问题。
RAGChecker 提供了三类指标:
1)整体指标:包括精度、召回率和 F1 分数,全面反映 RAG 系统的输出质量。
2)检索指标:
-
声明召回:衡量检索上下文覆盖标准答案声明的比例。
-
上下文精度:评估检索上下文中相关 chunks 的比例。
3)生成指标:
-
上下文利用率:反映生成器有效利用相关信息的程度。
-
幻觉:量化生成的错误信息比例。
-
忠实度:衡量生成器对检索上下文的依赖程度。
-
相关/不相关噪声敏感度:评估生成器对不同类型噪声的敏感程度。
-
自知识:反映生成器依赖内部知识的程度。
使用方法
RAGChecker 提供了多种使用方法,包含命令行、python 编码等方式,还可以与主流 LLM 开发框架集成,如 llamaindex。
- 安装
pip install ragchecker
python -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
- 使用 python
from ragchecker import RAGResults, RAGChecker
from ragchecker.metrics import all_metrics # initialize ragresults from json/dict
with open("examples/checking_inputs.json") as fp: rag_results = RAGResults.from_json(fp.read()) # set-up the evaluator
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
) # evaluate results with selected metrics or certain groups, e.g., retriever_metrics, generator_metrics, all_metrics
evaluator.evaluate(rag_results, all_metrics)
print(rag_results) """Output
RAGResults( 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 } }
)
"""
- 与 llamaindex 集成
# User query and groud truth answer
user_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 LlamaIndex
response_object = rag_application.query(user_query) # Convert to RAGChecker format
rag_result = response_to_rag_results( query=user_query, gt_answer=gt_answer, response_object=response_object,
) # Create RAGResults object
rag_results = RAGResults.from_dict({"results": [rag_result]})
print(rag_results)
实验结果
RAGChecker 的有效性已通过大规模实验和人工评估得到验证。结果显示,RAGChecker 的评分与人类判断的相关性显著高于现有评估方法。在 Pearson 相关性上,RAGChecker 达到了 61.93%,而最接近的基线方法 RAGAS 仅为 48.31%。
关键要点
利用 RAGChecker,研究人员评估了 8 个最先进的 RAG 系统,覆盖了 10 个不同领域的数据集。
通过分析结果,他们发现了一些关键洞见:
-
检索器的质量至关重要。无论使用何种生成器,更好的检索器都能带来一致的性能提升。例如,将 BM25 检索器替换为 E5-Mistral 检索器,在使用 GPT-4 作为生成器时,整体 F1 分数从 50.3 提高到 52.7 。
-
生成器模型的规模越大,整体性能越好。这体现在更高的上下文利用率、更低的噪声敏感度和更少的幻觉。以 Llama3 系列为例,70B 版本在各项指标上都优于 8B 版本。
-
开源模型在区分准确信息和噪声方面表现较差。它们倾向于过度信任上下文,特别是在检索质量提高时。例如,Llama3-70B 的忠实度从 93.2%上升到 95.9%,而 GPT-4 仅从 87.9%上升到 92.9%。
-
存在检索召回和生成器噪声敏感度之间的权衡。提高检索召回率会不可避免地引入更多噪声,从而增加生成器的噪声敏感度。数据显示,使用 E5-Mistral 检索器时,声明召回率从 74.0%提高到 83.5%,但相关噪声敏感度也从 26.2%上升到 28.9%。
基于这些发现,研究者提出了几点改进 RAG 系统的建议:
-
优先提升检索器性能,如使用更好的嵌入模型或适度增加检索 chunk 数量和大小。实验表明,将 chunk 大小从 150 增加到 300,可以将整体 F1 分数从 52.6 提高到 53.4 。
-
在有限上下文长度的情况下,使用较少数量的大 chunks 优于较多数量的小 chunks 。这可以提高上下文精度,从而减少噪声影响。
-
针对不同的应用场景和用户偏好,可以通过调整生成提示来平衡上下文利用率、噪声敏感度和忠实度。例如,通过优化提示词,可以将 GPT-4 的忠实度从 92.2%提高到 93.6%。
-
对于开源模型,需要着重提升其推理能力,以更好地区分和利用上下文中的有用信息。这可能需要在训练过程中引入更多的推理任务。
小结
RAGChecker 为全面评估和诊断 RAG 系统提供了一个强大而灵活的工具。通过揭示 RAG 系统中检索和生成模块的复杂交互,以及不同设计选择带来的影响,RAGChecker 不仅能帮助研究人员更好地理解和改进现有 RAG 系统,还为未来 RAG 系统的优化和创新指明了方向。
参考资料
[1]
RAGChecker: https://github.com/amazon-science/RAGChecker
在大模型时代,我们如何有效的去学习大模型?
现如今大模型岗位需求越来越大,但是相关岗位人才难求,薪资持续走高,AI运营薪资平均值约18457元,AI工程师薪资平均值约37336元,大模型算法薪资平均值约39607元。
掌握大模型技术你还能拥有更多可能性:
• 成为一名全栈大模型工程师,包括Prompt,LangChain,LoRA等技术开发、运营、产品等方向全栈工程;
• 能够拥有模型二次训练和微调能力,带领大家完成智能对话、文生图等热门应用;
• 薪资上浮10%-20%,覆盖更多高薪岗位,这是一个高需求、高待遇的热门方向和领域;
• 更优质的项目可以为未来创新创业提供基石。
可能大家都想学习AI大模型技术,也_想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。为了让大家少走弯路,少碰壁,这里我直接把都打包整理好,希望能够真正帮助到大家_。
👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈
一、AGI大模型系统学习路线
很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,下面是我整理好的一套完整的学习路线,希望能够帮助到你们学习AI大模型。
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、AI大模型经典PDF书籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型各大场景实战案例
结语
【一一AGI大模型学习 所有资源获取处(无偿领取)一一】
所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~
👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈