SELF-RAG: 让LLM集检索,生成跟评判等多种能力于一身

news2024/11/17 0:05:09

SELF-RAG: 让LLM集检索,生成跟评判等多种能力于一身

提纲

1 简介

2 SELF-RAG

3 实验结论

4 讨论

参考文献

1 简介

尽管基础能力出众,但是大模型只能依赖于被压缩到模型参数中的知识,所以经常会生成不符合事实的回复。针对这种事实性错误,目前主流的解决方案是知识增强,引入外部的知识源来引导模型生成。但是不考虑具体情形,一味地去检索外部文档可能会损害语言模型的多样性,生成不合适的回复。基于此,有研究人员提出了Self-Reflective Retrieval-Augmented Generation(SELF-RAG),一种新的大模型知识增强框架,可以通过检索跟自我反思提升大模型生成的质量跟事实可靠性。

2 SELF-RAG

SELF-RAG的框架如下图所示,SELF-RAG往语言模型的词表中引入了4种新类型的reflection tokens,分别是Retriver, IsRel, IsSup, IsUse,对应四种不同的子任务,每个子任务下包括多个对应的reflection tokens。以Retriever为例, 该任务用户判断当前问题下是否需要检索模型支持,对应的reflection tokens有yes,no跟continue,分别对应不同选择。通过让语言模型生成对应的reflection token,使得语言模型具备判断是否需要检索以及评判生成结果的能力。

图1: SELF-RAG框架

图2: 4种不同类型的reflection token

模型训练

SELF-RAG的训练过程涉及到两个模型,分别是评判模型C跟生成模块M。在该框架下评判模型C有4种用途,需要根据不同情形生成对应的判别结果,分别对应前面提到的4种类型的reflection token。其一是给定输入x后,判断是否需要引入检索模块。其二是给定输入x跟检索文档d后,判断输入x跟文档d的相关性。其三是给定输入x,检索文档d,跟模型输出y后,判断输出y是否可以由文档d支撑。其四是给定输入x跟模型输出y后,判断输出y是否可以作为x的有价值回复。

判别模型判别模型的训练数据是利用GPT-4生成得到的,对于每一种任务类型,给定对应的输出后,设置合适的任务指令instruction跟示例demonstration,让GPT4生成相应的reflection token,从而得到4种不同任务下的(input, response)数据,再利用标准的条件语言模型训练目标优化评判模型即可。

在完成评判模型C的训练后,需要利用其来生成训练生成模型M的数据。具体做法为给定初始的训练数据(x,y),首先利用评判模型C判断回复x是否需要引入检索模块,如果需要的话,就将Retriver对应的reflection token加入到之前的输出中,然后利用检索模块召回若干文档,对于每个文档,利用critic模型判断文档跟问题是否相关,即IsRel任务,若相关,则利用评判模型C判断结果y是否由文档所支撑,即IsSup任务,将召回文档以及这两个任务对应的reflection token依次加入到前面的输出中,最后再利用评判模型C判断结果y是否有用,即IsUse任务,将前面的文档,reflection token跟结果y按照顺序拼接到一起作为增强过的y,从而构建出对应的训练数据(x,augmented y)。具体流程可以参考图中样例。在完成训练数据构建后,按照标准的自回归任务训练生成模型即可,从而可以得到生成模型M。

图3: SELF-RAG训练样例

模型推理

生成模型M首先会判断当前问题是否需要使用检索,如果需要的话,就会检索召回多个相关文档,通过并行的方式同时处理多个文档,并生成对应回复,再通过排序选择其中最合适的回复作为最终结果。

图4: SELF-RAG推理流程图

图5: 生成结果排序

由于reflection token的设置,使得SELF-RAG整个推理过程更加可控,可以通过调整检索的阈值或者最终排序时的不同reflection token的权重参数,来控制模型整体行为。对于那些需要更高事实准确性的场景,可以让模型更多地去召回相关文档从而让生成结果更加有依据,对于那些开放性问题,可以限制模型调用检索模块,更多的发挥大模型本身的创造性。可以看到,SELF- RAG中的评判模型C的用途是为了构建生成模型M所需要的训练数据,当生成模型训练完成后,在具体推理时只会用到生成模型M。

3 实验结论

a) 研究人员在包括多选推理数据集,开放域问答等6个任务上进行了评测,发现SELF-RAG在大多数任务上都领先于不加检索的模型跟现存的知识增强模型。其中Llama2-FT(7B)使用了跟SELF-RAG同样的训练数据,但是效果明显不如SELF- RAG,这说明了SELF-RAG的收益不仅来源于训练数据,也来源于整体框架的有效性。

图6: 不同模型效果对比

b) 通过消融实验可以观测SELF- RAG中各个模块对于整体的贡献,尤其是可以看到相比于推理时只检索返回1个文档的做法,SELF-RAG有显著提升,说明SELF- RAG本身具备根据多种细粒度评判指标选择生成结果的能力,并不会过于依赖检索返回的结果。

图7: 消融实验

4 讨论

对于构建训练数据时候利用GPT-4生成reflection token以及推理时利用这些对应的reflection token概率值作为细粒度评判指标,模型预测的结果是否可信?研究人员对比了这些模型生成的结果跟人工标注结果,发现两者存在高度的一致,这也跟前面很多文章观点一致,只要使用妥当,可以利用GPT-4这类语言模型来构建数据,语言模型生成的标注质量是非常高的。

总体感觉SELF-RAG跟上半年清华的webcpm框架有诸多相似之处,都是希望利用一个大模型通过恰当的训练,可以独立完成知识增强里的所有任务,让模型更加智能地决定何时引入检索模块,选择哪个检索文档以及评判生成回复的质量。最大的特别之处在于SELF- RAG更加可控,可以通过对4种类型reflection token所对应的子任务进行调控来实现对整个生成过程的微调,根据不同场景让模型选择更加自由发挥或者更加依据事实。除了更加可控外,引入reflection token的方式是否比之前的通过不同prompt让模型做不同任务的方式更加高效,这一问题,文中并没有通过实验论证。个人猜测还是有提升的,通过reflection token可以把前面任务的评判结果加入到模型输入中,应该是更有利于后续任务的。

SELF-RAG还有个与众不同的地方在于,它会根据多个检索文档生成多个回复(每个文档对应1个回复),通过一定的打分规则从中选择其中一个回复。这种设计不就处理不来那些需要模型同时依赖于多个文档的问题了嘛?为此所带来这种并行生成多个回复的处理手段不就意味着需要更多算力资源了嘛?文中为何不试下把所有检索文档一同作为模型输入去生成回复,这种方式不应该很符合当下主流嘛?

参考文献

1 SELF-RAG: LEARNING TO RETRIEVE, GENERATE, AND CRITIQUE THROUGH SELF-REFLECTION

https://arxiv.org/pdf/2310.1151

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode刷题-滑动窗口】-- 795.区间子数组个数

795.区间子数组个数 class Solution {public int numSubarrayBoundedMax(int[] nums, int left, int right) {return lessEqualsThan(nums,right) - lessEqualsThan(nums,left - 1);}private int lessEqualsThan(int[] nums,int k){int len nums.length;int res 0,left 0,ri…

wpf devexpress 绑定数据编辑器

定义视图模型 打开前一个项目 打开RegistrationViewModel.cs文件添加如下属性到RegistrationViewModel类 [POCOViewModel] public class RegistrationViewModel {public static RegistrationViewModel Create() {return ViewModelSource.Create(() > new RegistrationVie…

抖音直播招聘报白是一种新颖、高效的招聘方式增加曝光度和吸引力

总之,抖音招聘是一种新颖、高效的招聘方式,它可以为公司带来更大的曝光度和吸引力,帮助公司吸引更多优秀的人才。通过抖音直播招聘报白,企业或者人力资源公司可以利用抖音的短视频流量红利,触达到每天超过8亿的活跃用户…

移动机器人路径规划(四)--- 考虑机器人模型下的运动规划KINODYNAMIC PATHFINDING

目录 1 动力学概念简介 2 State Lattice Planning 3 Boundary Value Problem 4 混合A*算法 Hybrid A* 5 Kinodynamic RRT* 1 动力学概念简介 一种生成机器人的运动同时受限制于运动学的约束(避障)以及动力学的约束(在速度加速度力的约束…

wpf devexpress 创建布局

模板解决方案 例子是一个演示连接数据库连接程序。打开RegistrationForm.BaseProject项目和如下步骤 RegistrationForm.Lesson1 项目包含结果 审查Form设计 使用LayoutControl套件创建混合控件和布局 LayoutControl套件包含三个主控件: LayoutControl - 根布局…

若依启动步骤

1.创建数据库 2.启动redis 3.改后端的数据库连接配置 4.配置redis redis的地址:cmd中ipconfig命令查看 6.启动后端:如下 7.启动前端ruoyi-ui中 先运行npm install,再npm run dev。项目就启动成功了。 用户名:admin 密码&#x…

Springboot更新用户头像

人们通常(为徒省事)把一个包含了修改后userName的完整userInfo对象传给后端,做完整更新。但仔细想想,这种做法感觉有点二,而且浪费带宽。 于是patch诞生,只传一个userName到指定资源去,表示该请求是一个局部更新&#…

11.5MyBatis(进阶)

一.${}和#{} 1.$是直接替换,#是预处理(使用占位符,替换成?).前者不安全(SQL注入), 后者安全. 2.$的使用场景: 如果传递的值是sql的关键字,只能使用$,不能使用#(asc,desc). 二.SQL注入 注意: 如果使用${}进行传参,一定要是可以穷举的,并且要进行安全性验证(例如排序,只能传a…

戴姆勒——从豪华私家车到无人驾驶飞机

戴姆勒(DaimlerAG)是梅赛德斯-奔驰和精灵(Smart)汽车的德国母公司。自1926年其前身公司合并为戴姆勒-奔驰公司以来,戴姆勒在生产豪华和消费型汽车、卡车和公共汽车方面有着悠久的历史。 如今,除了以其精密设计的汽车闻名外,该公司还在设计、…

PACS医学影像信息化数字平台源码

PACS系统对医院影像科意义重大,将业务量巨大的影像检验流程依托于信息化技术,对于进行信息化建设的医院而言,是十分必要的。 PACS系统源码,集成三维影像后处理功能,包括三维多平面重建、三维容积重建、三维表面重建、三…

Redis(哈希Hash和发布订阅模式)

哈希是一个字符类型字段和值的映射表。 在Redis中,哈希是一种数据结构,用于存储键值对的集合。哈希可以理解为一个键值对的集合,其中每个键都对应一个值。哈希在Redis中的作用主要有以下几点: 1. 存储对象:哈希可以用…

计算机视觉:驾驶员疲劳检测

目录 前言 关键点讲解 代码详解 结果展示 改进方向(打哈欠检测疲劳方法) 改进方向(点头检测疲劳) GUI界面设计展示 前言 上次博客我们讲到了如何定位人脸,并且在人脸上进行关键点定位。其中包括5点定位和68点定…

《洛谷深入浅出基础篇》——P3405 citis and state ——哈希表

上链接:P3405 [USACO16DEC] Cities and States S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P3405 上题干: 题目描述 Farmer John 有若干头奶牛。为了训练奶牛们的智力,Farmer John 在谷仓的墙上放了一…

UE5 - ArchvizExplorer - 数字孪生城市模板 -学习笔记

1、学习资料 https://www.unrealengine.com/marketplace/zh-CN/product/archviz-explorer https://karldetroit.com/archviz-explorer-documentation/ 官网下载的是一个简单版,需要下载扩展,并拷贝到项目录下,才有完整版 https://drive.googl…

Vatee万腾的科技征程:Vatee数字化创新的前沿探讨

在Vatee万腾的科技征程中,我们目睹了一场数字化创新的引领之旅,探讨了Vatee在科技前沿的独到见解。Vatee万腾不仅仅是一家科技公司,更是一支前行不辍的冒险队伍,通过不断突破自我,探索未知领域,引领着数字化…

TableUtilCache:针对CSV表格进行的缓存

TableUtilCache:针对CSV表格进行的缓存 文件结构 首先来看下CSV文件的结构,如下图: 第一行是字段类型,第二行是字段名字;再往下是数据。每个元素之间都是使用逗号分隔。 看一下缓存里面存储所有表数据的字段 如下图&#xff…

《向量数据库指南》——TruLens + Milvus Cloud构建RAG深入了解性能

深入了解性能 索引类型 本例中,索引类型对查询速度、token 用量或评估没有明显影响。这可能是因为数据量较小的关系。索引类型对较大语料库可能更重要。 Embedding 模型 text-embedding-ada-002 在准确性(0.72,平均 0.60)和答案相关度(0.82,平均0.62)上优于 MiniLM Embeddin…

wpf devexpress 开始点

此教程示范如何创建registration form和DevExpress WPF Data Editors 开始点 此项目源码 这个解决方案包含几个项目-每一个项目对应一个教程 RegistrationForm.BaseProject项目是基于工作的解决方案。项目包含三个视图:MainView,RegistraionView&…

正版软件|Kaspersky 杀毒软件 - 全方位安全软件

卡巴斯基 全方位安全软件 一款产品满足 您的全部安全需求, 通过屡获殊荣的保护产品抵御黑客、病毒和恶意软件,获得无与伦比的安全感。此外还有支付保护和隐私保护工具,为您提供全方位保护。包含高级版功能: 免费 Kaspersky Safe …

Git企业开发级讲解(三)

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、版本回退1、内容2、演示 二、撤销修改1、情况⼀:对于⼯作区的代码&#xff0c…