InvMem 通过细粒度分块结合稠密检索与 BM25,解决语义相似但上下文不足的记忆检索问题,使 Agent 能重建可用记忆。
为 AI Agent 检索记忆听起来很简单:
给定当前查询,找到最相关的记忆。
然而在实践中,语义相似性并不总是足够的。
一条检索到的记忆可能与查询高度相似,却仍然缺少 Agent 做出正确决策所需的周围上下文。
这正是 InvMem 换个角度解决的问题:
记忆检索不应只找到相似的信息,而应恢复足够的相关上下文来重建一条有用的记忆。
InvMem 的方法之一是细粒度分块。
InvMem 不再将一段长长的历史信息视为一个不可分割的记忆单元,而是将其拆分为更小的片段。
这让检索系统有了更大的灵活性:
但更细粒度的检索也带来了一个新问题:
如果最相关的片段本身不包含足够的上下文该怎么办?
这就引出了设计的下一部分。
InvMem 结合了稠密检索与 BM25。
这两种检索方法捕捉的是不同类型的相关性。
稠密检索适用于语义相似性。即使措辞不同,它也能识别出表达相似概念的记忆。
而 BM25 则尤其适用于词汇匹配和精确术语。
对于记忆检索,将两者结合比单独依赖其中任何一种方法能提供更广泛的检索信号。
目标不仅仅是找到:
"哪条记忆看起来最相似?"
而是:
"哪些记忆最可能包含对当前查询有用的证据?"
从不同检索方法获得候选结果后,InvMem 使用加权倒数排名融合(Weighted Reciprocal Rank Fusion)来合并它们的排名。
这使得系统能够整合来自稠密检索和 BM25 的信号,而不是在两种检索方法之间做非此即彼的选择。
从概念上说,流程如下:
查询 → 稠密检索 → BM25
↓
加权 RRF
↓
统一后的候选排名
这很关键,因为记忆相关性很少是单维度的。
一条记忆可能在语义上相关但缺少一个重要的关键词,或者包含一个精确的关键词但与查询的整体含义不太相关。
将两种信号组合起来有助于平衡这些情况。
这是 InvMem 方法中一个更有趣的部分。
一个高度相关的记忆片段并不一定包含 Agent 所需的完整上下文。
历史对话中的信息往往分布在相邻的轮次中。
轮次 A:用户描述了一个问题。 轮次 B:Agent 提出了一个解决方案。 轮次 C:用户确认了什么方案有效。
如果检索只返回轮次 B,Agent 可能知道解决方案,但不一定完全理解它为什么被提出,或者是否真的被验证过。
因此,InvMem 在检索后执行同会话邻接扩展。
检索到的片段可以引入同一会话中相邻的信息,帮助重建更完整的上下文。
这反映了一个重要的区别:
最相似的片段不一定是最有用的记忆。
有时候,有用的记忆是检索到的片段加上它周围的上下文。
将所有这些组件整合在一起,InvMem 的检索流程可以理解为:
细粒度分块
↓
稠密检索 + BM25
↓
加权 RRF
↓
同会话邻接扩展
↓
更完整的记忆上下文
关键思想不是最大化检索到的记忆数量。
而是提高检索到的信息包含 Agent 所需完整证据的机会。
这就引出了一个更广泛的问题:
记忆检索应该针对相似性优化,还是针对有用性优化?
InvMem 的方法表明,这两个目标并不总是一致的。

长期记忆正成为 Agent 系统中越来越重要的组成部分。
但随着记忆系统变得越来越复杂,检索问题不再只是一个标准的向量搜索问题。
它涉及:
这使得记忆完整性成为与检索相关性同等重要的考量维度。
因此,InvMem 的结果之所以有趣,不仅因为它在第一个 AML 公开排行榜上以 45.06 分排名第一,还因为它说明了一种超越简单相似性检索的可能方向。

我们感谢 InvMem 团队分享他们的方法,并为 AML 技术深度解析系列做出贡献。
这个系列的目标是让不同的记忆系统更容易理解、比较和学习——不仅仅是通过排行榜分数,而是通过支撑这些系统的理念和工程决策。
这是该系列的第一篇深度解析。更多技术拆解即将推出。