【AI大模型】LLM的检索增强--SELF-RAG

news2024/11/26 5:33:32

本篇博客参考论文:
《SELF-RAG: LEARNING TO RETRIEVE, GENERATE, AND CRITIQUE THROUGH SELF-REFLECTION》

在自然语言处理(NLP)领域,大型语言模型(LLMs)已成为处理复杂语言任务的强大工具。然而,这些模型在生成响应时经常遇到事实错误的问题。通常人们会使用RAG来解决大模型的幻觉问题,检索增强生成(RAG)是一种通过检索相关知识来增强 LLMs 输入的方法,可以减少这类问题。然而,无论检索是否必要或检索到的段落是否相关,RAG 方法都会不加选择地检索和整合固定数量的检索段落,这可能会降低 LLMs 的多功能性或导致生成无用的响应。

一篇名为《SELF-RAG: LEARNING TO RETRIEVE, GENERATE, AND CRITIQUE THROUGH SELF-REFLECTION》的论文提出了一个创新解决方案——SELF-RAG框架,旨在通过自我反思和检索增强来提高语言模型的生成质量和事实准确性。本文将深入探讨SELF-RAG框架的工作原理及其优势。

什么是SELF-RAG?

SELF-RAG(Self-Reflective Retrieval-Augmented Generation)是一种新型的框架,它通过结合检索(Retrieval)和自我反思(Self-Reflection)来提升语言模型的性能。这个框架的核心思想是让模型在生成文本时,能够根据需要检索相关信息,并对自己的生成内容进行反思和评估,从而提高输出的准确性和可靠性。

SELF-RAG如何工作?

SELF-RAG框架包括以下几个关键步骤:
在这里插入图片描述

按需检索(On-demand Retrieval):

SELF-RAG训练一个语言模型(LM),使其能够根据任务输入自适应地决定是否需要检索额外的信息。
如果模型确定需要检索,它会输出一个检索标记(retrieval token),触发检索模型(retriever model)按需检索相关文档。
并行处理检索到的文档:

SELF-RAG能够同时处理多个检索到的文档,并评估它们的相关性。
模型会评估每个检索到的段落与任务输入的相关性,并基于这些段落生成任务输出。
自我反思(Self-Reflection):

SELF-RAG使用特殊的标记,称为反思标记(reflection tokens),来生成和反思检索到的段落及其自身的生成内容。
这些反思标记分为检索标记和批评标记,分别指示检索的需求和生成质量。
生成反思标记:
在这里插入图片描述

模型在推理阶段生成反思标记,以评估检索到的段落的相关性、支持度和整体输出的有用性。
这些标记包括:检索需求(Retrieve)、相关信息性(ISREL)、支持度(ISSUP)和整体有用性(ISUSE)。
控制生成(Controllable Generation):

在推理阶段,SELF-RAG可以通过生成反思标记来控制其行为,使其能够根据不同任务的需求调整其行为。
例如,对于需要事实准确性的任务,模型可能会更频繁地检索文档以确保输出与可用证据紧密对齐。
训练和推理:

在训练阶段,SELF-RAG通过将反思标记作为下一个标记预测的一部分,从扩展的模型词汇表中统一生成。
在推理阶段,SELF-RAG使用这些反思标记来执行软约束或硬控制,以满足不同的任务需求。
自定义解码算法:

SELF-RAG允许使用自定义的解码算法来满足硬性或软性约束,这些约束由反思标记预测定义。
例如,可以通过段级束搜索(segment-level beam search)和加权线性总和的反思标记概率作为段分数来实现。
在这里插入图片描述

SELF-RAG的优势

与传统的语言模型相比,SELF-RAG框架有以下几个显著优势:

提高事实准确性:通过检索和自我反思,SELF-RAG能够减少生成响应中的事实错误,提供更准确的信息。
增强多功能性:SELF-RAG不会损害语言模型的多功能性,它能够根据任务需求灵活地调整检索和生成策略。
可控性:SELF-RAG在推理阶段的可控性意味着我们可以根据不同的应用场景定制模型的行为。例如,在需要创造性写作的任务中减少检索,或在需要严格事实验证的任务中增加检索。
自我评估:通过反思标记,SELF-RAG能够自我评估其输出的质量,这不仅有助于提高输出的准确性,也使得模型的输出更容易被人类理解和验证。

论文地址:https://arxiv.org/pdf/2310.11511.pdf

Github地址:https://github.com/AkariAsai/self-rag

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

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

相关文章

Linux—进程概念学习-03

目录 Linux—进程学习—31.进程优先级1.1Linux中的进程优先级1.2修改进程优先级—top 2.进程的其他概念3.进程切换4.环境变量4.0环境变量的理解4.1环境变量的基本概念4.2添加环境变量—export4.3Linux中环境变量的由来4.4常见环境变量4.5和环境变量相关的命令4.6通过系统调用获…

C# 读取多条数据记录导出到 Word标签模板之图片输出改造

目录 应用需求 设计 范例运行环境 配置Office DCOM 实现代码 组件库引入 ​核心代码 调用示例 小结 应用需求 在我的文章《C# 读取多条数据记录导出到 Word 标签模板》里,讲述读取多条数据记录结合 WORD 标签模板输出文件的功能,原有输出图片的…

Android 性能优化:内存优化(理论篇)

内存作为App程序运行最重要的资源之一,需要运行过程中做到合理的资源分配与回收,不合理的内存占用轻则使得用户应用程序运行卡顿、ANR、黑屏,重则导致用户应用程序发生 OOM(out of memory)崩溃。喜马直播随着近些年的业…

【AI技术赋能有限元分析应用实践】pycharm终端与界面设置导入Abaqus2024自带python开发环境

目录 一、具体说明1. **如何在 Windows 环境中执行 Abaqus Python 脚本**2. **如何在 PyCharm 中配置并激活 Abaqus Python 环境**3. **创建 Windows 批处理脚本自动执行 Abaqus Python 脚本**总结二、方法1:通过下面输出获取安装路径导入pycharm方法2:终端脚本执行批处理脚本…

arm学习总结

AHB总线连接的都是这些需要高速处理的内存、内核啥的 APB连接的都是些外设 GPIO并不需要高速处理的

【redis 】string类型详解

string类型详解 一、string类型的概念二、string类型的常用指令2.1 SET2.2 GET2.3 MSET2.4 MGET2.5 SETNX2.6 INCR2.7 INCRBY2.8 DECR2.9 DECRBY2.10 INCRBYFLOAT2.11 APPEND2.12 GETRANGE2.13 SETRANGE2.14 STRLEN 三、string类型的命令小结四、string类型的内部编码五、strin…

Mysql案例之COALESCE函数使用详解

hello,大家好,我是灰小猿!最近在做一个三表关联查询的场景处理时,遇到了一个比较有用的MySQL函数,在这里记录一下,大概场景如下: 需求场景 场景:有一张object_rel表,表中…

C语言菜鸟入门·关键字·int的用法

目录 1. int关键字 1.1 取值范围 1.2 符号类型 1.3 运算 1.3.1 加法运算() 1.3.2 减法运算(-) 1.3.3 乘法运算(*) 1.3.4 除法运算(/) 1.3.5 取余运算(%) 1.3.6 自增()与自减(--) 1.3.7 位运算 2. 更多关键字 1. int关键字 int 是一个关键字&#xff0…

D74【 python 接口自动化学习】- python 基础之HTTP

day74 http基础定义 学习日期:20241120 学习目标:http定义及实战 -- http基础介绍 学习笔记: HTTP定义 HTTP 是一个协议(服务器传输超文本到浏览器的传送协议),是基于 TCP/IP 通信协议来传递数据&…

基于FPGA(现场可编程门阵列)的SD NAND图片显示系统是一个复杂的项目,它涉及硬件设计、FPGA编程、SD卡接口、NAND闪存控制以及图像显示等多个方面

文章目录 0、前言 1、目标 2、图片的预处理 3、SD NAND的预处理 4、FPGA实现 4.1、详细设计 4.2、仿真 4.3、实验结果 前言 在上一篇文章《基于FPGA的SD卡的数据读写实现(SD NAND FLASH)》中,我们了解到了SD NAND Flash的相关知识&am…

【计算机网络】网段划分

一、为什么有网段划分 IP地址 网络号(目标网络) 主机号(目标主机) 网络号: 保证相互连接的两个网段具有不同的标识 主机号: 同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号 互联网中的每一台主机,都要隶属于某一个子网 -&…

Java-反序列化

序列化与反序列化 简单demo: import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable;public class serialize implements Serializable{private…

webkit浏览器内核编译(2024年11月份版本)

webkit浏览器内核编译 本文详细介绍了如何安装和配置Webkit的编译环境和工具的安装,以及在Windows上编译和运行WebKit浏览器引擎的过程,包括安装依赖、设置环境变量、生成解决方案并最终运行附带的MiniBrowser示例。 一、WebKit简介 WebKit 是一个开源的…

论文阅读--Evidence for the utility of quantum computing before fault tolerance

量子计算有望在某些问题上提供比传统计算更快的速度。然而,实现其全部潜力的最大障碍是这些系统固有的噪声。这一挑战被广泛接受的解决方案是实现容错量子电路,而这超出了当前处理器的能力范围。我们在此报告了在嘈杂的127 量子比特处理器上进行的实验&a…

构建高效在线教育:SpringBoot课程管理系统

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理在线课程管理系统的相关信息成为必然。开发…

Linux 下的IO模型

一:四种IO模 1.1:阻塞式IO(最简单,最常用,效率最低) 阻塞I/O 模式是最普遍使用的I/O 模式,大部分程序使用的都是阻塞模式的I/O 。 缺省情况下(及系统默认状态)&#xf…

Linux-Nginx反向代理

文章目录 反向代理负载均衡 🏡作者主页:点击! 🤖Linux专栏:点击! ⏰️创作时间:2024年11月24日10点32分 反向代理 虚拟主机 1 为虚拟主机 3 提供代理服务 vi /etc/nginx/conf.d/vhost.confser…

DataGrip 连接 Redis、TongRDS

连接 Redis 或 TongRDS 有些旧版本 没有 redis 驱动用不了 1)选择驱动 2)添加连接信息 3)测试连接 4)保存连接 5)使用案例

《数据结构》学习系列——图(中)

系列文章目录 目录 图的遍历深度优先遍历递归算法堆栈算法 广度优先搜索 拓扑排序定义定理算法思想伪代码 关键路径基本概念关键活动有关量数学公式伪代码时间复杂性 图的遍历 从给定连通图的某一顶点出发,沿着一些边访问遍图中所有的顶点,且使每个顶点…

CodeCache使用率告警分析

CodeCache 是 JVM 用于存储已编译的本地代码(即 JIT 编译生成的代码)的内存区域。如果 CodeCache 使用率持续较高,特别是大于 80%,可能会导致性能问题甚至应用运行异常。以下是详细分析: 一、CodeCache 使用率告警的意…