[论文笔记]Query Rewriting for Retrieval-Augmented Large Language Models

引言

今天带来论文Query Rewriting for Retrieval-Augmented Large Language Models的笔记。

本篇工作从查询重写的角度介绍了一种新的框架,即重写-检索-阅读,而不是以前的检索-阅读方式,用于检索增强的LLM。关注的是搜索查询本身的适应性,因为输入文本与检索所需的知识之间难免存在差距。

首先提示一个LLM生成查询,然后使用网络搜索引擎检索上下文。此外,为了更好地使查询与冻结的模块对齐,作者提出了一个可训练的流程方案。采用一个小型语言模型作为可训练的重写器,以适应LLM阅读器。重写器通过强化学习使用LLM阅读器的反馈进行训练。

1. 总体介绍

LLM仍然面临着幻觉问题和时间不对齐问题。这影响了LLM的可靠性,并阻碍了更广泛的实际应用。现有的研究已经证明,将外部知识(非参数化知识)与内部知识(参数化知识)结合起来,可以有效缓解幻觉问题,特别是对于知识密集型任务。事实上,检索增强的LLM已经被证明非常有效,被视为缓解原始LLM生成中的事实性缺陷的标准解决方案。检索增强方法被应用于选择相对段落作为语言模型的外部上下文,这是检索-然后阅读的框架。以开放域问答任务为例,检索器首先为一个问题搜索相关文档。然后LLM接收问题和文档,然后预测答案。

由于大多数LLM只能通过推理API进行访问,它们在流程中扮演冻结的黑盒子阅读器的角色。这使得以前需要完全访问的检索增强方法不再可行。最近的检索增强语言模型的研究更加倾向于面向LLM的适应性。现有方法忽视了查询的适应性,即检索然后阅读流程的输入。检索查询要么来自数据集中的原始数据,要么直接由黑盒子生成确定,因此一直是固定的。然而,输入文本和实际需要查询的知识之间难免存在差距。这限制了性能,并给检索能力增强和提示工程带来了负担。

image-20240605104425303

考虑到这个问题,本文提出了一个新的检索增强框架——重写-检索-阅读,可以进一步调整以适应LLM。在检索器之前,添加了一个步骤来重写输入,填补给定输入和检索需求之间的差距,如图1所示。采用现成的工具,即互联网搜索引擎作为检索器,避免了搜索索引的维护,并可以获取最新的知识。重写步骤的动机是从输入文本中澄清检索需求。
作者还提出了一个可训练方案,用于重写-检索-阅读框架(图1c)。黑盒检索器和阅读器形成一个冻结系统。采用了一个小型可训练的语言模型来执行重写步骤,称为重写器。通过使用LLM性能作为奖励进行强化学习,重写器学习适应检索查询以提高下游任务中的阅读器。

总之,提出的新颖检索增强方法,重写-检索-阅读,是第一个为冻结的检索器和LLM阅读器调整输入文本的框架。引入了一个可调节的方案,使用一个小的可训练模型,在资源消耗较少的情况下实现了性能提升。

2. 相关工作

2.1 检索增强

语言模型需要外部知识来缓解事实性缺陷。检索增强被视为标准有效的解决方案。借助检索模块,相关段落被提供给语言模型作为原始输入的上下文。因此,像常识或实时新闻这样的事实信息通过上下文化的阅读理解有助于输出预测。

早期的研究使用稀疏检索器或密集检索器放在预训练语言模型(PrLM)之前。神经检索器和阅读器都是可训练大小的PrLM,如BERT或BART。因此,整个检索-阅读框架是一个可调节的端到端系统,检索到的上下文可以被视为中间结果。为了优化检索和阅读理解,提出了平滑两步框架的方法。近期的研究表明,随着模型和数据规模的迅速增加,检索仍然是一个强大的增强方法。另一方面,与大规模语言模型相比,检索增强可以弥补参数规模不足的问题。例如,通过联合训练检索器和阅读器,Atlas显示了与540B PalM相当的零样本性能,但体积小50倍。

以互联网为知识库 更相关于作者的工作,搜索引擎可以扮演检索器的角色,利用互联网作为外部知识的来源。Komeili等通过互联网搜索与对话历史相关的信息来进行对话响应生成。SeeKeR使用单个Transformer进行迭代式的搜索查询生成,然后进行知识提取以进行对话生成和句子补全。对于大规模模型,网络搜索仍然显示出有效的知识增强、事实检查和LLM代理增强。

2.2 与黑盒LLM的合作

ChatGPT、Codex、PaLM(等大型语言模型具有令人印象深刻的自然语言处理能力和可扩展性。这导致越来越多地在各种NLP任务中采用LLM。然而,在大多数情况下,LLM只能作为黑盒使用,原因是:(1)像ChatGPT这样的模型不是开源的;(2)大规模参数需要计算资源,而用户并不总是能够负担得起。这种限制意味着除了输入和输出文本之外,用户无法访问其他信息。

现有研究已经证明,通过精心设计的交互方法可以更好地利用LLM的能力。GenRead提示LLM生成上下文,而不是部署检索器,显示出LLM可以通过提示检索内部知识。ReAct和Self-Ask结合了CoT和与Web API的交互。仅依靠提示构建,ReAct为交互任务提供了新的基线。Demonstrate-Search-Predict定义了LLM和检索器之间的复杂流程。与ReAct不同,DSP除了多跳拆分和检索之外,还集成了演示引导的提示。

尽管在零样本或少样本设置中表现出有希望的性能,但LLM的行为有时需要调整。一种可行的方法是在LLM之前或之后附加可训练的小模型。这些小模型作为系统参数的一部分可以进行微调优化。RePlug提出了对冻结LLM的密集检索器进行微调,以用于检索-阅读流程。检索器在LLM的监督下进行训练,以检索适合LLM的文档。为了实现相同的目的,Directional Stimulus Prompting部署一个小模型为LLM提供刺激,该模型根据LLM的奖励进行更新。

与上述激发人的工作不同,作者提出的流程在检索-阅读模块之前包含一个查询重写步骤。进一步提出了一个可训练方案,使用一个小的重写模型,通过重构搜索查询来增强检索增强的LLM。

3 方法

作者提出了重写-检索-阅读(Rewrite-Retrieve-Read,3R)的流程,从查询重写的角度改进检索增强的LLM。图1展示了一个概述。

3.1 重写-检索-阅读

一个有检索增强的任务可以表示如下。给定一个知识密集型任务的数据集 D = { ( x , y ) i } , i = 0 , 1 , 2 , . . . , N D = \{(x, y)_i\},i = 0, 1, 2, . . . , N D={(x,y)i}i=0,1,2,...,N,其中 x x x(例如一个问题)是流程的输入, y y y是期望的输出(例如正确答案)。流程包括三个步骤:(1)查询重写:根据原始输入 x x x生成一个与所需知识相关的新查询 x ~ \tilde x x~。(2)检索:搜索相关的上下文文档。(3)阅读:理解输入和上下文 [ d o c , x ] [doc, x] [doc,x],并预测输出 y ^ \hat y y^

一种直接但有效的方法是让LLM重写查询以搜索可能需要的信息。作者使用少样本提示来鼓励LLM思考,输出可以是一个或多个查询进行搜索。

3.2 可训练方案

然而,完全依赖冻结的LLM也存在一些缺点。推理错误或无效的搜索会影响性能。另一方面,检索到的知识有时可能会误导和损害语言模型。为了更好地与冻结模块对齐,可以添加一个可训练的模型,并通过将LLM阅读器的反馈作为奖励来进行调整。

作者进一步提出利用一个可训练的小型语言模型来接管重写步骤,如图1右侧所示。可训练的模型以预训练的T5-large(770M)作为初始化,记为可训练重写器 G θ G_θ Gθ。重写器首先在伪数据上进行预热训练,然后通过强化学习进行持续训练。

3.2.1 重写器预热

查询重写任务与T5等序列生成模型的预训练目标有很大的区别。首先,为查询重写任务构建了一个伪数据集。受最近的蒸馏方法的启发,提示LLM重写训练集中的原始问题 x x x,并收集生成的查询 x ~ \tilde x x~作为伪标签。然后对收集到的样本进行过滤:从LLM阅读器中获得正确预测的样本被选入预热数据集 D T r a i n = { ( x , x ~ ) ∣ y ^ = y } D_{Train}=\{(x, \tilde x)|\hat y = y\} DTrain={(x,x~)y^=y}。重写器 G θ G_θ Gθ D T r a i n D_{Train} DTrain​上进行微调,使用标准对数似然作为训练目标,表示为
L w a r m = − ∑ t log ⁡ p θ ( x ~ ^ ∣ x ~ < t , x ) (1) \mathcal{L}_{warm} = -\sum_t \log p_\theta(\hat {\tilde x} |\tilde x_{<t},x) \tag 1 Lwarm=tlogpθ(x~^x~<t,x)(1)
预热后的重写器模型表现出适度的性能,这取决于伪数据的质量和重写器的能力。由于高度依赖人工编写的提示行, x ~ \tilde x x~可能不是最优的。重写器规模相对较小的限制也会影响预热后的性能。

3.2.2 强化学习

强化学习暂略

4. 实现

Rewriter 给LLM带少样本示例的提示去重写查询的上下文学习。提示遵循[instruction, demonstrations, input]的公式,其中输入为 x x x。指令是直接的,示例是来自训练集的1-3个随机示例,并在所有运行中保持不变,主要用于任务特定的输出格式说明,即对于HotpotQA的简短短语作为答案,对于MMLU的选项作为答案。对于第3.2节中的训练方案,将T5作为重写器进行微调。

Retriever 使用必应搜索引擎作为检索器。它不需要像密集检索器那样构建候选索引,也不需要像教科书(textbook)那样的候选项。但它允许广泛的知识范围和最新的事实性。通过Bing API,检索分为两种方法进行。(1)对于所有检索到的网页,连接由Bing选择的相关句子片段。这种方法类似于在浏览器中使用搜索引擎,输入查询并按Enter键,然后收集搜索结果页面上显示的文本。(2)对于检索到的网页,请求URL和解析器获取所有文本。这类似于在搜索结果页面上点击。然后使用BM25保留与查询具有更高相关性分数的文档,缩短文档长度。

Reader 阅读器是一个冻结的LLM,采用ChatGPT和Vicuna-13B。它执行阅读理解和预测,具有少量的上下文学习。在作者的提示中,遵循简要的指导和演示,输入为 x x x [ d o c , x ~ ^ ] [doc,\hat{\tilde x}] [docx~^]

5. 实验

image-20240611165444622

image-20240611165621525

在开放领域问答方面的实验结果见表2。对于三个数据集,查询重写始终能够通过冻结的重写器和可训练的重写器带来性能提升。

使用复杂问题作为查询无法弥补参数化知识,而是带来了噪音。表明多跳问题不适合作为网络搜索引擎的查询。通过添加重写步骤,分数有所提高。

6. 分析

6.1 训练过程

image-20240611165857050

训练过程包括两个阶段,预热和强化学习。图2展示了在强化学习过程中的训练迭代中的度量分数。由于重写模型在RL之前已经在伪数据上进行了预热,因此“0迭代”处的分数表示从预热训练中获得的能力。可以观察到曲线在所有数据集上都呈上升趋势,并伴有一些波动。

image-20240611170244801

6.2 检索结果

作者提出的方法是一个流水线框架,而不是端到端系统。查询重写首先影响检索到的上下文,然后上下文对阅读器的输出产生影响。因此,问答指标是间接测量。通过检索指标“命中率”更仔细地观察检索到的上下文和阅读器的能力。计算命中率以衡量检索到的上下文是否包含正确答案。

表4显示了在AmbigNQ上的分数。第二行的分数是在选定的样本中计算的,这些样本的检索上下文命中了正确答案(在标准检索-然后阅读设置下)。这些分数显示了具有检索增强的阅读器的近似上限能力,简称为“上限”分数。与无检索设置(第一行)相比,检索的有效性得到了证明。

指标显示,使用BM25进行内容选择比片段召回更好的文档,而查询重写在两种设置上都取得了进展。检索器的命中率提高比阅读器的提高更为显著。

6.3 案例研究

image-20240611171008979

图3: 直观说明的示例。Q0表示原始输入,Q1来自LLM重写器,Q2来自经过训练的T5重写器。Hit表示检索器召回答案,而Correct表示阅读器的输出。

我们看图3中的示例,比较了原始问题和查询。在示例1中,原始问题询问Lady Mary-Gaye Curzon的最小女儿与两位特定演员合作出演的电影。查询1和查询2都将关键词电影放在前面,紧随Lady Mary-Gaye Curzon的最小女儿。通过两者,可以检索到女演员Charlotte Calthorpe及其电影信息,并包含了答案。第二个示例是LLM重写器生成的查询失败,但T5生成的查询获得了正确答案。查询1中的数字2000被误解,而查询2将200和电影放在一起,避免了无意义的检索。示例3是关于多项选择的案例。查询简化了背景并增强了关键词社区规划者。检索到的上下文主要是关于社区规划介绍,其中答案环境出现了多次。

7. 结论

本文介绍了Rewrite-Retrieve-Read流水线,其中添加了一个查询重写步骤用于检索增强的LLM。这种方法适用于将冻结的大型语言模型作为阅读器,将实时网络搜索引擎作为检索器。此外,可以应用可调节的小型语言模型作为重写器,可以训练以适应冻结的检索器和阅读器。

总结

⭐ 作者提出了可在查询之前先应用LLM作为重写器对问题进行重写,然后再走RAG的流程。同时也提出了可以训练一个小模型来作为重写器。但博主对该小模型的泛化能力存疑。建议还是通过在提示词中给一些示例,让LLM进行重写。

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

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

相关文章

检索增强生成(RAG)实践:基于LlamaIndex和Qwen1.5搭建智能问答系统

什么是 RAG LLM 会产生误导性的 “幻觉”&#xff0c;依赖的信息可能过时&#xff0c;处理特定知识时效率不高&#xff0c;缺乏专业领域的深度洞察&#xff0c;同时在推理能力上也有所欠缺。 正是在这样的背景下&#xff0c;检索增强生成技术&#xff08;Retrieval-Augmented…

[Python学习篇] Python循环语句

while 循环 语法&#xff1a; while 条件: 条件成立后会重复执行的代码 ...... 示例1&#xff1a;死循环 # 这是一个死循环示例 while True:print("我正在重复执行")示例2&#xff1a;循环指定次数 i 1 while i < 5:print(f"执行次数 {i}")…

学了这篇面试经,轻松收割网络安全的offer

网络安全面试库 吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 0x1 应届生面试指南 网络安全面…

如何利用智能家居打造一个“会呼吸的家”?一体化电动窗帘

如何利用智能家居打造一个“会呼吸的家”&#xff1f;一体化电动窗帘 史新华 隐藏式一体化智能电动窗帘与市面上其他窗帘不同的是&#xff0c;电机内置于轨道之中&#xff0c;一体化&#xff0c;美观、安静、滑动顺畅。 每次都会自动打开和关闭&#xff0c;相当漂亮。 众多家庭…

javaWeb项目-ssm+vue在线购物系统功能介绍

本项目源码&#xff1a;java-ssmvue在线购物系统的设计与实现源码说明文档资料资源-CSDN文库 项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;sprin…

网络基础OSI国际互联

这里所指的网络是计算机网络&#xff0c;由许许多多的不同的网络设备以及电子设备构建的一个ip的网络&#xff0c;这个就是工作对象 网络是随着计算机的出现&#xff0c;军事沟通 出现的问题&#xff1a;物理层设备&#xff0c;总线&#xff0c;共享设备&#xff0c;会产生冲突…

【前端速通系列|第一篇】ES6核心语法

文章目录 1.ES6简介2.let和const3.解构4.链判断5.参数默认值6.箭头函数7.模板字符串8.Promise9.Async函数10.Await关键字11.模块化 1.ES6简介 ES6 是 ECMAScript 2015 的缩写&#xff0c;是 ECMAScript 语言标准的第6个版本。ECMAScript 是 JavaScript 语言的国际标准化组织制…

jpg图片下载后如何转换格式?方法揭秘(全)

在互联网浏览中&#xff0c;我们经常下载到各种各样的图片文件&#xff0c;而JPEG&#xff08;JPG&#xff09;是其中一种常见的格式。尽管JPEG在保持图像质量的同时能够有效地压缩文件大小&#xff0c;但有时我们可能需要将下载的JPEG图片转换为其他格式&#xff0c;以满足不同…

Python基于 Jupyter Notebook 的图形可视化工具库之ipysigma使用详解

概要 在数据科学和网络分析中,图(Graph)结构是一种常用的数据结构,用于表示实体及其关系。为了方便图数据的可视化和交互操作,ipysigma 提供了一个基于 Jupyter Notebook 的图形可视化工具。通过 ipysigma,用户可以在 Jupyter Notebook 中创建、编辑和展示图结构,方便进…

流体性能测试实验室建设需求参考

在第一次提需求的时候&#xff0c;很多人感到很迷茫&#xff0c;这里以某流体实验室建设为例&#xff0c;进行说明&#xff0c;希望抛砖引玉&#xff0c;能起到一点参考作用。 一、项目概述 学校拟建一座流体性能测试实验室&#xff0c;旨在兼顾教学和企业科研能力。实验室需…

开源大模型的新星:ChatGPT-Next-Web 项目解析与推荐

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

物业客服“逆袭”记:从被质疑到被点赞,只因用了这款小程序

作为物业服务企业来说&#xff0c;物业客服人员是物业公司的核心部门。客服人员不仅仅要进行各部门之间的工作协调沟通&#xff0c;而且也是物业与业主沟通的主要桥梁。但是&#xff0c;往往客服人员经常被传统的报修方式所困扰&#xff0c;导致业主对物业客服人员存在质疑与谩…

机器视觉:光源的类型以及主要参数

光源在机器视觉中起着决定性的作用&#xff0c;决定了视觉算法的复杂性&#xff0c;也决定了视觉系统的精度和稳定性。光源用于突出目标物体的特征&#xff0c;增加目标物体与背景的对比度&#xff0c;克服环境光线的干扰。光源的选择与打光方式在视觉系统的前期评估中非常重要…

蓝牙体脂秤智能化方案模组

蓝牙体脂秤原理跟普通电子体重秤的原理差不多&#xff0c;都是利用压力传感器及芯片设计完成功能的实现。蓝牙电子秤的外形和地面有四个接触点&#xff0c;四个接触点那里都放着一种压力传感器&#xff0c;压力传感器将人体的重量转换成电信号&#xff0c;后经过芯片设计完成处…

【网络编程开发】7.TCP可靠传输的原理

7.TCP可靠传输的原理 TCP实现可靠传输的原理主要基于序列号和确认应答、超时重传、滑动窗口、连接管理机制以及拥塞控制等多重机制。 TCP&#xff08;Transmission Control Protocol&#xff09;&#xff0c;即传输控制协议&#xff0c;是网络通信中的一种重要协议&#xff0…

数据结构和矩阵细节用法:double、cell和complex #matlab

矩阵建立 建立矩阵用[]&#xff1b; 矩阵的同一行内的元素用逗号或者空格隔开&#xff1b; 矩阵的不同行的元素用分号隔开 eg. 矩阵 A 1 2 3 4 5 6 7 8 9 在matlab中矩阵A表示为&#xff1a; clc;clear; A[1,2,3;4,5,6;7,8,9]; %或者A[1 2 3;4 5 …

C++的异常捕获

目录 C语言的异常处理方式 C的异常处理方式 异常的抛出与捕获 抛出与捕获原则 异常安全 C语言的异常处理方式 1、终止程序 常见形式&#xff1a;assert 缺陷&#xff1a;太过强硬&#xff0c;如果发生内存错误&#xff0c;或者除0语法错误等就会直接终止程序 2、返回错误码…

for 、while循环

练习1&#xff1a;输入一个数&#xff0c;判断是否是完美数 完美数&#xff1a;正序和逆序的结果一致 练习2&#xff1a; * ** *** **** 练习3&#xff1a; **** *** ** * 练习4&#xff1a;输入一个数&#xff0c;计算最大公约数&#xff0c;以及最小公倍数 练习5&#xff…

Unity引擎在UI上渲染粒子播放

大家好&#xff0c;我是阿赵。   在UI上面显示粒子特效&#xff0c;如果把粒子系统直接拖到Canvas里面&#xff0c;会存在很多问题&#xff0c;比如层级问题、裁剪问题等。这里分享一种用MaskableGraphic和UIVertex来显示粒子特效的方法。 一、 MaskableGraphic和UIVertex简…

微服务之网关

1、什么是微服务网关&#xff1f; 微服务网关是一种用于管理和调度微服务的工具或服务&#xff0c;它在微服务架构中扮演着关键角色。以下是关于微服务网关的清晰概述&#xff1a; 概念定义&#xff1a; 微服务网关是微服务架构中的前端门户&#xff0c;它提供了一个统一的入…