RAGChecker:显著超越RAGAS,一个精细化评估和诊断 RAG 系统的创新框架

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大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/459288.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大文件秒传,分片上传,断点续传

大文件分片上传 一 功能描述 1.文件通过web端分片多线程上传到服务端,然后web端发起分片合并,完成大文件分片上传功能 2.上传过的大文件,实现秒传 3.上传过程中,服务异常退出,实现断点续传 二 流程图 三 代码运行…

php怎么并发处理

PHP的并发处理是指在同一时间能够处理多个请求,提高系统的吞吐量和响应速度。下面介绍几种PHP的并发处理方法。 一、多线程 多线程是指在一个进程中启动多个线程同时执行任务。在PHP中,可以使用pthreads扩展来实现多线程编程。pthreads提供了Thread、W…

MySQL快速入门——库的操作

MySQL快速入门——库的操作 1. 创建数据库2. 创建数据库案例3. 字符集和校验规则3.1 查看字符集和校验规则3.2 验证不同校验编码的影响 4. 操作数据库4.1 查看数据库4.2 修改数据库4.3 数据库删除4.4 备份和恢复 5. 查看连接情况 1. 创建数据库 1. 语法: CREATE DA…

Rust编程与项目实战-元组

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust编程与项目实战_夏天又到了的博客-CSDN博客 8.2.1 元组的定义 元组是Rust的内置复合数据类型。Rust支持元组,而且元…

Linux服务器运维宝典(一)

基础命令: ls:列出目录下的内容 ls [ -a -l -h] Linux路径当不使用选项和参数,直接使用 ls 命令本体,表示:以平铺形式,列出当前工作目录下的内容选项: -a:all 的意思,…

如何在Linux下安装和配置Docker

文章目录 安装前的准备在Debian/Ubuntu上安装Docker添加Docker仓库安装Docker验证安装 在CentOS/RHEL上安装Docker安装必要的软件包设置Docker仓库安装Docker启动Docker服务 Docker的基本使用拉取一个镜像运行一个容器 配置Docker创建Docker目录使用非root用户运行Docker 结语 …

山西农业大学20241029

08-VUE 一. 组件化开发项目1. 准备工作2. 开发思路3. 拆分页面图4. App.vue5. 项目优化 - 全局注册两个小组件 二. 组件三大组成部分细节1. 样式设置2. data必须是一个函数2.1 原因 一. 组件化开发项目 1. 准备工作 将准备好的App.vue中的内容复制到项目中将图片保存到assets下…

【Spring Boot】元注解

元注解 1.元注解1.1 Target1.2 Retention1.3 Inherited1.4 Documented1.5 interface 2.自定义注解2.1 创建自定义注解类2.2 实现业务逻辑2.3 使用自定义注解 1.元注解 元注解就是定义注解的注解,是 Java 提供的用于定义注解的基本注解。 注解 说明 Retention是注解…

如何使用 Vite 创建一个项目(Vue 或者 React)

如何使用 vite 创建一个 Vue 或者 React 项目? 打开终端,输入命令 npm create vitelatest外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 修改你需要的项目名 选择你要创建的项目的框架(Vue 还是 React 这是个问题&am…

医学影像基础:常见的医学影像学术语和概念

目录 1. 基本影像术语 2. X射线相关术语 3. CT相关术语 4. MRI相关术语 5. 超声相关术语 6. 核医学相关术语 7. 影像质量和技术术语 8. 临床影像术语 总结 在医学影像学中,有许多术语和概念是常用且重要的。了解这些术语和概念有助于更好地理解影像报告、与…

Linux 读者写者模型

1.背景概念 在编写多线程的时候,有一种情况是十分常见的。那就是,有些公共数据修改的机会比较少。相比较改写,它们读的机会反而高的多。这样就衍生出了读者写者模型,在这个模型中,有两类线程:读者和写者。读…

Linux补基础之:网络配置

目录 一、检查主机与虚拟机是否能正常通信 二、网络的连接模式 桥接模式 流程 特点 NAT模式 流程 特点 仅主机 流程 特点 三、修改静态IP 四、可能遇到的问题 防火墙 DNS 五、主机名更改 六、登录服务器 实际的大数据管理中,会有由很多服务器构成的…

使用AMD GPU和LangChain构建问答聊天机器人

Question-answering Chatbot with LangChain on an AMD GPU — ROCm Blogs 作者:Phillip Dang 2024年3月11日 LangChain是一个旨在利用语言模型强大功能来构建前沿应用程序的框架。通过将语言模型连接到各种上下文资源并基于给定的上下文提供推理能力,L…

蓝海创意云入选中国夏衍电影学会工业与科技影视专业委员会成员单位

党的二十届三中全会指出,科技自立自强是中国式现代化的有力保障。科技兴则民族兴,科技强则国家强。为深入的贯彻落实这一重要部署,推动工业与科技领域的融合发展充分发挥电影艺术在传播科技创新精神、展现工业发展成就方面的独特作用&#xf…

【制造业&流水线】流水线水泥袋检测系统源码&数据集全套:改进yolo11-HSPAN

改进yolo11-RFCBAMConv等200全套创新点大全:流水线水泥袋检测系统源码&数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.10.24 注意:由于项目一直在更新迭代,上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片…

景区导航地图怎么实现?基于LBS与3D GIS的智慧景区导航导览系统技术路线

随着经济的发展和人们物质生活水平改善,居民的旅游需求呈现多元化和个性化,自助旅游的人越来越多。许多游客在旅游行程中需要随时随地了解旅游景点有关的各类信息,如旅游景点介绍、推荐路线、地图导航等,合理规划和安排旅游线路。正是为了应对…

【Fargo】18:camera获取及预览

QCameraViewfinder.ui 这种报错是.ui的问题, QCameraViewfinder.ui 删掉,只用ZhbCamera.ui 就好了 Build started at 0:10... 1>------ B

【C++】--------- 内存管理

目录 C语言内存管理方式:malloc、calloc、realloc和free C内存管理方式 new和delete 操作内置类型 操作自定义类型 operator new与operator delete函数 new和delete的实现原理 定位new表达式的了解 ​编辑 内存泄漏 C语言内存管理方式:malloc、…

AI大模型与智算中心:构建未来智能社会的基石

随着人工智能技术的飞速发展,AI大模型(如GPT-4、BERT、LLAMA等)在自然语言处理、图像处理、音频处理等多个领域展现出了巨大的应用潜力。这些模型不仅提高了生产效率,更推动了新兴应用的不断涌现。然而,训练和应用这些…

Java Lock CyclicBarrier 总结

前言 相关系列 《Java & Lock & 目录》(持续更新)《Java & Lock & CyclicBarrier & 源码》(学习过程/多有漏误/仅作参考/不再更新)《Java & Lock & CyclicBarrier & 总结》(学习总结…