背景¶
大模型的 token 预算有限且检索成本随数据量的增加而升高(LLM 底层的 transformer 架构, 其背后的 self-attenton 计算复杂度 - $$O(n^2 \cdot d)$$),其中 n = token 数量,d = 向量维度。建立一套记忆管理机制显得很有必要。
记忆层级设计¶
- 核心记忆(Semantic Memory):如用户画像,系统偏好等。这些信息优先级最高,且会永久无损地直接注入到每次交互的 System Prompt 中。
- 短期记忆(Short-term/ Working Memory): 当前轮次正在进行的原始对话上下文。属于未经压缩的明文记录,但受限于 LLM 的 token 预算,通常采用滑动窗口机制,先进先出。
- 摘要缓存(Summary Buffer):一种无损到有损的过渡机制,当短期记忆的长度逼近 token 预算上限时,直接丢弃会导致 agent“失忆”,summary buffer 将即将溢出的旧对话消息压缩成精简的摘要,从而以极低的 token 成本携带历史语境。
- Reflection(反思):Agent 的高阶认知与复盘机制,agent 会在后台定期(或者特定条件触发时),审视近期对话,从中提取深层逻辑,更新用户偏好或总结失败经验等信息,将其总结到核心记忆或者长期记忆中。
Consolidation 记忆固化整合¶
将高频使用的上下文,或经 reflection 提炼的高价值信息,持久化到向量数据库的过程。
作用:让知识脱离单一的对话 session 限制,转变为跨会话可检索的长期经验。
Decay / Eviction 衰减/丢弃¶
若记忆只增不减,会导致向量数据库的检索噪声增加,召回准确率下降。因此需要引入遗忘机制。
Decay 机制:是一种连续、渐进的软性遗忘。系统为每条记忆分配一个权重。随着时间推移,若某条记忆很少命中,它便会按照衰减函数的设计不断下降,导致其在相似度检索中,越来越难以排到前面。
Eviction 机制:是一种离散、硬性的清理行为。当满足以下条件时,系统会触发驱逐丢弃行为,直接将该记忆从工作区移除,或者从数据库中彻底删除/冷归档。
- 缓存区满
- token 预算不足
- 某条记忆的 decay 权重低于绝对阈值