分层生成与分层召回 + 召回预算控制


文档摘要

分层生成与分层召回 + 召回预算控制 本节摘要:前四节讲了 L0-L3 各层「是什么」,本节把它们收束成完整机制:生成方向是「自底向上逐层提炼」,召回方向是「自顶向下逐层回退」,两者之间还有三道召回预算闸门(条数/字符/超时)防止记忆占满上下文。这一节是第 4 章的总收束,也是第 6 章源码精读的概念前置——读完本节你会理解「平时快、需要时准、还不撑爆上下文」这套设计是如何由生成、召回、预算三个机制协同实现的。

分层生成与分层召回 + 召回预算控制

本节摘要:前四节讲了 L0-L3 各层「是什么」,本节把它们收束成完整机制:生成方向是「自底向上逐层提炼」,召回方向是「自顶向下逐层回退」,两者之间还有三道召回预算闸门(条数/字符/超时)防止记忆占满上下文。这一节是第 4 章的总收束,也是第 6 章源码精读的概念前置——读完本节你会理解「平时快、需要时准、还不撑爆上下文」这套设计是如何由生成、召回、预算三个机制协同实现的。

一、生成方向:自底向上逐层提炼

记忆的「生长」是一个自底向上的过程,每一层从下层提炼,节奏由快到慢:

生成方向(自底向上,节奏由快到慢) 对话发生 │ (即时) ▼ L0 录制 ─────────── 最快,原封不动保存 │ (异步,秒~分钟级) ▼ L1 抽取 + 去重 ──── 从 L0 抽原子 │ (异步,项目周期级) ▼ L2 场景聚合 ─────── 围绕场景聚合 L1 │ (异步,长期周期性) ▼ L3 画像提炼 ─────── 从大量历史提炼稳定模式 → 越往上越慢、越抽象、越稳定
节奏 依赖
L0 即时 对话本身
L1 秒~分钟级 L0
L2 项目周期级 L1 积累 + 场景检测
L3 长期周期性 大量 L1/L2 历史

关键概念:生成是「提炼」不是「替换」——每层提炼出后,下层仍保留(第 1 节讲过)。所以四层是「叠加生长」的关系,时间越久,四层都越丰富。这是「经验复利」在数据结构上的体现。

二、召回方向:自顶向下逐层回退

召回的方向与生成相反——自顶向下,优先用高层快速进入语境,不够时再回退到底层取细节:

召回方向(自顶向下,优先高层、回退底层) 问题来了 │ ├─ 优先级1: L3 画像 + L2 场景 │ (快速进入语境,平时最常用) │ 够用? → 直接答 │ ├─ 优先级2: L1 原子(回退) │ (需要具体事实时) │ 够用? → 答 │ └─ 优先级3: L0 原话(再回退) (需要核对原话/时间/来源时) → 答
召回优先级 何时用
1(最高) L3 + L2 平时,快速进入语境
2 L1 需要具体事实
3(最低) L0 需要核对原话

这种「优先高层、回退底层」的策略,实现了「平时快(高层秒进)、需要时准(底层核对)」的平衡。值得注意的是,「回退」不是每次都走到底——大多数问题在 L2/L3 层就够用了,只有需要精确细节或核对原话时才回退到 L1/L0。

三、召回预算:三道闸门

召回结果不能无限制地塞进上下文——上下文窗口有限,记忆太多会挤掉真正重要的内容。所以所有召回结果要过三道预算闸门:

闸门 防的问题 怎么限
条数上限 条数过多稀释重点 召回结果最多 N 条
字符上限 单条过长挤占窗口 总字符数不超阈值
超时上限 召回拖慢响应 召回耗时超阈值则截断
三道闸门的执行顺序 召回原始结果 │ ├─ 闸门1: 条数上限 │ └─ 超过 N 条? 按相关度排序,只取前 N 条 │ ├─ 闸门2: 字符上限 │ └─ 累计字符超阈值? 从末尾裁剪 │ └─ 闸门3: 超时上限 └─ 召回耗时超阈值? 立即返回已收集的结果 ▼ 最终注入上下文的记忆(受控的量)

⚠️ 注意:三道闸门的优先级是「超时 > 字符 > 条数」——超时是最硬的(用户在等,必须及时返回),其次是字符(防撑爆窗口),最后是条数(防稀释)。这个优先级体现了「响应优先于完整」的工程取舍。

四、三个机制如何协同:平时快、需要时准、不撑爆

把生成、召回、预算三者合起来,就看到了整套设计的完整意图:

协同效果 ① 生成逐层提炼 → 四层都有,各有粒度(提供「快与准」的选项) ② 召回优先高层 → 平时用 L2/L3 秒进语境(实现「快」) ③ 回退到底层 → 需要时取 L1/L0 核对细节(实现「准」) ④ 预算三闸门 → 记忆不撑爆上下文(实现「不喧宾夺主」) → 四者协同 = 平时快 + 需要时准 + 不撑爆

这就是「记忆不是平铺记录,而是逐层生长」这条命题的完整工程含义——「逐层生长」不只是把记忆分四层,而是配合「分层召回」和「召回预算」,形成一个能在有限上下文窗口里高效工作的记忆系统。

五、与第 6 章的衔接:概念到此,实现开始

本节讲清了「分层生成 + 分层召回 + 召回预算」的机制,但故意没讲「具体怎么抽取、怎么检索、怎么裁剪」——那是第 6 章 MemoryCore 抽取 Pipeline 精读的内容。两章的分工是:

本节(第 4 章) 第 6 章
讲「机制是什么」 讲「机制怎么实现」
四层各自存什么 Pipeline 怎么从 L0 抽 L1/L2/L3
召回优先高层回退底层 BM25+向量+RRF 怎么混合检索
三道预算闸门 闸门的具体阈值与裁剪顺序

💡 技巧:读完第 4 章,你应该能向别人解释清楚「四层是什么、为什么分层、怎么召回、怎么控量」;读完第 6 章,你应该能动手排查「为什么这次召回不准/太慢/漏了」。第 4 章是概念地图,第 6 章是施工图纸,两者配套。

本节要点回顾

  1. 生成自底向上:L0→L1→L2→L3 逐层提炼,节奏由快到慢,提炼而非替换,四层叠加生长。
  2. 召回自顶向下:优先 L3/L2 秒进语境,需要细节回退 L1,需要原话回退 L0。
  3. 三道闸门:条数(防稀释)、字符(防撑爆)、超时(防拖慢),优先级超时>字符>条数。
  4. 协同效果:生成提供粒度选项 + 召回实现快准平衡 + 预算防喧宾夺主 = 有限窗口内的高效记忆。
  5. 与第 6 章对子:本章讲机制是什么,第 6 章讲机制怎么实现——概念地图配施工图纸。

第 4 章到此完成,四层记忆架构的概念全貌已清。下一章换视角——从「记忆内部」转到「人怎么操作」,看 MemoryHub 控制台如何让人治理这套系统。


发布者: 作者: 灏天文库 转发
评论区 (0)
U