现有的检索与生成(RAG)方法本身就有固有的局限性,因为它们只能在明确的查询和结构化的知识之间匹配相关性,而无法处理模糊的信息需求或非结构化的信息。
本文[1]的作者们提出了MemoRAG,一种由长期记忆增强的新型检索增强生成范式来解决这一问题。它采用了一种双系统架构,通过使用一个轻量级但具有长程记忆的LLM来形成数据库的全局记忆库,然后利用这些记忆生成初步答案,指导检索工具在数据库中找到有用信息。
主要贡献:
- 此框架引入了一个智能接口,将任务与从数据库中获取的相关知识连接起来。
- 为了评估MemoRAG的有效性,我们开发了一个名为ULTRADOMAIN的全面基准,该基准包含来自多个领域的复杂RAG任务,这些任务具有长的输入上下文(如法律、金融、教育、医疗保健、编程)。
- MemoRAG通过根据精准检索到的知识生成高质量的答案,表现出色。
- 输入序列 X 被转换成一个紧凑的内存表示 Xm,该表示从全局视角封装了高层次的语义信息
- 使用一个轻量但长程的 LLM 来形成数据库的全局内存
- 全局内存 Xm 用于生成特定任务的线索,这些线索有助于勾勒出预期的答案 Y,有效弥合原始输入上下文与真实答案之间的差距
- 基于这些由内存生成的线索,任何独立的检索器都可以用来在输入序列中定位准确的证据文本
- 随后,最终答案 Y 是基于检索到的证据文本生成的,即 Y = Θgen(Xˆ, q|θ),其中 Xˆ 包含输入查询或任务指令 q 以及检索到的上下文 Cˆ
- 生成模型可以是任何生成式 LM,并且默认情况下,MemoRAG 使用内存模型的基础 LM 进行生成,避免了加载额外的模型参数的需要
- 发布了两个记忆模型:memorag-qwen2–7b-inst 和 memoragmistral-7b-inst,分别基于 Qwen2–7B-Instruct 和 Mistral-7B-Instruct-v0.2。
- 在 MemoRAG 中,记忆模块 Θmem(·) 可以是任何设计用于高效处理非常长上下文的模型,目前系统使用了一种 token 压缩技术,使得长上下文的处理更高效。
- 这两个记忆模型支持的压缩比从 2 到 16 不等,可以处理不同长度的上下文信息。例如,当应用压缩比为 16 时,memorag-qwen2–7b-inst 可以处理多达 128K×16 个 token。
- MemoRAG 可以将各种检索方法集成到系统中,包括稀疏检索、密集检索和重排。当前的实现默认使用密集检索。
- MemoRAG 可以将任何生成式语言模型作为生成器集成进来。当前的实现支持初始化生成器来自 HuggingFace 的生成模型或通过商业 API(如 Azure 和 OpenAI)。
- 提出了一种灵活的模型架构,专门设计用于促进记忆的形成。
- 记忆模型逐步将原始输入标记压缩成一组显著较小的记忆标记,同时保留了重要的语义信息。
- 假设输入X包含n个标记,X = {x1, · · · , xn},并由基于变压器的模型Θ(·)处理。每一层的注意力交互可以表示为(公式):
其中,WQ、WK 和 WV 分别是查询、键和值投影的权重矩阵,dk 则代表键向量的维度。
- 为了实现短期记忆到长期记忆的转换,我们引入了记忆令牌xm作为LLM中的长期记忆的信息存储器。
- 假设底层的LLM模型的上下文窗口大小为l,在每个上下文窗口之后,我们添加k个记忆令牌:
- 在这些专注的交互过程中,我们初始化了另一组权重矩阵WQm,WKm和WVm,用于记忆的形成。因此,我们得到:
其中 Qm, Km 和 Vm 分别表示针对内存令牌 xm 的查询、键和值。Kmcache 和 Vmcache 可以改为之前的 KV 缓存。内存令牌 Xm 表示为 Xm = Θmem(X)。对于 l 个原始令牌 {x1, · · · , xl},经过多次注意力处理后,它们被编码为隐藏状态 X[0:l] = {x1, · · · , xl, xm1, · · · , xmk},其中 {x1, · · · , xl} 代表原始令牌的隐藏状态,而 {xm1, · · · , xmk} 代表内存令牌隐藏状态。
iv) 记忆模块的培训-
初始化另一组权重矩阵 WQm、WKm 和 WVm,专门用于将记忆令牌xm 映射为查询、键和值向量
-
新初始化的权重矩阵在训练过程中会进行更新,而底层大语言模型的参数则保持冻结状态
- 新初始化的参数将分两个阶段进行训练:
a) 预训练:
- 使用从RedPajama数据集中抽取的长文本对模型进行预训练,使得MemoRAG的记忆模块学会从原始文本中形成记忆
b) 监督调优(SFT),
- 使用特定任务的SFT(特定任务指令调整)数据使MemoRAG能够根据形成的记忆生成特定任务的提示
- MemoRAG记忆模型的训练目的也遵循这一目标,可以表述为:
- 此目标旨在最大化基于先前记忆令牌的KV缓存内容 {xm1,1, xm2,1, ..., xmi−1,ki−1} 和最近的原始令牌序列 {xi,1, xi,2, ..., xi,j−1} 的下一个标记生成的概率。
(a)模糊的需求
- 具有模糊信息需求的信息检索对标准RAG来说是个挑战,因为用户通常不会明确表达他们的意图,这需要深入的上下文理解和推理。
- 为解决这个问题,MemoRAG创建了一个跨越相关数据库的全局记忆,使其能够推断隐含查询的真正意图。
- 下表说明了MemoRAG如何处理隐含查询。
b) 带有分布式证据查询的信息搜寻
- 需要分布式证据收集的查询会增加信息检索的更多复杂性,因为这些查询需要在多个步骤和非结构化数据库中整合知识。
- MemoRAG 则利用其全局内存优势来连接和整合多个步骤中的相关信息,解决了这一问题。
- 下表显示了 MemoRAG 如何处理这类查询。
c) 信息汇总
- 信息汇总任务,如总结长文档,需要将大量的非结构化数据压缩成简洁且连贯的输出。标准的RAG系统通常难以应对这些任务,因为它们依赖于检索离散的信息片段而没有有效地整合和总结信息的机制。
- MemoRAG通过其全局内存来捕获和综合关键点,解决了这一问题。
- 下面的表格说明了MemoRAG如何处理信息汇总任务
d) 个人定制助手
- 个性化的助手任务,比如根据用户偏好推荐歌曲,需要深入了解用户的独特喜好和历史。
- MemoRAG 利用全局记忆来分析和理解用户的对话历史,这能让 MemoRAG 识别并利用关键线索,例如用户的音乐偏好、知识背景、年龄等,这些都可以从过去的互动中推断出来。
- 下表展示 MemoRAG 如何处理个性化的推荐请求。
e) 持续对话搜索
- 在长期对话搜索过程中,当前查询的语义依赖可能延伸到早期的互动中,因此,准确识别极其长的对话历史中的相关上下文变得至关重要。标准的RAG系统可能因为查询中信息需求的模糊性难以完成此任务。
- MemoRAG 通过利用其全局记忆,保持并利用对话历史的完整上下文,解决了这一挑战。
- 下表展示了 MemoRAG 如何在对话搜索环境中处理包含省略的语义查询。
- 为了评估MemoRAG与标准RAG系统在这些任务中的有效性,我们使用包括13个现有基准数据集在内的数据集来评估MemoRAG和基线模型,包括:
a) 单文档问答系统: NarrativeQA, Qasper 等
b) 多文档问答 HotpotQA, 2WikiMQA 和 MuSiQue.
c) 摘要: GovReport, MultiNews, 和 En.SUM.
d) 长篇书籍问答: 英文问答。在摘要任务中,我们使用任务说明作为假查询。
- 除了这些专门的数据集之外,我们从该库[2]收集了428本大学教科书,涵盖包括自然科学、人文学科和社会科学等在内的18个不同领域。这些教科书用于测试MemoRAG在各种主题上的多样性和适应性,这些主题可能与专门的数据集没有直接关联。
我们将 MemoRAG 与以下基线进行了比较。
a) 全量:直接将完整的内容输入到大模型中,以适应其最大长度。
b) BGE-M3: 一款通用检索工具,我们通常使用它来进行RAG。
c) Stella-en-1.5B-v5: 撰写本文时,该模型在MTEB排行榜上排名前三名,我们用它来进行标准的RAG方法。
d) RQ-RAG: RQ-RAG 促使 LLMs 将输入查询分解为几个更适合搜索的查询,这些查询通过明确重写、分解和消除歧义性来生成。相关的段落通过输入查询和细化后的查询来检索。
e) HyDE: 直接通过提供一个查询来提示大语言模型生成假文档,然后使用这些假文档检索相关段落,并在生成最终答案时参考检索到的段落。
iii) 超域领域的实验研究-
开发了一个名为ULTRADOMAIN的全面基准,该基准由来自不同领域(例如法律、金融、教育、医疗保健、编程)的复杂检索和生成(RAG)任务组成,这些任务具有较长的输入上下文。
-
为了评估MemoRAG在处理多样性和复杂任务时的泛化能力,我们在UltraDomain基准上评估了MemoRAG。
-
UltraDomain中大多数查询涉及模糊的信息需求或非结构化的知识检索挑战。
-
UltraDomain包括两种类型的数据集。
-
第一种类型包括三个数据集,其上下文长度不超过100K令牌,并且与我们的训练数据集分布相同。
-
第二种类型包括从428本英文大学教科书(例如《尼采与希腊思想》、《数学家的量子理论》)中获取的18个数据集,上下文长度高达一百万个令牌。
- 实验结果见下表
- MemoRAG 在所有数据集上均优于所有基线模型,展示了其强大的领域泛化能力。
- 直接将完整上下文输入到大模型中通常比其他 RAG 方法(如 BGE-M3、Stella-v5 和 HyDE)表现更好。这一发现揭示了标准 RAG 系统在处理长上下文和复杂问题时存在困难。
- MemoRAG 总是优于直接使用完整上下文的方法,展示了它在处理超长上下文和解决复杂任务方面的优势。
- MemoRAG 在三个同领域数据集上表现优异,表明其潜力可以通过更多样化的训练数据得到进一步提升。
- 下表显示了在以下三个基准数据集上的实验结果,我们可以看到:通常情况下,MemoRAG 在所有数据集上表现优于所有基线,除了一个例外值。
- 首先,在开放领域的问题回答任务中,MemoRAG 在所有数据集上均优于所有基线模型,唯一的例外是使用 Llama3 作为生成器的 en.qa 数据集。
- 其次,大多数先前的 RAG 方法在不需要查询的任务中(例如总结任务,如 Multi-News、GovReport 和 en.sum)表现不佳,而 MemoRAG 使 RAG 系统能够生成关键点,并从输入上下文中检索更多细节以形成全面的总结。
- 第三,在特定领域的任务,例如金融和法律中,MemoRAG 表现出显著的改进,这表明 MemoRAG 在处理长上下文的复杂任务方面具有优势。
-
介绍MemoRAG,这是一种具备全局上下文感知能力的新型检索增强生成(RAG)系统,以解决复杂任务中涉及长输入上下文所带来的挑战。
-
MemoRAG具备一个记忆模块,可以在整个数据库范围内构建一个紧凑的全局记忆,从而生成与上下文相关的线索,将知识数据库与准确答案所需的精确信息有效连接起来。
- 在知识密集型问答、摘要生成,以及涉及长文档的实际应用中进行的一系列广泛的实验表明,MemoRAG显著优于传统RAG系统。
这篇论文的链接:论文链接:https://arxiv.org/abs/2409.05591
请参见代码链接:https://github.com/qhjqhj00/MemoRAG
参考一下:
- MemoRAG:一篇由Qian等人撰写的文章,通过记忆启发的知识发现,迈向下一代RAG。arXiv:2409.05591
- https://huggingface.co/datasets/P1ayer-1/books-3-textbooks