奇思妙想:多头RAG

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技术跟踪。若对于具身智能感兴趣的请移步具身智能专栏。技术宅麻烦死磕AI架构设计。

RAG

检索增强生成 (RAG) 是一种通过集成文档检索系统来增强大型语言模型 (LLMs) 功能的方法。这种集成允许LLMs从外部来源获取相关信息,从而提高生成的响应的准确性和相关性。这种方法解决了传统LLMs方法的局限性,例如需要广泛的培训以及提供过时或不正确信息的风险。RAG的主要优势在于它能够将模型的输出建立在可靠的来源中,从而减少幻觉并确保最新的知识,而无需昂贵的持续培训。

RAG 面临的一个重大挑战是处理需要具有不同内容的多个文档的查询。此类查询在各个行业中都很常见,但会带来困难,因为所需的文档可能具有截然不同的嵌入,因此很难准确检索所有相关信息。这个问题需要一个能够有效地从多个来源获取和组合信息的解决方案。在复杂的场景中,如化工厂事故,从与设备维护、天气状况和工人管理等各个方面相关的文档中检索数据对于提供全面的答案至关重要。

现有的 RAG 解决方案通常使用 Transformer 模型的最后一层解码器模块的嵌入来检索文档。但是,此方法需要充分处理多方面查询,因为它难以检索涵盖明显不同内容方面的文档。当前的一些技术包括 RAPTOR、Self-RAG 和 Chain-of-Note,它们专注于提高检索准确性,但无法有效处理复杂的多方面查询。这些方法旨在优化检索数据的相关性,但需要帮助来处理多方面查询所需的文档内容的多样性。

MRAG

来自苏黎世联邦理工学院、Cledar、巴斯夫欧洲公司和华沙理工大学的研究人员推出了多头 RAG (MRAG) 来解决多方面查询问题。这种新颖的方案利用了 Transformer 模型的多头注意力层的激活,而不是最后一层解码器的激活。研究团队设计了MRAG,利用不同的注意力头来捕获各种数据方面,从而提高复杂查询的检索准确性。<若读者对于多头注意力机制有所忘记的话,可以移步“深入注意力机制”。> 通过利用多头注意力机制,MRAG创建了代表数据在各个维度的嵌入,增强系统跨不同内容区域获取相关信息的能力。

MRAG的关键创新是使用来自多个注意力头的激活来创建嵌入。Transformer 模型中的每个注意力头都可以学习捕获不同的数据方面,从而产生表示数据项和查询各个方面的嵌入。与标准RAG相比,此方法使 MRAG能够更有效地处理多方面查询,而不会增加空间要求。MRAG在数据准备阶段使用来自多头注意力层的激活来构建嵌入。在查询执行期间,这些多方面嵌入允许从不同的嵌入空间中检索相关的文本块,从而解决多方面查询的复杂性。

MRAG背后的关键思想很简单,利用最后一个注意层为最后的Token生成的H个独立激活向量,而不是利用最后一个解码器的前馈层为最后的Token生成的单个激活向量。

对于输入的最后一个Token(𝑥𝑛),在还没有传送到前馈层前,利用多个注意力头的激活向量构造嵌入:S={ek∀k},其中ek = headk(𝑥𝑛),S是输入的最后一个Token(𝑥𝑛)上注意头的所有输出集合。

由于使用多个头进行处理不会改变输出向量的大小,因此S具有与标准 RAG 相同的空间要求。但是,由于在将单独的嵌入与Wo混合之前捕获它们,推测这些向量可以提供有关输入不同部分的关注内容信息,从而有助于捕获更多维的信息。如下图所示,传统的RAG将每个文档块放在一个空间,而MRAG则是将原来的空间切分为更小的子空间。

既然将文本的索引切分到多个子空间,而检索策略需要升级,进而在给定用户查询下从数据库中选择最接近的文本块。通常,MRAG检索策略包括三个步骤。第一,在数据准备期间,为所有h个嵌入空间分配重要性分数。直观地说,这些分数反映了不同空间可能与所用数据的重要性。

头部h的得分 si 由两部分组成,ai 和 bi。向量空间i指的是被刚才算法切分形成的h个子空间的某一个。ai 是向量空间i中所有嵌入的 L2 范数的平均值;它表示给定头部的重要性:范数越大,对该注意力头部的关注就越多。bi 是向量空间i中所有嵌入之间的余弦距离的平均值。直观地讲,bi 是测量向量空间 i 的“分散”。将 si导出为 ai · bi 的乘积可确保奖励具有高平均注意力和高平均分散率的子空间,但同时惩罚相反的子空间。

第二,在查询执行期间,MRAG 对每个嵌入空间分别应用传统的RAG检索。这将返回每个嵌入空间的c个最接近的文本块列表(总共h*C块)。这里需要使用投票策略,使用预先计算的重要性分数从所有 h*c个块中挑选出总体排名前k个。

本次的实验将MTEB排行榜上的两个嵌入模型视为候选模型。SFR-embedding-Model和e5-mistral-7b-instruct均基于Mistral 7B架构,每个多头注意力有32 个解码器块和32个注意力头。

上面是一个示例,最上面为查询的Prompt模板。第二行左一为知识库,左二和左三分别为传统的RAG和MRAG。针对两种算法,实验的结果标记在PROMPT中。

对比结果会发现,MRAG 显著提高了检索相关性,在获取多方面文档方面,其性能比标准 RAG 基线高出 20%。该评估使用了合成数据集和真实世界的用例,证明了 MRAG 在不同场景中的有效性。例如,在涉及多方面维基百科条目的测试中,MRAG 的相关性比标准 RAG 基线提高了 20%。此外,MRAG在法律文件合成和化工厂事故分析等实际任务中的表现也展示了其实际优势。在法律文件综合任务中,MRAG从各种法律框架中检索上下文相关文件的能力尤其值得称赞。

此外,MRAG的优势不仅限于检索精度。该方法经济高效且节能,不需要额外的LLM查询、多个模型实例、增加的存储或对嵌入模型进行多次推理传递。这种效率与增强的检索准确性相结合,使MRAG 成为RAG系统领域的宝贵进步LLMs。MRAG 可以与现有的RAG框架和基准测试工具无缝集成,为复杂的文档检索需求提供多功能且可扩展的解决方案。

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

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

相关文章

c语言利用openssl实现简单客户端和服务端(观察记录层最大长度)

文章目录 前言一、客户端实现二、服务端实现总结 前言 本文是使用openssl111w实现的简单客户端和服务端&#xff0c;主要用于观察openssl一个记录层数据包的大小。 一、客户端实现 #include <stdio.h> #include <stdlib.h> #include <string.h> #inc…

bugku---misc---赛博朋克

1、下载附件解压之后是一个txt文本&#xff0c;查看文本的时候看到头部有NG的字样 2、把txt改为png后缀得到一张图片 3、binwalk没发现奇怪的地方&#xff0c;分离出来还是图片 4、stegslove分析&#xff0c;切换图片没有发现奇怪地方 5、将通道rgb置为0。出现了flag但是flag不…

6.13长难句打卡

Hard times may hold you down at what usually seems like the most inopportune time, but you should remember that they won’t last forever. 艰难时刻可能会在你最不顺心的时刻让你低迷&#xff0c;但请相信&#xff0c;它们不会永远持续下去。

179.二叉树:合并二叉树(力扣)

代码解决 /*** 二叉树节点的定义。* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, Tre…

opencv 通过滑动条调整阈值处理、边缘检测、轮廓检测、模糊、色调调整和对比度增强参数 并实时预览效果

使用PySimpleGUI库创建了一个图形用户界面(GUI),用于实时处理来自OpenCV摄像头的图像。它允许用户应用不同的图像处理效果,如阈值处理、边缘检测、轮廓检测、模糊、色调调整和对比度增强。用户可以通过滑动条调整相关参数。 完整代码在文章最后,可以运行已经测试; 代码的…

第3章 Unity 3D着色器系统

3.1 从一个外观着色器程序谈起 新建名为basic_diffuse.shader的文件&#xff0c;被一个名为basic_diffuse.mat的材质文件所引用&#xff0c;而basic_diffuse.mat文件则被场景中名为Sphere的game object的MeshRenderer组件所使用。 basic_diffuse.shader代码文件的内容如下所示…

【GIS】全球范围气象站点的逐年平均气温数据(1929-2023年)

数据简介&#xff1a;气象数据包括气象站点温度、湿度、光照等等。提供自1929-2023年以来的全球逐年平均气温数据气象数据下载。数据源为NCDC&#xff08;美国国家气候数据中心&#xff0c;National Climatic Data Center&#xff09;&#xff0c;隶属于NOAA&#xff08;美国国…

探索JavaScript逆向工程与风控等级

探索JavaScript逆向工程与风控等级 在当今的网络安全领域&#xff0c;JavaScript逆向工程&#xff08;简称JS逆向&#xff09;已成为许多开发者和安全专家关注的焦点。JS逆向主要涉及对JavaScript代码的分析与理解&#xff0c;以发现其内部逻辑、数据流及潜在漏洞。这种技术常用…

大型语言模型(LLMs)的后门攻击和防御技术

大型语言模型&#xff08;LLMs&#xff09;通过训练在大量文本语料库上&#xff0c;展示了在多种自然语言处理&#xff08;NLP&#xff09;应用中取得最先进性能的能力。与基础语言模型相比&#xff0c;LLMs在少样本学习和零样本学习场景中取得了显著的性能提升&#xff0c;这得…

SCI二区|鲸鱼优化算法(WOA)原理及实现【附完整Matlab代码】

目录 1.背景2.算法原理2.1算法思想 3.结果展示4.参考文献5.代码获取 1.背景 2016年&#xff0c;S Mirjalili受到自然界座头鲸社会行为启发&#xff0c;提出了鲸鱼优化算法&#xff08;Whale Optimization Algorithm, WOA&#xff09;。 2.算法原理 WOA模拟了座头鲸的社会行为…

桌面应用开发框架比较:Electron、Flutter、Tauri、React Native 与 Qt

在当今快速发展的技术环境中&#xff0c;对跨平台桌面应用程序的需求正在不断激增。 开发人员面临着选择正确框架之挑战&#xff0c;以便可以高效构建可在 Windows、macOS 和 Linux 上无缝运行的应用程序。 在本文中&#xff0c;我们将比较五种流行的桌面应用程序开发框架&…

Excel中如何用公式列出包含特定文本的所有单元格?

如下图&#xff0c;希望用公式得到“以分布式开始”的G列数据。 一、高版本公式 FILTER(E2:E9,LEFT(E2:E9,3)"分布式") 用LEFT函数提取数据的左侧3个字符&#xff0c;是“分布式”的就是以它开始的数据了&#xff0c;用FILTER函数筛选出来即可。 二、低版本公式 如…

Nginx+KeepAlived高可用负载均衡集群的部署

目录 一.KeepAlived补充知识 1.一个合格的群集应该具备的特点 2.健康检查&#xff08;探针&#xff09;常用的工作方式 3.相关面试问题 问题1 问题2 二.Keepealived脑裂现象 1.现象 2.原因 硬件原因 运用配置原因 3.解决 4.预防 方法1 方法2 方法3 方法4 三.…

CXL协议中 Register Locator DVSEC详解

✨ 前言&#xff1a; Register Locator DVSEC&#xff08;Designated Vendor-Specific Extended Capability&#xff09;是一种PCI Express&#xff08;PCIe&#xff09;配置空间的能力&#xff0c;专为CXL&#xff08;Compute Express Link&#xff09;技术中的设备设计。这包…

[DDR5 Jedec] 读操作 Read Command 精讲

依公知及经验整理&#xff0c;原创保护&#xff0c;禁止转载。 专栏 《深入理解DDR》 Read 读取命令也可以视为列读取命令。当与正确的bank地址和列地址结合使用时&#xff0c;通过激活命令&#xff08;行访问&#xff09;移动到检测放大器中的数据&#xff0c; 现在被推送到数…

python 基础--数据类型、基本数据类型之间的相互转换

文章目录 一、python 数据类型介绍二、基本数据类型2.1 Numbers&#xff08;数字类型&#xff09;2.2 String&#xff08;字符串类型&#xff09;2.2.1 不同引号字符串之间的区别2.2.2 转义字符和 python 输出函数2.2.3 字符串的相关操作&#xff08;字符串拼接、占位符、字符串…

用Python代码锁定Excel单元格以及行和列

Excel能够帮助用户高效地组织数据&#xff0c;还支持复杂的公式计算和数据分析。而随着团队协作的日益频繁&#xff0c;保护数据的准确性和完整性变得尤为重要。在Excel表格中&#xff0c;我们可以通过锁定特定的单元格或区域&#xff0c;防止对单元格内容进行随意修改&#xf…

pycharm上传文件到服务器python代码部署到服务器

文章目录 step1&#xff1a;【Tools】—-【Deployment】—-【Configuration】step2&#xff1a;【 】—-【SFTP】—-【输入服务器名称】step3&#xff1a;【 Deployment path】—-【输入相对地址】step4&#xff1a;【 选中项目右击】—-【Deployment】—-【upload to xxxxx】…

css实现优惠券样式

实现优惠券效果&#xff1a; 实现思路&#xff1a; 需要三个盒子元素&#xff0c;使用 css 剪裁&#xff0c;利用 ellipse 属性&#xff0c;将两个盒子分别裁剪成两个半圆&#xff0c;位置固定在另一个盒子元素左右两边适当位置上。为另一个盒子设置想要的样式&#xff0c;圆角…

强烈推荐的JetBrains家族的插件

Rainbow Brackets 该插件提供了不同颜色的对应的括号格式&#xff0c;便于在开发中检查缺少括号的情况&#xff0c;效果如下 CodeGlance Pro 该插件是代码缩略图插件&#xff0c;方便在开发中快速定位代码位置&#xff0c;也可作为滚动条使用&#xff0c;CodeGlance Pro搜不到…