LLM本质上是无状态的模型,每次调用都像一次“短暂失忆”。为了让 AI Agent真正理解上下文、具备个性化交互和任务持续性,引入记忆系统至关重要。本文将从技术与架构角度出发,介绍构建短期和长期记忆的方法和最佳实践。
一、AI Agent中的记忆类型

1. 短期记忆(Short-Term Memory)
-
• 主要通过上下文窗口或滚动缓存维持; -
• 适用于保持当前会话连贯性; -
• 依赖于 LLM 的 token 限制,不能存储跨会话知识。
2. 长期记忆(Long-Term Memory)
-
• 可持久化存储知识、用户偏好、交互事件等; -
• 分为三类: -
• 语义记忆:结构化知识; -
• 情节记忆:用户行为记录; -
• 程序性记忆:执行流程和策略。
这种记忆帮助代理“记住你是谁”,支持更复杂的个性化和任务处理。
二、 Agent Memory的基本实现方案
1. 向量数据库(基于嵌入的召回)
-
• 工具:FAISS、Pinecone、Weaviate、Qdrant、ChromaDB -
• 优点: -
• 适合语义检索; -
• 高度可扩展,适应上下文相关性。 -
• 缺点: -
• 向量计算代价高; -
• 召回质量依赖嵌入质量。 -
• 适用场景:需要长时记忆但不想存储原始文本的聊天机器人。
2. 基于token的上下文窗口(滑动窗口)
-
• 工具:OpenAI Assistants API、LangChain Buffer Memory -
• 优点: -
• 实现简单,成本低; -
• 不依赖外部存储。 -
• 缺点: -
• “健忘”:旧数据不断被新数据挤出; -
• 不具备跨会话记忆。 -
• 适用场景:仅需要当前会话上下文的简单助手。
三、最佳实践
1. 分层记忆架构(Layered Memory System)
|
|
|
|
|
|
|
|
2. 优化检索效率
-
• 利用层级摘要压缩历史数据; -
• 拆分长文本(chunking)优化向量搜索;
3. 控制计算与成本
-
• 使用 Redis 进行低延迟缓存; -
• 使用本地部署的 FAISS 进行快速向量召回; -
• PostgreSQL 用于结构化数据的长期保存。
4. 应用场景推荐
|
|
|
|
|
|
|
|
|
|
四、总结
在实际应用中,需要考虑效率和准确率、以及性价比来选择最合适的方案。
-
• 对于简单的聊天机器人场景,可以直接使用滑动窗口维护上下文,利用LLM的长上下文能力保持记忆; -
• 如果需要Agent能在多个会话历史中保持记忆,则需要借助数据库进行持久化; -
• 对于超长期的记忆,可以利用LLM进行关键信息的抽取并进行结构化存储。