Agent 这波热度里,记忆系统是真正的硬骨头。模型再聪明,跨会话忘掉上下文、混淆用户身份、漏掉关键事实,照样废掉一半生产力。Elasticsearch 把 Agent Builder 正式推到 GA,随手甩出一套基于 ES 的持久化记忆架构——三种记忆类型拆开存,混合召回打出 0.89 的 R@10,而且整个方案已经扔到了 GitHub 上开源。这不是论文里的玩具,是工程师可以直接 fork 回去改一改就上线的东西。
三层记忆拆开存,索引隔离背后是工程取舍
整套记忆层的设计思路很清晰:别把 Agent 的脑子当一个黑盒数据库用,而是按人类认知的方式切分。Elastic 把记忆分成情景记忆、语义记忆、程序记忆三个桶,分别落到独立的 ES 索引里。每个桶的写入策略、过期规则都不一样——这意味着你可以在系统层面给不同类型的记忆设置不同的生命周期,而不是一刀切全删或者全留。
情景记忆:事件流的天然归宿
情景记忆装的是"昨天用户问了什么、Agent 回了什么、上下文是什么"这类具体事件,本质上是带时间戳的对话轨迹。ES 的近实时索引能力在这里派上用场——新交互写进去几乎立刻可查,配合 ILM 策略可以自动滚动到冷存储。这块跟传统日志系统很像,但查询语义完全不同:不是"找报错",而是"找跟当前任务相关的历史片段"。
语义记忆:知识卡片与向量空间的混搭
语义记忆对应"用户喜欢什么、Agent 学到了什么规律、领域内的稳定事实"。这部分数据量小但生命周期长,适合用稠密向量做语义检索。Elastic 在这里接入了 Jina v5 作为嵌入模型,把每条语义记忆转成高维向量存进专门索引。Jina v5 的多语言能力和长上下文支持在生产环境里已经过验证,不是临时拼凑的开源模型。
程序记忆:技能与工作流的固化层
程序记忆存的是 Agent 学会的技能、工具调用模板、重复性工作流。这部分最容易被忽略,但它决定了 Agent 能不能稳定执行复杂任务。把这层单独拆出来,意味着你可以对"技能库"做版本管理、A/B 测试、甚至人工审核——而不是让 Agent 在每次会话里临时拼凑工具调用逻辑。索引隔离给了工程团队足够的操作空间。
混合召回不是炫技,是 R@10 0.89 的代价
三种记忆各归各的索引,听起来漂亮,但召回怎么做?Elastic 的答案是:别押注单一检索范式,混合着来。
BM25 与稠密向量的 RRF 融合
关键词检索(BM25)擅长精确匹配——用户名字、专业术语、代码片段,这些东西丢给语义检索反而容易失真。稠密向量擅长语义泛化——"上次类似的问题怎么处理的"这种模糊意图,关键词匹配基本抓瞎。Elastic 把两条召回线并行跑,结果用 RRF(倒数秩融合)合并。这种做法不新鲜,学术界和工业界已经验证多年,但在 Agent 记忆场景里大规模落地,Elastic 这套算是把工程细节讲明白了——哪种记忆走哪条线、权重怎么调、什么时候降级,都有迹可循。
交叉编码器重排序兜底
RRF 融合出来的候选集还要过一遍交叉编码器(cross-encoder)。这一步成本不低,但收益明确:双塔模型召回的 top-K 经常夹杂语义近似但语境无关的噪声,交叉编码器能把真正跟当前查询强相关的条目顶到前面。168 道 QA 题的评估里 R@10 平均 0.89,跨租户泄漏为零——这两个数字放在一起,说明隔离做扎实了,召回质量也没掉链子。对于正在评估 Agent 记忆方案的技术负责人来说,这比任何白皮书都管用。
MCP 协议接入:不绑死运行时才是真开源
Agent 生态目前最分裂的地方在于:每个框架都想做全栈。Elastic 这套记忆层反其道而行——通过支持 MCP(Model Context Protocol)协议的客户端就能访问,不绑定特定运行时。
MCP 客户端意味着什么
MCP 是 Anthropic 推出来的开放协议,目标是把工具调用、数据访问、上下文注入统一成标准接口。Elastic 把记忆层包装成 MCP 服务端,任何兼容 MCP 的客户端——不管你用 Claude、Cursor、自研框架还是某个新兴 Agent 平台——都能通过标准协议读写记忆。这等于说:你今天用 LangChain 写的 Agent,明天想换成别的框架,记忆层不用动一刀。数据资产跟运行时解耦,这才是企业级系统该有的样子。
开源到 GitHub 的诚意与边界
整个项目已经开源到 GitHub,开发者可以直接拉代码、改配置、跑评估。Elastic 没有藏着掖着评估数据集——168 道 QA 题、召回指标、跨租户隔离测试都公开了。对于想要自建 Agent 记忆系统的团队来说,这意味着你可以先在本地跑一遍基准,确认这套架构的召回质量符合预期,再决定要不要接入生产。比起那些只放 demo 不放数据的项目,Elastic 这一手明显更实在。
这套架构的真正价值不在于多花哨
Agent Builder 的持久化记忆层没有什么惊世骇俗的算法创新,它做的事情是把已经被验证过的技术栈——ES 索引隔离、BM25、稠密向量、RRF、交叉编码器——按照 Agent 记忆的语义需求重新组合,拼出一套能跑、能评估、能开源的完整方案。这种"组合式工程"往往比"颠覆性创新"更稀缺,也更值得借鉴。三类记忆拆开存解决了生命周期管理问题,混合召回解决了精度问题,MCP 协议解决了生态绑定问题。三件事分开看都不新鲜,串在一起就成了 Agent 基础设施里值得认真对待的一环。如果你正在做 Agent 产品,与其自己造轮子,不如先看看这套架构的拆分逻辑——它至少回答了一个问题:记忆系统到底该长什么样。

