链载Ai

标题: 论文解读:微软发布 Graph RAG 的下一代 KBLAM 方案,利用注意力机制进行搜索排序 [打印本页]

作者: 链载Ai    时间: 昨天 20:40
标题: 论文解读:微软发布 Graph RAG 的下一代 KBLAM 方案,利用注意力机制进行搜索排序


微软研究院和约翰霍普金斯大学的研究团队在这篇论文中提出了一种名为 KBLAM (Knowledge Base augmented Language Model) 的新方法,看起来是Graph RAG 的进一步升级,解决了一些传统 RAG 的弊端。

从工程角度看,KBLAM 的核心创新在于将知识库中的信息压缩成"知识卡片"(knowledge tokens),并直接植入到 LLM 的注意力层中。这些知识卡片本质上是通过预训练的句子编码器和线性适配器生成的键值向量对,每个向量对的大小与单个 LLM token 的 KV 缓存大小相同。

这种设计带来了三个关键突破:

  1. 消除了外部检索模块:与传统的 RAG (Retrieval Augmented Generation) 方法不同,KBLAM 不需要单独的检索器来选择相关文档。相反,它通过一种特殊的矩形注意力机制,让模型在生成回答时直接访问所有知识卡片。

  2. 实现了线性计算复杂度:与将整个知识库放入上下文窗口的方法相比(即 in-context learning),KBLAM 的计算和内存开销随知识库大小线性增长,而非二次方增长。这使得它能够在单张 80GB GPU 上处理超过 10,000 条知识三元组,即使是在只有 8K 上下文窗口的 8B 参数模型上。

  3. 支持动态更新:由于每个知识卡片是独立编码的,KBLAM 允许在不重新训练或微调模型的情况下动态添加、删除或更新知识。

从实验结果来看,KBLAM 在问答和开放式推理等任务上表现出色,同时提供了可解释的洞察,让我们能够理解模型如何使用增强的知识。特别是在内存使用方面,当知识库规模从 100 条三元组扩展到 10,000 条时,in-context learning 的内存消耗会迅速超出 GPU 容量,而 KBLAM 的内存消耗仅从约 25GB 增加到约 50GB,远低于 80GB 的 GPU 内存上限。

这种架构设计不仅解决了工程实践中的扩展性问题,还提供了一种更加灵活和可解释的方式来增强 LLM 的知识能力。

知识编码与压缩

前面我们了解到 KBLAM 的核心创新是将知识库压缩成"知识卡片"直接植入 LLM 的注意力层,那么这些知识卡片究竟是如何生成的呢?

KBLAM 的知识编码过程从结构化的知识三元组开始。每个三元组包含三个部分:实体名称(<name>属性(<property>值(<value>。例如,一个三元组可能是:("水母监测系统", "目标", "提供实时警报、支持远程监控、提升家庭安全")。

知识编码过程主要分为两个步骤:

  1. 基础向量生成:KBLAM 使用预训练的句子编码器(如 OpenAI 的 ada-002)将三元组的信息转换为固定长度的向量。具体来说:






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5