Multi-Head RAG:多头注意力的激活层作为嵌入进行文档检索

2024-06-19 15:20

本文主要是介绍Multi-Head RAG:多头注意力的激活层作为嵌入进行文档检索,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

现有的RAG解决方案可能因为最相关的文档的嵌入可能在嵌入空间中相距很远,这样会导致检索过程变得复杂并且无效。为了解决这个问题,论文引入了多头RAG (MRAG),这是一种利用Transformer的多头注意层的激活而不是解码器层作为获取多方面文档的新方案。

MRAG

不是利用最后一个前馈解码器层为最后一个令牌生成的单个激活向量,而是利用最后一个注意力层为最后一个令牌生成的H个单独的激活向量,然后通过矩阵Wo(结合所有注意头结果的线性层)对其进行处理。

可以公式化为一组嵌入S = {ek∀k},其中ek = headk(xn),它是输入的最后一个标记xn上的所有注意力头的输出的集合

由于多个头的处理不会改变输出向量的大小,因此具有与标准RAG相同的嵌入空间,这种使用解码器块的多头注意力部分的激活作为嵌入有助于捕获数据的潜在多面性,并且不增加空间需求

MRAG处理流程

1、数据准备

对于MRAG,每个多向嵌入由h个单向嵌入组成,每个单向嵌入都指向原始文本块,从而产生包含h个嵌入空间的数据存储,每个嵌入空间捕获文本的不同方面。

2、构建multi-aspect嵌入

MRAG可以利用任何具有多头注意力的嵌入模型来为给定的输入文本构建嵌入,论文采用了MTEB排行榜中的两个嵌入模型,即SFR-Embedding-Model和e5-mistral-7b-instruct。实验结果表明,从最后一个多头注意力中提取的嵌入在实验环境下效果最好

3、查询执行

使用选定的嵌入模型生成输入查询嵌入,然后使用一种特殊的multi-aspect检索策略在数据存储中找到最近的多嵌入及其对应的文本块。检索到的数据可以有选择地使用新的度量来评估它与需求的对应程度。

MRAG检索策略包括三个步骤:

a)分配重要性分数

在数据准备过程中,为所有h个嵌入空间分配重要性分数,捕获不同空间(以及相应的头)可能与所使用的数据或多或少相关的分数,下面的算法详细介绍了重要性分数的构造:

一个给定的头部hi的得分si由两个部分组成,ai和bi。

ai是向量空间i中所有嵌入的L2范数的平均值;它代表了给定头部的重要性:规范越大,对该注意头部的关注就越多。

bi是向量空间I中所有嵌入(或随机抽样子集,如果想减少预计算时间)之间余弦距离的平均值。bi是测量向量空间i的“扩展”:Bi越大,该空间中不同嵌入之间的平均角度越大

将si作为ai·bi乘积这样可以确保获得奖励平均关注度高、平均传播度高的头,并且同时惩罚平均关注度低或平均传播度低的头(ai和bi都是适当缩放的)

b)获取最接近的文本块

在查询执行期间,MRAG首先对每个嵌入空间分别应用传统的RAG检索,为每个嵌入空间返回c个最接近的文本块列表(总共h个列表)。然后使用一种特殊的投票策略,用预先计算的重要性分数,从所有hc块中选出前k个块。将来自各个嵌入空间的文本块的构造列表合并到top k块的单个列表中,使用的算法概述如下:

向量空间i的列表i中的每个文本块在这个列表中有一个特定的位置,我们用p表示这个位置。计算块的权重为si·2−p,其中si是前面定义的空间i的重要性分数。乘以2然后减p会降低不太相关的文本块的重要性。

得到权重后,所有列表中的所有块都使用它们的权重排序,前k个块形成最终列表。

实验指标

数据集构建

通过选择n个类别创建查询,从每个选择的类别中抽样一个文档(确保总体上没有重复),然后使用LLM (GPT-3.5 Turbo)生成一个结合这些文档的故事。构建了包含1、5、10、15和20个方面的25个查询(总共125个查询)

给LLM的一个示例查询需要从10个不同的类别中检索10个文档,如下图的顶部所示

指标计算

对于查询Q、使用的检索策略S和要检索的n个类别中的n个文档,Qrel表示应该为Q检索的理想文档集。然后,S(Q, n)是实际检索的文档集。

当RAG方案没有检索所需的确切文档,但它仍然成功地从同一类别检索其他文档时,定义了另一个度量,称为类别检索成功率。它与上面提到的度量相同,但有一点不同:S(Q, n)现在是属于理想所需文档类别的所有检索文档的集合。

最后将这两个指标结合起来,得到加权检索成功率。通过改变w,用户可以调整精确文档匹配和类别匹配的重要性

指标评价

论文使用两个主要基线:标准RAG和Split RAG

标准RAG表示传统的RAG管道,其中每个文档使用最后一个解码器层的激活作为其嵌入;Split RAG是标准RAG和MRAG的混合,它以与MRAG相同的方式拆分最后一个解码器层的激活,并应用投票策略。Split RAG的目的是显示MRAG的好处是来自于使用多头输出作为嵌入,而不仅仅是使用多个嵌入空间。Fusion RAG也被认为是一种可选的机制,可以利用它来进一步增强MRAG,但要付出额外令牌查询成本。

下面的箱线图显示了MRAG和标准RAG之间超过25个查询的检索成功率,其中每个查询包括10个不同的方面

上面的结果表明,MRAG始终优于标准RAG(对于精确的文档匹配,平均检索成功率增加> 10%)。此外,检索性能在类别匹配上的提升更为显著(检索成功率平均提升> 25%)。对于获取的特定数量的文档,MRAG的直方图显示了更好的检索成功率分布(在所有25个查询中)。

下图显示了当我们改变查询中出现的方面的数量时,MRAG相对于标准RAG的加权性能改进

对于这两种模型,MRAG的平均性能始终比标准RAG高出10-20%,下表显示了单个方面的25个查询的检索成功率(精确的文档匹配)

将MRAG与Fusion RAG相结合,使用LLM(额外令牌成本)进行更准确检索的RAG方案。

Fusion RAG使用LLM创建关于RAG查询的固定数量的问题。每个问题通过使用标准RAG的嵌入模型分别应用

下图显示了SFR嵌入模型的MRAG相对于标准RAG的相对检索改进(蓝色图),以及Fusion MRAG相对于Fusion RAG和MRAG的相对检索改进(红色图)。

Fusion RAG和Fusion MRAG的性能都优于标准 RAG,平均精度提高了10 - 30%

论文还介绍了来自内部行业数据分析项目的两个实际用例,法律文件的合成和工业事故原因的分析下图显示了在构建法律文件(左)和发现工业事故原因(右)的两个实际工作,MRAG和Split RAG相对于标准RAG的检索成功率的平均改进。

总结

论文提出了一种利用解码器模型的多头注意层而不是传统的前馈层激活的新方案——多头RAG (MRAG)。通过综合评估方法,包括具体的度量、合成数据集和实际用例,证明了MRAG的有效性。

MRAG在检索文档的相关性有了显著改善,与传统RAG基线相比,性能提高了20%,并且它不需要额外的LLM查询、或者多个模型实例、也不会增加的存储。

https://avoid.overfit.cn/post/aa09461b01a04958a8783872587166eb

作者:SACHIN KUMAR

这篇关于Multi-Head RAG:多头注意力的激活层作为嵌入进行文档检索的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1075405

相关文章

idea lanyu方式激活

访问http://idea.lanyus.com/这个地址。根据提示将0.0.0.0 account.jetbrains.com添加到hosts文件中,hosts文件在C:\Windows\System32\drivers\etc目录下。点击获得注册码即可。

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述。以下是从不同角度对气象站的种类和应用范围的介绍: 一、气象站的种类 根据用途和安装环境分类: 农业气象站:专为农业生产服务,监测土壤温度、湿度等参数,为农业生产提供科学依据。交通气象站:用于公路、铁路、机场等交通场所的气象监测,提供实时气象数据以支持交通运营和调度。林业气象站:监测林区风速、湿度、温度等气象要素,为林区保护和

企业如何进行员工的网络安全意识培训?

企业网络安全意识培训的重要性         企业网络安全意识培训是提升员工网络安全素质的关键环节。随着网络技术的快速发展,企业面临的网络安全威胁日益增多,员工的网络安全意识和技能水平直接关系到企业的信息安全和业务连续性。因此,企业需要通过系统的网络安全意识培训,提高员工对网络安全的认识和防范能力,从而降低企业在面对潜在安全风险时的损失和影响。 企业网络安全意识培训的方法         企

基于Java医院药品交易系统详细设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W+,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码+数据库🌟 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人  Java精品实战案例《600套》 2023-2025年最值得选择的Java毕业设计选题大全:1000个热

工程文档CAD转换必备!在 Java 中将 DWG 转换为 JPG

Aspose.CAD 是一个独立的类库,以加强Java应用程序处理和渲染CAD图纸,而不需要AutoCAD或任何其他渲染工作流程。该CAD类库允许将DWG, DWT, DWF, DWFX, IFC, PLT, DGN, OBJ, STL, IGES, CFF2文件、布局和图层高质量地转换为PDF和光栅图像格式。 Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格

使用JWT进行安全通信

在现代Web应用中,安全通信是至关重要的。JSON Web Token(JWT)是一种流行的安全通信方式,它允许用户和服务器之间安全地传输信息。JWT是一种紧凑的、URL安全的表示方法,用于在两方之间传输信息。本文将详细介绍JWT的工作原理,并提供代码示例帮助新人理解和实现JWT。 什么是JWT? JWT是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间以JSO

神经网络第一篇:激活函数是连接感知机和神经网络的桥梁

前面发布的文章介绍了感知机,了解了感知机可以通过叠加层表示复杂的函数。遗憾的是,设定合适的、能符合预期的输入与输出的权重,是由人工进行的。从本章开始,将进入神经网络的学习,首先介绍激活函数,因为它是连接感知机和神经网络的桥梁。如果读者认知阅读了本专题知识,相信你必有收获。 感知机数学表达式的简化 前面我们介绍了用感知机接收两个输入信号的数学表示如下:

ccp之间是不可以直接进行+,-的,要用ccpSub和ccpAdd。

1.  http://www.cnblogs.com/buaashine/archive/2012/11/12/2765691.html  上面有好多的关于数学的方面的知识,cocos2dx可能会用到的 2.学到了   根据tilemap坐标得到层上物体的id int oneTiled=flagLayer->tileGIDt(tilePos);