【论文阅读】Agent 记忆机制(57):MemSearch-o1——从查询词元生长证据,重组 Deep Search 记忆路径

文章目录

  • 前言
  • 零、论文基本信息
  • [一、背景:Deep Search 为什么会出现记忆稀释](#一、背景:Deep Search 为什么会出现记忆稀释)
    • [1. 从 RAG 到 Agentic Search](#1. 从 RAG 到 Agentic Search)
    • [2. 搜索轮数增长并不等于推理质量增长](#2. 搜索轮数增长并不等于推理质量增长)
    • [3. 为什么摘要会丢信息](#3. 为什么摘要会丢信息)
    • [4. 为什么只按相似度过滤仍然不够](#4. 为什么只按相似度过滤仍然不够)
    • [5. MemSearch-o1 的问题重定义](#5. MemSearch-o1 的问题重定义)
  • 二、相关工作:已有方法分别缺少什么
    • [1. Standard RAG](#1. Standard RAG)
    • [2. Search-o1](#2. Search-o1)
    • [3. MemoryBank、A-Mem 与 Amber](#3. MemoryBank、A-Mem 与 Amber)
    • [4. Graph Memory](#4. Graph Memory)
  • [三、MemSearch-o1 方法总览](#三、MemSearch-o1 方法总览)
  • [四、Memory Seeds Preparation:为什么先拆查询](#四、Memory Seeds Preparation:为什么先拆查询)
    • [1. 动机:整句查询是一个过于粗糙的记忆锚点](#1. 动机:整句查询是一个过于粗糙的记忆锚点)
    • [2. 形式化定义](#2. 形式化定义)
    • [3. 一个例子](#3. 一个例子)
    • [4. 作用与边界](#4. 作用与边界)
  • [五、Memory Fragments Growth:从种子生长证据](#五、Memory Fragments Growth:从种子生长证据)
    • [1. 动机:不是压缩全文,而是围绕多个锚点抽取](#1. 动机:不是压缩全文,而是围绕多个锚点抽取)
    • [2. 片段生成概率](#2. 片段生成概率)
    • [3. 从生成 Token 得到片段](#3. 从生成 Token 得到片段)
    • [4. 为什么叫 Growth](#4. 为什么叫 Growth)
    • [5. 风险](#5. 风险)
  • [六、Memory Path Retracing:从碎片回到推理链](#六、Memory Path Retracing:从碎片回到推理链)
    • [1. 原问题相关性](#1. 原问题相关性)
    • [2. Bridge Potential](#2. Bridge Potential)
    • [3. 总贡献度](#3. 总贡献度)
    • [4. 构造 Memory Region](#4. 构造 Memory Region)
    • [5. 语义平滑路径](#5. 语义平滑路径)
    • [6. 为什么最终不再输入完整历史](#6. 为什么最终不再输入完整历史)
  • 七、完整推理流程
    • [1. 初始化](#1. 初始化)
    • [2. 迭代搜索](#2. 迭代搜索)
    • [3. 全局回溯](#3. 全局回溯)
    • [4. 最终回答](#4. 最终回答)
  • 八、实验设置
    • [1. 数据集](#1. 数据集)
    • [2. Backbone](#2. Backbone)
    • [3. 检索与超参数](#3. 检索与超参数)
    • [4. Baselines](#4. Baselines)
  • [九、主实验:是否真正缓解 Memory Dilution](#九、主实验:是否真正缓解 Memory Dilution)
    • [1. LongBench 总体结果](#1. LongBench 总体结果)
    • [2. 多跳任务提升最明显](#2. 多跳任务提升最明显)
    • [3. 个别任务并非绝对最优](#3. 个别任务并非绝对最优)
    • [4. LongBench v2](#4. LongBench v2)
    • [5. LongBookQA](#5. LongBookQA)
  • [十、消融实验:Growth 与 Retracing 是否都必要](#十、消融实验:Growth 与 Retracing 是否都必要)
    • [1. Memory Growth 是主要增益来源](#1. Memory Growth 是主要增益来源)
    • [2. Retracing 提供第二层增益](#2. Retracing 提供第二层增益)
    • [3. 消融仍缺少的证据](#3. 消融仍缺少的证据)
  • 十一、模型规模:小模型能否使用这套方法
  • [十二、Top-k 敏感性:更多检索文档是否更好](#十二、Top-k 敏感性:更多检索文档是否更好)
    • [1. 2WikiMQA:存在最佳区间](#1. 2WikiMQA:存在最佳区间)
    • [2. MuSiQue:分散证据需要更大检索集合](#2. MuSiQue:分散证据需要更大检索集合)
  • [十三、Memory Path 可视化](#十三、Memory Path 可视化)
    • [1. 检索区域不同时](#1. 检索区域不同时)
    • [2. 检索区域相同时](#2. 检索区域相同时)
    • [3. 可视化证据的边界](#3. 可视化证据的边界)
  • 十四、效率:短路径是否真正减少成本
    • [1. 最终生成 Token 数](#1. 最终生成 Token 数)
    • [2. 总 Token 与推理时间](#2. 总 Token 与推理时间)
  • [十五、与其他 Memory Management 的进一步比较](#十五、与其他 Memory Management 的进一步比较)
  • 十六、超参数稳定性
  • [十七、与 Agent Memory 系列方法横向比较](#十七、与 Agent Memory 系列方法横向比较)
    • [1. 与 A-MEM 的关系](#1. 与 A-MEM 的关系)
    • [2. 与 MAGMA 的关系](#2. 与 MAGMA 的关系)
    • [3. 与 ReMemR1 的关系](#3. 与 ReMemR1 的关系)
  • [十八、对 Coding Agent 的启发](#十八、对 Coding Agent 的启发)
    • [1. 将 Coding Query 拆成结构化 Seeds](#1. 将 Coding Query 拆成结构化 Seeds)
    • [2. 从调查片段重组 Root-Cause Path](#2. 从调查片段重组 Root-Cause Path)
    • [3. 需要用程序依赖替代纯语义相似度](#3. 需要用程序依赖替代纯语义相似度)
  • [十九、对 Tool Agent 与 Multi-Agent 的启发](#十九、对 Tool Agent 与 Multi-Agent 的启发)
    • [1. Tool Agent:围绕参数与约束生长记忆](#1. Tool Agent:围绕参数与约束生长记忆)
    • [2. Multi-Agent:Fragment 作为共享中间语言](#2. Multi-Agent:Fragment 作为共享中间语言)
    • [3. 必须增加 Provenance](#3. 必须增加 Provenance)
  • 二十、局限性
    • [1. 依赖强推理模型](#1. 依赖强推理模型)
    • [2. Seeds 主要依赖浅层词性](#2. Seeds 主要依赖浅层词性)
    • [3. Fragment Growth 仍可能遗漏或幻觉](#3. Fragment Growth 仍可能遗漏或幻觉)
    • [4. Contribution Function 存在符号歧义](#4. Contribution Function 存在符号歧义)
    • [5. Greedy Search 不保证全局最优](#5. Greedy Search 不保证全局最优)
    • [6. 缺少细粒度组件消融](#6. 缺少细粒度组件消融)
    • [7. QA 任务仍不等于开放式 Deep Research](#7. QA 任务仍不等于开放式 Deep Research)
    • [8. 路径连贯不等于事实正确](#8. 路径连贯不等于事实正确)
    • [9. 统计报告仍不完整](#9. 统计报告仍不完整)
  • 二十一、我的理解与启发
    • [1. MemSearch-o1 的核心不是 Compression,而是 Reconstruction](#1. MemSearch-o1 的核心不是 Compression,而是 Reconstruction)
    • [2. 记忆写入与记忆读取必须共同设计](#2. 记忆写入与记忆读取必须共同设计)
    • [3. 原问题与中间查询承担不同角色](#3. 原问题与中间查询承担不同角色)
    • [4. Bridge Evidence 应成为 Agent Memory 的一等公民](#4. Bridge Evidence 应成为 Agent Memory 的一等公民)
    • [5. 下一步应当支持可回访 Growth](#5. 下一步应当支持可回访 Growth)
    • [6. 应用到真实 Agent 时,结构关系要超过语义相似度](#6. 应用到真实 Agent 时,结构关系要超过语义相似度)
  • 二十二、总结
  • 参考资料

前言

当 Agent 开始执行 Deep Search,记忆问题就不再只是"对话太长"。

一个典型的 Deep Search Agent 会不断循环:思考当前还缺什么信息,生成新的检索查询,读取搜索结果,再基于新证据继续推理。对于一个需要多跳推理的问题,这个过程可能持续很多轮。每轮都会产生新的推理文本、查询和检索文档,系统记忆因此快速膨胀。

乍看之下,更多上下文应该意味着更多证据。但实际情况往往相反:

  • 搜索结果中混入大量与最终问题关系不大的内容;
  • 中间查询会随推理发生语义漂移;
  • 早期关键证据被埋在越来越长的历史中;
  • LLM 的注意力被冗余信息稀释;
  • 后续推理继续读取已经被污染的记忆,错误会逐轮累积。

这就是本文所说的 Memory Dilution,记忆稀释

此前的 Agent Memory 方法已经从多个角度处理长期记忆问题。A-MEM 通过动态链接组织相互关联的记忆;MAGMA 用多图结构表达不同关系;CoM 更关注记忆形成、巩固与调用;ReMemR1 允许 Agent 在记忆写入过程中主动回看历史;Mem²Evolve 则进一步讨论记忆系统如何随着使用经验演化。

但 MemSearch-o1 处理的是一个更贴近 Agentic Search 工作记忆的问题:

当搜索 Agent 每一轮都产生新的查询与文档时,如何保留对最终答案有用的证据,同时避免让越来越长的搜索历史淹没模型?

传统做法通常有两类。

第一类是总结:让 LLM 把每轮检索结果压缩成一段摘要。问题是,摘要模型必须一次性理解查询与长文档之间的复杂语义关系,容易在压缩时丢掉以后才会显得重要的细节。

第二类是过滤:根据当前查询从文档中保留相关句子。问题是,当前查询只是推理过程中的一个中间状态。如果它已经发生偏移,过滤器也会把记忆带向错误方向;只按直接相关性筛选,还可能删除连接两跳证据的桥梁信息。

MemSearch-o1 没有继续把整段查询与整篇文档作为唯一处理单位。它先把每轮搜索查询拆成四类 Memory Seeds:主体、动作、程度修饰和时间标记;再让 LLM 围绕这些细粒度种子,从当轮检索结果中生长 Memory Fragments。全部搜索结束后,系统重新回到原始问题,以"对原问题的相关性"和"与其他片段的桥接潜力"评估所有片段,最后重排成一条语义连贯的 Memory Path,用它代替冗长的完整搜索历史生成答案。

因此,本文的唯一核心增量可以概括为:

MemSearch-o1 将 Deep Search 的记忆管理从"对长搜索历史做摘要或过滤",改成"由查询词元驱动证据生长,再从全局历史中回溯并重组推理路径",使记忆同时保持细粒度覆盖、原问题对齐和多跳连贯性。

它真正改变的不是检索器,也不是训练目标,而是 Agent 在搜索过程中形成工作记忆的基本单位与组织方式:从文档级压缩,转向 Token Seed → Fragment → Path 的结构化生长。

零、论文基本信息

  • 论文名称:MemSearch-o1: Empowering Large Language Models with Reasoning-Aligned Memory Growth in Agentic Search
  • 发表平台:ACL 2026 Main Conference,Long Papers
  • 代码仓库Applied-Machine-Learning-Lab/ACL2026_MemSearch-o1
  • 作者:Sheng Zhang、Junyi Li、Yingyi Zhang、Pengyue Jia、Yichao Wang、Xiaowei Qian、Wenlin Zhang、Maolin Wang、Yong Liu、Xiangyu Zhao

标准 RAG 通常只有一次检索:根据原问题找出 Top-k 文档,再把文档交给 LLM 生成答案。

它的优点是流程短、成本低,但面对多跳问题时能力有限。例如:

电影《Chrysanthemum Bursts in Cincoesquinas》的导演出生在哪里?

要回答这个问题,系统至少需要完成两跳:

  1. 找到电影的导演是谁;
  2. 再查询该导演的出生地。

Deep Search 将单次检索改成迭代过程。第 n n n 轮生成查询 q ( n ) q^{(n)} q(n),检索文档 D ( n ) D^{(n)} D(n),再继续推理,直到证据充分或达到最大轮数。

2. 搜索轮数增长并不等于推理质量增长

若系统把所有历史直接拼接,经过 N N N 轮后,工作记忆中会同时存在:

  • 原始问题;
  • 多轮推理文本;
  • 多个中间搜索查询;
  • 每轮返回的多个文档块;
  • 对文档的摘要或筛选结果。

这些内容并不具有同等价值。中间查询可能只服务某一步,检索结果可能重复或偏题,历史推理还可能包含已经被后续证据推翻的假设。

长上下文模型虽然能够接收更多 Token,却不等于会同等关注所有信息。关键证据可能陷入 Lost in the Middle,模型需要在更低的信噪比下完成更复杂的多跳组合。

3. 为什么摘要会丢信息

摘要式记忆管理要求模型把长文档压缩成与当前查询相关的短文本。它有一个隐含假设:系统在当前时刻已经知道哪些细节对最终答案重要。

但多跳推理经常要到下一轮才知道上一轮哪条信息是桥梁。例如第一轮只知道导演姓名,第二轮才意识到需要出生地。如果第一轮摘要没有保留人物身份或别名,后续链条就会断裂。

4. 为什么只按相似度过滤仍然不够

某个片段可能与原问题表面相似度不高,却能够连接两条关键证据。

例如:

  • 片段 A:某电影由 Daniel Burman 执导;
  • 片段 B:Daniel Burman 出生于 Buenos Aires。

片段 B 与电影标题的直接相似度可能很低,但它通过人物实体连接了答案。只保留与原问题最相似的句子,容易删除这类 Bridge Evidence。

5. MemSearch-o1 的问题重定义

MemSearch-o1 不把记忆管理理解为"把历史缩短到多少 Token",而是要求记忆同时满足三点:

  1. 细粒度覆盖:不要因为整段摘要而遗漏局部证据;
  2. 目标对齐:最终仍要回到原始问题,而不是追随不断漂移的中间查询;
  3. 路径连贯:保留能够把多个证据连接起来的片段顺序。

二、相关工作:已有方法分别缺少什么

1. Standard RAG

Standard RAG 直接围绕原问题进行一次检索。在答案集中于少数局部段落时,它可能非常有竞争力;但检索范围有限,难以主动提出新的子问题,因此不适合复杂多跳任务。

2. Search-o1

Search-o1 让推理模型在思考过程中自主触发检索。

  • Search-o1(RAgent)直接把检索文档加入推理历史;
  • Search-o1(Refined)先对检索结果进行总结和精炼。

前者容易积累冗余文档,后者又可能过度总结。MemSearch-o1 的设计直接针对这两种极端。

3. MemoryBank、A-Mem 与 Amber

MemoryBank 总结关键事件并引入遗忘机制;A-Mem 为检索内容生成笔记并通过链接演化记忆;Amber 在 Chunk 和 Sentence 两个粒度过滤内容。

这些方法都试图减少冗余,但主要仍围绕"哪些现有文本应该保留"展开。MemSearch-o1 则让模型以查询词元为起点,主动生成一组与种子对齐的证据片段,再在全局层面重组路径。

4. Graph Memory

图结构能够显式表达关系,但在检索文本包含噪声时,构图本身可能引入错误边;让 LLM 在复杂图上继续多跳推理,也会增加额外难度。MemSearch-o1 没有构造显式知识图谱,而是通过片段间相似性形成一条轻量的证据路径。

三、MemSearch-o1 方法总览

整个框架包含四个关键阶段:

  1. Agentic Reasoning:LLM 根据原问题生成当前搜索查询;
  2. Memory Seeds Preparation:按词性把查询拆成细粒度种子;
  3. Memory Fragments Growth:围绕种子从当轮文档中抽取证据片段;
  4. Memory Path Retracing:搜索结束后回溯全部片段,筛选并重排成最终推理路径。

这个流程可以概括为:

q o → q ( n ) → S ( n ) → M ( n ) → M q o → P ∗ → a q_o\rightarrow q^{(n)}\rightarrow S^{(n)}\rightarrow M^{(n)}\rightarrow M^{q_o}\rightarrow P^*\rightarrow a qo→q(n)→S(n)→M(n)→Mqo→P∗→a

其中:

  • q o q_o qo 是原始问题;
  • q ( n ) q^{(n)} q(n) 是第 n n n 轮搜索查询;
  • S ( n ) S^{(n)} S(n) 是 Memory Seeds;
  • M ( n ) M^{(n)} M(n) 是当轮生长的 Memory Fragments;
  • M q o M^{q_o} Mqo 是经过贡献度筛选的全局记忆区域;
  • P ∗ P^* P∗ 是重组后的最佳 Memory Path;
  • a a a 是最终答案。

论文 Figure 1。MemSearch-o1 在每轮搜索中用 Query Seed 生长证据,搜索结束后再以原问题为锚点回溯并构造最终路径。

四、Memory Seeds Preparation:为什么先拆查询

1. 动机:整句查询是一个过于粗糙的记忆锚点

整句 Embedding 会把多个语义因素混在一个向量中。对于长查询,主体、动作、程度和时间可能彼此竞争,导致检索或摘要只关注其中最显眼的一部分。

MemSearch-o1 借鉴词性分析,将高语义含量词元分成四类:

  • Subjects:名词与代词,表示人物、地点、对象;
  • Actions:动词,表示主体执行或经历的动作;
  • Degree Modifiers:形容词与副词,表示属性、程度和方式;
  • Temporal Markers:表示事件时间或持续时长的词元。

2. 形式化定义

第 n n n 轮搜索查询由 L L L 个 Token 组成:

q ( n ) = q 1 ( n ) , q 2 ( n ) , ... , q L ( n ) q^{(n)}=q_1\^{(n)},q_2\^{(n)},\\ldots,q_L\^{(n)} q(n)=q1(n),q2(n),...,qL(n)

系统将其划分为 L r L_r Lr 个 Memory Seeds:

S ( n ) = { s 1 ( n ) , s 2 ( n ) , ... , s L r ( n ) } ← T ( q ( n ) ) S^{(n)}=\{s_1^{(n)},s_2^{(n)},\ldots,s_{L_r}^{(n)}\}\leftarrow\mathcal{T}(q^{(n)}) S(n)={s1(n),s2(n),...,sLr(n)}←T(q(n))

其中第 i i i 个种子为:

s i ( n ) = { q j ( n ) } j = 1 z i s_i^{(n)}=\{q_j^{(n)}\}_{j=1}^{z_i} si(n)={qj(n)}j=1zi

z i z_i zi 表示该种子包含的 Token 数量, T \mathcal{T} T 是词性分析工具。实现中使用 spaCy 识别并分组。

3. 一个例子

对于查询:

Director of Chrysanthemum Bursts in Cincoesquinas?

可以形成:

  • Subjects:Director、Chrysanthemum Bursts in Cincoesquinas;
  • Actions:directed;
  • Degree Modifiers:若查询中存在对应修饰词则加入;
  • Temporal Markers:若问题包含年份、最早、之前等时间表达则加入。

每个种子都成为独立的证据生长中心,模型不必先把查询与整个文档做一次整体语义对齐。

4. 作用与边界

词性种子可以降低遗漏明确实体、动作和时间条件的风险,但它不是真正的语义解析:

  • spaCy 标注错误会直接影响种子;
  • 隐含关系不一定由词性表达;
  • 共指、否定、比较和复杂约束可能被拆散;
  • 中文等语言的词性边界与英语并不完全一致。

五、Memory Fragments Growth:从种子生长证据

1. 动机:不是压缩全文,而是围绕多个锚点抽取

MemSearch-o1 将第 n n n 轮的 Seeds s i ( n ) s_i^{(n)} si(n)、检索文档 D ( n ) D^{(n)} D(n)、Memory Growth 指令 I M I_M IM 一起交给 LLM。模型需要针对每一类种子,从原文中提取直接有用、彼此多样的内容。

附录 Prompt 明确要求尽量保留原文措辞,不进行自由改写。这能降低摘要幻觉,但论文公式仍将过程建模为生成,因此实现质量依赖 LLM 是否遵守抽取指令。

2. 片段生成概率

论文将第 n n n 轮所有 Memory Fragments 的生成概率写为:

P M = ∏ i = 1 L r ∏ t = T s i − 1 ( n ) T s i ( n ) P ( M t ( n ) ∣ M < t ( n ) , s i ( n ) , I M , D ( n ) ) P_M=\prod_{i=1}^{L_r}\prod_{t=T_{s_{i-1}}^{(n)}}^{T_{s_i}^{(n)}}P\left(M_t^{(n)}\mid M_{<t}^{(n)},s_i^{(n)},I_M,D^{(n)}\right) PM=i=1∏Lrt=Tsi−1(n)∏Tsi(n)P(Mt(n)∣M<t(n),si(n),IM,D(n))

这里:

  • L r L_r Lr 是种子数量;
  • T s i ( n ) T_{s_i}^{(n)} Tsi(n) 表示第 i i i 个种子对应片段的结束位置;
  • M t ( n ) M_t^{(n)} Mt(n) 是第 t t t 个生成 Token;
  • M < t ( n ) M_{<t}^{(n)} M<t(n) 是此前已生成的片段 Token;
  • D ( n ) D^{(n)} D(n) 是当前轮检索结果;
  • I M I_M IM 中还包含当前查询 q ( n ) q^{(n)} q(n),用于约束抽取目标。

这个公式的重点不是训练一个新概率模型,而是说明:每段记忆的生成都由特定 Seed 条件化,而不是对整份文档做一次无差别总结。

3. 从生成 Token 得到片段

第 i i i 个 Memory Fragment 定义为相应 Token 区间:

m i ( n ) = M T s i − 1 ( n ) : T s i ( n ) ( n ) m_i^{(n)}=M_{T_{s_{i-1}}^{(n)}:T_{s_i}^{(n)}}^{(n)} mi(n)=MTsi−1(n):Tsi(n)(n)

系统经过多轮搜索后,会得到来自不同查询、不同文档和不同种子的片段集合。

4. 为什么叫 Growth

这里的"生长"有三层含义:

  1. 新查询产生新 Seeds;
  2. 每个 Seed 从当前文档吸附相关内容;
  3. 多轮搜索持续扩展 Fragment 集合。

它不是把旧记忆反复压缩,而是让记忆围绕推理目标逐轮增加细粒度证据。

5. 风险

Memory Growth 仍依赖大模型理解文档和遵守格式。若模型错误地把无关句子抽给某个 Seed,后续 Retracing 只能尝试过滤,无法恢复从未被抽取的证据。

六、Memory Path Retracing:从碎片回到推理链

Memory Growth 提高覆盖率,却会产生新的问题:片段来自不同轮次,中间查询可能漂移;如果全部直接输入最终生成,Memory Dilution 仍然存在。

Retracing 因此需要回答两个问题:

  1. 哪些片段真正服务原始问题?
  2. 这些片段应该以什么顺序连接?

1. 原问题相关性

对于片段 m i m_i mi 与原问题 q o q_o qo,相关性贡献定义为:

C R e l = Sim ⁡ ( Emb ⁡ ( m i ) , Emb ⁡ ( q o ) ) C_{Rel}=\operatorname{Sim}(\operatorname{Emb}(m_i),\operatorname{Emb}(q_o)) CRel=Sim(Emb(mi),Emb(qo))

Emb ⁡ \operatorname{Emb} Emb 使用 Sentence Transformer, Sim ⁡ \operatorname{Sim} Sim 使用余弦相似度。

这一项重新把所有中间片段拉回原始任务目标,防止最后一轮搜索查询主导记忆筛选。

2. Bridge Potential

只看原问题相关性会删掉多跳桥梁,所以论文又定义片段与其他片段的连接潜力:

C B P = ∑ j ≠ i sim ⁡ ( m i , m j ) ⋅ σ ( U R e l − τ s ) ∑ j ≠ i σ ( U R e l − τ s ) C_{BP}=\frac{\sum_{j\neq i}\operatorname{sim}(m_i,m_j)\cdot\sigma(U_{Rel}-\tau_s)}{\sum_{j\neq i}\sigma(U_{Rel}-\tau_s)} CBP=∑j=iσ(URel−τs)∑j=isim(mi,mj)⋅σ(URel−τs)

其中:

U R e l = max ⁡ j = 1 N { Sim ⁡ ( m j , q ( n ) ) } U_{Rel}=\max_{j=1}^{N}\{\operatorname{Sim}(m_j,q^{(n)})\} URel=j=1maxN{Sim(mj,q(n))}

σ \sigma σ 为 ReLU, τ s \tau_s τs 是搜索查询相关性阈值。直觉上,只有与当前推理查询足够相关的区域,才应对片段间连接贡献较高权重。

不过,论文公式中的 U R e l U_{Rel} URel 是一个最大值,并在分子分母中以同样形式出现。如果它对所有 j j j 都是常数,这个权重会在归一化时抵消。论文正文想表达的是"用搜索查询相关性对片段桥接性加权",但公式记号没有充分说明权重是否应随 j j j 变化。这是方法描述中值得注意的一处歧义。

3. 总贡献度

片段最终贡献度为:

C ( m i ; q o ) = α C R e l + β C B P C(m_i;q_o)=\alpha C_{Rel}+\beta C_{BP} C(mi;qo)=αCRel+βCBP

实验默认:

α = 0.6 , β = 0.4 \alpha=0.6,\qquad\beta=0.4 α=0.6,β=0.4

这表示系统更看重片段对原问题的直接相关性,同时保留一部分桥接能力。

4. 构造 Memory Region

贡献度低于阈值 τ r \tau_r τr 的片段被过滤:

M q o = { m i ∈ R d ∣ C ( m i ; q o ) > τ r } M^{q_o}=\{m_i\in R_d\mid C(m_i;q_o)>\tau_r\} Mqo={mi∈Rd∣C(mi;qo)>τr}

R d R_d Rd 表示回溯得到的候选记忆区域, M q o M^{q_o} Mqo 是最终用于路径构建的片段集合。默认 τ r = 0.3 \tau_r=0.3 τr=0.3。

5. 语义平滑路径

系统不仅要选择高贡献片段,还要避免相邻片段跳跃过大。论文定义惩罚函数:

μ ( m i k ) = exp ⁡ ( λ ( 1 − Sim ⁡ ( m i k , m i k − 1 ) ) ) \mu(m_{i_k})=\exp\left(\lambda\left(1-\operatorname{Sim}(m_{i_k},m_{i_{k-1}})\right)\right) μ(mik)=exp(λ(1−Sim(mik,mik−1)))

并给出路径目标:

P ∗ = arg ⁡ max ⁡ P ∑ k = 1 ∣ M q o ∣ C ( m i k ; q o ) ⋅ μ ( m i k ) P^*=\arg\max_P\sum_{k=1}^{|M^{q_o}|}C(m_{i_k};q_o)\cdot\mu(m_{i_k}) P∗=argPmaxk=1∑∣Mqo∣C(mik;qo)⋅μ(mik)

论文将 μ \mu μ 称为保证相邻语义平滑的 penalty,并使用 Greedy Search 找到最多包含 K = 10 K=10 K=10 个片段的路径。

这里同样存在一个值得核对的符号问题:按照公式,片段越不相似, 1 − Sim ⁡ 1-\operatorname{Sim} 1−Sim 越大,指数项反而越大;若目标是最大化,可能会奖励而不是惩罚语义跳跃。除非实现中使用负号、倒数或最小化形式,否则公式与"平滑惩罚"的文字解释不完全一致。正式代码可以帮助进一步判断实现采用哪一种形式。

6. 为什么最终不再输入完整历史

Memory Path 已经包含经过筛选和排序的关键证据,最终生成只使用 P ∗ P^* P∗,不再依赖完整 System Memory。

这一步才真正缓解 Token 膨胀:前面不是单纯生成一个辅助索引,而是用短路径替换原始长轨迹。

七、完整推理流程

附录 Algorithm 1 展示了推理过程。

1. 初始化

系统准备:

  • 具备推理能力的 LLM R \mathcal{R} R;
  • Search 检索函数;
  • Seed Preparation 工具 T \mathcal{T} T;
  • 原问题 q o q_o qo;
  • 推理、Memory Growth 和回答指令;
  • 最大搜索轮数 N N N。

2. 迭代搜索

每一轮模型生成推理文本。如果输出搜索标记,就抽取查询 q ( n ) q^{(n)} q(n)、检索 D ( n ) D^{(n)} D(n)、准备 Seeds,并生长 Memory Fragments。若模型输出 EOS,则停止继续搜索。

3. 全局回溯

搜索结束后,系统合并全部轮次片段,计算贡献度,筛出 Memory Region,并通过 Greedy Search 形成 P ∗ P^* P∗。

4. 最终回答

最终模型只根据原问题和 P ∗ P^* P∗ 生成答案。

八、实验设置

1. 数据集

主实验使用 LongBench 中八个任务。

类型 数据集 语言 样本数 平均长度 指标
MultiDocQA HotpotQA 英文 200 9,151 F1
MultiDocQA 2WikiMultihopQA 英文 200 4,887 F1
MultiDocQA MuSiQue 英文 200 11,214 F1
MultiDocQA DuReader 中文 200 15,768 ROUGE-L
SingleDocQA MultiFieldQA-en 英文 150 4,559 F1
SingleDocQA MultiFieldQA-zh 中文 200 6,701 F1
SingleDocQA NarrativeQA 英文 200 18,409 F1
SingleDocQA Qasper 英文 200 3,619 F1

扩展实验还使用:

  • LongBench v2:15K--129K Token,覆盖学术、法律、金融、政府报告等领域;
  • LongBookQA-en:约 192K Token;
  • LongBookQA-zh:约 2.068M Token。

论文 Table 6。Table 6 给出八个主评测数据集的指标、平均长度、语言和样本数,说明主实验同时覆盖多文档、单文档、中英文和不同上下文长度。

2. Backbone

主实验使用:

  • Qwen2.5-72B-Instruct;
  • DeepSeek V3.1。

模型规模实验额外使用 Qwen2.5 0.5B 到 72B 系列。

3. 检索与超参数

  • Retriever 与 Embedding:BGE-M3;
  • 最大搜索轮数: N = 5 N=5 N=5;
  • 每轮默认 Top-k: k = 3 k=3 k=3;
  • Chunk Size:256 Tokens;
  • 过滤阈值: τ s = τ r = 0.3 \tau_s=\tau_r=0.3 τs=τr=0.3;
  • 贡献权重: α = 0.6 , β = 0.4 \alpha=0.6,\beta=0.4 α=0.6,β=0.4;
  • 路径平滑参数: λ = 1 \lambda=1 λ=1;
  • 最大路径长度: K = 10 K=10 K=10。

4. Baselines

主表比较 Direct RAG、Search-o1(RAgent)、Search-o1(Refined)、MemoryBank、A-Mem、Amber。附录进一步加入 Zep 与 MIRIX。

九、主实验:是否真正缓解 Memory Dilution

1. LongBench 总体结果

Qwen2.5-72B-Instruct

方法 MultiDoc/SingleDoc 八任务平均分
Direct RAG 38.51
Search-o1(RAgent) 38.62
Search-o1(Refined) 31.63
MemoryBank 32.26
A-Mem 36.96
Amber 38.40
MemSearch-o1 45.53

MemSearch-o1 相比最强基线 Search-o1(RAgent)的平均分提高 6.91 分。值得注意的是,Search-o1(Refined)只有 31.63,甚至显著低于未精炼的 38.62,直接说明不恰当的总结会造成信息损失。

DeepSeek V3.1

方法 八任务平均分
Direct RAG 36.11
Search-o1(RAgent) 39.05
Search-o1(Refined) 31.85
MemoryBank 34.49
A-Mem 32.22
Amber 39.79
MemSearch-o1 48.17

MemSearch-o1 相比最强基线 Amber 提高 8.38 分。

论文报告结果来自多次运行,并用双侧 t-test 检验;星号表示相对基线达到 p < 0.05 p<0.05 p<0.05 的显著提升。这比只报告一次 LLM 运行更可靠,但正文没有在主表 caption 中给出每项实验的具体运行次数。

论文 Table 1。Table 1 展示两个 Backbone 在八个 LongBench 任务上的完整结果,并用星号标记显著提升。该表支持 MemSearch-o1 在不同模型与任务类型上总体领先,但也存在个别非最优项。

2. 多跳任务提升最明显

使用 DeepSeek V3.1 时:

  • HotpotQA:MemSearch-o1 为 67.78,最强基线 55.59;
  • 2WikiMQA:68.32,最强基线 58.63;
  • MuSiQue:52.01,最强基线 44.31。

论文正文称分别提升 21.93%、16.53% 和 17.38%,这里使用的是相对提升率,而不是百分点差。换成绝对提升分别是 12.19、9.69 和 7.70 分。

这符合方法机制:多跳问题需要连接多个分散证据,Bridge Potential 与 Memory Path 的价值更明显。

3. 个别任务并非绝对最优

Qwen2.5 下,MemSearch-o1 在 MuSiQue 得分 44.11,略低于 Search-o1(RAgent)的 44.78;NarrativeQA 为 17.30,也低于 Direct RAG 的 17.73。

这说明当证据较局部、单次检索已经足够,或者任务更依赖长篇叙事理解时,额外的 Agentic Search 与 Memory Growth 不一定带来稳定收益。

论文也承认很多 Deep Search 方法会在局部证据任务上 Over-search。MemSearch-o1 降低了该问题,但没有完全消除。

4. LongBench v2

方法 平均 Accuracy
Direct RAG 28.91
Search-o1(Refined) 30.96
A-Mem 39.33
Amber 35.85
MemSearch-o1 42.31

MemSearch-o1 在金融领域达到 48.65,显著高于 A-Mem 的 40.54;但在 Academic 和 Legal 上分别与最佳结果持平,而不是全面独占第一。

论文 Table 2。Table 2 比较 LongBench v2 不同知识领域的 Accuracy。它支持 MemSearch-o1 能扩展到更长、更专业的语料,但 Academic 与 Legal 仅并列最优。

5. LongBookQA

在 LongBookQA-en:

  • Direct RAG:F1 23.13 / EM 15.67;
  • MemSearch-o1:F1 25.04 / EM 17.66。

在 LongBookQA-zh:

  • Direct RAG:F1 37.28 / EM 30.16;
  • MemSearch-o1:F1 39.44 / EM 33.86。

提升存在且具有统计显著性,但幅度小于多跳 QA。这进一步说明 MemSearch-o1 的主要优势是组织多轮、分散证据,而不是对所有长上下文任务都产生同等增益。

论文 Table 3 与 Table 4。两表分别给出 LongBookQA-en 和 LongBookQA-zh 的 F1/EM,支持 MemSearch-o1 在 192K 与 2.068M Token 语料上仍能保持优势。

十、消融实验:Growth 与 Retracing 是否都必要

论文以 DeepSeek V3.1 为基础,逐步移除 Memory Path Retracing 和完整 Memory Management。

数据集 无记忆管理 无 Retracing 完整模型
HotpotQA 54.64 64.27 67.78
2WikiMQA 56.41 63.91 68.32
MuSiQue 44.31 47.69 52.01
DuReader 15.28 25.05 27.23
NarrativeQA 20.59 22.50 23.04
Qasper 33.04 35.30 37.94
MultiFieldQA-en 38.67 46.33 52.26
MultiFieldQA-zh 49.76 53.73 56.81

1. Memory Growth 是主要增益来源

从"无记忆管理"到"无 Retracing",八个任务全部提升。例如 HotpotQA 从 54.64 提升到 64.27,DuReader 从 15.28 提升到 25.05。这说明按 Seed 生长 Fragment 已经能显著减少直接输入冗余文档造成的干扰。

2. Retracing 提供第二层增益

加入 Retracing 后同样在全部任务上继续提高。MultiFieldQA-en 从 46.33 提升到 52.26,2WikiMQA 从 63.91 提升到 68.32。

因此,Growth 负责"不要漏掉细粒度证据",Retracing 负责"不要让所有片段再次变成长而杂乱的上下文"。

3. 消融仍缺少的证据

论文没有单独移除:

  • POS Seed,只保留普通 Query-guided Extraction;
  • C R e l C_{Rel} CRel 或 C B P C_{BP} CBP 中的某一项;
  • Semantic Smoothness Penalty;
  • Greedy Ordering,仅保留 Top Contribution Fragments。

因此 Table 5 证明了整体 Growth 和 Retracing 有效,却没有完全回答每个公式组件分别贡献多少。

论文 Table 5。Table 5 是核心消融,显示从无记忆、加入 Growth、再加入 Retracing 后八个任务逐级提升。

十一、模型规模:小模型能否使用这套方法

论文 Figure 2。MemSearch-o1 具有较好的 Scaling 趋势,但 3B 以下模型收益有限。

Figure 2 使用 Qwen2.5 0.5B--72B 在 2WikiMQA 上测试。

主要现象是:

  • 小于 3B 的模型难以稳定遵守搜索和抽取指令;
  • 约从 3B 开始,MemSearch-o1 的 Deep Search 能力明显被激活;
  • 模型继续增大时,MemSearch-o1 的表现较稳定地提升;
  • Amber 的明显收益出现得更晚,大约在 7B 以上;
  • Search-o1(Refined)随规模增大仍有波动。

这说明 MemSearch-o1 不是一个能独立补偿弱模型推理能力的模块。它降低了记忆噪声,但 Seed Extraction、Fragment Growth 和多轮搜索仍要求 Backbone 具备较强的指令遵循与推理能力。

十二、Top-k 敏感性:更多检索文档是否更好

论文令 k ∈ { 1 , 2 , 3 , 5 , 10 } k\in\{1,2,3,5,10\} k∈{1,2,3,5,10},观察 F1 与平均 Thinking Rounds。

Top-k 2WikiMQA F1 2Wiki 轮数 MuSiQue F1 MuSiQue 轮数
1 51.14 3.43 30.26 3.66
2 59.94 3.29 33.54 3.35
3 65.95 3.13 41.57 3.37
5 67.45 2.99 42.94 3.38
10 65.85 3.05 44.05 3.20

1. 2WikiMQA:存在最佳区间

k k k 从 1 增至 5 时,F1 提高且搜索轮数减少;继续增到 10 后,F1 从 67.45 回落至 65.85。更多文档开始引入冗余,Memory Growth 也会被带入无关区域。

2. MuSiQue:分散证据需要更大检索集合

MuSiQue 的证据分散在更多 Chunk 中,F1 随 k k k 增大持续提高,在 k = 10 k=10 k=10 达到 44.05。说明 Top-k 不应被理解成越小越能避免稀释,它取决于证据分布。

论文 Figure 3。Memory Dilution 与 Evidence Coverage 之间存在数据集相关的权衡。

论文 Table 8。

十三、Memory Path 可视化

论文使用 UMAP 将原始上下文、检索区域和生成的 Memory Fragments 投影到低维空间,并比较 Search-o1(Refined)与 MemSearch-o1。

1. 检索区域不同时

MemSearch-o1 生成的查询更接近目标,检索区域也更靠近 Ground-truth Answer;Memory Fragments 覆盖范围更广,最终路径能连接多个证据区域。

2. 检索区域相同时

即使两种方法检索到相同区域,Search-o1 仍可能过度精炼,只保留局部信息;MemSearch-o1 通过多个 Seeds 在区域内展开更丰富的 Fragment,得到更完整的证据路径。

3. 可视化证据的边界

UMAP 只能提供直观展示,低维投影会扭曲高维距离。它能够说明案例中的相对分布,却不能单独证明 Memory Path 在所有样本上都更合理。真正的有效性仍应由主实验和消融支持。

论文 Figure 4。展示检索区域不同与相同两种情况下的 UMAP Memory Path。

十四、效率:短路径是否真正减少成本

1. 最终生成 Token 数

HotpotQA

  • Search-o1(RAgent):1713.9;
  • MemoryBank:728.6;
  • A-Mem:569.2;
  • Amber:524.4;
  • Search-o1(Refined):312.6;
  • MemSearch-o1:257.6

2WikiMQA

  • Search-o1(RAgent):1603.6;
  • MemoryBank:930.1;
  • A-Mem:578.4;
  • Amber:431.9;
  • Search-o1(Refined):343.1;
  • MemSearch-o1:299.7

MemSearch-o1 的最终生成上下文最短。Search-o1(Refined)也很短,却在主实验中表现最差之一,说明短并不等于好。MemSearch-o1 的价值在于用更少 Token 保留更完整的多跳证据,而不是单纯追求压缩率。

论文 Figure 5。Figure 5 比较 HotpotQA 与 2WikiMQA 上的平均 Generation Tokens。

2. 总 Token 与推理时间

方法 平均推理时间(秒) 总 Token
Search-o1(Refined) 22.83 2677.6
A-Mem 27.07 3185.3
MIRIX 32.34 3956.3
Zep 28.33 3580.2
Amber 20.29 2507.3
MemSearch-o1 18.17 2171.9

相对 Amber,MemSearch-o1 平均推理时间减少约 10.4%,总 Token 减少约 13.4%。相对 MIRIX,时间和 Token 的减少更明显。

论文认为,传统方法每轮重复读取累计长度为 D D D 的 System Memory,随 N N N 轮增长形成约:

O ( N 2 D ) O(N^2D) O(N2D)

MemSearch-o1 每轮只处理当前检索文档,最终再读取短路径,因此论文给出:

O ( N D ) O(ND) O(ND)

这一复杂度是对累计上下文读取量的简化分析,而不是完整计算成本。它没有显式计入 Fragment Generation、Embedding、两两相似度和 Greedy Path Search。因此可以用来解释趋势,但不能视为端到端严格复杂度证明。

论文 Table 9。Table 9 给出 HotpotQA 上的平均推理时间与总 Token,支持 MemSearch-o1 的效率优势。

十五、与其他 Memory Management 的进一步比较

附录在 Qwen2.5-72B 上加入 MIRIX 与 Zep。

方法 八任务平均分
Search-o1(Refined) 31.63
MemoryBank 32.26
MIRIX 36.69
Zep 36.58
MemSearch-o1 45.53

MemSearch-o1 不仅超过摘要和过滤方法,也超过强调多 Agent Memory Management 的 MIRIX 与实体关系图式记忆 Zep。

但这里比较的是把这些方法接入作者设置后的 Agentic Search 效果,不等于对各系统原始目标的全面评价。例如 MIRIX 设计目标包含更广泛的多模态、多 Agent 长期记忆,而本文只评估问答搜索路径。

论文 Table 7。Table 7 比较 Search-o1、MemoryBank、MIRIX、Zep 与 MemSearch-o1,支持 Seed-Growth-Path 机制在本文 Deep Search 设置下更有效。

十六、超参数稳定性

论文在 MuSiQue 与 MultiFieldQA-zh 上改变 α , β , K , τ , λ \alpha,\beta,K,\tau,\lambda α,β,K,τ,λ。

几组设置的结果都保持在:

  • MuSiQue:43.23--43.84;
  • MultiFieldQA-zh:58.55--59.54。

这说明合理范围内的参数变化没有造成剧烈波动,默认参数不是只为某一个数据集精调。

不过 Table 10 只展示四组组合变化,且一次同时或分别改变部分参数,并非完整单变量网格搜索。它能证明局部稳健性,不能推出所有阈值范围都稳定。

论文 Table 10。Table 10 展示贡献权重、路径长度、阈值与平滑系数的若干替代设置。

十七、与 Agent Memory 系列方法横向比较

以下比较是根据各方法的主要设计目标做出的归纳,并非 MemSearch-o1 论文完成了全部直接实验。

方法 主要记忆对象 组织方式 解决的主要问题 与 MemSearch-o1 的区别
A-MEM Agent 历史记忆与笔记 动态链接的记忆网络 记忆关联与演化 MemSearch-o1 聚焦单次 Deep Search 工作记忆,按 Seed 生长并重排路径
MAGMA 多种关系下的长期记忆 多图结构 单一关系难以表达复杂联系 MemSearch-o1 不显式建多图,而构造短证据序列
CoM 经历及其巩固结果 形成、巩固、调用流程 长期记忆如何稳定形成 MemSearch-o1 更关注搜索过程中即时形成的推理证据
ReMemR1 可回访的历史记忆 Callback Retrieval 写入时的信息损失 MemSearch-o1 在搜索结束后全局 Retrace,但不主动回查被丢弃的原始历史
Mem²Evolve 记忆与元记忆 双层演化机制 记忆策略如何自我改进 MemSearch-o1 参数和操作规则固定,没有学习 Memory Growth 策略
MemSearch-o1 查询 Seeds、证据 Fragments、Memory Path Token → Fragment → Path Deep Search Memory Dilution 让工作记忆围绕推理查询生长,并重新对齐原问题

1. 与 A-MEM 的关系

论文主实验直接比较了 A-Mem,但这里要注意命名与系列语境:实验中的 A-Mem 被接入 Search-o1,对检索文档生成 Note 并建立链接。它原本更强调长期 Agentic Memory 的组织,不一定专门为多轮 Deep Search 的短期工作记忆设计。

MemSearch-o1 的优势来自任务贴合:它知道记忆会随搜索查询逐轮产生,因此在生成时就加入 Seed 约束,并在结束后围绕原问题回溯。

2. 与 MAGMA 的关系

MAGMA 通过多种图关系保存不同维度联系,表达力更强;MemSearch-o1 只用相似度与顺序构造一条路径,结构更轻。对于需要明确因果、时间或实体关系的任务,多图可能更适合;对于每次都要快速形成短推理上下文的 Deep Search,路径更容易直接提供给 LLM。

3. 与 ReMemR1 的关系

两者都不相信一次精炼就能保留全部重要信息。ReMemR1 通过 Callback 主动回访历史,补救已经遗漏的信息;MemSearch-o1 通过多个 Token Seeds 在一开始提高抽取覆盖,并在结束后对已生成 Fragments 进行 Retracing。

它的边界也由此产生:如果 Fragment Growth 阶段已经漏掉证据,Retracing 只能重新排列现有片段,无法回到原文补取。将 Callback 加入 Retracing 是一个自然扩展方向。

十八、对 Coding Agent 的启发

以下内容是基于论文机制的工程推演,不是原论文实验。

1. 将 Coding Query 拆成结构化 Seeds

面对"修复用户登出后刷新页面仍显示旧头像"的任务,可以抽取:

  • Subjects:用户、头像、缓存、会话;
  • Actions:登出、刷新、清除、读取;
  • Degree/State:旧、仍然;
  • Temporal:登出后、刷新时。

Agent 可以围绕这些 Seeds 从代码、日志和测试中生长证据,而不是只按整句需求搜索一次。

2. 从调查片段重组 Root-Cause Path

Coding Agent 的 Fragment 可以是:

  • 某函数读取本地缓存;
  • 登出流程只清理 Cookie;
  • UI Store 没有重置头像;
  • 失败测试表明刷新后重新 hydrate 旧状态。

Retracing 可以把这些片段按因果顺序组织成:

Logout未清Store → Refresh触发Hydrate → 读取旧Avatar → UI错误 \text{Logout未清Store}\rightarrow\text{Refresh触发Hydrate}\rightarrow\text{读取旧Avatar}\rightarrow\text{UI错误} Logout未清Store→Refresh触发Hydrate→读取旧Avatar→UI错误

这比向模型重新输入全部搜索日志和几十个文件更适合生成修复方案。

3. 需要用程序依赖替代纯语义相似度

代码证据的桥接关系不应只靠 Embedding。调用关系、数据流、Import、测试覆盖和 Git 历史往往比自然语言相似度更可靠。工程实现应把 C B P C_{BP} CBP 扩展为语义与静态分析的组合。

十九、对 Tool Agent 与 Multi-Agent 的启发

1. Tool Agent:围绕参数与约束生长记忆

Tool Query 可以拆成对象、动作、时间、范围等 Seeds。每次工具返回的大段 JSON 不必完整积累,系统只抽取与当前 Seeds 对应的字段,再构造能够支持最终操作的短路径。

2. Multi-Agent:Fragment 作为共享中间语言

检索 Agent、分析 Agent 和执行 Agent 可以分别产生带来源的 Fragments,再由协调 Agent 统一 Retrace。相比共享所有对话历史,片段路径更短,也更容易追踪每条结论来自哪个 Agent 和工具。

3. 必须增加 Provenance

论文的 Fragment 主要保存文本内容,没有在公式中重点建模来源可信度。真实 Tool/Multi-Agent 系统还需要记录:

  • 来源文档或工具;
  • 时间戳;
  • Agent 身份;
  • 验证状态;
  • 是否与其他片段冲突。

否则一条语义连贯的 Memory Path 仍可能由不可靠证据组成。

二十、局限性

1. 依赖强推理模型

论文明确指出,3B 以下模型难以遵循搜索与 Memory Growth 指令。方法不是轻量模型的替代推理器,而是强模型的记忆放大器。

2. Seeds 主要依赖浅层词性

主体、动作、程度和时间是有用锚点,却不足以完整表达否定、因果、比较、条件和隐含实体。复杂语义可能在切分时丢失。

3. Fragment Growth 仍可能遗漏或幻觉

Prompt 要求抽取原文,但 LLM 仍可能漏掉证据、归类错误或生成改写内容。一旦证据没有进入 Fragment 集合,后续 Retracing 无法恢复。

4. Contribution Function 存在符号歧义

C B P C_{BP} CBP 中最大相关性权重可能在归一化时抵消; μ \mu μ 的指数形式按字面可能奖励不相似片段。这些并不否定实验结果,但降低了仅凭论文公式复现算法的确定性,需要对照官方代码。

论文称寻找 Optimal Memory Path,但实际使用 Greedy Search。它计算便宜,却可能被早期高分片段锁定,错过后续整体更连贯的组合。

6. 缺少细粒度组件消融

论文没有分别验证 POS Seed、Bridge Potential、Original-query Relevance 与 Smoothness Penalty。现有消融只能证明两个大阶段有效,不能完全支持每个设计选择。

7. QA 任务仍不等于开放式 Deep Research

实验语料来自固定数据集,Search 是对给定 Corpus 的检索。真实网络搜索还包含网页质量、时效性、来源冲突、访问失败和动态页面等问题。

8. 路径连贯不等于事实正确

Embedding 相似的相邻片段可能语义流畅,却互相矛盾;一个高相关 Fragment 也可能来自错误来源。系统缺少显式的事实验证和冲突消解。

9. 统计报告仍不完整

主表使用多次运行与显著性检验,这是优点;但论文没有清晰报告每个配置的重复次数、方差或置信区间,读者难以判断 LLM 随机性的具体范围。

二十一、我的理解与启发

1. MemSearch-o1 的核心不是 Compression,而是 Reconstruction

摘要式方法问的是:"这段历史应该缩成什么?"

MemSearch-o1 问的是:"为了回答原问题,哪些局部证据应该重新组成一条路径?"

二者的目标不同。Compression 追求更短,Reconstruction 追求证据结构。Figure 5 中 Search-o1(Refined)已经很短,却准确率很差,正好证明"短记忆"不是最终目标。

2. 记忆写入与记忆读取必须共同设计

Growth 决定记忆以什么粒度写入,Retracing 决定最终按什么逻辑读取。只优化写入会积累大量 Fragments,只优化读取又无法找回从未被保存的证据。

这与 Agent Memory 系列的总体趋势一致:Memory 不再是一个独立数据库,而是贯穿形成、组织、检索和行动的完整过程。

3. 原问题与中间查询承担不同角色

中间查询适合指导局部探索,原问题适合约束全局目标。MemSearch-o1 在 Growth 时使用 q ( n ) q^{(n)} q(n),在 Retracing 时重新使用 q o q_o qo,形成局部与全局双重对齐。

这是一个很有普适性的设计:Agent 可以在执行中不断改变子目标,但最终记忆整理必须回到用户最初要解决的问题。

4. Bridge Evidence 应成为 Agent Memory 的一等公民

很多检索系统只奖励片段对 Query 的直接相关性。但真正的多步推理往往依赖"本身不是答案,却连接两条答案证据"的信息。

未来记忆系统可以进一步显式区分:

  • Answer Evidence;
  • Bridge Evidence;
  • Constraint Evidence;
  • Counter Evidence;
  • Provenance Evidence。

这样比用单一相似度混合所有作用更清晰。

5. 下一步应当支持可回访 Growth

当前 Retracing 只在已生成 Fragments 中筛选。如果发现路径断裂,系统应该能够定位缺口,并回到对应原始文档或触发新搜索。这会把 MemSearch-o1 从一次性的 Path Construction,升级成能够自我修补的 Revisitable Memory Path。

6. 应用到真实 Agent 时,结构关系要超过语义相似度

文本 QA 中,相似度可以近似片段连接;在代码、工具和网页环境中,更可靠的桥接关系分别是调用依赖、状态转移和页面动作。MemSearch-o1 最值得迁移的不是具体的 POS 标签,而是"选择领域合适的 Seed 与 Bridge,再重建短路径"的思想。

二十二、总结

MemSearch-o1 面向 Deep Search 中不断增长的推理历史和检索文档,提出了 Reasoning-aligned Memory Growth 与 Memory Path Retracing。

它先从每轮搜索查询中抽取主体、动作、程度修饰和时间标记等 Memory Seeds;再围绕每个 Seed 从当前检索文档中生长细粒度 Memory Fragments;搜索结束后,以原问题相关性和片段桥接潜力计算贡献度,过滤低价值片段,并通过 Greedy Search 重组为最多十个片段的 Memory Path。最终回答只读取这条路径,不再读取完整搜索历史。

在 LongBench 八任务上,MemSearch-o1 使用 Qwen2.5-72B 的平均分为 45.53,使用 DeepSeek V3.1 为 48.17,均明显超过 RAG、Search-o1、MemoryBank、A-Mem 和 Amber。消融显示 Memory Growth 与 Retracing 在八个任务上都带来稳定增益。HotpotQA 上,它还将平均推理时间降至 18.17 秒,总 Token 降至 2171.9。

与此同时,论文也留下了清晰边界:小于 3B 的模型收益有限,词性 Seeds 难以表达全部复杂语义,Contribution 与 Smoothness 公式存在记号歧义,Greedy Path 不保证全局最优,细粒度组件消融也不够完整。

一句话总结:

MemSearch-o1 的核心贡献,是让 Deep Search 的记忆不再被动压缩长历史,而是从查询词元主动生长证据,并在搜索结束后重新组装成一条面向原问题的短推理路径。

参考资料

相关推荐
xierui12312322 分钟前
NotionAgent 新增建议修改:如何用Patch、Diff 与人工确认设计 AI 改稿工作流
人工智能·ai·自然语言处理
国科安芯25 分钟前
星载CAN总线通信网络中抗辐射MCU的通信可靠性设计分析
网络·人工智能·分布式·单片机·嵌入式硬件·架构
其实防守也摸鱼33 分钟前
免杀与持久化入门:从载荷免杀到隐蔽通道的完整指南
运维·服务器·数据库·安全·github·copilot·渗透
sec_jay39 分钟前
一个面向有限本地语料库的、单智能体、工具调用型 Agentic RAG 原型--关于agent的实践调研报告
github
闭月之泪舞41 分钟前
C++编程学习
c++·学习
AI程序员1 小时前
MCP Apps 能直接返回 HTML,为什么还需要 A2UI?
人工智能·agent·mcp
思考着亮1 小时前
1.MCP
人工智能
Crazy_MT1 小时前
不越狱,iPhone 为什么也能安装任意 IPA?聊聊 iLoader、SideStore 和 LiveContainer 的原理
ios·开源