[论文笔记]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进行重写。

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

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

相关文章

Java二维数组的定义以及使用

二维数组 1.二维数组的定义格式 1.概述:数组中的套多个数组 2.定义格式a.动态初始化数据类型[][] 数组名 new 数据类型[m][n]数据类型 数组名[][] new 数据类型[m][n]数据类型[] 数组名[] new 数据类型[m][n]m:代表的是二维数组的长度n:代表的是二维数组中每一个一维数组的…

20240607在ubuntu下解压缩7z的压缩包文件

20240607在ubuntu下解压缩7z的压缩包文件 2024/6/7 10:26 百度&#xff1a;ubuntu 7z解压缩 在Ubuntu中&#xff0c;可以使用7z命令来解压.7z文件。首先&#xff0c;确保你已经安装了p7zip-full包&#xff0c;如果没有安装&#xff0c;可以使用以下命令安装&#xff1a; sudo …

力扣每日一题 6/11

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 419.甲板上的战舰[中等] 题目&#xff1a; 给你一个大小为 m x n 的矩阵 b…

图形和插图软件Canvas X Pro 20 Build 914

Canvas X Pro是一款功能强大、用途广泛的Windows软件,旨在处理技术图形和可视化,该程序结合了创建矢量和光栅图形的工具,这使其成为需要创建高质量技术插图和演示文稿的工程师、设计师、科学家和其他专业人士的理想选择。 Canvas X Pro的主要功能之一是支持处理大型和复杂的…

Diffusers代码学习-ControlNet(Inpaint)

对于Inpaint&#xff0c;需要一个初始图像、一个蒙版图像和一个描述用什么替换蒙版的提示词。ControlNet模型允许添加另一个控制图片来调节模型。让我们用Inpaint蒙版来调整模型。这样&#xff0c;ControlNet可以使用修复掩模作为控件来引导模型在蒙版区域内生成图像。 # 以下代…

如何轻松解决自养号测评中的买家签收问题?

在当今日益繁荣的跨境电商领域&#xff0c;自养号测评已成为众多卖家提升销量与排名的关键策略。然而&#xff0c;在这条道路上&#xff0c;买家签收难题却像是一座难以逾越的山峰&#xff0c;让不少卖家感到困扰。本文将深入探讨如何巧妙攻克这一难题&#xff0c;为自养号测评…

贪 吃 蛇

简介 简易贪吃蛇&#xff0c;使用 javax.swing 组件构建游戏界面&#xff0c;通过监听键盘按键实现游戏操纵。 功能设计 按1 - 开始游戏按2 - 重新开始按3 - 暂停/继续按Esc-退出游戏统计吃到的苹果个数&#xff08;得分&#xff09;难度控制&#xff0c;得分超过阈值时难度…

[总线]AMBA总线架构的发展历程

目录 引言 发展历程 第一代AMBA&#xff08;AMBA 1&#xff09; 第二代AMBA&#xff08;AMBA 2&#xff09; 第三代AMBA&#xff08;AMBA 3&#xff09; 第四代AMBA&#xff08;AMBA 4&#xff09; 第五代AMBA&#xff08;AMBA 5&#xff09; AMBA协议简介 ASB&#x…

用 Kotlin 多平台开发构建跨平台应用程序:深入探索 KMP 模板工程

用 Kotlin 多平台开发构建跨平台应用程序&#xff1a;深入探索 KMP 模板工程 Kotlin 多平台开发 (KMP) 是一种强大的工具&#xff0c;可用于构建跨平台移动、桌面和 Web 应用程序。它提供了一种统一的代码基础&#xff0c;使开发人员能够高效地针对多个平台开发应用程序。 KM…

【工具】新手如何正确使用Pycharm?

1. 什么是JetBrains Toolbox JetBrains Toolbox是一个管理工具&#xff0c;用于安装、更新和管理JetBrains开发工具的所有版本。它可以简化多个IDE的管理&#xff0c;并确保你总是使用最新版本的软件。 2. 安装JetBrains Toolbox 步骤1&#xff1a;下载Toolbox 访问JetBrai…

演出门票小程序开发

一、实时票务信息更新的重要性 在演出票务市场&#xff0c;票务信息的实时性对于消费者来说至关重要。一旦票务信息出现滞后或错误&#xff0c;不仅可能导致消费者错过心仪的演出&#xff0c;还可能引发一系列不必要的纠纷和投诉。因此&#xff0c;演出门票小程序通过引入实时…

外汇天眼:跟单社区or资金盘 几招教你快速识别

今年有不少外汇跟单社区伙同黑平台收割投资人跑路事件&#xff0c;应天眼老粉要求&#xff0c;今天写一篇与跟单社区相关的内容&#xff0c;教大家如何辨别正规的外汇跟单社区与资金盘诈骗。 相信做过几年外汇的人&#xff0c;应该对跟单社区多少有所耳闻。但外汇跟单社区究竟…

物联网学习小记

https://www.cnblogs.com/senior-engineer/p/10045658.html GOSP: 提供类似Qt的API接口&#xff0c;仅需要几百KB的硬件资源&#xff08;比Qt小的多&#xff09;&#xff0c;能运行在Qt不支持的低配置硬件上&#xff08;对Qt生态形成补充&#xff09;&#xff0c;适用于嵌入式…

python-找第一个只出现一次的字符

[题目描述] 给定一个只包含小写字母的字符串&#xff0c;请你找到第一个仅出现一次的字符。如果没有&#xff0c;输出 no。输入&#xff1a; 一个字符串&#xff0c;长度小于 1100。输出&#xff1a; 输出第一个仅出现一次的字符&#xff0c;若没有则输出 no。样例输入1 abcabd…

数字影像产业园:打造数字经济高地,赋能未来产业

成都国际数字影像产业园凭借其得天独厚的区位优势、完善的配套设施、先进的产业定位和便捷的交通条件&#xff0c;逐步成为成都市乃至全国数字影像、文创、媒体产业的重要聚集地。 成都国际数字影像产业园位于成都市金牛区的核心地带&#xff0c;其主导产业为数字影像、文创、媒…

模型的手工下载技巧-代码自动批量下载模型文件

之前分享过通过镜像网站手工下载模型文件的技巧&#xff08;见这里模型的手工下载技巧-镜像网站的使用&#xff09;。但有的时候&#xff0c;模型文件数量较多&#xff0c;一个个​手工下载非常不便。比如著名的“麦橘写实”模型。 有没有什么好办法可以把整个目录都下载下来呢…

vulhub之httpd篇

Apache 换行解析漏洞&#xff08;CVE-2017-15715&#xff09; Apache HTTPD是一款HTTP服务器&#xff0c;它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞&#xff0c;在解析PHP时&#xff0c;1.php\x0A将被按照PHP后缀进行解析&#xff0c;导致绕过一…

中电联系列三:rocket手把手教你理解中电联协议!

分享《慧哥的充电桩开源SAAS系统&#xff0c;支持汽车充电桩、二轮自行车充电桩。》 前 言 T/CEC102《电动汽车充换电服务信息交换》共分为四个部分&#xff1a; ——第1部分&#xff1a;总则&#xff1b; ——第2部分&#xff1a;公共信息交换规范&#xff1b; ——第3部分&a…

JavaScript的数据类型(基础数据类型和数据类型转换)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

【初阶数据结构】深入解析顺序表:探索底层逻辑

&#x1f525;引言 本篇将深入解析顺序表:探索底层逻辑&#xff0c;理解底层是如何实现并了解该接口实现的优缺点&#xff0c;以便于我们在编写程序灵活地使用该数据结构。 &#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &…