TencentDB Agent Memory · 第 6 章 MemoryCore 抽取 Pipeline 精读 章节摘要:这是全书最硬核的两章之一。第 4 章我们只讲了「记忆分四层」,本章要回答「这些层是怎么从一段对话里长出来的」。记忆核心服务内部跑着一条异步 Pipeline:对话先被 L0 Recorder 完整录制,随后由抽取模块提炼成 L1 Atom 并做去重,再聚合为 L2 Scenario、提炼为 L3 Persona。生成分层,召回也分层——召回引擎同时跑 BM25 关键词检索与向量语义检索,用 RRF(排名倒数融合)把两路结果加权合并,兼顾精确与模糊;最后所有召回结果都要过三道预算闸门:条数上限、字符上限、超时上限,确保记忆不会喧宾夺主地占满上下文窗口。
章节摘要:这是全书最硬核的两章之一。第 4 章我们只讲了「记忆分四层」,本章要回答「这些层是怎么从一段对话里长出来的」。记忆核心服务内部跑着一条异步 Pipeline:对话先被 L0 Recorder 完整录制,随后由抽取模块提炼成 L1 Atom 并做去重,再聚合为 L2 Scenario、提炼为 L3 Persona。生成分层,召回也分层——召回引擎同时跑 BM25 关键词检索与向量语义检索,用 RRF(排名倒数融合)把两路结果加权合并,兼顾精确与模糊;最后所有召回结果都要过三道预算闸门:条数上限、字符上限、超时上限,确保记忆不会喧宾夺主地占满上下文窗口。本章带你逐段读这条 Pipeline 的源码级实现,把第 4 章的概念判断落到可追踪的数据流上。读完本章你不仅能解释「记忆如何生长」,还能在排查召回不准、抽取遗漏时知道该看哪一段。
阅读完本章,你应当能够:
一句话金句:Pipeline 的本质是「让信息逐层浓缩、让召回逐层回退」——浓缩换来快速进入语境,回退换来核对原话的准确性,预算换来上下文不被挤爆。
给出整条 Pipeline 的全景图,讲清 L0 Recorder 如何完整录制、为什么抽取是异步的(不阻塞对话)、各层之间是「提炼」而非「替换」关系。
深入 L1 抽取的实现:从 L0 抽出什么、用什么提示策略、去重为何不可省、去重的大致判定方式(语义近似 + 字段比对)。
讲清 L2 如何围绕场景把 L1 聚合成块、L3 如何从长期交互中提炼画像与稳定模式,以及这两层「慢变量」与 L1「快变量」的节奏差异。
深入召回实现:BM25 擅长什么(精确关键词命中)、向量擅长什么(语义近似)、RRF 如何按排名倒数加权融合两路结果。
讲清三道预算闸门:条数防「条数过多稀释重点」、字符防「单条过长挤占窗口」、超时防「召回拖慢响应」,以及它们的优先级与裁剪顺序。
本章是「生成链(01-03) → 召回链(04-05)」的两段式,前半段讲记忆怎么长出来,后半段讲记忆怎么被取出来:
(生成链:记忆如何长出来) ┌──────────┐ ┌──────────┐ ┌──────────┐ │ 01 全景 │──▶│ 02 L1抽取 │──▶│ 03 L2/L3 │ │ L0录制 │ │ 去重实现 │ │ 沉淀机制 │ └──────────┘ └──────────┘ └──────────┘ │ ▼ (沉淀进记忆池) │ (召回链:记忆如何被取出) ▼ ┌──────────┐ ┌──────────┐ │ 04 混合检索│──▶│ 05 预算闸门│ │ BM25+向量+RRF│ │ 条数/字符/超时│ └──────────┘ └──────────┘
铺垫说明:本章是源码精读章,密度高。它与第 4 章构成「概念 → 实现」的对子:第 4 章讲「四层是什么」,本章讲「四层怎么长出来、怎么取出来」。读完第 4 章你能向别人解释,读完本章你能动手排查。建议结合本地源码对照阅读,文中功能模块名都会给出对应的概念定位。
前置知识:
本章为后续章节奠定的基础: