AI Agent记忆系统架构:从短期记忆到长期持久化
为什么Agent需要记忆? 传统大语言模型的上下文窗口本质上是"短期工作记忆",一旦对话超出窗口长度,早期信息就会丢失。而真正的智能体需要在跨会话、跨任务的长周期运作中保持上下文连贯性——这就要求我们构建结构化的记忆系统。 记忆系统的三层架构 1. 工作记忆(Working Memory) 工作记忆对应Agent当前正在处理的上下文,通常映射为LLM的context window。工程实现上需要注意以下几点: 动态裁剪策略:不是简单截断,而是基于注意力权重或摘要压缩来保留关键信息 滑动窗口+摘要:将溢出的历史对话通过小模型生成摘要,注入到新窗口头部 多模态工作区:除文本外,缓存当前任务相关的图片、表格、代码片段 一个典型实现是使用Redis作为热数据存储,配合embedding检索,将相关历史片段动态注入context。 2. 情景记忆(Episodic Memory) 情景记忆记录Agent过去的交互经历,包括时间、场景、行为和结果。实现方式通常是向量数据库存储: 记忆条目结构: { "id": "ep_001", "timestamp": "2026-07-16T10:00:00Z", "task": "数据分析任务", "actions": ["读取CSV", "生成图表", "撰写报告"], "outcome": "成功生成季度销售分析报告", "embedding": [0.12, -0.34, ...], "metadata": {"user_id": "u123", "session_id": "s456"} } 检索时,将当前任务描述编码为向量,在数据库中做kNN查询,召回最相关的N条历史经历。 3. 语义记忆(Semantic Memory) 语义记忆是Agent的"知识库",存储事实、概念和规则。与RAG系统类似,但更强调知识的结构化组织和增量更新: 本体图谱:使用知识图谱存储实体关系 文档库:向量索引+全文检索双路召回 技能库:Agent掌握的工具调用模式和Prompt模板 记忆的写入与遗忘 记忆系统最关键的不是存储,而是遗忘机制。人脑会自动遗忘无关信息以保持认知效率,Agent同样需要: 衰减权重:每条记忆有一个decay score,随时间递减,长期未被检索的记忆降权 合并压缩:相似记忆条目通过聚类合并,提取共性模式 主动遗忘:低质量记忆(如失败且无参考价值的尝试)直接删除 实践中的策略是设置三层保留周期: 7天内:完整保留所有细节 7-30天:保留摘要和关键决策点 30天以上:仅保留高价值模式和教训 工程实现要点 存储选型 记忆层 推荐存储 理由 工作记忆 Redis / 本地内存 低延迟,频繁读写 情景记忆 Milvus / Pinecone 向量检索为主 语义记忆 Neo4j + 向量库 图查询+向量混合 检索融合 最终注入prompt的记忆来自三层的融合结果。推荐的重排策略: ...