论文阅读_优化RAG系统的检索

news2024/7/4 23:21:56
英文名称: The Power of Noise: Redefining Retrieval for RAG Systems
中文名称: 噪声的力量:重新定义RAG系统的检索
链接: https://arxiv.org/pdf/2401.14887.pdf
作者: Florin Cuconasu, Giovanni Trappolini, Federico Siciliano, Simone Filice, Cesare Campagnano, Yoelle Maarek, Nicola Tonellotto, Fabrizio Silvestri
机构: 罗马大学, 以色列海法技术创新研究所, 比萨大学日期: 1 May 2024(v4)

读后感

在 RAG 系统中,检索和生成是独立进行的,使用的模型也不相同,检索和生成中任意一个部分效果不好都会影响最终结果。在检索部分,不一定必须使用稠密模型,因此作者考虑了密集和稀疏的情况;在生成部分,实验使用的是本地部署的较轻量级模型如 llama2 等,这也部分影响了效果。

作者的角度很有趣:查询所给出的答案可能是准确的、无关的或相关但不包含答案的。其中,相关但不包含答案的反而可能会导致最终结果偏差。在人的决策中也有类似情况:不怕完全不靠谱的信息,半真半假的更容易误导;如果只给我一个答案可能我还能不确定,如果附加一个完全不靠谱的答案与之对比,我反而更加确定。

粗看之下,在许多文档中定位与问题相关的文档,使用相似度方法似乎没有问题。至少它可以筛掉大多数完全无关的文档。然而,高相关性并不一定意味着包含正确答案。这可能需要生成模型来判断其中的逻辑关系,还需要考虑数据中根本不包含答案的情况。

摘要

目标:研究 RAG 系统中的检索策略,优化信息检索(IR)组件以提升生成式 AI 解决方案的效果。

方法:通过分析段落在提示上下文中的相关性、位置和数量等因素,评估不同检索策略对 RAG 系统中 LLM 表现的影响。

结果:发现检索时高得分但不包含答案的文档会降低 LLM 效果,而添加随机文档能将 LLM 准确性提高最多 35%。

1 引言

RAG 系统由两个基本组件组成:检索器和生成器。检索器负责调用外部信息检索(IR)系统,这些系统可以是密集型或稀疏型,并将选定的结果传递给生成器组件。本研究重点关注 RAG 的 IR 方面。

将查询返回的数据分为三类,并研究每个类别所带来的影响:

  • 相关文档:包含可直接回答查询或提供相关信息的文档。

  • 分散注意力的文档:虽然不直接回答查询,但在语义或上下文上与主题相关联。

  • 随机文档:与查询没有任何关系,可以看作是检索过程中的信息噪音。

2 RAG

2.1 开放领域的问答

开放领域问答(OpenQA)是一项任务,旨在开发能够为自然语言中提出的各种问题提供准确且上下文相关答案的系统。这些系统不受特定领域或预定义数据集的限制。

常见的方法采用两步架构,通常包括检索器和推理器(通常是生成器)。首先,检索器找到与问题相关的文档,然后推理器生成答案。

2.2 检索器

检索器的目标是找到一个足够小的文档子集,以便推理者能正确回答查询。

密集检索需要将文本数据转化为向量表示,通常通过神经网络实现,常用的是基于 Transformer 的编码器,如 BERT。密集检索器处理查询 q 和潜在源文档 d,生成对应的查询嵌入和每个文档的嵌入。嵌入过程可以表示为:

图片

其中,Encoderq 和 Encoderd 是基于神经网络的编码器,可能共享权重或架构,旨在将文本数据映射到向量空间中。一旦生成嵌入,检索过程就包括计算查询嵌入和每个文档嵌入之间的相似性。最常用的方法是使用点积得分。这个分数通过衡量嵌入向量空间中查询和文档的相似性来量化每个文档与查询的相关性,得分越高表示相关性越大。

2.3 推理器

推理器指的一般是生成器,它负责合成一个答案,通常通过调用 LLM 模型实现。在 RAG 中,生成语言模型将查询 q 和检索到的文档 Dr作为输入,通过顺序预测序列中的下一个词元来生成响应。

图片

本文的目标是找到最好的文档集 D 检索器应该为生成器提供材料,以最大限度地提高系统的有效性。

3 实验方法

3.1 自然问题数据集

自然问题(NQ)数据集是从 Google 搜索数据中派生的真实世界查询的大规模集合。数据集中的每个条目都包含一个用户查询和一个相应的维基百科页面,其中包括答案。NQ-open 数据集是 NQ 数据集的一个子集。不同之处在于,它取消了将答案链接到特定维基百科段落的限制,从而模仿了类似网络搜索的更通用的信息检索场景。最终的数据集包含 21,035,236 个文档,训练集有 72,209 个查询,测试集有 2,889 个查询。

3.2 文档类别

按文档与查询的相关性,将文档分为四种类型:

  • 黄金文档:用星表示。这类文档是数据集中的原始上下文,包含答案的维基百科页面段落,并且与给定查询的上下文相关。

  • 相关文档:用锁链图标表示。这些文档类似于黄金文档,它们包含正确答案,并在上下文中对回答查询有用。它们提供了与查询正确且相关的其他信息源。黄金文件也是一种相关文件。

  • 分散注意力的文档:用断开的锁链表示。这类文档有高检索分数但不包含答案。

  • 随机文档:用色子表示。随机文档既不与查询相关,也不包含答案。有助于评估模型处理完全不相关信息的能力。

3.3 文档检索

实验使用了 Contriever 作为默认的检索器。Contriever 是一种基于 BERT 的密集检索器,通过对比损失进行无监督训练。为了提高在包含约 2100 万文档的语料库中的相似性搜索效率,我们采用了 FAISS IndexFlatIP 索引系统。每个文档和查询的嵌入是通过对模型最后一层隐藏状态的平均值得到的。

3.4 LLM 的输入

收到查询后,检索器会根据相似度度量从语料库中选择排名前 的文档。这些文档连同任务说明和查询一起,构成了 LLM 生成响应的输入。LLM 的任务是从提供的文档中提取一个最多包含五个词元的查询响应。如图所示,这个问题回答不正确。

图片

3.5 测试的 LLM

在生成部分,测试了 base 和 instruct 版本,最终选用 instruct 版本,测试模型包含:Llama2-7B,Falcon-7B,Phi-2-2.7B,MPT-7B。

3.6 预价正确性

在 NQ-open 数据集中,每个查询可能有多个潜在答案,这些答案通常是同一概念的不同变体。在评估 LLM 生成的响应准确性时,采用一种检查响应中是否包含预定义正确答案的方法。这种评估方式是二进制的:如果存在正确答案,则认为准确,否则不准确。然而,有时这种方法无法识别同义的不同短语。

4 结果

4.1 分散注意力的文档的影响

随着上下文中分散注意力的文档数量增加,准确性会明显下降。这种模式在所有大型语言模型(LLMs)的情况下都能观察到。即使仅仅添加一个分散注意力的文档,也会导致准确性的急剧下降。

在现实世界的信息检索(IR)环境中,相关但不包含答案的文档很常见。实证分析表明,引入语义一致但不相关的文档会增加复杂性,可能误导 LLMs 做出正确响应。

如图所示:I 表示任务指令,Q 表示问题,星号表示黄金文档,断开的锁链表示分散注意力的文档。

图片

从注意力的热力图中也可以看出,文本相似但不包含答案的文档分走了黄金文档的注意力

图片

(小编的理解:如果深度学习作为检索器,检索和生成模型基本上是类似的。在检索过程中找到文档的逻辑,同样适用于生成模型的逻辑。也就是说,在生成过程中,这些文档也被重视,从而分散了对黄金文档的注意力。)

为了验证这一假设,作者使用了 ADORE(Zhan 等,2021),一种通过“动态困难负样本”训练的先进检索器,来选择干扰文档。结果显示,情况依然相同。因此可以得出结论,区分相关信息和分散注意力的信息是一个难题,无法简单地通过改变现有的密集检索方法来解决。

4.2 黄金文档位置的影响

通过在上下文中移动黄金文件的位置来研究其对模型有效性的影响。将黄金文件的位置定义为 Far、Mid 和 Near,具体示例见表中的图示。

图片

当黄金文档靠近查询时,准确性较高;当黄金文档离查询最远时,准确性较低;而当黄金文档位于上下文中间时,准确性最低。

(小编说:离得近更容易被注意到,而在中间时最不容易被忽略,这和长上下文模型的大海捞针结果也是一致的,可能由于训练数据的原因,让模型认为开头结尾的信息更为重要)

4.3 噪音的影响

评估 RAG 系统对噪声的鲁棒性。取黄金文件,并从语料库中随机挑选一定数量的文件添加到其中。性能没有下降,反而在最佳设置下有所改善。此外,不同模型表现出不同的行为。值得注意的是,与分散注意力的文档相比,这种性能下降的严重程度要低得多。

4.4 RAG 实践

给定一个查询,检索一组可能相关或分散注意力的文档。然后,我们将随机文档加入到这组检索到的文档中。使用 NQ 开放数据集的测试集。Llama2 的实验结果可以在表 3 左侧查看。

图片

研究结果表明,无论检索到的文档数量如何,在填充上下文长度之前添加随机文档几乎总是有益的。特别是在检索到 4 个文档的情况下,准确率可提高 0.07(+35%)。

4.4.1 测试稀疏检索器

使用稀疏检索方法(特别是 BM25)复制了实验。相应的结果列在表 3 的右侧,随机文档也带来了提升。值得注意的是,使用 BM25 平均可使准确度提高 3-4 个百分点。这种改进归因于 BM25 检索到的文件质量。

(小编说:BM25 和 Contriever 各有优劣。BM25 是与数据集相关的,而 Contriever 虽然也是基于训练数据,但它的表示更通用。这至少表明,深度学习嵌入方法并不总是优于统计方法)。

4.4.2 提升随机性

随机文档从语气和风格截然不同的语料库中抽取,即 Reddit Webis-TLDR-17 数据集。观察到准确性有显著提高。即使将由随机单词组成的无意义句子视为随机文档,性能仍然有所提升。

4.5 权衡检索

在相关和完全不相关的文件数量之间似乎存在权衡。具体来说,实验发现,当最初检索到一组最少的文档,然后用随机文档补充,直到达到上下文限制时,可以获得最佳效果。检索 3 到 5 个文档是最有效的选择。添加更多文档会增加包含过多分散注意力内容的风险,从而适得其反。

对于如何解释加入噪声反而会提升模型效果,先前的研究提出,在某些情况下,过低的注意力熵会导致 LLM 产生退化输出,从而导致性能急剧下降。这些事件被称为熵坍缩。这里对比了加入随机文档前后的熵情况。引入随机文档时,系统的熵增加了 3 倍。

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

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

相关文章

echarts实现堆叠图加折线混合图

vue组件实现代码&#xff1a; <template><div :id"chartId" style"width: 100%; height: 300px"></div> </template><script>import * as echarts from "echarts";export default {name: "doubleStackLine&…

基于SpringBoot漫画网站系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

istitle()方法——判断首字母是否大写其他字母小写

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 istitle()方法用于判断字符串中所有的单词首字母是否为大写而其他字母为小写。istitle()方法的语法格式如下&#xff1a; str.istitle() …

Vite: 高阶特性 Pure ESM

概述 ESM 已经逐步得到各大浏览器厂商以及 Node.js 的原生支持&#xff0c;正在成为主流前端模块化方案。 而 Vite 本身就是借助浏览器原生的 ESM 解析能力( type“module” )实现了开发阶段的 no-bundle &#xff0c;即不用打包也可以构建 Web 应用。不过我们对于原生 ESM 的…

数据倾斜优化:Hive性能提升的核心

文章目录 1. 定义2. 数据倾斜2.1 Map2.2 Join2.3 Reduce 3. 写在最后 1. 定义 数据倾斜&#xff0c;也称为Data Skew&#xff0c;是在分布式计算环境中&#xff0c;由于数据分布不均匀导致某些任务处理的数据量远大于其他任务&#xff0c;从而形成性能瓶颈的现象。这种情况在H…

==和equals的区别(面试题)

和equals有什么区别 对于基本数据类型&#xff0c;比较的是值是否相等&#xff0c;对于引用类型则是比较的地址是否相等&#xff1b;对于equals来说&#xff0c;基本数据类型没有equals方法&#xff0c;对于引用类型equals比较的是引用对象是否相同 那针对以上结论&#xff0c…

RabbitMq教程【精细版一】

一、引言 模块之间的耦合度过高&#xff0c;导致一个模块宕机后&#xff0c;全部功能都不能用了&#xff0c;并且同步通讯的成本过高&#xff0c;用户体验差。 RabbitMQ引言 二、RabbitMQ介绍 MQ全称为Message Queue&#xff0c;消息队列是应用程序和应用程序之间的通信方法。…

python工作目录与文件目录

工作目录 文件目录&#xff1a;文件所在的目录 工作目录&#xff1a;执行python命令所在的目录 D:. | main.py | ---data | data.txt | ---model | | model.py | | train.py | | __init__.py | | | ---nlp | | | bert.py | …

DIVE INTO DEEP LEARNING 56-60

文章目录 56 Gated Recurrent Unit(GRU)56.1 Motivation: How to focus on a sequence56.2 The concept of doors56.3 Candidate hidden state56.4 hidden state56.5 summarize56.6 QA 57 Long short-term memory network57.1 Basic concepts57.2 Long short-term memory netwo…

Linux 进程信号篇

文章目录 1. 生活中的信号2. 信号的概念3. 信号的产生3.1 系统调用3.2 软件条件3.2 异常3.3 Core和Term的区别 4. 信号的保存5. 信号的处理5.1 地址空间的进一步理解5.2 键盘输入数据的过程5.3 理解OS如何正常运行5.3.1 OS如何运行5.3.2 如何理解系统调用 5.4 内核态和用户态 6…

YOLO-V1

一、YOLO-V1整体思想与网络架构 1.1 YOLO算法整体思路解读 YOLO-V1: 经典的one-stage方法 把检测问题转化成回归问题&#xff0c;一个CNN就搞定了&#xff01; 可以对视频进行实时检测&#xff0c;应用领域非常广&#xff01; 核心思想&#xff1a; 1、预测一张图像中有哪些物…

AI大模型的崛起:第四次工业革命的前奏?

在当今这个信息爆炸的时代&#xff0c;人工智能&#xff08;AI&#xff09;大模型的崛起引起了广泛的关注和讨论。有人将其视为第四次工业革命的前奏&#xff0c;然而&#xff0c;这真的可能吗&#xff1f;本文将探讨这一问题&#xff0c;并对中国AI大模型的发展进行简要分析。…

鸿蒙开发Ability Kit(程序框架服务):【向用户申请授权】

向用户申请授权 当应用需要访问用户的隐私信息或使用系统能力时&#xff0c;例如获取位置信息、访问日历、使用相机拍摄照片或录制视频等&#xff0c;应该向用户请求授权&#xff0c;这部分权限是user_grant权限。 当应用申请user_grant权限时&#xff0c;需要完成以下步骤&a…

推荐系统三十六式学习笔记:原理篇.模型融合14|一网打尽协同过滤、矩阵分解和线性模型

目录 从特征组合说起FM模型1.原理2.模型训练3.预测阶段4.一网打尽其他模型5.FFM 总结 在上一篇文章中&#xff0c;我们讲到了使用逻辑回归和梯度提升决策树组合的模型融合办法&#xff0c;用于CTR预估&#xff0c;给这个组合起了个名字&#xff0c;叫“辑度组合”。这对组合中&…

鸿蒙开发设备管理:【@ohos.multimodalInput.inputEventClient (注入按键)】

注入按键 InputEventClient模块提供了注入按键能力。 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。本模块接口均为系统接口&#xff0c;三方应用不支持调用。 导入模块 import inputEventCli…

小白学webgl合集-绘制有透视颜色不一样的立方体

效果 原理 结合透视矩阵和视觉矩阵进行绘制 知识点 01透视矩阵 透视矩阵将视图空间中的坐标转换为裁剪空间中的坐标&#xff0c;使得更远的物体看起来更小。 function perspectiveMatrix(fov, aspect, near, far) {const f 1.0 / Math.tan(fov / 2);const nf 1 / (near …

C++旋转点坐标计算

/// 获取A点绕B点旋转P度后的新坐标/// </summary>/// <param name"Angle">角度</param>/// <param name"CirPoint">圆心坐标</param>/// <param name"MovePoint">移动点的坐标</param>/// <param…

(单机架设教程)3D剑踪

前言 今天给大家带来一款单机游戏的架设&#xff1a;3D剑踪 如今市面上的资源参差不齐&#xff0c;大部分的都不能运行&#xff0c;本人亲自测试&#xff0c;运行视频如下&#xff1a; 3D剑踪 搭建教程 此游戏架设不需要虚拟机&#xff0c; 我们先解压 “3D剑踪.zip” &…

【ArcGIS AddIn插件】【可用于全国水旱灾害风险普查】全网最强洪水淹没分析插件-基于8邻域种子搜索算法-有源淹没分析算法

最近有很多GIS小伙伴咨询我关于基于8邻域种子搜索算法的有源淹没分析插件的使用方法及原理&#xff0c;咱们通过这篇文章给大家详细介绍下这款插件的运行机制。 一、插件类型及适用版本 本插件属于ArcGIS AddIn工具条插件&#xff0c;基于ArcGIS Engine10.2.2的开发环境开发的&…

某度,网盘免费加速,复活!

哈喽&#xff0c;各位小伙伴们好&#xff0c;我是给大家带来各类黑科技与前沿资讯的小武。 有小伙伴反馈之前如下夸克网盘脚本的加速方法失效&#xff0c;小武今天测试&#xff0c;依旧正常使用&#xff01; 百度/迅雷/夸克&#xff0c;网盘免费加速&#xff0c;已破&#xf…