记忆系统最大的风险不是"记不住",而是"忘不掉"。
没有遗忘,系统终将变成噪音库:召回精度下降、Token 浪费、用户反感。
一、问题定义:为什么需要遗忘?
短期记忆有 TTL(存活时间),过期自动删除。长期记忆没有 TTL,如果不加管理,会无限增长。
一个典型场景:用户小王连续使用 30 天后,记忆库里只有"对橡胶过敏""偏好 XL""订单 12345""投诉物流慢"等几条有效记忆,其余全是"好的""谢谢"这类一次性对话。有效记忆占比低,向量检索 Top-5 结果里大半是无效内容。画像被稀释、Token 被占用、回答质量下降。
这就是没有遗忘的后果:记忆越多,噪音越大。
二、核心概念:三维度遗忘决策
遗忘不是简单按时间删除,而是三个维度综合判断:
- 时间衰减:记忆随时间自然失效。超过一定天数未访问,大概率已失效。
- 重要性阈值:低价值记忆不值得保留。一次性对话、无效提取结果直接淘汰。
- 访问频率:从未被召回的记忆大概率是噪音。长期无人问津,留着只会干扰检索。
具体规则:
应归档的记忆:超过 90 天未访问且重要性为 2 或更低;超过 180 天未被召回过;已过期的记忆。
应删除的记忆:超过 365 天未访问且重要性为 1 的低价值记忆。
为什么是 90 天? 电商购买周期通常 30-90 天,超过这个时间窗口的记忆大概率失效。这与短期记忆的 7 天 TTL 形成互补------短期记忆管近期,长期记忆管更久,但都需要最终遗忘。
重要性为 1 的是什么? "好的""谢谢""再见"等一次性对话、明显无效的提取结果、用户主动标记为不重要的内容。这些直接删除,不经过归档。
遗忘会误删重要记忆吗? 不会。三层保护:重要性 3 及以上的记忆不会被归档或删除;曾被召回过的记忆不会被加速遗忘;删除前先归档降级,保留 30 天观察期,期间仍可召回。
三、归档 vs 删除:先降级再清除
归档和删除是两步操作,中间有缓冲。
归档:把记忆从"热存储"降级到"冷存储"。重要性从 2 降为 1,延长过期时间,但记录仍然保留,可以被召回。
删除:直接从存储中移除,不可恢复。
为什么不直接删? 归档保留了"可恢复"的选项。如果用户突然问起 6 个月前的退货记录,系统仍然可以检索到。删除是不可逆的最终操作,必须谨慎。
被归档的记忆用户能感知到吗? 不能。归档只是降低了检索优先级,不会影响正常对话。用户感知到的唯一变化可能是"很久以前的记忆偶尔被召回",但这正是预期行为。
四、批量执行:定时任务
遗忘不是实时进行的,而是通过定时任务批量执行。
执行时机:每天凌晨低峰时段,避免影响白天业务。
执行顺序:先清理短期记忆的过期摘要,再把长期记忆中的旧记录降级归档,最后删除符合删除条件的记忆块。
为什么分三步? 归档是"降级",删除是"最终操作"。先归档可以把需要删除的记忆筛选出来并降级,下次执行时再真正删除。两步分离降低了误删风险。
会影响存储性能吗? 不会。定时任务在凌晨执行,使用过滤条件批量拉取,有上限控制,不会全表扫描。删除同样批量处理,单次有上限。
遗忘策略需要根据业务场景调整参数,并配套监控指标验证效果。
五、配置与监控
遗忘机制的关键参数可以按业务场景调整:
电商客服:归档 90 天、删除 365 天。与购买周期匹配。
医疗咨询:归档 180 天、删除 730 天。病史需要长期保留。
金融理财:归档 365 天、删除 1825 天。合规要求长期保留。
监控遗忘效果需要看三个指标: 记忆块总数应稳定或缓慢下降,说明遗忘在正常执行;每日删除计数反映执行力度;召回命中率如果下降,说明可能删除过度。
六、核心要点
- 遗忘比记忆更重要:没有遗忘的记忆系统终将变成噪音库
- 三维度决策:时间衰减 + 重要性阈值 + 访问频率,三者结合
- 归档是缓冲区:先归档再删除,给误判留出 30 天挽回期
- 批量定时执行:与短期记忆清理解耦,凌晨低峰执行
- 监控三指标:块数趋势、删除计数、召回命中率,三者结合判断遗忘是否"恰到好处"