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

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.hqwc.cn/news/189990.html

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

相关文章

秋招算法高频算法笔试题

自己在秋招过程中遇到的算法笔试题,包含中大厂,都附解析! 汽水瓶 如果汽水瓶数目为1或者0,那么一瓶都喝不到 如果汽水瓶数目为2或者3,那么只能喝到一瓶 如果为2,喝到一瓶后手里一个瓶子都没有了&#xff…

centos虚拟机无法接受消息(防火墙)

1.利用wireshark抓包, 发现发送信息后, 虚拟机返回 :host administratively prohibited 2.发现是centos虚拟机未关闭防火墙 (关闭后可正常接收消息)

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

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

Find My充电宝|苹果Find My技术与充电宝结合,智能防丢,全球定位

充电宝是一种个人可随身携带,自身能储备电能,主要为手持式移动设备等消费电子产品(例如无线电话、笔记本电脑)充电的便携充电器,特别应用在没有外部电源供应的场合。其主要组成部分包括:用作电能存储的电池…

hcia学习:

视频学习: 第一部分:基础学习。 19——子网掩码。 27——防火墙配置: 32——企业级路由器配置: 基础实验完成:(完成以下目录对应的实验,第一部分基础实验就完成。) 方法&#xff…

python3-- Pillow10 ‘FreeTypeFont‘ object has no attribute ‘getsize‘报错解决

文章目录 一、问题二. 解决方法:1.方法12.方法2 三. 总结 一、问题 使用pillow10进行图片文字合成时获取文字大小失败 AttributeError: FreeTypeFont object has no attribute getsize二. 解决方法: 1.方法1 降级Pillow pip install Pillow9.5.0再去…

freeRTOS--软件定时器

一、什么是定时器: 简单可以理解为闹钟,到达指定一段时间后,就会响铃。STM32 芯片自带硬件定时器,精度较高、达到定时时间后会触发中断,也可以生成 PWM 、输入捕获、输出比较,等等,功能强大&am…

Flume学习笔记(4)—— Flume数据流监控

前置知识: Flume学习笔记(1)—— Flume入门-CSDN博客 Flume学习笔记(2)—— Flume进阶-CSDN博客 Flume 数据流监控 Ganglia 的安装与部署 Ganglia 由 gmond、gmetad 和 gweb 三部分组成。 gmond(Ganglia …

企业服务器中了babyk勒索病毒怎么办,babyk勒索病毒解密数据集恢复

网络技术的不断发展应用,为企业的生产生活提供了强有力帮助,企业也不断走向数字化办公模式,而对于企业来说,企业计算机存储的数据至关重要,如果不加以保护很容易造成数据丢失,近期,云天数据恢复…

电子病历编辑器源码(Springboot+原生HTML)

一、系统简介 本系统主要面向医院医生、护士,提供对住院病人的电子病历书写、保存、修改、打印等功能。本系统基于云端SaaS服务方式,通过浏览器方式访问和使用系统功能,提供电子病历在线制作、管理和使用的一体化电子病历解决方案&#xff0c…

常见面试题-MySQL的Explain执行计划

了解 Explain 执行计划吗? 答: explain 语句可以帮助我们查看查询语句的具体执行计划。 explain 查出来的各列含义如下: id:在一个大的查询语句中,每个 select 关键字都对应一个唯一的 id select_type:…

SpringCloud 2022有哪些变化

目录 前提条件 AOT支持 Spring Native支持 前提条件 Spring Cloud 2022.0.0是构建在Spring Framework 6.0和Spring Boot 3.0 之上的一S个主要版本。 JDK要求最低需要是Java 17J2EE要求最低需要Jakarta EE 9 AOT支持 Spring cloud 2022支持AOT编译,它是将程序源…