尽管经典的检索增强生成(RAG)通过将检索到的文档纳入大型语言模型(LLM)的上下文中来提供更准确和相关的响应,从而增强了模型的功能,但它在处理多样化内容查询时表现出局限性。
此类查询在实际应用中非常常见,尤其是在需要从截然不同的多个信息源中获取答案时,RAG方案往往难以应对。这是因为这些文档的嵌入在嵌入空间中可能相距较远,传统的检索方法很难同时准确捕获所有相关内容,导致查询结果不够全面或准确。尤其是在面对一些复杂问题时,经典RAG的能力受限,无法充分利用多样化的检索结果来生成最佳回答。
为了解决这一问题,多头RAG(Multi-Head RAG,简称MRAG) 对经典RAG进行了深度优化。在MRAG架构中,Transformer的多头注意力机制取代了传统RAG依赖的解码器层激活,通过并行处理多个文档的嵌入来提升模型对复杂查询的处理能力。
此外,MRAG还具有高度的扩展性,适用于更广泛的应用场景。无论是复杂的用户交互问题、跨学科的信息查询,还是需要结合多方数据的商业智能分析,MRAG都能提供更加准确和全面的解决方案。因此,MRAG不仅优化了RAG的基础能力,还为大语言模型的实际应用开辟了新的可能性,使其在复杂任务中的表现更加智能化和精细化。
例如,在处理“亚历山大大帝开了哪辆车?”这类查询时,RAG需要同时检索历史人物和汽车制造相关的文档。然而,由于这两类文档的嵌入可能在空间中相距甚远,经典RAG可能无法高效地同时检索到两者。而MRAG通过多头注意力机制并行处理这些内容,不仅提高了检索效率,还增强了模型整合多样化信息的能力。
多头注意力机制 的引入,赋予了MRAG能够同时关注不同来源信息的独特优势。它可以在面对多重嵌入时,以更灵活的方式组织和利用数据,从而生成更精准的答案。这使得MRAG在应对多维度、多任务的复杂场景中表现出色。
MRAG 存储数据的方式与标准 RAG 不同,标准 RAG 中单个嵌入指向单个文本块 。对于 MRAG,每个多方面嵌入都由 h 个单方面嵌入 组成,每个嵌入都指向原始文本块 。因此,数据存储包含 h 个嵌入空间,每个空间捕获文本的不同方面。这一关键功能使 MRAG 能够比较捕获数据多个方面的多个嵌入空间中的查询和文本块。
为了评估 MRAG 在多方面查询上的表现,并将其与现代 RAG 方案进行比较,我们需要 (1) 捕获多方面的文档数据集,(2) 涉及LLM多方面并需要从多方面数据集中检索文档的查询,以及 (3) 评估 RAG 方案检索此类多方面数据的指标。现在我们来描述这三个要素。在第 4 节中,我们还简要讨论了实际数据和使用的查询。
下面介绍MRAG的使用。
项目地址:https://github.com/spcl/MRAG
检索增强生成 (RAG) 对于从大型语言模型获取准确和相关输出的访问民主化至关重要LLMs。提高这些输出的精度和相关性是一个关键目标,尤其是考虑到需要检索多个提高这些输出的准确性和相关性是内容截然不同的关键目标文档。这些复杂的查询在各个领域中都很常见,但现有的 RAG 解决方案很困难,因为必要文档的嵌入在嵌入空间中可能相距很远,这使得它们的检索变得复杂。
为了解决这一差距,我们引入了多头 RAG (MRAG),这是一种新颖的方案,它利用了解码器模型的多头注意力层的激活,而不是传统的前馈层。这种方法基于不同的注意力头可以捕获数据的不同方面的洞察力。
通过使用这些不同的激活,MRAG 创建的嵌入可以更好地表示数据项和查询的多方面性质,从而提高复杂、多方面查询的检索准确性。这个想法的简单性和多功能性使其能够无缝集成到任何现代 RAG 管道或数据分析框架中。
我们全面的评估方法,包括特定指标、合成数据集和真实世界的用例,证明了 MRAG 的有效性。结果表明,检索到的文档的相关性有了显著提高,与现代 RAG 基线相比,性能提高了 20%。这验证了 MRAG 有效处理复杂多方面查询的潜力。
此外,MRAG 被证明既经济高效又节能。它不需要额外的LLM查询、多个模型实例、增加存储空间或通过嵌入模型进行多次推理传递。这种效率,加上增强的检索精度,使 MRAG 成为 RAG 系统领域的LLMs宝贵进步。通过解决查询中多方面的挑战,MRAG 为不同行业中更可靠、更准确的LLM应用铺平了道路。