[论文阅读] |RAG评估_Retrieval-Augmented Generation Benchmark

写在前面

检索增强能够有效缓解大模型存在幻觉和知识时效性不足的问题,RAG通常包括文本切分、向量化入库、检索召回和答案生成等基本步骤。近期组里正在探索如何对RAG完整链路进行评估,辅助阶段性优化工作。上周先对评估综述进行了初步的扫描,本篇分享其中一份评估benchmark,RGB。

论文:https://arxiv.org/abs/2309.01431
代码和数据:https://github.com/chen700564/RGB

RAG评估benchmark-RGB

      • 写在前面
      • 1. 核心思想
      • 2. 评估维度和方式
      • 3. 评估数据构建
      • 4. 评估指标
      • 5. 实验和结论
        • 设置
        • 5.1 噪声鲁棒性
        • 5.2 拒绝能力
        • 5.3 信息整合能力
        • 5.4 反事实鲁棒性
      • 6. 总结


 

1. 核心思想

  • 检索增强生成(RAG)是有效的消除大模型幻觉的方法,但已有工作缺乏RAG对不同大模型影响的评估
  • 因此构建检索增强生成的基准(Benchmark)RGB,并设计4个维度的评估,包括(1)噪声鲁棒性(2)拒绝能力(3)信息整合能力(4)反事实鲁棒性
     

2. 评估维度和方式


 

3. 评估数据构建

  • 主要包括4个步骤:

 
  • 具体如下:

 

最终构建数据量600个基本问题+200个扩展的整合问题+200个反事实问题;300中文、300英文
 

4. 评估指标

评估的是大模型的响应,特定的响应(拒绝、发现错误)是写在prompt里的

  • 准确率:评估噪声鲁棒性和信息整合能力,与答案精确匹配
  • 拒绝比例:评估拒绝能力,根据生成的响应含有"I can not answer the question because of the insufficient information in documents."
  • 错误检测比例:评估反事实鲁棒性,根据生成的响应"There are factual errors in the provided documents.
  • 错误矫正比例:评估识别到错误信息后是否可以生成正确响应
     

5. 实验和结论

设置
  • 每个问题设置5个候选文档(300tokens/个),噪声文档比例[0,0.8]随机
  • 6个LLM:ChatGPT (OpenAI 2022) ChatGLM-6B (THUDM 2023a), ChatGLM2-6B (THUDM2023b), Vicuna-7b-v1.3 (Chiang et al. 2023), Qwen-7BChat(QwenLM 2023), BELLE-7B-2M (Yunjie Ji 2023)
  • prompt:

 
5.1 噪声鲁棒性

当输入给大模型的候选文档中包含1到多篇噪声文档(与问题相关但不能回答)时,评估大模型抵抗噪声干扰的能力


 

随着含噪声文档的增加,答案的准确率呈下降趋势,那么噪声影响下错误产生的具体原因,作者分析包括答案出现的距离远、证据不明确、概念混淆:


 
5.2 拒绝能力

当候选文档都不能回答问题时,大模型最高的拒绝比例仅有45%→容易被误导


 
5.3 信息整合能力

当答案需要从多篇候选文档中抽取信息进行回复时,评估大模型的信息整合能力;
 

实验发现生成答复时存在的问题:

  • 使用一个子问题的正确答案回答所有子问题
  • 忽略子问题,只回答其中一个
  • 子问题和候选文档匹配错误

原因:大模型对复杂问题的理解能力有限,妨碍了有效利用来自不同子问题的信息的能力


 
5.4 反事实鲁棒性

当输入给大模型的文档包含错误信息时,评估大模型的拒绝能力


 
  • Acc,是没有提供候选文档,请LLM自己回答的准确率
  • Acc_doc,是增加含有错误信息的候选文档后的准确率;

增加错误信息后,大模型准确率迅速下降,而且其错误和纠正错误的比例很低
 

6. 总结

  • 这篇工作的测评是通过生成的答案来评估整体能力的,不侧重RAG整个pipeline中某个步骤的提升给整体系统带来的效果;由于其数据来源于网络,所以除了常规的评估抗噪声、拒绝回答和整合能力之外,还考虑了识别错误信息的能力;
  • RAG包含多个步骤,文档的切分粒度、向量化模型的选择、prompt的写法以及大模型本身的能力都会影响最终答案的生成,因此理想的评估应该是控制变量的中间环节评估+整个系统评估;
  • 具体工作中,我们也发现了RAG的痛点在于,当召回的文档与问题不那么相关、甚至文档包含干扰信息时,chatgpt3.5容易被错误的信息指引生成错误的答案;
  • 还在提升的点:让大模型更加准确、快速地理解if-else的能力。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 使用重构重命名一键更改变量名的方法

一个变量有多处引用的情况下,需要重命名,可以使用重构重命名进行一键更改。 方法是:选择变量名–>右键–>Refactor–>Rename(也可以使用快捷:选择变量后按下ShiftF6),然后直接输入新的变量名即可…

基于springboot游戏分享网站源码和论文

网络的广泛应用给生活带来了十分的便利。所以把游戏分享管理与现在网络相结合,利用java技术建设游戏分享网站,实现游戏分享的信息化。则对于进一步提高游戏分享管理发展,丰富游戏分享管理经验能起到不少的促进作用。 游戏分享网站能够通过互…

邻接矩阵、关联矩阵

邻接矩阵: 邻接矩阵是一种用来表示图中顶点间相互连接关系的矩阵。在邻接矩阵中,矩阵的行和列都代表图中的顶点。 对于无权图,如果顶点 i 和顶点 j 之间有一条边,则矩阵中的元素 Aij​(位于第 i 行和第 j 列&#xff…

3338 蓝桥杯 wyz的数组IV 简单

3338 蓝桥杯 wyz的数组IV 简单 //C风格解法1&#xff0c;通过率50% #include<bits/stdc.h>int main(){std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);int n; std::cin >> n;int ans 0;std::vector<int>a(n);for(auto &am…

基于Java SSM框架实现家政服务中介网系统项目【项目源码+论文说明】

基于java的SSM框架实现家政服务中介网系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识…

【Git配置代理】Failed to connect to github.com port 443 问题解决方法

前言&#xff1a; 在学习代码审计时&#xff0c;有时会需要使用git去拉取代码&#xff0c;然后就出现了如下错误 看过网上很多解决方法&#xff0c;觉得问题的关键还是因为命令行在拉取/推送代码时并没有使用VPN进行代理。 解决办法 &#xff1a; 配置http代理&#xff1a;…

DOM 型 XSS 攻击演示(附链接)

一、介绍 DOM&#xff08;Document Object Model&#xff09;型 XSS&#xff08;Cross-Site Scripting&#xff09;攻击是一种 Web 应用程序中的安全漏洞&#xff0c;其特点是攻击者成功地注入了恶意脚本&#xff0c;这些脚本在用户的浏览器中执行&#xff0c;从而导致恶意行为…

第93讲:MySQL主从复制集群延时从库的核心概念以及使用

文章目录 1.延时从库的概念2.配置从库延时3.模拟主库误删除使用延时从库恢复数据3.1.模拟主库误删除操作3.2.利用从库延时恢复主库误删除的数据 1.延时从库的概念 延时从库和主从延时是两个概念&#xff0c;延时从库指的是认为手动配置一个从库延时复制主库的时间&#xff0c;…

蓝桥杯-循环节长度

两个整数做除法&#xff0c;有时会产生循环小数&#xff0c;其循环部分称为: 循环节。比如&#xff0c;11/136>0.8461553846153..... 其循环节为[846153] 共有 6 位。下面的方法&#xff0c;可以求出循环节的长度。请仔细阅读代码&#xff0c;并填写划线部分缺少的代码。 注…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例5-3 getBoundingClientRect()

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>getBoundingClientRect()</title> </head> <script>function getRect(){var obj document.getElementById(example); //获取元素对象var objR…

【BUG】联想Y7000电池电量为0且无法充电解决方案汇总

因为最近火灾很多&#xff0c;所以昨天夜晚睡觉的时候把插线板电源关掉了&#xff0c;电脑也关机了。 各位一定要注意用电安全&#xff0c;网上的那些事情看着真的很难受qvq。 第二天早上起床的时候一看发现电脑直接没电了&#xff0c;插上电源后也是显示 你一定要冲进去啊(ू˃…

编译Opencv3.3 版本遇到的Cuda版本变更导致:CUDA_nppicom_LIBRARY (ADVANCED)链接找不到的问题根本解法:

前言&#xff1a; Opencv 开源库的使用是必须的&#xff0c;但是&#xff0c;开源项目的特性&#xff0c;造成&#xff0c;版本的依赖性比较复杂&#xff0c; 尤其是针对某一款老硬件的SDK&#xff0c;往往随着某个开源库的使用&#xff0c;导致&#xff0c;无法编译的问题&am…

【极数系列】Flink配置参数如何获取?(06)

文章目录 gitee码云地址简介概述01 配置值来自.properties文件1.通过路径读取2.通过文件流读取3.通过IO流读取 02 配置值来自命令行03 配置来自系统属性04 注册以及使用全局变量05 Flink获取参数值Demo1.项目结构2.pom.xml文件如下3.配置文件4.项目主类5.运行查看相关日志 gite…

【Spark系列2】Spark编程模型RDD

RDD概述 RDD最初的概述来源于一片论文-伯克利实验室的Resilient Distributed Datasets&#xff1a;A Fault-Tolerant Abstraction for In-Memory Cluster Computing。这篇论文奠定了RDD基本功能的思想 RDD实际为Resilient Distribution Datasets的简称&#xff0c;意为弹性分…

04 Redis之命令(Hash型Value命令+List型Value命令+Set型Value命令+有序集合ZSET型Value命令)

3.4 Hash型Value命令 Hash 表就是一个映射表 Map&#xff0c;也是由键-值对构成&#xff0c;为了与整体的 key 进行区分&#xff0c;这里的键称为 field&#xff0c;值称为 value。注意&#xff0c;Redis 的 Hash 表中的 field-value 对均为 String 类型。 3.4.1 hset  格…

Python笔记14-实战小游戏飞机大战(上)

文章目录 功能规划安装pygame绘制游戏窗口添加玩家飞机图像屏幕上绘制飞船代码重构驾驶飞船全屏模式射击 本示例源码地址 点击下载 功能规划 玩家控制一艘最初出现在屏幕底部中央的飞船。玩家可以使用箭头键左右移动飞船&#xff0c;还可使用空格键射击。游戏开始时&#xff…

【华为 ICT HCIA eNSP 习题汇总】——题目集11

1、某公司的内网用户采用 NAT 技术的 NO-pat 方式访问互联网&#xff0c;若所有的公网地址均被使用&#xff0c;则后续上网的内网用户会&#xff08;&#xff09;。 A、挤掉前一个用户&#xff0c;强制进行 NAT 转换上网 B、将报文同步到其他 NAT 转换设备上进行 NAT 转换 C、自…

259:vue+openlayers: 显示海量多边形数据,10ms加载完成

第259个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers项目中通过WebGLVectorLayerRenderer方式加载海量多边形数据。这里相当于将海量的数据放在同一个层的source中,然后通过webglTile的方式渲染出这一层。 本示例数据为5000个多边形,加载速度超级快。 直接…

初识人工智能,一文读懂贝叶斯优化进阶的知识文集(9)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

解决Linux部署报错No main manifest attribute, in XXX.jar

这是我近期遇到的一个问题&#xff0c;报错原因就是没找到主类&#xff0c;首先你在你本地运行&#xff0c;本地运行ok的话&#xff0c;解压生成的jar包&#xff0c;里面有个META-INF文件&#xff0c;打开MANIFEST.MF文件&#xff0c;该文件是一个清单文件。该文件包含有关JAR文…
最新文章