智能体记忆系统
语言模型本身在两次独立调用之间完全没有任何记忆。你在智能体中看到的"记忆",实际上是围绕模型精心构建的一层机制。
为什么智能体需要记忆?
没有记忆的话,与智能体的每一次交互都要从零开始:用户每次都得重新做自我介绍,重新说明自己的偏好, 而智能体也无法从以往的交互中学到任何东西。记忆解决了这个问题——但记忆有多种类型,各自解决不同的问题。
短期记忆(Short-term)
即当前对话的上下文窗口——本次对话的消息历史记录。这是最简单的一种记忆,但会随着对话结束或上下文窗口被填满而消失。
长期记忆(Long-term)
需要跨会话保留的信息(用户偏好、购买历史)。通常存储在向量数据库中,并在每次新对话开始时检索出相关部分—— 使用的正是与 RAG 完全相同的机制。
情景记忆(Episodic)
对过去事件的具体记录:"用户在 2026 年 3 月 12 日下了订单 X,之后又取消了。"与保存"一般性事实"的语义记忆不同, 情景记忆记录的是带有时间细节的"具体事件"。
语义记忆(Semantic)
关于世界或用户的一般性、稳定的事实:"用户对运动产品感兴趣","用户的鞋码是 42 码"。这类记忆通常是从多个事件 或反复出现的交互中归纳提炼而来的。
程序性记忆(Procedural)
关于"如何完成"一项任务的知识——例如完成一笔订单所需的正确工具调用顺序。这类记忆通常以规则、模板, 甚至系统提示词/代码本身的形式内嵌存在,而不是一条简单的数据记录。
如何实现
| 记忆类型 | 常见存储位置 |
|---|---|
| 短期记忆 | 应用内存(RAM)中的消息数组 |
| 长期记忆 / 语义记忆 | 向量数据库 |
| 情景记忆 | 关系型数据库或结构化日志 |
| 程序性记忆 | 系统提示词、规则文件或代码 |
遗忘与巩固(Forgetting & Consolidation)
一个从不删除任何内容的记忆系统,会逐渐变成一个杂乱且代价高昂的仓库——无论是在存储空间方面,还是在检索质量方面 (无关记录越多,语义检索的噪声就越大)。因此,成熟的记忆系统通常还会配备一个管理层:
- 巩固(Consolidation) — 若干相关的小事件(情景记忆)会随着时间逐渐被归纳总结为一个更概括的事实(语义记忆);例如,五次购买运动鞋的记录,会被归纳为"用户对运动服饰感兴趣"这一事实。
- 衰减(Decay) — 较旧且较少被使用的记录,在检索排序中会获得更低的分数,以便让更新的信息优先呈现。
- 显式删除 — 用户必须能够清除自己记忆中的部分内容(这是常见的隐私要求);这意味着记忆系统从一开始就需要设计为支持选择性删除,而不仅仅是不断添加。
常见问题
每个智能体都需要这些类型的记忆吗?
不需要。一个简单的问答智能体可能只需要短期记忆;而一个个性化购物助手则需要这四种类型的组合。
长期记忆与 RAG 有什么区别?
RAG 是一种检索技术;长期记忆是该技术的一种应用——你在"组织的通用知识"上运行 RAG,而在"某个用户的特定历史记录"上运行长期记忆。