AI Agent Harness Engineering 的记忆系统:短期记忆与长期记忆的实现
关键词
AI Agent Harness Engineering | 短期记忆 (STM, Short-Term Memory) | 长期记忆 (LTM, Long-Term Memory) | 记忆检索机制 | 向量数据库 | LangChain Memory | 上下文窗口管理
摘要
想象一下,如果你和朋友聊天时只能记住最近说的三句话,或者学了新东西第二天就忘得一干二净——你还能完成连贯的对话、持续的学习和复杂的任务吗?这正是早期大型语言模型(LLM)面临的核心困境。为了突破这个限制,AI Agent Harness Engineering(AI Agent 工程化构建)领域中记忆系统的设计与实现成了关键技术高地。
本文将从「大脑记忆的启发」出发,用「图书馆管理员整理书架」「银行账户管理流水」这类生活化的比喻,一步步拆解 AI Agent 短期记忆与长期记忆的核心概念、技术原理、实现细节。我们会深入探讨:
- 为什么 AI Agent 的记忆不能简单等同于「把所有历史对话堆进去」;
- 短期记忆的「上下文窗口压缩」「滚动缓冲区」「总结压缩窗口」三大主流实现方法;
- 长期记忆的「向量嵌入生成」「相似度检索」「元数据过滤」「知识图谱增强」等核心技术;
- 基于 LangChain 和 FAISS 的完整短期+长期记忆系统的代码实现;
- 记忆系统在「个人助手」「代码解释器」「客服机器人」「自主研究助手」四个实际场景中的应用与最佳实践;
- 记忆系统当前的边界(如遗忘机制不完善、语义理解偏差)、未来的发展趋势(如类脑可塑性记忆、跨模态记忆、通用记忆协议)。
全文包含详细的 Mermaid 架构图、流程图、实体关系图,数学模型(如嵌入相似度公式、滚动窗口更新公式),完整的 Python 代码示例(含 LangChain 集成、FAISS 向量存储、自定义压缩算法),以及 10+ 个记忆系统调试的最佳实践 tips,适合从 AI Agent 入门开发者到资深架构师的全层级读者阅读。
1. 背景介绍
1.1 主题背景和重要性
1.1.1 早期 LLM 的「失忆困境」:从 GPT-3 到 GPT-4o 的上下文窗口进化简史
让我们先从一个简单的实验开始:假设你让 GPT-3.5-turbo 帮你写一个完整的「个人财务管理系统的需求文档」,你分 10 个步骤输入需求:
- 第 1 步:说清楚系统的目标用户是「大学生,生活费主要来自父母每月转账+兼职收入」;
- 第 2-9 步:依次补充「支持支付宝/微信账单导入」「多账户管理」「支出分类(餐饮、交通、娱乐、学习)」「月度/季度/年度报表」「预算设置与提醒」「自定义标签」「数据加密存储」「离线记账」;
- 第 10 步:让它把所有需求整合起来,生成一份 2000 字左右的正式需求文档。
如果你用的是免费版的 GPT-3.5-turbo(上下文窗口 4K tokens,约 3000 个汉字),输入完 10 步后,你大概率会发现:GPT-3.5-turbo 要么完全忘记了第 1 步说的「目标用户是大学生」,要么只记得最近 3-4 步的需求,把其他的都丢了——这就是早期 LLM 最致命的缺陷之一:固定且有限的上下文窗口,无法处理长文本、长对话、长任务链条。
为了解决这个问题,OpenAI 等公司不断扩大上下文窗口的大小:GPT-3.5-turbo-16k 扩展到 16K tokens(约 1.2 万字),GPT-4-128k 扩展到 128K tokens(约 9.6 万字),GPT-4o 扩展到 200K tokens(约 15 万字),甚至还有专门的 1M tokens 版本。但你猜怎么着?扩大上下文窗口不仅:
- 成本极高:假设你用 GPT-4o-1M 输入 1M tokens,输出 1M tokens,单次调用成本就高达 15 美元(约 110 元人民币)——这对于普通开发者、中小型企业来说根本无法承担;
- 效率极低:LLM 处理上下文窗口内的所有 tokens 时,计算复杂度是 O(n2)O(n^2)O(n2)(因为自注意力机制的注意力矩阵计算是平方级别的)——输入 1M tokens 时,单次响应时间可能要几分钟甚至几十分钟;
- 效果有限:即使你输入了 1M tokens,LLM 也不能保证记住所有内容——研究表明,LLM 的注意力机制存在「**中间内容遗忘效应」(Recency Bias + Primacy Bias):LLM 更容易记住对话开头和结尾的内容,对中间的内容记忆效果最差,甚至完全忽略。
这就像**不能把所有的历史对话、任务数据、学习资料「硬塞进一个超大的行李箱里——行李箱越大,越难找到你需要的东西,甚至行李箱本身也太重了,根本搬不动。
1.1.2 AI Agent 对记忆系统的刚需:从「问答机器人」到「自主行动者」
2023 年被称为「**AI Agent 元年」——ChatGPT Plugin 的推出,AutoGPT、BabyAGI、AutoGen、LangChain Agent 等自主 Agent 框架的爆发,让 AI Agent 从「只能回答问题的工具」变成了「能自主制定计划、执行行动、反思结果、持续学习的行动者」。
而自主 Agent 要完成复杂的任务,比如「帮我找一篇关于 AI Agent 记忆系统的学术论文,整理成中文综述,然后用 Python 实现一个简化版的原型系统,最后写一篇 5000 字的博客」,它需要的绝不仅仅是「记住刚刚输入的搜索关键词」——它需要:
- 记住整个任务的目标(综述主题、实现要求、博客要求);
- 记住任务的执行进度(已经搜索了哪些论文、哪些是高质量的、哪些已经整理了、代码写到哪一步了);
- 记住已经执行过的行动和结果(搜索了 arxiv、semanticscholar、google scholar,搜索到了 20 篇论文,其中 5 篇是高质量的,整理了其中的核心概念、技术原理);
- 记住已经学到的知识(从论文中学到的短期记忆实现方法、向量数据库的选择);
- 记住用户的偏好和习惯(用户喜欢简洁的综述、喜欢用 LangChain 做框架、喜欢用 FAISS 做向量存储)。
这些需求**仅靠扩大上下文窗口是完全无法满足的——这时候,**专门为 AI Agent 设计的「记忆系统」(Memory System)就成了 AI Agent Harness Engineering 中不可或缺的核心组件,甚至可以说是「AI Agent 的灵魂」——没有记忆系统,AI Agent 就像一个没有过去的人,无法成长,无法持续,无法完成复杂的任务。
根据 Gartner 2024 年的预测报告显示:到 2027 年,80% 的企业级 AI Agent 都会部署专门的记忆系统,部署记忆系统的 AI Agent 任务完成率将提升 40%-60%,用户满意度将提升 30%-50%。而 Memory 已经和 Planning(规划)、Tool Use(工具使用)一起,被称为 AI Agent 的「三大核心能力」。
1.2 目标读者
本文的目标读者是从 AI Agent 入门开发者到资深架构师的全层级读者:
- 入门开发者:可以通过本文了解 AI Agent 记忆系统的基本概念、核心技术、完整代码实现,快速上手构建自己的第一个带记忆系统的 AI Agent;
- 中级开发者:可以通过本文深入探讨记忆系统的技术原理、边界与外延、最佳实践,优化自己已有的记忆系统;
- 资深架构师:可以通过本文了解记忆系统的行业发展与未来趋势、概念架构设计、通用记忆协议,设计企业级的可扩展记忆系统;
- AI 产品经理:可以通过本文了解记忆系统的应用场景、核心价值、用户体验优化,设计更有竞争力的 AI 产品。
1.3 核心问题或挑战
在设计和实现 AI Agent 记忆系统时,我们会面临以下六个核心问题或挑战:
- 核心问题一: 如何平衡「记忆容量」与「记忆检索速度」?—— 记忆容量越大,检索速度越慢,LLM 处理速度也越慢;
- 核心问题二: 如何平衡「记忆准确性」与「记忆压缩率」?—— 记忆压缩率越高,记忆准确性越低;
- 核心问题三: 如何解决「中间内容遗忘效应」?—— 如何让 LLM 记住对话/任务中间的重要内容;
- 核心问题四: 如何设计「遗忘机制」?—— 如何让 AI Agent 像人类一样,主动遗忘不重要的内容,释放记忆空间;
- 核心问题五: 如何实现「跨模态记忆」?—— 如何让 AI Agent 记住文本、图像、音频、视频等多种模态的内容;
- 核心问题六: 如何实现「通用记忆协议」?—— 如何让不同的 AI Agent 共享记忆,协作完成任务。
本文将重点解决前三个核心问题,并对后三个核心问题做初步的探讨和展望。
2. 核心概念解析
2.1 核心概念
2.1.1 AI Agent Harness Engineering
AI Agent Harness Engineering(AI Agent 工程化构建)是一门研究如何设计、开发、部署、优化、维护、评估可落地的 AI Agent 的学科——它不是一门交叉学科,融合了自然语言处理(NLP)、机器学习(ML)、软件工程(SE)、人机交互(HCI)、知识工程(KE)等多个领域的知识。
AI Agent Harness Engineering 的核心目标是**把「实验室里的原型 AI Agent」变成「生产环境里的可落地的、可扩展的、可维护的、可评估的、安全的 AI Agent」——就像把「一辆刚从车间里出来的汽车原型」变成「一辆可以在公路上安全行驶的量产汽车」一样。
AI Agent Harness Engineering 的核心内容包括:
- Agent 架构设计(如 ReAct 架构、Reflection 架构、Plan-Do-Check-Act 架构);
- 记忆系统设计与实现(这是本文的核心内容);
- 规划系统设计与实现;
- 工具使用系统设计与实现;
- 评估系统设计与实现;
- 安全系统设计与实现;
- 部署系统设计与实现;
- 维护系统设计与实现。
2.1.2 AI Agent 的记忆系统
AI Agent 的记忆系统是一个专门为 AI Agent 设计的「存储、检索、压缩、遗忘、增强记忆的系统」——它就像「人类大脑的记忆系统」一样,是 AI Agent 的「知识库」「历史记录库」「学习库」。
我们可以把 AI Agent 的记忆系统比作一个智能图书馆:
- **图书馆的「前台」是「短期记忆(STM)」——专门存放「最近借的书」「最近在读的书」「最近整理的书」,方便随时查阅;
- **图书馆的「书库」是「长期记忆(LTM)」——专门存放「所有的书」,按照「分类号」「作者」「书名」「关键词」「标签」「借阅记录」「摘要」等信息整理存放,方便长期保存;
- **图书馆的「管理员」是「记忆检索机制」——负责「把书从前台移到书库」「把书从书库找出来」「整理前台的书」「清理不重要的书」;
- **图书馆的「搜索引擎」是「向量嵌入生成」「相似度检索」——负责「快速找到需要的书」。
2.1.3 短期记忆(STM, Short-Term Memory)
AI Agent 的短期记忆(STM)是**专门存储「最近的对话、最近的任务、最近的行动、最近的结果的记忆系统」——它就像「人类大脑的工作记忆(Working Memory)」,或者「图书馆的前台」,或者「银行的活期存款账户」,或者「电脑的内存」。
短期记忆的核心特点是:
- 容量有限—— 一般来说,短期记忆的容量就是「LLM 的上下文窗口大小」,或者「比 LLM 的上下文窗口小一点」;
- 访问速度极快—— 因为短期记忆的内容直接放在 LLM 的上下文窗口里,LLM 可以直接访问;
- 存储时间短—— 如果不及时移到长期记忆里,短期记忆的内容会很快被新的内容覆盖掉;
- 内容重要性高—— 短期记忆的内容一般是「AI Agent 当前正在处理的内容」。
短期记忆的核心作用是:
- 保持对话的连贯性—— 让 AI Agent 记住「刚刚说的话」「刚刚听到的话」;
- 保持任务的连续性—— 让 AI Agent 记住「当前正在做的任务」「任务的进度」;
- 提供给长期记忆的「临时存储区」—— 把「临时的内容先存放在短期记忆里,等积累到一定程度再整理后移到长期记忆里。
2.1.4 长期记忆(LTM, Long-Term Memory)
AI Agent 的长期记忆(LTM)是专门存储「所有的对话、所有的任务、所有的行动、所有的结果、所有学到的知识的记忆系统」——它就像「人类大脑的长期记忆」,或者「图书馆的书库」,或者「银行的定期存款账户」,或者「电脑的硬盘」。
长期记忆的核心特点是:
- 容量几乎无限—— 只要有足够的存储空间,长期记忆可以存储「几乎无限的内容」;
- 访问速度相对较慢—— 因为长期记忆的内容需要「通过检索机制才能找到」,然后才能「放到 LLM 的上下文窗口里」;
- 存储时间长—— 只要不主动删除,长期记忆的内容可以「永久保存」;
- 内容重要性可调节—— 长期记忆的内容可以「通过元数据、标签、权重等信息调节重要性」。
长期记忆的核心作用是:
- **保存 AI Agent 的「历史记录」—— 让 AI Agent 记住「过去说过的话」「过去做过的事」「过去学到的知识」;
- **提供 AI Agent 的「知识库」—— 让 AI Agent 可以「利用过去的知识解决当前的问题」;
- **支持 AI Agent 的「持续学习」—— 让 AI Agent 可以「从过去的经验中学习」「不断优化自己的能力」。
2.1.5 记忆检索机制
AI Agent 的记忆检索机制是专门负责「把内容从短期记忆移到长期记忆」「把内容从长期记忆找出来」「整理短期记忆的内容」「清理不重要的内容」的系统——它就像「图书馆的管理员」,是记忆系统的「核心大脑」。
记忆检索机制的核心技术包括:
- 短期记忆更新机制(如滚动缓冲区、总结压缩窗口);
- 短期记忆转长期记忆机制(如定期整理、重要性过滤);
- 长期记忆检索机制(如向量相似度检索、关键词检索、元数据过滤、知识图谱增强);
- 遗忘机制(如时间衰减、重要性衰减、主动遗忘)。
2.1.6 向量嵌入(Vector Embedding)
AI Agent 的向量嵌入(Vector Embedding)是**将「文本、图像、音频、视频等非结构化数据转化为「高维空间中的向量」的技术」——它就像「图书馆的「分类号」「关键词」「摘要」的组合」,是记忆检索机制的「核心基础」。
我们可以把**高维空间想象成一个「超级巨大的三维空间」——不过这个空间不是只有 X、Y、Z 三个维度,而是有 1024、2048、4096 甚至更多的维度——在这个空间里,「语义相似的内容会靠得很近」,「语义不相似的内容会离得很远」。
举个例子:
- 文本「苹果很好吃」的向量,会和「香蕉很好吃」的向量靠得很近;
- 文本「苹果很好吃」的向量,会和「苹果手机很好用」的向量离得很远;
- 文本「苹果很好吃」的向量,会和「今天天气很好」的向量离得更远。
向量嵌入的核心作用是:
- 将非结构化数据转化为结构化数据—— 方便计算机处理;
- 计算内容之间的语义相似度—— 方便快速找到语义相似的内容。
2.1.7 相似度检索(Similarity Search)
AI Agent 的相似度检索(Similarity Search)是**在「高维向量空间」中「快速找到与「查询向量」最相似的「K 个向量」的技术」——它就像「图书馆的「语义搜索引擎」」,是长期记忆检索机制的「核心技术」。
相似度检索的核心算法包括:
- Brute-force 搜索(暴力搜索,适合小规模数据);
- KNN(K-Nearest Neighbors)(K 近邻搜索);
- IVF(Inverted File Index)(倒排文件索引,适合中大规模数据);
- HNSW(Hierarchical Navigable Small Worlds)(分层导航小世界,适合超大规模数据)。
2.2 问题背景
在设计和实现 AI Agent 记忆系统之前,我们需要了解「为什么早期的 AI Agent 记忆系统没有用」——早期的 AI Agent 记忆系统主要有以下三种方法:
- 方法一: 把所有的历史对话、任务数据、学习资料「硬塞进 LLM 的上下文窗口里」——这种方法的问题我们在 1.1.1 里已经讲过了,就是「容量有限、成本极高、效率极低、效果有限」;
- 方法二: 把所有的历史对话、任务数据、学习资料「存放在关系型数据库(如 MySQL、PostgreSQL)里」——然后用「关键词检索」的方法找到需要的内容——这种方法的问题是「只能找到「关键词完全匹配的内容」,无法找到「语义相似的内容」——举个例子:如果你问「苹果很好吃」,你用关键词检索「苹果」,你会找到「苹果手机很好用」,而找不到「香蕉很好吃」;
- 方法三: 把所有的历史对话、任务数据、学习资料「存放在文档数据库(如 MongoDB、Elasticsearch)里」——然后用「全文检索」的方法找到需要的内容——这种方法的问题是「虽然比关键词检索好一点,但还是无法准确找到「语义相似的内容」」——而且「全文检索的效果依赖于「分词技术」,对于中文来说,分词技术的效果还是不够好」。
正是因为这三种方法都有很大的问题,所以我们需要「专门为 AI Agent 设计的记忆系统」——这种记忆系统需要「结合短期记忆和长期记忆」「结合向量检索和关键词检索」「结合元数据过滤和知识图谱增强」。
2.3 问题描述
我们现在面临的具体问题描述是:
假设我们要构建一个「**个人助手 AI Agent」,它可以:
- 和用户进行自然语言对话;
- 记住用户的「个人信息」(如姓名、年龄、性别、职业、兴趣爱好);
- 记住用户的「历史对话」;
- 记住用户的「任务提醒」(如明天早上 8 点起床、明天下午 3 点开会);
- 记住用户的「学习笔记」(如今天学了什么、今天做了什么笔记);
- 可以根据用户的「当前问题」,快速找到「相关的记忆内容」,然后「结合相关的记忆内容」,给用户一个「准确、连贯、个性化的回答」。
现在的问题是:我们应该如何设计和实现这个「个人助手 AI Agent」的「记忆系统」?
2.4 问题解决
我们可以用「**短期记忆 + 长期记忆 + 记忆检索机制」的方法来解决这个问题——具体的解决方案如下:
- 短期记忆:我们用「滚动缓冲区 + 总结压缩窗口」的方法来实现短期记忆——滚动缓冲区用来存放「最近的 10 轮对话」,总结压缩窗口用来存放「最近的 100 轮对话的总结」;
- 长期记忆:我们用「向量数据库(FAISS)+ 元数据 + 标签」的方法来实现长期记忆——向量数据库用来存储「所有的历史对话、任务提醒、学习笔记的向量嵌入」,元数据用来存储「内容的类型、时间、作者、重要性」,标签用来存储「内容的主题」;
- 记忆检索机制:我们用「向量相似度检索 + 元数据过滤 + 时间衰减权重」的方法来实现记忆检索机制——首先用「元数据过滤」找到「类型匹配的内容」,然后用「向量相似度检索」找到「语义相似的内容」,最后用「时间衰减权重」调整「内容的重要性」,把「最重要的 K 个内容」放到 LLM 的上下文窗口里。
2.5 边界与外延
2.5.1 记忆系统的边界
AI Agent 的记忆系统不是「万能的」——它有以下五个核心边界:
- 边界一: 记忆系统的「效果依赖于 LLM 的能力」——如果 LLM 的「语义理解能力」「推理能力」「生成能力」不好,记忆系统的效果也不会好;
- 边界二: 记忆系统的「效果依赖于向量嵌入的质量」——如果向量嵌入的「语义表示能力」不好,相似度检索的效果也不会好;
- 边界三: 记忆系统的「效果依赖于记忆检索机制的设计」——如果记忆检索机制的「设计不合理」,找到的内容就不会是「用户需要的内容」;
- 边界四: 记忆系统的「容量依赖于存储空间」——虽然长期记忆的容量几乎无限,但还是「存储空间是有限的」;
- 边界五: 记忆系统的「遗忘机制不完善」——目前的 AI Agent 记忆系统还没有「像人类一样的主动遗忘机制」,只能「用「时间衰减」「重要性衰减」的方法被动遗忘」。
2.5.2 记忆系统的外延
AI Agent 的记忆系统可以「扩展到以下五个核心方向」:
- 方向一: 跨模态记忆——支持「文本、图像、音频、视频等多种模态的内容」;
- 方向二: 类脑可塑性记忆——支持「像人类大脑一样的「突触可塑性」「记忆巩固」「记忆提取」「记忆遗忘」」;
- 方向三: 通用记忆协议——支持「不同的 AI Agent 共享记忆」「协作完成任务」;
- 方向四: 隐私保护记忆——支持「记忆的加密存储」「记忆的脱敏处理」「记忆的权限控制」;
- 方向五: 情感记忆——支持「记忆用户的「情感状态」「情感偏好」「情感历史」」「结合「情感记忆」给用户一个「情感化的回答」。
2.6 概念结构与核心要素组成
2.6.1 AI Agent 记忆系统的整体概念结构
AI Agent 记忆系统的整体概念结构如下图所示(Mermaid 架构图):
从这个架构图中,我们可以看到:
- 用户(User):和 AI Agent 核心(Core)、记忆检索机制(Retrieval Mechanism)进行交互;
- AI Agent 核心(Core):包括 LLM 推理引擎(Inference Engine)、规划系统(Planning System)、工具使用系统(Tool Use System),和记忆系统(Memory System)进行交互;
- 记忆系统(Memory System):包括短期记忆(STM)、长期记忆(LTM)、记忆检索机制(Retrieval Mechanism);
- 短期记忆(STM):包括滚动缓冲区(Rolling Buffer)、总结压缩窗口(Summary Compression Window)、重要性标记(Importance Tagging);
- 长期记忆(LTM):包括记忆数据库(Memory Database)、向量嵌入生成器(Embedding Generator)、元数据管理器(Metadata Manager)、标签管理器(Tag Manager)、知识图谱增强器(Knowledge Graph Enhancer);
- 记忆检索机制(Retrieval Mechanism):包括短期记忆更新器(STM Updater)、记忆转存器(Memory Transferer)、元数据过滤器(Metadata Filter)、向量相似度检索器(Similarity Searcher)、权重调整器(Weight Adjuster)、遗忘器(Forgetting Mechanism)。
2.6.2 短期记忆的核心要素组成
短期记忆的核心要素组成如下表所示:
| 核心要素 | 核心功能 | 核心技术 | 类比 |
|---|---|---|---|
| 滚动缓冲区(Rolling Buffer) | 存放「最近的 N 轮对话/任务/行动/结果」 | 先进先出(FIFO) | 银行的活期存款账户,最近存的钱先取出来 |
| 总结压缩窗口(Summary Compression Window) | 存放「最近的 M 轮对话/任务/行动/结果的总结」 | LLM 总结压缩算法 | 图书馆的前台目录,只存放「最近读的书的目录」 |
| 重要性标记(Importance Tagging) | 标记「内容的重要性」 | LLM 重要性评分算法 | 图书馆的前台书架上的「红色标签」「黄色标签」「绿色标签」 |
2.6.3 长期记忆的核心要素组成
长期记忆的核心要素组成如下表所示:
| 核心要素 | 核心功能 | 核心技术 | 类比 |
|---|---|---|---|
| 记忆数据库(Memory Database) | 存储「所有的内容的向量嵌入、元数据、标签」 | 向量数据库(FAISS、Pinecone、Weaviate、Chroma) | 图书馆的书库 |
| 向量嵌入生成器(Embedding Generator) | 将「非结构化数据转化为高维空间中的向量」 | 预训练向量嵌入模型(OpenAI Embeddings、Hugging Face Sentence-Transformers、Cohere Embeddings) | 图书馆的分类员,给每本书分配分类号、关键词、摘要 |
| 元数据管理器(Metadata Manager) | 管理「内容的元数据」 | 关系型数据库(MySQL、PostgreSQL) | 图书馆的图书管理系统,记录每本书的作者、书名、出版时间、借阅记录 |
| 标签管理器(Tag Manager) | 管理「内容的标签」 | 关系型数据库(MySQL、PostgreSQL) | 图书馆的标签系统,给每本书贴标签 |
| 知识图谱增强器(Knowledge Graph Enhancer) | 增强「内容之间的关系」 | 知识图谱数据库(Neo4j、Amazon Neptune) | 图书馆的知识图谱,显示「作者之间的关系」「书之间的关系」「作者和书之间的关系」 |
2.7 概念之间的关系
2.7.1 概念核心属性维度对比
我们从**核心属性维度对比短期记忆和长期记忆,如下表所示:
| 核心属性维度 | 短期记忆(STM) | 长期记忆(LTM) |
|---|---|---|
| 容量 | 有限(LLM 上下文窗口大小左右) | 几乎无限(存储空间大小) |
| 访问速度 | 极快(直接放在 LLM 上下文窗口里) | 相对较慢(需要检索) |
| 存储时间 | 短(不及时转存会被覆盖) | 长(不主动删除会永久保存) |
| 内容重要性 | 高(当前正在处理的内容) | 可调节(通过元数据、标签、权重) |
| 内容类型 | 最近的对话、最近的任务、最近的行动、最近的结果 | 所有的对话、所有的任务、所有的行动、所有的结果、所有学到的知识 |
| 存储方式 | 内存(RAM) | 硬盘(HDD/SSD)+ 向量数据库 |
| 检索方式 | 直接访问 | 向量相似度检索 + 元数据过滤 + 权重调整 |
| 遗忘机制 | 先进先出(FIFO) | 时间衰减 + 重要性衰减 + 主动遗忘 |
| 核心作用 | 保持对话连贯性、保持任务连续性、提供临时存储区 | 保存历史记录、提供知识库、支持持续学习 |
2.7.2 概念联系的 ER 实体关系图
我们用Mermaid ER 实体关系图来表示短期记忆、长期记忆、记忆检索机制、AI Agent 核心、用户之间的实体关系:
从这个 ER 实体关系图中,我们可以看到:
- USER(用户) 输入 QUESTION_REQUEST_DATA(问题/请求/数据),接收 ANSWER_FEEDBACK(回答/反馈);
- AI_AGENT_CORE(AI Agent 核心) 处理 QUESTION_REQUEST_DATA(问题/请求/数据),生成 ANSWER_FEEDBACK(回答/反馈),读写 SHORT_TERM_MEMORY(短期记忆),通过 MEMORY_RETRIEVAL_MECHANISM(记忆检索机制)读写 LONG_TERM_MEMORY(长期记忆);
- SHORT_TERM_MEMORY(短期记忆) 包含 ROLLING_BUFFER(滚动缓冲区)、SUMMARY_COMPRESSION_WINDOW(总结压缩窗口)、IMPORTANCE_TAGGING(重要性标记);
- LONG_TERM_MEMORY(长期记忆) 包含 MEMORY_DATABASE(记忆数据库)、EMBEDDING_GENERATOR(向量嵌入生成器)、METADATA_MANAGER(元数据管理器)、TAG_MANAGER(标签管理器)、KNOWLEDGE_GRAPH_ENHANCER(知识图谱增强器);
- MEMORY_RETRIEVAL_MECHANISM(记忆检索机制) 更新/转存 SHORT_TERM_MEMORY(短期记忆),检索/转存/遗忘 LONG_TERM_MEMORY(长期记忆),接收 QUESTION_REQUEST_DATA(问题/请求/数据)。
2.7.3 概念之间的交互关系图
我们用Mermaid 序列图来表示短期记忆、长期记忆、记忆检索机制、AI Agent 核心、用户之间的交互关系:
从这个序列图中,我们可以看到AI Agent 记忆系统的完整交互流程:
- 用户输入问题/请求/数据;
- 记忆检索机制从长期记忆中检索相关内容;
- AI Agent 核心从短期记忆中读取内容;
- AI Agent 核心结合短期记忆 + 长期记忆 + 当前问题/请求/数据生成回答/反馈;
- 记忆检索机制更新短期记忆;
- 记忆检索机制将短期记忆的内容转存到长期记忆;
- 记忆检索机制遗忘长期记忆的内容。
3. 技术原理与实现
3.1 数学模型
3.1.1 向量嵌入相似度公式
向量嵌入相似度是长期记忆检索机制的「核心基础」——我们常用的向量嵌入相似度公式有以下三种:
3.1.1.1 余弦相似度(Cosine Similarity)
余弦相似度(Cosine Similarity)是最常用的向量嵌入相似度公式——它测量的是「两个向量之间的夹角的余弦值」——余弦值的范围是「[-1, 1]」——余弦值越接近 1,表示两个向量越相似;余弦值越接近 -1,表示两个向量越不相似;余弦值越接近 0,表示两个向量无关。
余弦相似度的数学公式如下:
cos(θ)=A⃗⋅B⃗∥A⃗∥∥B⃗∥
\cos(\theta) = \frac{\vec{A} \cdot \vec{B}}{\|\vec{A}\| \|\vec{B}\|}
cos(θ)=∥A∥∥B∥A⋅B
其中:
- A⃗=(a1,a2,...,an)\vec{A} = (a_1, a_2, ..., a_n)A=(a1,a2,...,an):第一个向量;
- B⃗=(b1,b2,...,bn)\vec{B} = (b_1, b_2, ..., b_n)B=(b1,b2,...,bn):第二个向量;
- A⃗⋅B⃗=∑i=1naibi\vec{A} \cdot \vec{B} = \sum_{i=1}^{n} a_i b_iA⋅B=∑i=1naibi:两个向量的点积;
- ∥A⃗∥=∑i=1nai2\|\vec{A}\| = \sqrt{\sum_{i=1}^{n} a_i^2}∥A∥=∑i=1nai2:第一个向量的欧几里得范数(长度);
- $\


被折叠的 条评论
为什么被折叠?



