Memory调研笔记0
现在最落地的 memory,多半是外部存储 + 人工规则/工具 API,llm agent也可能参与memory的管理和查询(mem0 / MIRIX / DVD / WorldMM)。
新趋势是“让模型学会管记忆”,可以分两派:
- 固定操作集下学策略(Memory-R1:ADD/UPDATE/DELETE/NOOP)
- 直接把记忆揉进推理过程(MEM1:内部状态
<IS>迭代压缩)
视频领域基本在复刻这两派:
- 结构化外存 + 自动回忆工具链(DeepVideoDiscovery)
- 层级记忆 + 先粗后细 + 多 agent(VideoLucy)
- 端到端带记忆看视频,即MEM1用到视频上(VideoMem:SFT+RL,但训练很贵,3200 A100 hours)
1.Memory Reseach的背景
LLM的长上下文限制已经是总所周知的问题了,不仅是上下文窗口塞不下,attention计算量增加,还会存在注意力稀疏关注不到重点的问题(个人试过用kimi-k2、deepseek等api做qq聊天记录总结,会发现超长上下文情况会有很大幻觉。也尝试过用Qwen3-VL-8B搭流视频理解,发现长视频token下提问容易被过时事件干扰)。比较古典的解决方法是用RAG,直接暴力用问题检索向量数据库,但这方法从数据库搭建(碎片化)到检索内容(因果推理,数字等语意理解极度low level)哪哪都是问题,噪声很大。
所以自然需要研究如何从数据库的组织方法、内容的检索策略上做优化,现在我们一般用memory这个概念来称呼这类研究(
2.memory代表工作介绍
mem0(arxiv 2504.19413)
目前最热门memory开源项目,方法为 Agent 用固定 API 操作向量数据库,维护一堆碎片记忆条目。
核心做法:
- LLM 先从对话里识别关键信息(facts)
- 再通过固定 API 做 增删改查(ADD/UPDATE/DELETE/…)
- 记忆形态偏零散、轻量、工程可落地 优点:简单、容易开源落地、可控性强。 缺点:
- “识别什么该记”很吃 prompt/启发式
- 本质只是个用llm赋能优化了向量数据库维护的RAG系统,碎片多了以后,检索质量和一致性很容易漂
- 长期连贯性不靠“理解”,更像“记笔记的草稿本”
MIRIX(arxiv 2507.07957)
也是个很热门的开源项目,把记忆做成“操作系统”,设计结构化记忆用multi-agent管理,自动路由。
共设计了六类记忆:
- 核心记忆:user profile(最高优先级)
- 情景记忆:日记式
- 语义记忆:概念/实体/关系抽象
- 程序记忆:流程/技能
- 资源记忆:长文档/大文件
- 敏感记忆:密码/API key(注意合规与隔离)
管理方式:Multi-agent
- 存储:Meta Memory Manager 从上下文识别要存的东西,分发给 6 个 sub-agent
- 检索:Chat Agent 先看 6 类 summary → 决定查哪类 → 用向量(会自己重写query)/BM25/精确匹配等查
优点:
- 结构化强,工程可控,适合复杂任务/企业场景
- “记忆类型”本身就是一种 inductive bias(归纳偏置)
缺点:
- 设计重、维护成本高
Memory-R1(arxiv 2508.19828)
llm没有训练过如何管理记忆,导致有时“存/更新/删/不管”的行为不合理,那就考虑把 mem0 的记忆 API 操作,变成可以用 RL 学出来的策略,使得记忆维护的更精确。
模块 1:Memory Manager
对每条新 fact,从 {ADD, UPDATE, DELETE, NOOP} 里选一个 RL 流程:
- 管理器操作 → 新记忆库状态
- 冻结的 Answer Agent 用新记忆回答问题
- 与 GT 比较(EM)→ 给奖励
模块 2:Answer Agent
- 从 RAG top-k(很多,60条)候选里,CoT推理出一小部分最有用的,然后回答
- 按答案给奖励
(Answer Agent RL有点丑陋,本质像在训一个更会做过滤的模型)
优点:
- 把“记忆管理”从 prompt 手艺活,推进到可学习策略
- 操作集小,训练更稳
优化的方向:
- 固定操作集限制表达力(“记忆结构”很难涌现)
- 奖励信号似乎比较粗粒度
MEM1(ICLR26 score8666)
不搞外部库,直接让 Agent 学会把过去压缩进一个新的总结文本 <IS>,迭代更新。
核心机制:
- 用文本
<IS>维护“内部状态/记忆” - 每轮 t:生成新的
<IS_t>,总结旧记忆 + 新观察 + 推理 - 更新完得到
<IS_(t+1)>后,丢弃旧标签,防止 prompt 变长,逼模型学压缩与整合
RL 设计:
- PPO 端到端,只用任务成功做奖励
- 通过改mask限制注意力:每个 token 只能看当时仍保留的 token,逼它学会在当前memory下推理
优点:
- 自由度最高:理论上“记忆结构”可能自己长出来
- 内存使用可控(cache 类的极致)
缺点:
- 少量的memory状态在超长上下文下最终也得丢失信息
3.视频理解方向的memory工作
VideoMem(arxiv 2512.04540)
MEM1 + Video工作
让 agent 带着问题一段段看视频,边看边更记忆,SFT + RL。由于长视频数据每个视频就一个问题,RL监督力度不够,改了下GRPO,每看一段视频片段都尝试回答一下问题然后RL。
训练很烧(3200 A100 hours),没开源。 定位:cache 类(精简记忆进上下文)在视频任务上的版本。 隐含代价:视频领域的“观察”太大太噪,端到端学压缩更贵。
VideoLucy(NeurIPS25)
固定三层层级记忆 + 先粗看后细看的策略 + 回溯 loop(multi agent,为了用强推理模型)
四个 agent:
- Captioning Agent:看视频片段 → 产文本描述(系统的眼睛)
- Localization Agent:根据问题 + 当前记忆 → 找最相关时间段(导航与过滤)
- Instruction Agent:判断还缺啥信息 → 生成更具体的指令给 Captioning(告诉眼睛看哪里)
- Answering Agent:判断是否足够回答;不够就触发下一轮回溯
经验结论: 这种“自动回忆/回溯”很吃主控推理引擎质量(Deepseek-R1 / o3 ),所以才整了个VL看视频转述给llm推理的pipeline,实验也提到换弱一点开源模型性能会明显掉。
DeepVideoDiscovery(NeurIPS25)——“结构化记忆 + 工具链式回忆(Global/Clip/Frame 三层)”
把视频记忆做成三层索引体系,然后让强主 agent 通过工具一步步查。
三层记忆结构:
- Global:主体注册表(Subject Registry)——谁出现、啥特征、在哪些时间段
- Clip(5 秒一段):caption + embedding,便于语义检索
- Frame(比如 2fps):需要细节时做 VQA/检查(车牌号、物体交接等) 记忆最后大概组织成:{Global, {Clip, Frame}_i}
工具(由主 agent 调):
- Global Browse:宏观概览
- Clip Search:按 query 检索相关 clip caption
- Frame Inspect:指定 query 或 time_range,对帧做 VQA
定位:磁盘类 + 自动回忆(工具链),工程味很浓,也很实用,也是VL看视频转述给llm推理,依赖强推理引擎
WorldMM(arxiv 2512.02425)——“多模态世界记忆:情景/语义(图)+ 视觉(向量库)”
把记忆拆成三块:情景记忆图、语义记忆图、视觉记忆向量库。跟DVD比基本就是记忆结构设计不同,加强版
4.memory分类坐标系
按目前调研来看,可以用4个纬度来分类memory:
- 存哪里?
- 外部“磁盘类”:向量库/文档库/图数据库,推理时按需检索(mem0、MIRIX、Memory-R1、DVD、WorldMM、DeepVideoDiscovery)
- 内部“缓存类”:直接维护一个精简 state ,推理时全放进上下文(MEM1、VideoMem)
- 长什么样?
- 零碎化(碎片 facts)
- 结构化(profile / 层级 / 图 / registry)
- 谁来管?
- 人工策略/固定路由(成熟落地多)
- 可学习管理(RL / 端到端)
- 怎么回忆?
- 固定检索(top-k 向量相似度 + BM25 + 精确匹配)
- 自动回忆(automatic agent,先粗看再细看、工具调用、回溯循环、强推理模型主控)
5.个人一些启发性的insight
- 记忆是感知的先验,人看视频可能会根据先前情节决定后面更关注什么内容,但“用问题当先验”可能太强 VideoMem 用 question 引导记录什么——有效但强条件:真实应用里问题不一定先给你。而且导致拿到问题后才能开始构架记忆,延时高,特别是流式场景下
现实更像:实时被动观察 → 形成可复用记忆 → 遇到问题马上就可以回忆/检索。 所以可考虑从“无问题条件下的记忆组织”入手
- 从调研看记忆可分为磁盘形记忆(记很多,按需检索一部分进上下文)和缓存型记忆(记很少,但每次推理都全带着),那感觉可以结合两者提出混合型:
- cache:高频、近期、强相关的“工作集(working set)”
- disk:长尾细节、可回溯证据、资源文档
- 是否可以让模型学习记忆要放在“缓存”还是“磁盘”,使得大部分情况可以直接回答,小部分情况进一步检索也能回答?
- 核心难点:让模型学会“该放缓存还是该落盘”(并且能自我纠错)