Query Rewriting for Retrieval-Augmented Large Language Models

文章目录

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

题目

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

图片名称

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

摘要

    大语言模型(LLM)在检索--然后阅读(retrieve--then--read)管道中发挥着强大的黑盒阅读器的作用,在知识密集型任务中取得了显著进展。这项工作从查询重写的角度出发,为检索增强型 LLMs 引入了一个新的框架,即重写-检索-阅读(Rewrite-RetrieveRead),而不是以前的检索-重写-阅读(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.mzph.cn/pingmian/37462.shtml

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

相关文章

百度智能云升级:接入33个大模型,Llama 2引领创新,103个Prompt模板上线

大家好&#xff0c;我是herosunly。985院校硕士毕业&#xff0c;现担任算法研究员一职&#xff0c;热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名&#xff0c;CCF比赛第二名&#xff0c;科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…

鉴源实验室·基于MQTT协议的模糊测试研究

作者 | 张渊策 上海控安可信软件创新研究院工控网络安全组 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 随着物联网技术的快速发展&#xff0c;越来越多的设备加入到互联网中&#xff0c;形成了庞大的物联网系统。这些设备之间的通信…

2024年每个月有哪些数学建模和数学挖掘竞赛?

文章目录 2024年每个月有哪些竞赛&#xff1f;2024年32个数学建模和数据挖掘竞赛重磅来袭&#xff01;&#xff01;&#xff01;2024年数学建模和数学挖掘竞赛时间目录汇总数学建模助手使用一月二月三月四月五月六月七月八月九月十月十一月十二月 原文&#xff1a;https://blog…

最新!最全!元启发优化算法215个测试函数综述!【免费获取论文】

目录 1.摘要2.主要内容3.参考文献4.文章获取 1.摘要 这篇综述论文旨在利用对不同基准测试函数的研究&#xff0c;评估元启发优化算法(Metaheuristic optimization algorithms, MH)的性能。MH的性能是通过不同的数学基准测试函数和各种实际工程设计问题来评估&#xff0c;这些基…

[数据集][目标检测]睡岗检测数据集VOC+YOLO格式3290张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;3316 标注数量(xml文件个数)&#xff1a;3316 标注数量(txt文件个数)&#xff1a;3316 标注…

stm32-hal库(5)--usart串口通信三种模式(主从通信)(关于通信失败和串口不断发送数据问题的解决)

问题&#xff1a; 最近发现&#xff0c;stm32cubemx最新版本f1系列的hal库&#xff08;1.85版本&#xff09;生成的hal库&#xff0c;其中stm32f1xx_hal_uart.c的库文件中&#xff0c;其串口发送接收存在一些问题&#xff1a; 1.没有使用 __HAL_LOCK 和 __HAL_UNLOCK 宏&…

开源大模型RAG企业本地知识库问答机器人-ChatWiki

ChatWiki ChatWiki是一款开源的知识库 AI 问答系统。系统基于大语言模型&#xff08;LLM &#xff09;和检索增强生成&#xff08;RAG&#xff09;技术构建&#xff0c;提供开箱即用的数据处理、模型调用等能力&#xff0c;可以帮助企业快速搭建自己的知识库 AI 问答系统。 开…

vue使用glide.js实现轮播图(可直接复制使用)

效果图 可以实现自动轮播&#xff0c;3种切换方式&#xff1a;直接滑动图片、点击两侧按钮、点击底部按钮 体验链接:http://website.livequeen.top 实现 一、引入依赖 1、控制台引入依赖 npm install glidejs/glide 2、在css中引用 <style scoped> import glidejs/g…

.net 项目中配置 Swagger

一、前言 二、Swagger 三、.net 项目中添加Swagger 1、准备工作 &#xff08;1&#xff09;.net项目 &#xff08;2&#xff09;SwaggerController &#xff08;3&#xff09;XML文档注释 2、安装Swagger包 3、 添加配置swagger中间件 &#xff08;1&#xff09;添加S…

uniapp, ‍[⁠TypeError⁠]‍ “Failed to fetch dynamically imported module“ 报错解决思路

文章目录 1. 背景2. 报错3. 解决思路4. 思考参考1. 背景 最近基于uniapp开发一款设备参数调试的APP软件,在使用第三方插件的过程中,出现下面的报错。 2. 报错 [plugin:vite:import-analysis] Cannot find module ‘D:/leaning/uniapp/demo/jk-uts-udp示例/uni_modules/uts-…

对于CDA一级考试该咋准备??!

一、了解考试内容和结构 CDA一级考试主要涉及的内容包括&#xff1a;数据分析概述与职业操守、数据结构、数据库基础与数据模型、数据可视化分析与报表制作、Power BI应用、业务数据分析与报告编写等。 CDA Level Ⅰ 认证考试大纲:https://edu.cda.cn/group/4/thread/174335 …

C++精解【9】

文章目录 大整数GMP概述GMP安装 [cygwin](https://cygwin.com/install.html)安装 gmpexample Eigen基本属性和运算 大整数GMP 概述 GMP GMP是一个用于任意精度算术的免费库&#xff0c;可对有符号整数、有理数和浮点数进行操作。除了运行GMP的机器的可用内存所暗示的精度外&…

expandtabs()方法——tab符号转为空格

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 expandtabs()方法把字符串中的tab&#xff08;\t&#xff09;符号转为空格&#xff0c;tab&#xff08;\t&#xff09;符号默认的空格数是…

简单科普-GPT到底是什么?

1.ChatGPT ChatGPT&#xff08;全名&#xff1a;Chat Generative Pre-trained Transformer&#xff09;&#xff0c;是OpenAI研发的一款聊天机器人程序 &#xff0c;于2022年11月30日发布 。ChatGPT是人工智能技术驱动的自然语言处理工具&#xff0c;它能够基于在预训练阶段所见…

MATLAB2024a下的神经网络聚类工具箱聚类

1 打开神经网络聚类工具箱GUI界面 图1-1 2 导入训练数据 图2-1 导入训练集如图2-2&#xff0c;图2-3、图2-4所示 图2-2 图2-3 图2-4 如图2-4&#xff0c;确认无误点击确定 3 模型训练 如图3-1&#xff0c;调整验证集与测试集比例及映射大小后点击”训练“&#xff0c;开始训练…

uview文本框组件计数count报错u--textarea

报错内容&#xff1a; [Vue warn]: Error in render: “TypeError: Cannot read property ‘length’ of null” found in —> at uni_modules/uview-ui/components/u-textarea/u-textarea.vue at uni_modules/uview-ui/components/u–textarea/u–textarea.vue mp.runtime.…

浪潮信息AIStation与毕昇:让AI大模型开发变得更易用

在数字化浪潮的推动下&#xff0c;人工智能&#xff08;AI&#xff09;技术正以前所未有的速度改变着世界。近日&#xff0c;毕昇大模型应用开发平台和浪潮信息AIStation智能业务生产创新平台完成兼容性互认证。二者的融合&#xff0c;不仅简化了大模型定制开发的流程&#xff…

【进阶篇-Day6:JAVA中Arrays工具类、排序算法、正则表达式的介绍】

目录 1、Arrays工具类2、排序算法2.1 冒泡排序2.2 选择排序2.3 二分查找&#xff08;折半查找&#xff09;&#xff08;1&#xff09;概念&#xff1a;&#xff08;2&#xff09;步骤&#xff1a; 3、正则表达式3.1 正则表达式的概念&#xff1a;3.2 正则表达式的格式&#xff…

Unidbg调用-补环境V3-Hook

结合IDA和unidbg,可以在so的执行过程进行Hook,这样可以让我们了解并分析具体的执行步骤。 应用场景:基于unidbg调试执行步骤 或 还原算法(以Hookzz为例)。 1.大姨妈 1.1 0x1DA0 public void hook1() {

【项目日记(二)】搜索引擎-索引制作

❣博主主页: 33的博客❣ ▶️文章专栏分类:项目日记◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多项目内容 目录 1.前言2.索引结构2.1创捷索引2.2根据索引查询2.3新增文档2.4内存索引保存到磁盘2.5把…