Query Rewriting for Retrieval-Augmented Large Language Models

news2024/10/5 11:48:20

文章目录

    • 题目
    • 摘要
    • 方法
    • 实验

题目

检索增强大语言模型的查询重写

图片名称

论文地址:https://arxiv.org/abs/2305.14283
项目地址:https://github.com/xbmxb/RAG-query-rewriting

摘要

    大语言模型(LLM)在检索--然后阅读(retrieve--then--read)管道中发挥着强大的黑盒阅读器的作用,在知识密集型任务中取得了显著进展。这项工作从查询重写的角度出发,为检索增强型 LLMs 引入了一个新的框架,即重写-检索-阅读(Rewrite-Retrieve-Read),而不是以前的检索-重写-阅读(Retrieve-then-read)。与之前侧重于调整检索器或阅读器的研究不同,我们的方法关注的是搜索查询本身的调整,因为输入文本与检索所需的知识之间不可避免地存在差距。我们首先促使 LLM 生成查询,然后使用网络搜索引擎检索上下文。此外,为了更好地将查询与冻结模块相匹配,我们为我们的管道提出了一个可训练的方案。我们采用一个小型语言模型作为可训练的重写器,以满足黑盒 LLM 阅读器的需要。通过强化学习,利用 LLM 阅读器的反馈对改写器进行训练。在下游任务、开放域质量保证和多选质量保证上进行了评估。实验结果表明性能得到了持续改善,这表明我们的框架被证明是有效的、可扩展的,并为检索增强型 LLM 带来了新的框架。

方法

    我们提出了 “重写-检索-阅读”(Rewrite-Retrieve-Read),这是一个从查询重写角度改进检索增强 LLM 的管道。下图显示了一个概览。

图片名称

    带有检索增强的任务可表示如下。给定一个知识密集型任务的数据集(如开放域 QA),D = {(x, y)i}, i = 0, 1, 2, . , N,x(如问题)是管道的输入,y 是预期输出(如正确答案)。我们的管道包括三个步骤。(i) 查询重写:根据原始输入 x 生成所需知识的查询 x˜;(ii) 检索:搜索相关上下文 doc;(iii) 阅读:理解输入和上下文 [doc, x],并预测输出 yˆ。一种直接而有效的方法是要求 LLM 重写查询,以搜索可能需要的信息。我们使用一个短促的提示来鼓励 LLM 思考,输出可以是没有、一个或多个搜索查询。


    此外,完全依赖冻结的 LLM 也有一些缺点。推理错误或无效搜索会影响性能。另一方面,检索到的知识有时会误导和损害语言模型。为了更好地与冻结模块保持一致,可以添加一个可训练模型,并通过将 LLM 读者的反馈作为奖励来调整该模型。基于我们的框架,我们进一步建议利用一个可训练的小语言模型来接管改写步骤,如上图右侧所示。可训练模型由预先训练好的 T5-large (770M) 初始化,称为可训练改写器 Gθ。重写器首先在伪数据上进行预热训练,然后通过强化学习进行持续训练。

    查询重写任务与T5等序列到序列生成模型的预训练目标有很大不同。首先,我们为查询重写任务构建一个伪数据集。受最近的蒸馏方法的启发,我们提示LLM重写训练集中的原始问题x,并收集生成的查询x~作为伪标签。然后对收集到的样本进行过滤:那些从 LLM 阅读器获得正确预测的样本被选入预热数据集,表示为 DTrain = {(x, x~)|yˆ = y}。重写器 Gθ 在 DTrain 上进行微调,以标准对数似然作为训练目标,表示为

图片名称

    预热后的重写器模型表现出适度的性能,这取决于伪数据质量和重写器能力。由于高度依赖于人工编写的提示行,x~ 可能不是最优的。重写器尺寸相对较小也是预热后性能的限制。然后我们转向强化学习,使重写器与下面的检索器和法学硕士读者保持一致。

    为了进一步微调重写器以迎合LLM读者,我们采用了策略梯度强化学习框架。任务制定 在强化学习的背景下,重写器优化被制定为马尔可夫决策过程 5 元组⟨S、A、P、R、γ⟩。

  • 状态空间 S 是受词汇和序列长度限制的有限集。
  • 动作空间 A 等于词汇表。
  • 转移概率 P 由策略网络决定,即重写器模型 Gθ。
  • 奖励函数 R 给出取决于当前状态的奖励值。策略梯度源自奖励,用作训练目标。 (v) γ 表示折扣因子。

    更具体地说,预热后的重写器 Gθ 是初始策略模型 π0。在每个步骤 t,at 的动作是根据当前状态的观察生成下一个标记 ˆ~xt,st = [x, xˆ~<t]。当生成被句子结束标记停止时,一集就结束了。完成检索和阅读后,通过评估最终输出来计算奖励,即 LLM 读者预测的分数。策略优化我们采用近端策略优化。奖励 R 的期望最大化表述为

图片名称

    其中 θ ′ 是临时固定的采样策略,并且 θ 被更新。 A表示优势函数,它是基于价值网络Vψ的估计而制定的。价值网络 Vψ 由策略网络 π0 初始化。该公式遵循广义优势估计 (GAE),其中 λ 是偏差-方差权衡参数。

图片名称

    奖励函数R反映了生成的查询的质量,需要与任务的最终评估保持一致。 x^ 被馈送到检索器和读取器以得到最终预测 y^。奖励函数的一部分是 y^ 与黄金标签 y 相比的度量(例如,预测答案的精确匹配和 F1),表示为 Rlm。此外,还添加了 KL 散度正则化,以防止模型偏离初始化太远。最终的损失函数由策略损失和价值损失组成。这里,S表示采样集,T表示步数。

图片名称

实验

    对于冻结管道,我们提示法学硕士通过少量上下文学习重写查询。我们的提示遵循[指令、演示、输入]的表述,其中输入是x。说明很简单,演示是训练集中的 1-3 个随机示例,并且在所有运行中保持不变,主要用于特定于任务的输出格式说明,即,一个简短的短语作为 HotpotQA 的答案,以及一个选项作为答案对于MMLU。对于训练方案,我们微调T5作为重写器。

    我们使用 Bing 搜索引擎作为检索器。它不需要像密集检索器那样构建候选索引,也不需要像教科书那样构建候选索引。但它允许广泛的知识范围和最新的事实性。使用 Bing API,可以通过两种方法执行检索。 (i) 对于所有检索到的网页,我们将 Bing 选择的相关句子的片段连接起来。这种方法类似于在浏览器中使用搜索引擎,输入查询并按回车键,然后收集搜索结果页面上显示的文本。 (ii) 对于检索到的网页,我们请求 URL 和解析器来获取所有文本。这类似于单击搜索结果页面上的项目。然后我们使用 BM25 保留那些具有较高相关性分数的查询,从而减少文档长度。

    阅读器是一个冻结的 LLM,我们采用了 ChatGPT(gpt-3.5-turbo)和 Vicuna-13B。它通过少量的上下文学习来进行阅读理解和预测。在我们的提示中,在简短的指导和示范之后,输入是 x 或带有检索增强的 [doc, xˆ˜]。事实证明,提示语的措辞和示范的选择都会影响情境学习的效果。由于这不是本研究的重点,我们不再关注提示语的编辑。

    保证评估使用了三个开放域 QA 数据集。(i) HotPotQA(由需要多跳推理的复杂问题组成。我们对全部测试集进行了评估。(ii) AmbigNQ提供了自然问题(NQ)的消歧版本。对于 NQ 中模棱两可的问题,会添加最小的限制条件,将其分解为几个相似但具体的问题。前 1000 个样本在测试集中进行评估。(iii) PopQA包含长尾分布,因为它比其他流行的质量保证任务包含更多低流行度知识。我们将该数据集分为 13k 个训练集和 714 个测试集。

    开放域质量保证基准是问题-答案对的集合,表示为 {(q,a)i}。我们将 ChatGPT 用于阅读器和冷冻改写器。评估指标是精确匹配(EM)和 F1 分数。对于 RL 中的奖励函数,我们使用一个指标,如果检索内容命中答案,则给予奖励;如果未命中答案,则给予惩罚,记为 Hit。总奖励是 EM、F1 和 Hit 的加权和。

图片名称
图片名称

    对于多选题质量保证,我们在大规模多任务语言理解(MMLU)(Hendrycks 等人,2021 年)上进行了评估: 该试题数据集包括 4 个类别:人文科学、STEM、社会科学和其他。每个类别分为 80% 的训练集和 20% 的测试集。多选 QA 可表述为 {(q ′ , a)i}, 其中 q ′ = [q, c0, c1, c2, c3]。官方提供的污染清单中包含的检索文件将被忽略。带有选项的问题会被改写成搜索查询。答案就是一个选项。EM 被报告为指标并用于奖励。我们使用 ChatGPT 作为冻结重写器和读取器。由于 ChatGPT 的速率限制问题,我们还使用 Vicuna-13B 作为读取器进行评估。

图片名称

    为了评估和支持我们的方法,我们采用了以下设置。(i) 直接:标准的上下文学习,无任何增强。(ii) 检索-阅读: 标准的检索增强方法。检索到的文档与问题连接在一起。(iii) 作为冻结重写器的 LLM: 我们促使一个冻结的 LLM 通过少量的上下文学习来推理和生成查询。(iv) 可训练的重写器: 应用微调后的重写器,输出查询供检索器和阅读器使用。下表列出了提示行的形式。请注意,每个任务的预测提示都是相同的。

图片名称

    在这三个数据集上,使用冻结重写器和可训练重写器,查询重写始终能带来性能提升。在 AmbigNQ 和 PopQA 中,标准检索增强了阅读器,表明有用的外部知识被检索到了。在 HotpotQA 中,标准检索损害了读者。这表明,使用复杂问题作为查询无法弥补参数知识,反而会带来噪音。这表明多跳问题不适合网络搜索引擎查询。通过增加改写步骤,分数会提高。在 PopQA 上,我们的可训练改写器超过了标准检索,但不如 LLM 改写器。这表明,查询改写的提炼效果并不理想。

图片名称

    使用 ChatGPT 作为阅读器时,可以发现查询重写提高了除社会科学类别之外的大多数类别的分数。与 ChatGPT 相比,使用 Vicuna 作为阅读器时,我们的方法在四个类别中都取得了更高的分数。这与我们的直觉相吻合,即更强大的阅读器拥有更多的参数记忆,因此更难以用外部知识来弥补。

    训练过程包括热身和强化学习两个阶段。本节展示了三个开放域质量保证数据集的验证得分,以供进一步分析。下图显示了在强化学习过程中通过训练迭代得到的度量分数。由于改写模型在 RL 之前已经在伪数据上进行了热身,因此 "0 次迭代 "时的分数表示从热身训练中获得的能力。

    可以看出,在所有数据集上,曲线都呈上升趋势,但也有一些波动。(i) 对于 HotpotQA 中的多跳问题,标准检索相对较弱。复杂问题可能不是特定的搜索查询,与重写查询的差距较大,即绿线和红线。(ii) 在 AmbigNQ 和 PopQA 上,我们的方法在多次迭代(3 或 4 次)后超过了基线。这表明在热身训练阶段,RL 训练阶段可以弥补伪数据蒸馏的不足。(iii) 特别是在 PopQA 上,可训练重写器仍然不如 LLM 重写器。这可以解释为该数据集是为自适应检索而构建的,自适应检索只使用有助于避免有害冗余检索的检索。因此,"无 "是一个可能的查询,意味着没有检索。这会导致更多的复杂性和不确定性。LLM 重写器更清楚自己作为阅读器何时需要检索,尽管重写步骤并不作为阅读器的输入上下文。

    我们计算查询 "无 "的性能。无需检索即可正确回答的问题(即 "直接 "方法)是那些不需要更多上下文的样本。将这些无需检索的问题集与改写为 "无 "查询的问题集进行比较,LLM 改写器的 F1 得分为 71.9%,T5 改写器的得分为 67.1%。如果我们将无需检索即可正确回答、但检索后出错的问题视为无检索集,那么 LLM 重写器的 F1 得分为 78.7%,T5 重写器的 F1 得分为 77.4%。

    我们提出的方法是一个管道框架,而不是端到端系统。查询重写首先影响检索上下文,然后上下文对阅读器的输出产生影响。因此,质量保证指标是间接测量。我们通过检索指标 "命中率 "来仔细观察检索上下文和阅读器的能力。文本规范化后,命中率将被计算出来,以衡量检索到的上下文是否包含正确答案。

    下表显示了 AmbigNQ 的得分。第二行中的分数是根据检索语境命中正确答案的部分样本计算得出的(在标准检索-然后阅读设置下)。这些分数显示了阅读器在检索增强后的近似上限能力,简称为 "上限 "分数。与无检索设置(第一行)相比,检索的有效性得到了证明。每种检索方法都有两种设置:(i) 收集必应片段,(ii) 通过 BM25 从 URL 中进行选择。度量指标显示,使用 BM25 进行内容选择比片段检索能检索出更好的文档,而查询重写在两种设置下都取得了进步。我们还观察到,检索器命中率的提高比阅读器的提高更显著。这与相关搜索的研究结果一致。

图片名称

    为了直观地展示查询重写如何对检索到的上下文和预测性能产生影响,我们在下图中举例比较了原始问题和查询。在示例 1 中,原始问题询问玛丽-盖伊-寇松夫人的小女儿与某两位演员共同主演的一部电影。查询 1 和查询 2 都将关键字 "电影 "放在前面,紧跟着玛丽-盖伊-寇松夫人的小女儿。通过这两个查询,可以检索到女演员夏洛特-卡尔索普及其电影信息,并包含答案。第二个例子是来自 LLM 重写器的查询失败,但来自 T5 的查询却得到了正确答案。在查询 1 中,数字 2000 被误解,而查询 2 则将 200 部电影放在一起,避免了无意义的检索。例 3 是多选题。该查询简化了背景,增强了关键词社区规划器。检索背景主要是关于社区规划简介,其中答案环境出现了多次。

图片名称

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

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

相关文章

Hack The Box-Blazorized

总体思路 Blazor JWT->SPN劫持->登录脚本劫持->DCSync 信息收集&端口利用 nmap -sSVC blazorized.htbStarting Nmap 7.94SVN ( https://nmap.org ) at 2024-07-01 02:37 EDT Nmap scan report for blazorized.htb (10.10.11.22) Host is up (0.30s latency). N…

【网络安全】修改Host文件实现域名解析

场景 开发一个网站或者服务&#xff0c;需要在本地测试时&#xff0c;可以将线上的域名指向本地开发环境的IP地址。从而模拟真实环境中的域名访问&#xff0c;方便调试和开发。 步骤 1、以管理员身份打开命令提示符 2、编辑hosts文件&#xff1a; 输入以下命令打开hosts文…

云卓SKYDROID-H12PRO——只有你想不到的,没有我们做不到的

H12PRO采用高通八核处理器&#xff0c;搭载安卓嵌入式系统&#xff0c;采用先进的OFDM技术&#xff0c;和超级协议栈。让图像更加清晰&#xff0c;延迟更低&#xff0c;距离更远&#xff0c;抗干扰性更强&#xff0c;并支持1080P视频传输。支持SIM、数字摄像头、串口、s.bus、网…

SQL注入实战

1、orderBy报错注入 某大学 www.target.com?orderBy1 注入为orderBy注入&#xff0c;将orderby更改为id测试时并不能造成报错回显故不能当注入点 正常状态下 经过测试可知共14列&#xff0c;orderBy15时报错&#xff0c;由于列名可控?orderby$id 这里使用XPath报错注入&a…

放大器的输入电容Cin对放大电路的影响

1、OPA859构成的放大电路的设计 图中OPA859的增益G设定为1.16 &#xff0c;OPA859的增益带宽积GBP 900M , 放大器的带宽BW GBP / Acl 900 / 1.16 775.86M。 图&#xff1a;OPA859放大电路 由于需要在放大电路上加带宽的限制&#xff0c;所以在OPA859放大电路上有个低通限…

Java + MySQL 实现存储完整 Json

Java + MySQL 实现存储完整 Json 一、应用场景二、数据库配置三、后端代码配置1、实体类2、Service 实现类3、xml 文件四、测试1、新增接口2、查询接口3、数据表内容一、应用场景 将前端传过来的 Json 完整存储到 MySQL 中,涉及技术栈为 Java、MyBatis、MySQL。 注意:MySQL…

idea xml ctrl+/ 注释格式不对齐

处理前 处理后 解决办法 取消这两个勾选

LabVIEW代码性能优化

优化LabVIEW代码以提高软件性能是确保系统高效运行的关键。通过分析代码结构、数据管理、并行处理、内存使用和硬件资源的有效利用&#xff0c;我们可以从多个角度提升LabVIEW程序的执行速度和稳定性。 代码结构优化 模块化编程 将复杂的程序分解成多个子VI&#xff0c;每个子V…

Linux系统中交叉编译opencv库

目标&#xff1a;将opencv进行交叉编译&#xff0c;使其能在rk3326板子上运行使用。 环境&#xff1a; ubuntu&#xff1a;18.04 opencv:4.5.4 opencv源码从挂网下载&#xff1a;opencv源码下载地址 交叉编译链&#xff1a;gcc-arm-10.3-linux-gun 一.环境准备 1.交叉编译链我…

论文学习——使用基于多项式拟合的预测算法求解动态多目标问题

论文题目&#xff1a;Solving dynamic multi-objective problems using polynomial fitting-based prediction algorithm 使用基于多项式拟合的预测算法求解动态多目标问题&#xff08;Qingyang Zhang , Xiangyu He,Shengxiang Yang , Yongquan Dong , Hui Song , Shouyong Ji…

shopify后台设置为中文

shopify官网&#xff1a;https://link.juejin.cn/?targethttps%3A%2F%2Fshopify.dev%2F 1、点击右上角头像 2、选择个人资料 3、找到Language设置 开发者 1、创建开发商店 2、 3、点击左侧导航在线商店&#xff0c;点击右上角查看你的商店。在线商店链接为https://[商店名…

【FPGA 学习与实践】<初阶> 项目周计划

第1-2周&#xff1a;基础项目 - 4位加法器和计数器 目标&#xff1a;掌握Verilog基本语法和模块设计。 第1周&#xff1a; 学习Verilog的基本语法和结构&#xff08;模块、端口、数据类型&#xff09;。设计并实现一个4位加法器。编写测试平台&#xff08;Testbench&#xff0…

38、shell之免交互

免交互 交互&#xff1a;我们发出指令控制程序的运行&#xff0c;程序在接收到指令之后按照指令的效果做出对应的反应。 免交互&#xff1a;间接的&#xff0c;通过第三方的方式把指令传送给程序&#xff0c;不用直接的下达指令。 一、Here Document 免交互&#xff1a; 这…

谈谈在不同公司中的SAP职位

今天反客为主&#xff0c;聊一下这个HR的话题&#xff0c;考虑到SAP职位的专业性&#xff0c;感觉还是有必要谈一谈这个话题。最近跟几位HR的小伙伴聊了一下&#xff0c;讨论了下不同公司的SAP职位的招聘要求&#xff0c;感觉还是有那么几个存在的问题&#xff1a; 追求完美的…

goframe框架规范限制(but it should be named with “Res“ suffix like “XxxRes“)

背景&#xff1a; 首页公司最近要启动一个项目&#xff0c;公司主要业务是用java开发的&#xff0c;但是目前这个方向的项目&#xff0c;公司要求部署在主机上&#xff0c;就是普通的一台电脑上&#xff0c;电脑配置不详&#xff0c;还有经常开关机&#xff0c;所以用java面临…

Python实现万花筒效果:创造炫目的动态图案

文章目录 引言准备工作前置条件 代码实现与解析导入必要的库初始化Pygame定义绘制万花筒图案的函数主循环 完整代码 引言 万花筒效果通过反射和旋转图案创造出美丽的对称图案。在这篇博客中&#xff0c;我们将使用Python来实现一个动态的万花筒效果。通过利用Pygame库&#xf…

WebStorm配置路径别名(jsconfig.json)

项目是 ViteVueTs 新建一个 jsconfig.json文件 {"compilerOptions": {"baseUrl": ".","paths": {"/*": ["./src/*"]}},"exclude": ["node_modules", "dist"] }然后在 vite.confi…

LLM-Transformer:经典与前沿方法详解

LLM-Transformer&#xff1a;经典与前沿方法详解 前言 大规模语言模型&#xff08;LLM&#xff09;是当前自然语言处理&#xff08;NLP&#xff09;领域的核心技术&#xff0c;而Transformer架构作为LLM的基础&#xff0c;极大地推动了这一领域的发展。本文将详细介绍LLM-Tra…

网页计算器的实现

简介 该项目实现了一个功能完备、交互友好的网页计算器应用。只使用了 HTML、CSS 和 JavaScript &#xff0c;用于检验web前端基础水平。 开发环境&#xff1a;Visual Studio Code开发工具&#xff1a;HTML5、CSS3、JavaScript实现效果 功能设计和模块划分 显示模块&#…

ASP.NETMVC-简单例子-数据库查询+razor使用+项目发布

环境&#xff1a; win10&#xff0c;SQL Server 2008 R2 参考&#xff1a; asp.net mvc框架之EF的使用 - black娃 - 博客园 https://www.cnblogs.com/fjiqiang/p/11131365.html 目录 数据库查询要求思路操作 razor使用项目发布要求实现 数据库查询 要求 从服务器的数据库中查…