返回 G01~G90 教材库
G38 · 总 Day 218教材已备 ≠ 学习已完成

G38:分层检索记忆与 No-Memory 对照

分层检索记忆将当前工作状态、事件记录与经验证事实分别保存,再按任务和权限检索;它是否优于无记忆或完整 transcript,必须在相同信息与预算下做对照。

2027-03-31retrieval-memory、hierarchical-memory、context、provenance、ablation

内容类型:预习教材(不代表已完成)
日期:2027-03-31
阶段:P3 · AGI Foundations 90
总路线:Day 218 / 360
周次:W6 · Memory、Planning 与 Tool Use
节奏:周三引导实验
状态:教材已备;学习未完成
标签:retrieval-memory、hierarchical-memory、context、provenance、ablation

一句话定义

分层检索记忆将当前工作状态、事件记录与经验证事实分别保存,再按任务和权限检索;它是否优于无记忆或完整 transcript,必须在相同信息与预算下做对照。

学习目标

  1. 构造 no-memory、full-transcript、retrieval 与 hierarchical memory 四种基线。
  2. 区分 retrieval relevance、factual correctness、task success、latency 与 state drift。
  3. 推导 precision/recall 与上下文预算、污染风险之间的取舍。
  4. 设计跨 session toy 任务,检查记忆带来的帮助和新失败。

核心知识

  • No-memory 每一步只看到当前请求,提供能力下界;full transcript 保留全部历史但引入长度、冲突和位置偏置;retrieval 选取 top-k;hierarchical 还把 working、episode、semantic summary 与 policy 分层。
  • 检索命中相关文本不等于命中正确事实。评价需要 query-level relevance、source validity、freshness 和 downstream use;模型可能检索到正确条目却忽略它。
  • 摘要是有损压缩。若多次“摘要的摘要”,错误与遗漏会被固化。事件日志应保持可回溯,semantic summary 作为派生视图并记录生成版本。
  • Write policy 与 read policy 同等重要。把每段模型输出都写入长期记忆会产生 self-contamination;只写人工确认又可能降低适应速度。
  • 跨 session 任务检验的是外部状态延续,不等于模型参数学习。必须区分 in-context adaptation、memory update 与 gradient update。

机制与推导

设相关记忆集合为 (R_q),检索结果为 (K_q):

[ Precision@k=\frac{|R_q\cap K_q|}{|K_q|},\qquad Recall@k=\frac{|R_q\cap K_q|}{|R_q|} ]

提高 (k) 往往增加 recall,却可能降低 precision、占用更多 token 并引入冲突。可把简化效用写成:

[ U(k)=P(success\mid K_q)-\lambda C_{token}(k)-\rho P(poison\mid K_q) ]

这个式子提醒我们报告成本与风险,不提供通用最优 (k)。分层系统可先进行硬过滤:

scope/permission -> validity/expiry -> source tier
-> semantic retrieval -> recency tie-break -> context packing

硬过滤在相似度排序之前。否则一个高度相似但越权的事件可能进入 context。

State drift 可定义为显式 task state 与 authoritative event replay 结果的差异。例如字段集合上的距离:

[ D_t=\sum_j \mathbb 1[\hat x_{t,j}\neq x^{replay}_{t,j}] ]

它只适合可结构化字段,不应拿来衡量开放文本“语义正确”。对于文本摘要,可抽取可验证 claim 并逐条指向来源。

最小练习或观察步骤

  1. 构造 12 步、分两次 session 的合成任务:第一场读取对象偏好和限制,第二场在干扰事件后继续计划。
  2. 准备四种 memory 条件,保持相同基础模型或确定性规则;full transcript 与 retrieval 的总 token 预算要记录。
  3. 注入一条过期信息、一条矛盾信息和三条无关但词面相似的信息,并为真实条目保留 source/validity。
  4. 记录 retrieval precision/recall、有效来源比例、context token、完成状态、错误工具调用数与结构化 drift。
  5. 做 write-policy 消融:写全部模型输出、只写工具事件、工具事件加人工确认摘要。观察污染与召回,不预设某策略胜出。
  6. 逐条查看失败:是没写入、没检索、检索错误、模型没使用,还是工具执行失败。不要把它们都归为“memory 不好”。

常见误区与边界

  • full transcript 信息最多就被当成公平上界,忽略上下文长度、位置与噪声造成的使用失败。
  • 只报告 task success,不知道成功是否依赖错误记忆或偶然猜测。
  • 以 embedding similarity 评价全部检索,忽略时效、来源和权限。
  • 摘要覆盖原始事件,无法追踪哪一步引入了错误。
  • 跨 session 成功被描述成“continual learning”;参数并未更新,可能只是数据库读取。
  • 小型合成任务只能比较架构机制,不能证明长期人格、稳定身份或人类式记忆。

研究/系统场景连接

客户服务 Agent 可在 session 间保留“客户已确认的联络偏好”和“工具返回的案件状态”,但模型推测的情绪、风险或意图不应自动升级为事实。金融记录还需遵守用途与保留期限,删除请求不能只从向量索引移除而保留在摘要。研究助理可用事件层保存实际实验配置、语义层保存带引用的小结;跨实验复用时始终回到原始记录核对。

自检问题

  1. retrieval precision 与 task success 为什么可能方向不一致?
  2. 为什么硬权限过滤必须早于向量相似度?
  3. summary 应替代还是引用 event log?
  4. 怎样区分未写入、未检索与未使用三类失败?
  5. 跨 session memory 为什么不等于参数层 continual learning?

专业课程对齐

  • 阅读 MemGPT 原始论文,抽取 main context、external context 与 memory management 的关系,再为其补上来源和权限问题。
  • 阅读 Generative Agents 原始论文,观察 memory stream、retrieval 与 reflection 的评分因素,并思考仿真评价与真实业务事实的差别。
  • 阅读 ReAct 原始论文,把检索视为一种 action/observation,检查 retrieved text 如何进入后续决策。

深入学习提示

可进一步研究 temporal retrieval、graph memory、learned write policy 与 retrieval calibration。先保持本地、小数据、可逐条人工审阅;如果增加复杂索引让失败更难解释,就退回规则检索。重点不是存得越多,而是能否说明每个 claim 的来源、有效期与使用路径。

学后填写区

  • 实际比较的 memory 条件:
  • 检索与下游结果:
  • 一条污染或过期传播路径:
  • token/latency 取舍:
  • 可支持与不可支持的主张:
  • 尚未理解的问题:
本页是未来 P3 的预习教材。等 P1、P2 完成并正式进入 P3 后,再填写真实理解、实验现象与不确定项;现在阅读不会改变P1 唯一进度账本