跳转至

LightMem: Lightweight and Efficient Memory-Augmented Generation

会议: ICLR 2026
arXiv: 2510.18866
代码: GitHub
领域: 模型压缩
关键词: LLM记忆系统, 感觉记忆, 短期记忆, 长期记忆, 睡眠时更新

一句话总结

提出 LightMem,一个受人类 Atkinson-Shiffrin 记忆模型启发的三阶段轻量记忆系统,通过认知感觉记忆预压缩、主题感知短期记忆整合、睡眠时离线更新三个模块,在 LongMemEval 上准确率提升最高7.7%,同时 token 消耗降低高达38倍。

研究背景与动机

LLM在动态复杂交互环境中难以有效利用历史信息,记忆系统是解决方案。但现有记忆系统有三大效率痛点:

冗余感觉输入: 原始对话包含大量无关信息,直接处理浪费资源甚至损害上下文学习能力

粗糙粒度组织: 按固定窗口切分导致语义混淆,按单轮切分又频繁调用API,两者均不理想

实时更新瓶颈: 记忆更新在推理时执行,引入延迟;且由于读写依赖需串行处理

核心矛盾是性能与效率的权衡——现有系统要么准确但昂贵,要么高效但粗糙。LightMem 的核心idea是模仿人类记忆的三层结构:快速过滤(感觉记忆)→ 组织整理(短期记忆)→ 深度巩固(长期记忆,离线执行)。

方法详解

整体框架

LightMem 要解决的是"记忆系统准确但太贵"的矛盾:原始对话噪声大、记忆更新又卡在推理路径上。它把对话信息依次过 3 个"Light"模块——Light1 先做预压缩 + 主题分割,把噪声 token 删掉、按话题切成段;Light2 以主题段为单位攒到阈值再摘要一次,索引进长期记忆;Light3 在线只做"软更新"(新条目直接插入、不动旧条目),把昂贵的合并去重整体推迟到离线"睡眠"阶段并行执行。这样用户交互时只剩轻量操作,重计算全挪到离线。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400, 'subGraphTitleMargin': {'top': 8, 'bottom': 16}}}}%%
flowchart TD
    IN["原始对话轮次"] --> L1
    subgraph L1["Light1 认知感觉记忆"]
        direction TB
        PC["预压缩<br/>按保留概率删冗余 token"] --> SEG["主题分割<br/>注意力∩语义边界切段"]
    end
    L1 -->|主题段| L2["Light2 主题感知短期记忆<br/>攒满 token 阈值才摘要一次"]
    L2 -->|摘要索引| L3
    subgraph L3["Light3 睡眠时更新长期记忆"]
        direction TB
        ON["在线软更新<br/>新条目直接插入、不碰旧条目"] -->|睡眠阶段| OFF["离线整理<br/>按更新队列并行合并去重"]
    end
    L3 --> OUT["整理后长期记忆<br/>供后续检索回答"]

关键设计

1. Light1 认知感觉记忆:在信息进入记忆系统前先过滤冗余、切好主题

针对"原始对话噪声大、固定窗口切分又会语义混淆"这个痛点,Light1 包含预压缩和主题分割两个子模块。预压缩借用 LLMLingua-2 作为压缩模型,对每个 token 估计一个保留概率 \(P(\text{retain } x_i \mid \bm{x}; \theta)\),再把阈值 \(\tau\) 设为分布的第 \(r\) 百分位,只留下信息量高的 token(也可改用交叉熵过滤,熵越高代表越意外、越该保留)。压缩之后,主题分割维护一个感觉缓冲区,缓冲区满了就触发一次混合切分:注意力边界 \(\mathcal{B}_1\) 取相邻轮次注意力的局部极大值,语义边界 \(\mathcal{B}_2\) 取相邻轮次嵌入相似度跌破阈值的位置,最终边界取两者交集 \(\mathcal{B} = \mathcal{B}_1 \cap \mathcal{B}_2\)。两个信号都同意才切,所以既不会像固定窗口那样把同一话题拦腰截断,也不会像单轮切分那样频繁触发后续 API 调用。

2. Light2 主题感知短期记忆:以"主题段"而非固定窗口为单位攒摘要

主题段从 Light1 出来后暂存在短期记忆(STM)缓冲区里,攒到设定的 token 阈值才调用一次 LLM 生成简洁摘要。每个主题在记忆里以 {topic, {\(\text{sum}_i\), \(\text{user}_i\), \(\text{model}_i\)}} 的结构组织——既留摘要又留原始的用户/模型轮次,摘要再通过嵌入被索引进长期记忆供后续检索。用主题段当摘要粒度是关键:粒度太细(每轮都摘)会频繁打 API,粒度太粗(固定窗口)又会把不相关内容糊在一起导致摘要失真,按主题边界对齐刚好在 API 调用量和摘要质量之间取折中。

3. Light3 睡眠时更新长期记忆:把昂贵的合并去重从在线推理挪到离线

记忆更新通常要做条目间的合并、去重,这些操作有读写依赖、必须串行,放在推理时就成了延迟瓶颈。Light3 把它一分为二:在线阶段只做"软更新",新记忆条目直接插入、不碰已有条目,所以用户交互时几乎零额外开销;真正的整理推迟到离线"睡眠"阶段。睡眠时为每条记忆 \(e_i\) 算一个更新队列 \(\mathcal{Q}(e_i) = \text{Top}_k\{(e_j, \text{sim}(v_i, v_j)) \mid t_j \geq t_i\}\),只允许时间戳更晚的条目去更新更早的条目(保证因果方向一致)。由于不同条目的队列彼此独立,这些更新可以并行跑,离线整理的总延迟因此大幅下降。

损失函数 / 训练策略

LightMem 是一个无需训练的管道式系统,核心参数是压缩率 \(r\) 和 STM 缓冲区容量 \(th\)

实验关键数据

主实验 (LongMemEval-S, GPT-4o-mini)

方法 ACC(%) 总Token(k) API调用 运行时间(s)
FullText 56.80 105.07 - -
A-MEM 62.60 1605.81 986 5132
MemoryOS 44.80 2991.75 2938 8030
Mem0 53.61 1152.62 812 4248
LightMem (r=0.7,th=512) 68.64 28.25 18 284
+ 离线更新 67.07 111.69 144 496

消融实验

配置 ACC(%) Token效率 说明
r=0.5, th=256 64.29 30.81k 压缩率低,保留更多信息
r=0.6, th=256 67.78 35.11k 适中压缩
r=0.7, th=512 68.64 28.25k 最佳准确率-效率组合
无压缩 偏低 冗余信息干扰上下文学习
无主题分割 偏低 较低 语义混淆导致摘要不准确

关键发现

  • LightMem在准确率最高的同时token消耗最低:对比A-MEM提升6%准确率,token减少57倍
  • 在线测试时成本极低:token降低最高106倍,API调用减少最高159倍
  • 适度压缩(r=0.7)反而优于低压缩(r=0.5),说明去冗余确实改善上下文学习
  • 睡眠时并行更新比串行更新快数倍

亮点与洞察

  • 人类记忆模型的三阶段映射自然且有效:感觉过滤 → 工作记忆 → 长期巩固
  • "睡眠时更新"概念优雅,将昂贵操作完全与用户交互解耦
  • 无训练、即插即用的设计使其易于与任何LLM后端集成
  • 压缩反而提升性能的发现对记忆系统设计有指导意义

局限与展望

  • 压缩模型(LLMLingua-2)的质量会影响下游效果
  • 主题分割阈值需要调优,跨领域泛化性存疑
  • 离线更新的触发时机和频率没有自适应机制
  • 评测主要在对话场景,其他长期交互模式(如代码开发)未测试

相关工作与启发

  • vs A-MEM: 准确率更高且token消耗低60倍+
  • vs MemoryOS: 避免了实时更新带来的高延迟
  • vs NaiveRAG: 结构化记忆组织比简单检索更有效

评分

  • 新颖性: ⭐⭐⭐⭐ 三阶段记忆架构设计巧妙,睡眠时更新概念新颖
  • 实验充分度: ⭐⭐⭐⭐⭐ LongMemEval + LoCoMo,多骨干模型,全面效率分析
  • 写作质量: ⭐⭐⭐⭐ 结构清晰,复杂度分析详尽
  • 价值: ⭐⭐⭐⭐⭐ 实用性强,效率提升巨大,具有工程落地价值