AI Agent 记忆系统设计:长短期记忆如何实现?什么时候存?什么时候查?
AI Agent 记忆系统设计:长短期记忆如何实现?什么时候存?什么时候查?
很多人刚开始做 Agent,都会产生一个误区:
给 Agent 接一个向量数据库,它就有记忆了。
实际上,向量数据库 ≠ 记忆系统。
真正的 Agent Memory 远不只是「把聊天记录存到 Milvus」这么简单,而是一套完整的记忆管理机制(Memory Management)。
目前 OpenAI、Anthropic、Google、Mem0、LangGraph 等主流 Agent 框架,基本都采用类似的设计思路:
短期记忆 + 长期记忆 + 记忆管理 + 检索机制
本文结合目前主流方案,系统总结 Agent 的记忆系统如何设计。
一、Agent 为什么需要记忆?
如果没有记忆,每一次调用 LLM 都是一次新的对话。
例如:
用户:
我叫张三。
下一轮:
用户:
我叫什么?
模型其实不知道。
因为模型本身没有状态。
真正让它"记住"的是:
System Prompt
+
历史消息
+
Memory
一起发送给模型。
所以:
Agent 的记忆,本质就是下一次推理时能够重新提供给模型的信息。
二、目前主流的记忆架构
目前主流 Agent 基本都是下面这种结构。
User
│
▼
Memory Manager
│
┌────────┴────────┐
│ │
▼ ▼
Short Memory Long Memory
(上下文) (向量数据库)
│ │
└────────┬────────┘
▼
Prompt
│
▼
LLM
可以理解成:
Agent 有两个"大脑"。
一个负责当前对话。
一个负责长期知识。
三、短期记忆(Short-term Memory)
短期记忆就是:
当前会话(Context Window)。
例如:
用户:
你好
AI:
你好
用户:
介绍一下 LangChain
AI:
......
用户:
总结一下刚才说的内容
这里模型能够总结。
因为:
Prompt 会自动携带:
User:你好
Assistant:你好
User:介绍 LangChain
Assistant:......
这些消息全部重新发送。
模型并不是"记住"了。
而是重新看了一遍。
主流实现方式
几乎所有 Agent 都采用:
messages = [
HumanMessage(),
AIMessage(),
HumanMessage(),
AIMessage()
]
例如:
LangGraph
LangChain
OpenAI Agents SDK
Anthropic SDK
都是这种方式。
短期记忆什么时候删除?
目前一般有三种策略。
方法一:窗口截断(Sliding Window)
例如:
最近20轮
超过直接删除。
最简单。
也是最常见。
方法二:Token 控制
例如:
Context ≤ 32000 Token
超过:
删除最旧消息。
目前很多 Agent 都这么做。
方法三:历史摘要(Conversation Summary)
例如:
第一天聊天
↓
LLM 总结
↓
生成摘要
↓
以后只保留摘要
例如:
Summary:
用户目前正在开发 AI 客服系统。
主要使用 FastAPI。
希望支持 MCP。
以后 Prompt:
Summary
+
最近几轮消息
OpenAI、LangGraph 都支持这种做法。
四、长期记忆(Long-term Memory)
长期记忆就是:
跨会话保存的重要信息。
例如:
今天:
用户:
我公司做教育行业。
下周:
帮我设计客服。
Agent:
结合你们教育行业……
这里就是长期记忆发挥作用。
长期记忆一般放:
Vector DB
Milvus
Qdrant
Chroma
PGVector
Weaviate
存的是:
文本
Embedding
Metadata
例如:
{
"text":"用户公司卖教育实训箱",
"embedding":[...]
"type":"user_profile"
}
五、什么时候写入长期记忆?
不是每一句话都存。
否则:
你好
谢谢
好的
哈哈
全部进入向量库。
最终:
垃圾越来越多。
检索越来越差。
所以:
目前主流都会做:
Memory Writing(记忆写入)
方法一:规则判断(Rule-based)
最简单。
例如:
用户说:
我叫张三
↓
保存
我公司做 AI
↓
保存
哈哈哈哈
↓
不保存
例如:
if 包含:
姓名
职业
公司
偏好
长期计划
↓
保存
企业里很多项目就是这样。
实现简单。
效果稳定。
方法二:LLM 判断(主流)
例如:
Prompt:
判断下面内容是否值得长期记忆。
如果值得:
返回 Yes。
否则:
No。
例如:
用户:
我以后都使用 Python。
LLM:
Yes
然后:
写入 Memory
OpenAI
Anthropic
Mem0
基本都有类似做法。
方法三:重要性评分(Importance Score)
很多 Agent 会让模型打分。
例如:
重要程度:
0~10
例如:
今天下雨
2
以后都使用 LangGraph
9
超过:
Score > 7
↓
保存
这是很多论文喜欢的方法。
六、什么时候查询长期记忆?
很多新人都会问:
是不是每轮都去查向量数据库?
答案:
理论可以。
生产一般不会。
原因很简单。
假设:
用户:
你好
你去查:
Milvus
TopK=10
毫无意义。
增加:
延迟。
Token。
成本。
主流方案一:每轮检索(简单)
流程:
User
↓
Embedding
↓
Vector Search
↓
TopK
↓
Prompt
↓
LLM
优点:
实现简单。
缺点:
浪费很多查询。
很多 Demo 都这样。
真正线上一般不会。
主流方案二:Memory Router(推荐)
增加一个判断器。
User
↓
Memory Router
↓
是否需要记忆?
↓
Yes
↓
Vector Search
↓
LLM
例如:
Prompt:
用户:
继续昨天那个客服项目。
Router:
需要历史。
↓
查询 Memory
如果:
你好
Router:
无需查询。
这是目前越来越主流的方案。
方法三:LLM 自主决定(Agent Memory)
很多 Agent 会让模型自己决定。
例如:
Thought:
我需要知道用户之前公司的信息。
↓
Action:
Search Memory
↓
Observation:
……
↓
继续回答
例如:
ReAct Agent
Tool Calling
Memory Search Tool
模型自己调用:
search_memory()
这也是现在很多 Agent Framework 的设计。
七、长期记忆如何检索?
目前一般都是:
Memory
↓
Embedding
↓
Vector Search
↓
TopK
↓
Rerank(可选)
↓
Prompt
例如:
用户:
继续上次那个 AI 客服。
↓
Embedding
↓
Milvus
↓
Top5
↓
Rerank
↓
最相关2条
↓
Prompt
很多系统还会结合:
向量检索
+
关键词检索(BM25)
+
Metadata过滤
+
Rerank
例如:
type=user_profile
AND
project=客服
这样命中率会更高。
目前 Hybrid Search(混合检索)已经成为很多生产系统的默认方案。
八、长期记忆存什么?
长期记忆不是聊天记录。
而是:
对未来还有价值的信息。
建议保存:
| 类型 | 示例 |
|---|---|
| 用户身份 | 我叫张三 |
| 公司信息 | 公司做教育行业 |
| 技术偏好 | 默认使用 LangGraph |
| 编程习惯 | 默认 Python |
| 长期目标 | 做 AI Agent 平台 |
| 项目背景 | 正在开发智能客服 |
| 固定约束 | 数据库存 PostgreSQL |
不建议保存:
你好
谢谢
好的
哈哈
今天天气不错
这些没有长期价值。
九、目前主流框架如何实现?
LangGraph
短期:
Messages State
长期:
Memory Store
+
Checkpoint
开发者需要自行实现:
什么时候存
什么时候查
自由度最高。
Mem0(目前最流行)
Mem0 把 Memory 做成了一个独立系统。
它负责:
- 自动判断是否值得保存
- 自动提取重要信息
- 自动更新旧记忆
- 自动检索相关记忆
- 自动去重
- 自动合并相似记忆
开发者只需要:
Memory.add()
Memory.search()
即可完成完整记忆管理。
很多团队已经直接使用 Mem0,而不是自己从零开发。
OpenAI Memory
目前主要面向 ChatGPT 产品。
特点:
- 自动保存用户偏好
- 自动更新
- 自动引用
整体思路与 Mem0 类似。
十、推荐的生产级架构
User
│
▼
Short Memory
(最近对话)
│
▼
Memory Router
(判断是否查询长期记忆)
│ │
不需要 需要
│ ▼
│ Vector Search
│ │
└──────┬───────┘
▼
Prompt Builder
│
▼
LLM
│
▼
Memory Writer
(判断是否写入长期记忆)
│
▼
Long Memory DB
整个流程可以总结为:
- 短期记忆:保存当前会话,维持上下文连续性。
- 长期记忆:保存用户长期有效的信息,支持跨会话。
- Memory Router:决定当前问题是否需要检索长期记忆,避免无效查询。
- Memory Writer:决定哪些信息值得保存,避免向量库被无意义内容污染。
- Hybrid Search + Rerank:检索长期记忆时结合向量、关键词和元数据,提高命中率。
总结
真正的 Agent 记忆系统,不是简单地把聊天记录放进向量数据库,而是一套完整的「写入、管理、检索、更新」机制。
目前主流实践已经逐渐形成共识:
- 短期记忆:保存最近几轮对话,通过消息列表、滑动窗口或摘要实现。
- 长期记忆:保存用户画像、项目背景、长期偏好等跨会话信息,通常存储在向量数据库中。
- 写入时机:不是每句话都保存,而是通过规则、LLM 判断或重要性评分筛选有价值的信息。
- 检索时机:不是每轮都查询,而是通过 Memory Router 或 Agent 自主调用,在真正需要历史信息时再检索。
- 检索方式:以向量检索为基础,结合关键词检索、Metadata 过滤和 Rerank,形成 Hybrid Search,提高准确率。
随着 Agent 技术的发展,记忆管理已经成为 Agent 系统中与规划(Planning)、工具调用(Tool Use)同等重要的核心能力,也是未来智能体走向长期自治的重要基础。
更多推荐


所有评论(0)