MemLLM: Finetuning LLMs to Use Explicit Read-Write Memory

MemLLM: Finetuning LLMs to Use Explicit Read-Write Memory

对MemLLM论文的精炼分析报告,该工作通过微调教会LLM使用一个可读写的外部结构化记忆库,以解决知识更新、幻觉等核心问题。

MemLLM 精读分析笔记

概括

MemLLM 是一项旨在解决大型语言模型(LLM)知识静态、更新困难及幻觉问题的开创性工作。其核心思想并非设计复杂的模型结构,而是通过参数高效微调(LoRA),教会一个标准的LLM(如Mistral-7B)主动学习使用一个外部的、可读写的、结构化的记忆库

模型通过在精心构建的数据集上训练,学会在生成文本的过程中,在适当的时机生成特定的API调用字符串(如 ({MEM_WRITE-->...})({MEM_READ(...)-->...})),从而实现对外部记忆的实时写入和读取。这使得LLM从一个静态的知识库转变为一个能够动态学习、更新和纠错的智能体,极大地增强了其事实准确性、可解释性和个性化能力。


1. 核心解决的问题

  • 知识更新困难:LLM参数中存储的知识是静态的,难以适应事实变化(时间退化)。
  • 长尾知识遗忘:对训练数据中的稀有事件或实体记忆效果差。
  • 幻觉问题:倾向于生成不符合事实的、看似合理的内容。
  • 现有方案局限
    • 模型编辑(Model Editing):存在损害模型通用能力(局部性问题)的风险。
    • 检索增强生成(RAG):通常是只读的,且非结构化文本难以精确修改单个事实。

2. 核心创新点

  1. 显式读写记忆(Explicit Read-Write Memory):赋予LLM读取写入外部记忆的能力,使知识库动态可增长。
  2. 结构化记忆(Structured Memory):记忆以(主体, 关系, 客体)的三元组形式存储,相比非结构化文本,具有可解释、可编辑、存储高效的优点。
  3. 通过微调学习API调用(API via Finetuning):创新地通过构建特定格式的训练数据,让LLM在标准的语言模型目标下,自然地学会生成API调用指令,无需复杂的提示工程或修改模型架构。

3. 核心技术栈

  • 基础模型: Mistral-7B
  • 微调技术: LoRA (参数高效微调)
  • 记忆库: 类数据库系统,包含实体、关系、三元组三个表,使用向量相似度进行查询。
  • 训练数据: 利用 Re-DocRED 等标注语料库,自动化构建用于操作的训练样本。

4. 微调与数据集构建细节

A. MEM_WRITE 数据构建 (学习“提取”)

  • 目标: 从句子中提取事实,生成写入指令。
  • 流程:
    1. 将句子用 ({USER_ST})({USER_END}) 包裹,作为输入。
    2. 将句子中包含的关系三元组格式化为 ({MEM_WRITE-->...}) 字符串,作为输出标签。
    3. 训练模型学习这种 "输入句子 -> 输出API指令" 的映射。

B. MEM_READ 数据构建 (学习“何时查、查什么、怎么用”)

  • 目标: 在需要信息时,生成查询指令,并利用返回结果继续生成。
  • 流程:
    1. 时机 (When): 在文档中某个“目标实体”即将出现的位置插入API调用。
    2. 内容 (What): 利用上文中已出现的相关实体,构建查询。
    3. 使用 (How): 将查询指令和从一个不完美的记忆库中返回的查询结果一同插入原文,构成训练样本。
    4. 训练模型学会生成查询,并利用查询结果准确地生成“目标实体”及后续文本。

关键澄清:API指令是普通字符串

({MEM_WRITE-->...})({MEM_READ(...)-->...}) 不是在Tokenizer中定义的特殊Token。它们是模型词汇表中已有字符组成的普通文本序列。LLM通过微调,学会了在特定上下文模式下,将这些普通字符以这种有特殊功能的顺序组合起来,从而实现对外部系统的“指令调用”。


5. 工作流:同步阻塞模式

MemLLM的读写操作是同步且阻塞的,而非异步并行。

  1. LLM生成文本,直到生成一个完整的 MEM_READ 指令。
  2. LLM暂停生成
  3. 外部系统执行API查询。
  4. 查询结果返回,并拼接到当前上下文中。
  5. LLM接收这个新的、包含查询结果的完整上下文,然后继续自回归生成。

因此,API的查询延迟会直接影响总体的生成速度。


6. 局限性

  • 关系类型有限:当前仅支持96种关系。
  • 无复合推理能力:无法从 (A, in, B)(B, in, C) 推理出 (A, in, C)
  • 非记忆感知:当记忆库中不存在某个事实时,模型不知道自己“不知道”,可能会退回到使用内部参数知识,导致幻觉。

Thanks for Reading

If this article was helpful to you, feel free to connect with me!