一句话结论:现有 AI 记忆系统的根本误区,是把"记忆"当成了"预先消化好的答案"。GAM(General Agentic Memory)的反直觉洞见是:记忆不应该替代搜索,记忆应该支持搜索——就像 JIT 编译器不会提前把代码翻译成机器码,而是在运行时按需优化。
一、问题的本质:为什么现有记忆系统都错了
1.1 AOT 范式的三大绝症
当前主流记忆系统(MemGPT、Mem0、A-Mem 等)都遵循同一个范式——Ahead-of-Time (AOT) 编译:
离线阶段:原始历史 → [大量压缩计算] → 轻量记忆
运行时: 用户请求 → [查预计算记忆] → 回答
这个范式有三个致命缺陷:
第一,信息损失不可逆。记忆本质上是数据压缩,压缩必然丢失细粒度信息。就像你把一本 500 页的书缩写成 5 页笔记,当用户问到一个笔记没涵盖的细节时,系统永远找不回来。
第二,静态结构无法适应动态需求。预计算记忆的结构是固定的——无论你问什么,它都给你同样的 5 页笔记。但真实场景下,不同问题需要完全不同的信息组合。
第三,领域依赖严重。怎么压缩、保留什么、丢弃什么,全靠人工设计的启发式规则。换一个领域,规则可能完全失效。
1.2 爱因斯坦的提示
论文开头引用了一句话:
"Intelligence is not the ability to store information, but to know where to find it." — Albert Einstein
GAM 的核心洞见就藏在这里:真正的智能不是记住答案,而是知道去哪里找答案。
二、GAM 的 JIT 哲学:运行时"深度研究"替代静态记忆
2.1 JIT 编译器的类比
GAM 借鉴了编程语言中 JIT (Just-in-Time) 编译的思想:
| 传统 AOT 编译 | JIT 编译 | 传统 AOT 记忆 | GAM (JIT 记忆) | |
|---|---|---|---|---|
| 离线阶段 | 全部翻译成机器码 | 只保留源码/字节码 | 大量计算压缩记忆 | 轻量索引 + 完整原始数据 |
| 运行时 | 直接执行机器码 | 按需编译+优化 | 直接查预计算记忆 | 深度研究:动态检索+整合 |
| 适应性 | 零 | 高(根据运行时信息优化) | 零 | 高(根据具体请求定制) |
| 信息保真 | 完整 | 完整 | 严重损失 | 理论无损 |
关键洞察:"无损记忆只能通过搜索完整历史数据库实现,预计算记忆是为了支持这一搜索过程"。
这不是在玩文字游戏。GAM 的离线阶段不会扔掉原始数据——它把完整历史保存在一个"页面存储"(page-store) 中,同时构建一个轻量记忆作为搜索的导航图。
2.2 双模块架构:Memorizer + Researcher
┌─────────────────────────────────────────────────────────────┐
│ 离线阶段 (Memorizer) │
│ 历史会话 s₁, s₂, ..., s_T │
│ ↓ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │
│ │ Memorizing │ → │ 轻量记忆 m │ │ Page-Store │ │
│ │ (生成备忘录) │ │ (搜索导航) │ │ (完整历史数据库)│ │
│ └─────────────┘ └─────────────┘ └─────────────────┘ │
│ ↓ ↓ │
│ ┌─────────────┐ │ │
│ │ Paging │ → 页面 p_i = {header, content} ──────────────┘
│ │ (分页存储) │ header: 上下文信息 (助检索)
│ └─────────────┘ content: 完整原始会话
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 在线阶段 (Researcher) │
│ │
│ 用户请求 r ──→ Planning ──→ Searching ──→ Reflection │
│ ↑ ↓ │ │
│ └───────────┘ (迭代,最多3轮) │
│ │
│ 最终输出:优化上下文 I(针对该请求的定制化信息整合) │
└─────────────────────────────────────────────────────────────┘
三、Memorizer:不是"压缩历史",而是"给历史建索引"
3.1 两个操作的真正含义
Memorizer 每次收到新会话时,做两件事:
① Memorizing(生成备忘录)
这里的关键是:备忘录 μ_i 不是"会话摘要",而是**"这个会话对整个轨迹的关键贡献"**。它要回答的问题是:"给定之前的所有历史,这个新会话里哪些信息是最关键的?"
② Paging(分页存储)
这是 GAM 设计中最精妙的地方。每个页面包含:
- header:由 Memorizer 生成的上下文信息,帮助后续 Researcher 理解这个页面的内容
- content:完整的原始会话,一字不丢
论文明确说明这个设计借鉴了 BGE landmark retrieval 和 Anthropic contextual retrieval 的思想:header 的作用是保持页面语义一致性,确保 Researcher 能准确检索到相关页面。
3.2 为什么保留完整原始数据这么重要
实验数据给了最直接的证据:
| 配置 | 平均 F1 |
|---|---|
| GAM (完整系统) | 53.18 |
| Researcher 无记忆引导 | 48.27 |
| 仅有记忆,无 Researcher | 27.50 |
"仅有记忆,无 Researcher"——这就是传统 AOT 记忆系统的结局。预计算记忆的信息损失如此严重,以至于即使给了完整搜索能力,没有 Researcher 的动态检索整合,性能直接腰斩。
四、Researcher:一个"深度研究"智能体的三件事
Researcher 是 GAM 的灵魂。它不是一个简单的检索器,而是一个完整的智能体,执行 Plan → Search → Reflect 的循环。
4.1 Planning:基于记忆的信息需求分析
Researcher 收到用户请求 r 后,第一步不是去搜索,而是先看 Memorizer 生成的轻量记忆 m_i,进行链式思考推理:
- "用户问的是 X"
- "从记忆看,历史上发生过 A、B、C,可能与 X 相关"
- "我需要确认 D、E、F 的信息才能回答 X"
- "因此搜索计划是:用 Embedding 搜语义相关页面,用 BM25 搜关键词,用 ID 直接查某几个已知页面"
注意:记忆 m_i 在这里的作用是"启发搜索方向",不是"提供答案"。这是 GAM 与传统记忆系统的根本区别。
4.2 Searching:并行检索 + 时序整合
三个关键设计:
并行执行:所有搜索工具同时跑,不是串行。因为不同工具捕获不同类型的相关性(语义 vs 关键词 vs 精确位置)。
时序累积:整合结果 I 不是替换式更新,而是时序累积。每轮 reflection 都会把新检索到的信息叠加到之前的整合结果上,形成越来越完整的上下文。
取并集而非交集:不同工具返回的页面取并集,而非交集。这确保不会漏掉任何潜在相关信息。
4.3 Reflection:自己判断"信息够了吗"
这是 Researcher 最像"深度研究"的地方。它不是一次性检索完就输出,而是:
- 先检索一轮
- 自己判断"这些信息够不够回答用户的问题?"
- 如果不够,分析"还缺什么",然后针对性地再搜
- 最多重复 3 轮(实验设置的最大反射深度)
实验显示:反思深度从 1 增加到 5,性能持续提升,证明多轮迭代研究确实能带来更好结果。
五、端到端强化学习:让整个记忆系统自己进化
GAM 不只是工程架构创新,它还支持端到端的强化学习优化。
5.1 形式化目标
翻译成人话:找最短的上下文 c,使得 Agent 在这个上下文上完成任务的表现最好。
这就是记忆系统的本质优化问题——不是"压缩率最高",而是"用最少的信息达到最好的任务表现"。
5.2 训练流程
训练数据 D = {(task, hist)}
对于每个样本:
- Memorizer 处理历史:M, P ← Memorizer(hist)
- Researcher 生成上下文:c ← Researcher(task, M, P)
- Client 采样答案:ans ~ Client(c, task)
- 评估奖励:Γ(ans)
期望奖励:
5.3 策略梯度公式
Memorizer 的梯度(优化"怎么生成记忆"):
Researcher 的梯度(优化"怎么检索整合"):
两个模块各自有基线奖励,通过 REINFORCE 风格的策略梯度各自优化。这意味着:
- Memorizer 会学习"生成什么样的记忆最能帮助 Researcher 搜索"
- Researcher 会学习"怎么规划搜索、怎么整合信息能得到最高奖励"
六、实验结果:数字不会说谎
6.1 主实验:全面碾压
LoCoMo 对话记忆基准(GPT-4o-mini 结果):
| 方法 | Single Hop F1 | Multi Hop F1 | Temporal F1 | Open Domain F1 |
|---|---|---|---|---|
| LONG-LLM | 46.68 | 29.23 | 25.97 | 16.87 |
| RAG | 52.45 | 27.50 | 46.07 | 23.23 |
| MEM0 | 47.65 | 38.72 | 48.93 | 28.64 |
| GAM | 57.75 | 42.29 | 59.45 | 33.30 |
GAM 在所有四项任务上都领先,Multi Hop(多跳推理)领先幅度最大(42.29 vs 38.72)。这验证了 GAM 的核心优势:越复杂的推理任务,动态深度研究的价值越大。
HotpotQA 多跳 QA(Qwen2.5-14B 结果):
| 上下文长度 | 56K | 224K | 448K |
|---|---|---|---|
| LONG-LLM | 49.75 | 46.82 | 43.17 |
| RAG | 51.81 | 46.72 | 48.36 |
| MEM0 | 30.12 | 32.44 | 26.55 |
| GAM | 64.07 | 55.99 | 57.87 |
三个关键观察:
- GAM 在 56K 长度下 F1=64.07,比 RAG 高 12 分——这不是小优势
- 上下文变长时,LONG-LLM 和 RAG 性能下降,GAM 相对稳定——证明动态检索比暴力加载或静态分块更鲁棒
- Mem0 在长上下文下崩溃(26.55)——静态记忆的信息损失问题暴露无遗
RULER 长上下文理解(GPT-4o-mini):
| 任务 | 检索 | 多跳追踪 | 聚合 | QA |
|---|---|---|---|---|
| RAG | 94.25 | 0.00 | 35.50 | 55.90 |
| MEM0 | 46.83 | 53.80 | 34.10 | 51.70 |
| GAM | 97.70 | 93.20 | 42.50 | 72.50 |
RAG 在多跳追踪上 0%——因为它只是单次检索,没有迭代推理能力。GAM 的 93.20% 证明:Agentic 迭代研究是多跳推理的必需品,不是奢侈品。
6.2 消融实验:验证每个组件的价值
搜索工具组合(HotpotQA + NarrativeQA 平均 F1):
| 工具组合 | 平均 F1 |
|---|---|
| 全部三种工具 | 53.18 |
| 仅 Embedding | 32.31 |
| 仅 BM25 | 48.64 |
| 仅 Page-ID | 28.96 |
| Embedding + BM25 | 51.12 |
| BM25 + Page-ID | 51.66 |
关键发现:三种工具联合 > 任意两种 > 任意一种。每种工具捕获不同类型的信号,组合使用才能覆盖全部信息需求。
输出格式对比:
| 格式 | 平均 F1 | 平均 Tokens |
|---|---|---|
| 仅整合结果 (默认) | 53.18 | 105.90 |
| 整合 + 原始页面 | 55.71 | 2379.82 |
| 整合 + 提取片段 | 54.47 | 230.76 |
"整合 + 原始页面"效果最好(55.71),但 token 成本是默认的 22 倍。这意味着:如果你不在乎成本,给模型看原始数据比给精炼整合更好。GAM 的默认配置选择了一个效率与性能的平衡点。
6.3 模块规模分析
记忆器模型规模的影响(研究器固定 14B):
| 记忆器 | 0.5B | 3B | 7B | 14B | 32B |
|---|---|---|---|---|---|
| 平均 F1 | 48.83 | 50.54 | 51.53 | 53.18 | 53.50 |
研究器模型规模的影响(记忆器固定 14B):
| 研究器 | 0.5B | 3B | 7B | 14B | 32B |
|---|---|---|---|---|---|
| 平均 F1 | 9.08 | 33.48 | 43.85 | 53.18 | 54.50 |
关键结论:
- 记忆器从 0.5B 到 14B 提升明显(48.83 → 53.18),但 14B→32B 几乎饱和
- 研究器从 0.5B 到 14B 提升巨大(9.08 → 53.18),但 7B 以下性能断崖式下跌
- 研究器比记忆器更需要模型容量——迭代规划、搜索、反思是高复杂度推理任务
七、效率分析:性能提升的代价
7.1 时间成本
HotpotQA 56K(总时间 = 离线构建 + 在线服务):
| 方法 | 离线构建 | 在线服务 | 总时间 | F1 |
|---|---|---|---|---|
| A-MEM | 209.74s | 0.52s | 210.26s | 27.04 |
| Mem0 | 37.42s | 0.15s | 37.57s | 30.12 |
| MemoryOS | 80.36s | 0.44s | 80.80s | 24.58 |
| LightMem | 4.93s | 0.20s | 5.13s | 37.30 |
| GAM | 56.89s | 12.43s | 69.32s | 64.07 |
GAM 的在线服务时间(12.43s)显著高于基线(0.15-0.55s)——这是 Agentic 深度研究的计算开销。但:
- GAM 总时间与 Mem0/MemoryOS 相当
- GAM 的质量优势如此巨大(64.07 vs 最高 37.30),12 秒的等待换来了 72% 的相对性能提升
7.2 Token 成本
默认配置下,GAM 的优化上下文平均约 106 tokens——极其紧凑。但如果选择"整合 + 原始页面"的格式,token 数膨胀到 2380。
这是 GAM 的核心权衡:你可以用更多 token 换更高质量,或者用更少 token 换更高效率。默认的 106 tokens 已经能拿到 53.18 的 F1,性价比极高。
八、局限性与开放性思考
8.1 论文明确或未明确的局限
-
在线延迟:12-18 秒的响应时间不适合实时交互场景(如对话机器人)。这是 Agentic 架构的固有代价。
-
上下文长度非单调:HotpotQA 上 224K 有时优于 448K(GPT-4o-mini: 64.56 > 59.81),说明更长历史不一定更好——可能引入噪声。
-
模型规模饱和:记忆器 14B→32B 几乎无提升,研究器 14B→32B 提升也有限(53.18→54.50)。GAM 的收益主要来自架构设计,而非无脑堆模型。
-
成本效益权衡:最佳性能需要 22 倍 token,实际部署需要仔细调参。
8.2 对 AI Agent 生态的启发
GAM 的 JIT 哲学可以推广到更广泛的 Agent 设计:
"不要提前做所有计算,保留原始数据,让智能体在运行时按需深入研究"
这与当前 RAG 系统的"预计算索引"范式形成鲜明对比。GAM 告诉我们:
- 索引可以轻量,但原始数据必须保留
- 检索可以智能,但必须是迭代式的
- 整合可以动态,但必须由智能体自己判断"够不够"
九、结语:记忆系统的范式转移
GAM 不是又一个"更好的记忆压缩算法"。它提出了一个根本性的问题:AI 记忆系统的目标到底是什么?
如果目标是"用最少的存储记住最多的信息",那 AOT 压缩是对的——但它牺牲了任务适应性。
如果目标是"在任何任务上都能提供最有用的上下文",那 JIT 深度研究才是答案——因为有用的信息取决于你要解决什么问题。
GAM 选择了后者。它用 JIT 编译器的哲学重新定义了 AI 记忆:记忆不是答案仓库,而是搜索的导航图;Agent 不是查询执行器,而是深度研究者。
实验结果已经证明了这个选择的正确性。接下来要看的是:这个范式能否扩展到多模态记忆(图像、视频)、能否支持实时交互、能否在端侧高效运行。
"我们不提前消化历史,我们保留历史,然后在需要时深入研究。这才是智能的记忆方式。"
参考信息
- 论文: Yan B.Y., Li C., Qian H., Lu S., Liu Z. "General Agentic Memory Via Deep Research". arXiv:2511.18423v1, 2025.
- 机构: 北京智源人工智能研究院、中国人民大学、北京大学、香港理工大学
- 代码: https://github.com/VectorSpaceLab/general-agentic-memory
- 联系: zhengliu1026@gmail.com
#记忆 #同步 #AI智能体 #记忆系统 #深度研究 #JIT #GAM #Memorizer #Researcher #RAG #强化学习 #小凯
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。