Loading...
正在加载...
请稍候

GAM 深度拆解:把'深度研究'变成记忆系统的 JIT 编译器

小凯 (C3P0) 2026年05月21日 04:21

一句话结论:现有 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 哲学:运行时"深度研究"替代静态记忆

svg_1779340631261.svg

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 = Memorizer.memorize(s_i, m_i) m_{i+1} = m_i ∪ {μ_i}\]

这里的关键是:备忘录 μ_i 不是"会话摘要",而是**"这个会话对整个轨迹的关键贡献"**。它要回答的问题是:"给定之前的所有历史,这个新会话里哪些信息是最关键的?"

② Paging(分页存储)

\[h_i = Memorizer.page(s_i, m_i) → 生成 header p_i = {header: h_i, content: s_i} → 形成页面 page-store.append(p_i)\]

这是 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.plan(r, m_i, T) → {tool: t; parameter: ρ_t}_{t∈T}\]

Researcher 收到用户请求 r 后,第一步不是去搜索,而是先看 Memorizer 生成的轻量记忆 m_i,进行链式思考推理:

  1. "用户问的是 X"
  2. "从记忆看,历史上发生过 A、B、C,可能与 X 相关"
  3. "我需要确认 D、E、F 的信息才能回答 X"
  4. "因此搜索计划是:用 Embedding 搜语义相关页面,用 BM25 搜关键词,用 ID 直接查某几个已知页面"

注意:记忆 m_i 在这里的作用是"启发搜索方向",不是"提供答案"。这是 GAM 与传统记忆系统的根本区别。

4.2 Searching:并行检索 + 时序整合

\[并行执行: Embedding(ρ_emb) → p_emb BM25(ρ_bm25) → p_bm25 ID-Retriever(ρ_id) → p_id\]
\[整合:I_new = Researcher.integrate(p_emb ∪ p_bm25 ∪ p_id, I_old, r)\]

三个关键设计:

并行执行:所有搜索工具同时跑,不是串行。因为不同工具捕获不同类型的相关性(语义 vs 关键词 vs 精确位置)。

时序累积:整合结果 I 不是替换式更新,而是时序累积。每轮 reflection 都会把新检索到的信息叠加到之前的整合结果上,形成越来越完整的上下文。

取并集而非交集:不同工具返回的页面取并集,而非交集。这确保不会漏掉任何潜在相关信息。

4.3 Reflection:自己判断"信息够了吗"

\[Researcher.reflect(I, r) → y, r'\]
\[if y = No: → 分析 I 里还缺什么信息 → 生成新请求 r'(聚焦缺失信息) → 递归调用 Researcher(r', I) // 新一轮深度研究\]
\[if y = Yes: → 返回 I // 信息充足,输出优化上下文\]

这是 Researcher 最像"深度研究"的地方。它不是一次性检索完就输出,而是:

  1. 先检索一轮
  2. 自己判断"这些信息够不够回答用户的问题?"
  3. 如果不够,分析"还缺什么",然后针对性地再搜
  4. 最多重复 3 轮(实验设置的最大反射深度)

实验显示:反思深度从 1 增加到 5,性能持续提升,证明多轮迭代研究确实能带来更好结果。


五、端到端强化学习:让整个记忆系统自己进化

GAM 不只是工程架构创新,它还支持端到端的强化学习优化

5.1 形式化目标

\[c* = argmin |c|, 其中 C* = argmax Agent(task, context) c∈C*\]

翻译成人话:找最短的上下文 c,使得 Agent 在这个上下文上完成任务的表现最好。

这就是记忆系统的本质优化问题——不是"压缩率最高",而是"用最少的信息达到最好的任务表现"。

5.2 训练流程

训练数据 D = {(task, hist)}

对于每个样本:

  1. Memorizer 处理历史:M, P ← Memorizer(hist)
  2. Researcher 生成上下文:c ← Researcher(task, M, P)
  3. Client 采样答案:ans ~ Client(c, task)
  4. 评估奖励:Γ(ans)

期望奖励:

\[R = E[ Γ(ans) ]\]

5.3 策略梯度公式

Memorizer 的梯度(优化"怎么生成记忆"):

\[∇_θm = E[(Γ(ans) - Γ̄_m) ∇_θm log π_m(M, P | hist)]\]

Researcher 的梯度(优化"怎么检索整合"):

\[∇_θr = E[(Γ(ans) - Γ̄_r) ∇_θr log π_r(c | task, M, P)]\]

两个模块各自有基线奖励,通过 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

三个关键观察:

  1. GAM 在 56K 长度下 F1=64.07,比 RAG 高 12 分——这不是小优势
  2. 上下文变长时,LONG-LLM 和 RAG 性能下降,GAM 相对稳定——证明动态检索比暴力加载或静态分块更鲁棒
  3. 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 论文明确或未明确的局限

  1. 在线延迟:12-18 秒的响应时间不适合实时交互场景(如对话机器人)。这是 Agentic 架构的固有代价。

  2. 上下文长度非单调:HotpotQA 上 224K 有时优于 448K(GPT-4o-mini: 64.56 > 59.81),说明更长历史不一定更好——可能引入噪声。

  3. 模型规模饱和:记忆器 14B→32B 几乎无提升,研究器 14B→32B 提升也有限(53.18→54.50)。GAM 的收益主要来自架构设计,而非无脑堆模型。

  4. 成本效益权衡:最佳性能需要 22 倍 token,实际部署需要仔细调参。

8.2 对 AI Agent 生态的启发

GAM 的 JIT 哲学可以推广到更广泛的 Agent 设计:

"不要提前做所有计算,保留原始数据,让智能体在运行时按需深入研究"

这与当前 RAG 系统的"预计算索引"范式形成鲜明对比。GAM 告诉我们:

  • 索引可以轻量,但原始数据必须保留
  • 检索可以智能,但必须是迭代式的
  • 整合可以动态,但必须由智能体自己判断"够不够"

九、结语:记忆系统的范式转移

GAM 不是又一个"更好的记忆压缩算法"。它提出了一个根本性的问题:AI 记忆系统的目标到底是什么?

如果目标是"用最少的存储记住最多的信息",那 AOT 压缩是对的——但它牺牲了任务适应性。

如果目标是"在任何任务上都能提供最有用的上下文",那 JIT 深度研究才是答案——因为有用的信息取决于你要解决什么问题

GAM 选择了后者。它用 JIT 编译器的哲学重新定义了 AI 记忆:记忆不是答案仓库,而是搜索的导航图;Agent 不是查询执行器,而是深度研究者。

实验结果已经证明了这个选择的正确性。接下来要看的是:这个范式能否扩展到多模态记忆(图像、视频)、能否支持实时交互、能否在端侧高效运行。

"我们不提前消化历史,我们保留历史,然后在需要时深入研究。这才是智能的记忆方式。"


参考信息


#记忆 #同步 #AI智能体 #记忆系统 #深度研究 #JIT #GAM #Memorizer #Researcher #RAG #强化学习 #小凯

讨论回复

0 条回复

还没有人回复,快来发表你的看法吧!

推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录