G38:分层检索记忆与 No-Memory 对照
分层检索记忆将当前工作状态、事件记录与经验证事实分别保存,再按任务和权限检索;它是否优于无记忆或完整 transcript,必须在相同信息与预算下做对照。
内容类型:预习教材(不代表已完成)
日期:2027-03-31
阶段:P3 · AGI Foundations 90
总路线:Day 218 / 360
周次:W6 · Memory、Planning 与 Tool Use
节奏:周三引导实验
状态:教材已备;学习未完成
标签:retrieval-memory、hierarchical-memory、context、provenance、ablation
一句话定义
分层检索记忆将当前工作状态、事件记录与经验证事实分别保存,再按任务和权限检索;它是否优于无记忆或完整 transcript,必须在相同信息与预算下做对照。
学习目标
- 构造 no-memory、full-transcript、retrieval 与 hierarchical memory 四种基线。
- 区分 retrieval relevance、factual correctness、task success、latency 与 state drift。
- 推导 precision/recall 与上下文预算、污染风险之间的取舍。
- 设计跨 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 并逐条指向来源。
最小练习或观察步骤
- 构造 12 步、分两次 session 的合成任务:第一场读取对象偏好和限制,第二场在干扰事件后继续计划。
- 准备四种 memory 条件,保持相同基础模型或确定性规则;full transcript 与 retrieval 的总 token 预算要记录。
- 注入一条过期信息、一条矛盾信息和三条无关但词面相似的信息,并为真实条目保留 source/validity。
- 记录 retrieval precision/recall、有效来源比例、context token、完成状态、错误工具调用数与结构化 drift。
- 做 write-policy 消融:写全部模型输出、只写工具事件、工具事件加人工确认摘要。观察污染与召回,不预设某策略胜出。
- 逐条查看失败:是没写入、没检索、检索错误、模型没使用,还是工具执行失败。不要把它们都归为“memory 不好”。
常见误区与边界
- full transcript 信息最多就被当成公平上界,忽略上下文长度、位置与噪声造成的使用失败。
- 只报告 task success,不知道成功是否依赖错误记忆或偶然猜测。
- 以 embedding similarity 评价全部检索,忽略时效、来源和权限。
- 摘要覆盖原始事件,无法追踪哪一步引入了错误。
- 跨 session 成功被描述成“continual learning”;参数并未更新,可能只是数据库读取。
- 小型合成任务只能比较架构机制,不能证明长期人格、稳定身份或人类式记忆。
研究/系统场景连接
客户服务 Agent 可在 session 间保留“客户已确认的联络偏好”和“工具返回的案件状态”,但模型推测的情绪、风险或意图不应自动升级为事实。金融记录还需遵守用途与保留期限,删除请求不能只从向量索引移除而保留在摘要。研究助理可用事件层保存实际实验配置、语义层保存带引用的小结;跨实验复用时始终回到原始记录核对。
自检问题
- retrieval precision 与 task success 为什么可能方向不一致?
- 为什么硬权限过滤必须早于向量相似度?
- summary 应替代还是引用 event log?
- 怎样区分未写入、未检索与未使用三类失败?
- 跨 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 取舍:
- 可支持与不可支持的主张:
- 尚未理解的问题: