别再迷信 RAG 向量检索了,尝试用模拟梦境机制构建 AI 长期记忆
很多开发者在做 AI Agent 时,习惯性地把 RAG(检索增强生成)当作解决长期记忆的唯一方案。但实操下来你会发现,单纯依赖向量数据库在碎片化信息的检索上效率极低,模型往往在海量相似的文本块里捞关键词,却无法真正“理解”用户的习惯或经验。
真正的长期记忆不应该是简单的存储与检索,而应该是像人类大脑那样,在离线状态下对信息进行重新组织、压缩和关联。我最近在尝试一种名为“Dreams(梦境)”的机制,核心逻辑就是模拟人类在睡眠时巩固记忆的过程:让模型在后台对白天的交互记录进行回顾和总结,将零散的对话点转化为结构化的知识。这样在下次调用时,Agent 提取的是结论,而不是原始对话。
这种“离线处理”模式最直接的体感就是极大地降低了 Token 消耗。因为模型不再需要读取冗长的上下文,而是读取经过“梦境”处理后的精简记忆片段。
如果你想在自己的工作流中部署这套逻辑,可以参考以下实战流程:
首先,你需要建立一个原始记忆池。不要直接存入向量数据库,而是使用 JSONL 格式记录所有原始交互,必须包含精确的时间戳和对话内容。例如,记录格式应为 {"timestamp": "2023-10-27T10:00:00Z", "user": "我喜欢用 Rust 写后端", "agent": "明白了,Rust 的内存安全确实很强"}。这个 Buffer 层的作用是保证信息的原汁原味,为后续的总结提供纯净的素材。
其次,设定一个定时触发的“梦境”总结周期。建议每 24 小时运行一次异步任务,将过去一天的所有原始 JSONL 记录喂给一个高推理能力模型(建议使用 GPT-4o 或 Claude 3.5 Sonnet 等长文本且逻辑强模型)。此时需要使用特定的指令模板引导模型执行“记忆固化”,例如:
“你现在处于离线处理状态。请审视以下过去 24 小时的所有交互记录,识别出用户习惯、关键事实和重复出现的偏好。将这些信息转化为【永久记忆片段】,删除冗余的语气词,只保留核心事实。输出格式:[事实] -> [关联维度]。”
最后,将生成的总结片段存入一个专门的 long_term_memory 库中。当用户下次提问时,Agent 的检索链路发生了变化:它不再直接去原始对话库里搜索,而是先在 long_term_memory 库中匹配相关事实。如果匹配成功,这些精炼后的事实将直接作为 System Prompt 的一部分注入。
这种方案最硬核的地方在于,它把计算压力从实时对话转移到了后台异步处理。相比于盲目追求增加上下文窗口(Context Window),这种模拟记忆巩固的机制让 Agent 显得更聪明。它不再是机械地在数据库中搜索,而是在“思考”如何记住用户。当你发现 Agent 能够直接说出“我知道你倾向于用 Rust 处理后端逻辑”而不是通过检索一段三天前的对话来推断时,这种机制的威力就体现出来了。
全部回复 (3)
想当场把话说完?进全球 AI 聊天室,登录就能开口。
让它定期总结对话这种骚操作绝了,感觉AI终于有‘长期记忆’了。