NapMem:将记忆变为结构化动作空间 · 干货攻略

  • 链接: https://arxiv.org/abs/2607.05794
  • 分类: x-tips
  • 来源: X @omarsar0
  • 作者: Jay
  • 更新: 2026-07-14

这是什么

NapMem(Navigate over Pyramid Memory)是阿里巴巴 Qwen 团队与多所高校在 2026 年 7 月 7 日联合发布的论文提出的框架,核心思想是:把长期用户记忆从被动检索变成 Agent 可主动探索的结构化动作空间

目前主流的记忆系统(如 Mem0、Zep、MemoryBank)都是被动 RAG 模式——检索组件从数据库捞取记忆片段,填进 Prompt,Agent 被动消费这些"被挑选好的证据"。NapMem 指出这有一个根本缺陷:检索是固定流程,一旦首次召回的信息不够用或无关,Agent 只能"知识断片",没有途径进一步探索。

NapMem 的回答是:给 Agent 配备"记忆工具",让它自己决定是否需要记忆、需要哪个粒度的记忆、何时算收集够了。


为什么值得关注

问题命名清晰:论文把这个问题命名为 Behavioral State Decay(行为状态衰减)——长程任务中 Agent 忘记已做决策的根因,是近期最系统的 Agent 记忆失效分析之一。

核心洞察:大多数记忆系统把模型当作"记忆的消费者",而 NapMem 把模型变成"记忆的导航者"。这个视角转换带来实质区别:Agent 不再只能接受系统塞给它的上下文,而是可以主动钻取不同抽象层。

超越 Scale 的启示:NapMem-9B(90 亿参数)经过 RL 训练后,在记忆密集任务上超越未经训练的 397B 大模型。论文暗示:记忆导航能力是可以学到的,不完全依赖模型规模。这对资源受限场景有直接意义。

来源@omarsar0 在 Threads 整理推荐(原文),称其为"难得的系统化 Agent 记忆论文"。


核验过程

官方来源(已读): - arXiv 摘要页:https://arxiv.org/abs/2607.05794(确认标题、作者、机构、提交时间、摘要) - arXiv HTML 全文:https://arxiv.org/html/2607.05794v1(确认方法细节、内存金字塔结构、工具定义、GRPO 训练方法、实验设置) - AlphaXiv 扩展解读:https://www.alphaxiv.org/overview/2607.05794(确认动机分析、记忆金字塔层次、奖励函数设计细节)

关键说法交叉验证

原帖/X 分享说法 官方来源结论 核验状态
"NapMem-9B w/ RL 最高平均分 62.74" arXiv HTML Table 1 确认 ✅ 已核验
"GRPO 训练,Qwen 系列基座" arXiv abstract + AlphaXiv 确认 ✅ 已核验
"多粒度金字塔:原始对话→记忆记录→话题追踪→用户画像" AlphaXiv + arXiv 确认 ✅ 已核验
"5 个记忆工具:search_conversations, get_conversations, search_records, get_records, read_file" AlphaXiv 确认 ✅ 已核验
"3 个基准:PersonaMem-v2, LongMemEval, LoCoMo" arXiv abstract 确认 ✅ 已核验
"Alibaba Qwen 团队主导" arXiv 作者列表 + 脚注 Work done during internship at Alibaba 确认 ✅ 已核验
"性能超越 397B 未经训练大模型" AlphaXiv 提及,需注意:原文说"outperforms much larger, untrained models",指未经过记忆导航 RL 训练的大模型,不是说 RL 版 9B 比所有 397B 都强 ⚠️ 有条件成立

上手步骤

1. 理解记忆金字塔结构

NapMem 的存储层是一个四层金字塔,从底到顶:

┌─────────────────────────────────┐
│      User Profile (用户画像)     │  ← 全局简洁总结,稳定属性
├─────────────────────────────────┤
│      Topic Tracks (话题追踪)     │  ← 跨会话聚合,如项目进展
├─────────────────────────────────┤
│    Memory Records (记忆记录)     │  ← 语义单元:事实/事件/指令/偏好
├─────────────────────────────────┤
│  Raw Conversations (原始对话)   │  ← 最高保真,附时间戳和说话人 ID
└─────────────────────────────────┘

各层之间通过溯源关系(provenance)链接——上层摘要持有下层证据的 ID,Agent 可以从顶层向下钻取验证。

2. 记忆工具(5 个)

Agent 通过以下工具导航金字塔:

# 1. 在原始对话层搜索
search_conversations(query: str)
# 语义+关键词混合搜索,返回相关片段

# 2. 按 ID 获取原始消息
get_conversations(message_id_list: list[str])
# 根据 message_id 获取具体原始消息

# 3. 在结构化记忆记录层搜索
search_records(query: str)
# 搜索事实/事件/指令/偏好四类记录

# 4. 按 ID 获取记忆记录
get_records(record_id_list: list[str])
# 获取指定记忆记录

# 5. 读取高层文档
read_file(file_name: str)
# 直接读用户画像或特定话题追踪文件

3. RL 训练流程(GRPO)

NapMem 用 Group Relative Policy Optimization(GRPO)训练导航策略。核心流程:

对每个记忆密集查询 q:
  1. 采样 G 条轨迹(thought + tool_calls + tool_outputs + answer)
  2. 规则奖励 r(τ) = {+1: 格式正确且答案正确且调用了记忆工具, 0~−0.5: 正确但没用记忆工具, −1: 错误}
  3. 计算组内相对优势 Aᵢ = rᵢ − (1/|G|)Σⱼ∈G rⱼ
  4. 用 Aᵢ 更新策略(增大高奖励轨迹概率,抑制低奖励)

关键奖励设计:如果 Agent 正确回答了需要记忆的问题但没调用记忆工具,给中性或略负奖励——强制它靠外部记忆而不是"脑内知识"。

4. 典型使用场景示例

查询:"Alice 对什么食物过敏?"

Agent 推理过程(模拟):
  Step 1: read_file("user_profile") 
          → 看到"有食物过敏记录,需要进一步确认"
  Step 2: search_records("食物 过敏")
          → 找到记录 [rec_042]: "花生过敏,轻度"
  Step 3: get_records(["rec_042"])
          → 记录显示来源是某次对话 [msg_108]
  Step 4: get_conversations(["msg_108"])
          → 原始对话:"我不吃花生,会起疹子"
  最终回答:"Alice 对花生过敏,接触可能引发皮疹。"

5. 非记忆任务保护

NapMem 在三个非记忆基准上验证:学习到的记忆导航策略不会损害通用推理和工具调用能力。这是重要工程保障——记忆训练不引入副作用。


坑与适用边界

适用场景: - 需要跨会话个性化记忆的 Agent(如私人助理、教育 Agent) - 记忆密集的长程任务(多轮对话、偏好追踪、跨 session 推理) - 想把记忆能力迁移到相对小模型的场景(9B 可训练出超越大模型的效果)

不适用/存疑处: - 无开源代码:截至 2026-07-14,arXiv 页面未提供代码仓库;这是研究原型,不是开箱即用的库 - Alibaba 内部实习成果:主要来自 Qwen 团队,外部复现可能需要较多工程工作 - 记忆写入机制:论文描述了记忆构建的 bottom-up 流程(从对话自动提取记录),但端到端自动写入的稳定性尚未在生产环境验证 - "超越 397B 大模型"的说法需澄清:原意是 9B+RL 超越未经过同类 RL 训练的大模型,不是通用意义上 9B 强于 397B - 中文支持:论文作者含中国高校,但实验主要基于英文基准(PersonaMem-v2、LongMemEval、LoCoMo),中文场景效果未专项验证


一句话结论

NapMem 的核心贡献不是某个具体算法,而是一个框架转换:把记忆从"系统塞给 Agent 的被动上下文"变成"Agent 可以主动探索的多粒度动作空间",并证明用 GRPO 训练这个导航策略可以让小模型在记忆密集任务上打败未训练的大模型——这个思路值得任何在做 Agent 记忆系统的工程师参考借鉴。