你有没有想过一个问题:为什么每次打开 ChatGPT,它都像第一次见到你一样?为什么你跟一个 AI 助手说了一百遍“代码里别用中文变量名”,它下次照样给你写出用户列表 = []?
答案很简单——大语言模型本身是无状态的。每一次请求对它来说都是全新的一张白纸。但一个真正有用的 AI Agent,必须能记住你的偏好、积累过的工作经验、以及你们之间达成过的默契。这就引出了 Agent 系统中最核心的基础设施之一:记忆系统。
一、为什么记忆系统是 Agent 的“分水岭”
一个没有记忆系统的 Agent,和一个有记忆系统的 Agent,差距不是功能多少的问题,而是能不能持续进化的问题。
没有记忆的 Agent 只能做“一次性问答”——你问它答,答完就忘。它无法记住你的代码风格,无法追踪你上周布置的任务进度,也无法从之前的失败中吸取教训。而有了记忆系统,Agent 就从“工具”变成了“伙伴”:它能记住你是谁、你之前做过什么、你喜欢什么样的工作方式。
这正是当前 AI 行业从 Chatbot 向 Agent 转型的关键一步。据 Gartner 预测,2025 年 Agentic AI 市场规模将突破千亿美元,而记忆管理作为支撑 Agent 持续运行的核心能力,正从“锦上添花”变成“必选项”。
二、记忆的分层架构:模拟人脑的三层漏斗
业界主流的记忆系统设计,几乎都借鉴了认知科学中人类记忆的分层模型,将其拆解为三层:
- 第一层:工作记忆(Working Memory)—— Agent 的“思考白板”。它对应的是当前正在执行的那次 LLM 调用中的上下文窗口(Context Window),容量极小但访问速度极快。当前的用户指令、上几轮对话、本次任务的中间步骤和工具返回结果,都堆在这里。这一层的挑战在于上下文窗口有限,不能把所有历史都塞进去,必须做压缩、摘要和动态选择。
- 第二层:短期记忆(Short-term / Episodic Memory)—— 会话级的“连贯性保障”。它维护一个会话内的完整交互历史,目标是保证在一次连续对话中,Agent 能记住所有发生过的细节。通常用内存中的数据结构(如 Python 字典或 Redis)实现,以会话 ID 为键,任务结束后即销毁。
- 第三层:长期记忆(Long-term Memory)—— 跨会话的“知识档案”。它存储的是从多次会话中提炼出来的持久信息:用户画像、核心偏好、经验教训、领域知识。这一层通常由向量数据库和检索增强生成(RAG)技术驱动。
三、长期记忆的核心引擎:Embedding + 向量数据库
长期记忆之所以能“记住”语义相关的内容,靠的不是关键词匹配,而是向量相似度检索。
整个流程可以概括为两步:
- 写入时(Write Path):把一段有价值的信息(如“用户偏好简洁代码风格,变量命名用英文”)通过 Embedding 模型转化为一组高维向量,连同原文及元数据一起存入向量数据库。
- 读取时(Read Path):把当前的查询(如“帮我写一个爬虫”)也转成向量,在向量数据库中找“距离最近”的几条记录——语义相近的内容在向量空间中天然靠得近。
这就解决了传统关键词搜索的根本缺陷:用户问“代码习惯”,历史里存的是“Python 风格偏好”,关键词完全不重叠,但向量检索能通过语义理解把它们关联起来。
在向量数据库的选型上,轻量级场景可以用 Chroma、FAISS,生产级场景则更多考虑 Pinecone、Milvus 或云厂商的方案(如阿里云 PolarDB 的 pgvector 方案)。值得注意的是,向量数据库市场正在爆发式增长——2023 年估值 16 亿美元,预计 2032 年将达到 106 亿美元。
四、粒度问题:记忆系统的“黄金分割点”
记忆存储的粒度是工程实践中最容易踩坑的地方。
- 粒度太细—— 每句话存一条。假设你把“用户偏好 Python,不喜欢全局变量,风格追求简洁,注释要用英文”拆成四条独立记忆,检索时可能只命中其中两条,LLM 拿到的是碎片化信息,反而造成理解偏差。
- 粒度太粗—— 把一整次任务的完整记录存成一条。两千个 token 里真正和当前问题相关的可能只有一百个,LLM 要在大量无关内容里“大海捞针”,注意力被严重稀释。
比较合理的做法是按**“一次完整交互”或“一个独立的知识点/事件”**为单位来存。前者保证信息完整性,后者保证检索精准度。过程中的细小中间结果通常不需要进入长期记忆,短期记忆即可满足需求。
五、检索策略:不只是“查一下”那么简单
记忆存好了,怎么用才是关键。生产级系统的检索策略远比“调一次向量搜索”复杂得多:
- 混合检索(Hybrid Search)是当前的主流实践。先用元数据过滤(如
user_id、task_type)做粗筛,缩小候选集范围;再对候选集做向量相似度计算;最后结合时间衰减因子和重要性权重进行重排序。一个常见的评分公式是:
最终分数=相似度×时间衰减因子×重要性权重\text{最终分数} = \text{相似度} \times \text{时间衰减因子} \times \text{重要性权重}最终分数=相似度×时间衰减因子×重要性权重 - 检索时机也有讲究:任务开始时检索相关背景知识;Agent 决策困惑时触发补充检索;用户说“像上次那样”时触发基于上下文的指代检索。
- 警惕“检索幻觉”—— 向量检索可能拉回语义相似但实际无关的内容。务必在入库时打好高质量元数据标签,并在检索后让 LLM 做一次相关性判断。
六、记忆的生命周期管理:会“遗忘”才是好系统
人的记忆会随时间淡化,Agent 的长期记忆也应该有类似机制。
常见的做法包括:
- 给每条记忆加新鲜度权重,越久远的记忆权重越低;
- 定期让 LLM 审查记忆库,把过时、矛盾的记忆标记为失效或合并更新;
- 对相似的低优先级记忆做融合压缩,避免记忆库无限膨胀。
更进一步,Amazon Bedrock AgentCore Memory 的架构设计提出了“双层存储模型”:短期层用 append-only 的事件存储保留原始交互,长期层通过异步管线从事件中提取、整合、去重,生成结构化知识。这种设计将“原始记录”和“提炼认知”分离,既保证了可追溯性,又控制了检索噪音。
七、写在最后
记忆系统不是 Agent 的“附加功能”,而是决定 Agent 能否从“一次性工具”进化为“长期协作伙伴”的核心基础设施。它的设计涉及存储分层、向量化检索、粒度控制、生命周期管理等多个维度,每一个环节的处理都会直接影响 Agent 的“智商”表现。
当你的 Agent 终于能在你第三次说“帮我写个脚本”时,自动用你喜欢的风格、你偏好的语言、你上次确认过的结构来输出代码——那一刻,你会真切感受到:记忆,就是 AI 从“聪明”走向“懂你”的那座桥。