先说几个核心判断:AI Agent无疑是当下最受关注的话题之一,但当它们需要执行那些长达数周甚至一个月的长期任务时,一个根本性问题便浮出水面——它们的“记忆”到底该如何管理?目前主流的做法是引入向量数据库,但问题是,单靠它真的能应对所有类型的Agent记忆需求吗?

今天这篇文章,作者直接给出一个明确的判断:向量数据库在处理对话记忆上确实够用,但对于那些更复杂的Agentic AI系统来说,它的短板也相当明显。文章从Agentic AI的基本概念讲起,用一个营销案例说明系统如何拆解和执行任务;然后深入分析了向量数据库在记忆管理中的现状和数据质量问题;最后,借鉴人类记忆机制,提出了一套更完整的记忆架构设计方案——包括记忆路由器、短期记忆和长期记忆模块,还能通过知识图谱存储情景记忆,用有限状态机管理程序记忆。
图:Agentic AI 记忆管理(图片由作者提供)
Agentic AI 系统简介
AI Agent的热度不必多说,但“Agentic AI系统”到底是什么?它与我们现在常说的生成式AI(Gen AI)或大语言模型(LLM)智能体之间,区别究竟在哪里?这恐怕是很多人心里的疑问。
别急,我们直接拿一个具体的营销案例来看,把它的功能性和非功能性需求拆开说清楚——具体参考图1。
图 1:Agentic AI 在营销案例中的应用(图片由作者提供)
当用户丢来一个任务时,Agent平台首先要做的,是找到能胜任这个任务的Agent(或者一组Agent)。这背后需要一个编排层(orchestration layer),它的角色是把任务拆成更小的子任务,然后协调各个Agent去执行。
目前,任务分解这块主要还是靠LLM来干——这也是它和Gen AI重叠的地方。但说实话,这也恰恰是当前Agentic AI系统最大的一个瓶颈:它的推理能力,很大程度上被大语言模型(LLM)的天花板给限制住了。
拿GPT-4来举例,输入一个这样的提示:“生成一项量身定制的电子邮件营销计划,目标是一个月内实现100万美元的销售目标。相关产品及其性能数据可在[url]查询。请接入CRM系统[integration],获取客户姓名、电子邮件地址和人口统计详细信息。”它拆出来的步骤很清晰:分析产品→确定目标群体→创建定制电子邮件营销活动。整个过程如图1所示。
更有意思的是后续的自主调整。系统会实时监控执行进度和环境,如果发现无法达成销售目标,它会自己追加任务:寻找替代产品→利用客户数据→进行A/B测试。这套自主决策的能力,才是Agentic AI真正不一样的地方。
还有一个关键点:对于大多数实际应用场景而言,和企业系统(比如案例里的CRM)的集成是必不可少的。这也是为什么像Anthropic最近提出的模型上下文协议(MCP)[1]格外值得关注——它专门为AI Agent连接外部企业数据系统设计了一个标准接口。
好,任务已经拆好、Agent们也开始动起来了,这时候一个问题就变得至关重要——记忆管理。毕竟一次为期一个月的电子邮件营销活动,Agent们得持续监控和调整,这就要求系统能在不同任务之间共享上下文,并且在长时间内保持执行上下文的连续性。
目前主流的做法,是利用向量数据库(Vector DBs)来外部存储Agent的记忆,确保需要的时候能快速取回来用。但这里面门道不少,咱们接下来深入看看:
- 向量数据库到底是怎么管理AI Agent记忆的?
- 数据质量有哪些坑要注意?
你会发现,在对会话记忆(比如问答对)的处理上,向量数据库确实够用。但一旦涉及到Agentic任务所需的更多记忆类型——语义记忆(通用知识)、情景记忆(个人体验)、程序记忆(技能与任务流程)——它就明显力不从心了。
所以,真正有效的方案,还得把知识图谱、有限状态机等其他手段请上场。
利用向量数据库进行会话记忆管理
向量数据库(Vector DBs)的定位很明确:为存储向量数据而设计,并能基于向量间的相似度来处理查询。目前,它就是对话智能体进行记忆存储和检索的核心工具。图2展示了一套典型的编码和记忆管理流程。
图 2:基于向量数据库的编码技术,用于 LLMs(图片由作者提供)
流程的第一步是选一个编码器模型——它独立于主流程,负责把各种原始数据(文本、音频、视频等)离线转换成向量。在编码空间里,相似的对话数据会被映射到彼此靠近的向量上。
以文本为例,它必须先被转成数值向量才能被计算机理解。这个转换靠的是分词器(Tokenizers),一个“token”可以是字节、字符、字符组合、单词甚至是完整的句子。目前最常用的是字节对编码(BPE)方法,它的思路是把一对相邻的字节当做一个token来处理。
选对“token”这件事非常关键,因为它既决定了神经网络能捕捉到什么样的词间关系,也直接影响训练这个网络的计算量。
编码好的数据被存储在向量数据库里。到了推理阶段,系统可以基于向量相似度,用同一个编码器模型把这些数据取回来用。对话进行时,智能体通过把当前的查询内容也编码成向量,到数据库里搜一搜,就能访问到之前存储的长期记忆。随后,基于这些检索到的信息,给出对用户问题的回答。
向量数据库中的数据质量问题
数据质量对AI有多重要,大家心里都有数。但尴尬的是,目前企业对数据质量的关注,基本上还是集中在结构化数据/SQL老本行上。而非结构化数据——文本、图像、音频、视频这些,在企业生成式AI的应用场景里占了大约80%的数据量——反而常常被忽略。下面咱们就来聊聊,针对向量数据库里的非结构化数据,数据质量的标准到底应该怎么定?特别是在检索增强生成(RAG)的应用场景下。
RAG加上微调,是目前把预训练大语言模型和企业数据结合起来、提升上下文相关性、同时减少幻觉的两大关键手段(图3展示了Gen AI的完整生命周期)。
图 3:Gen AI 生命周期阶段(图片由作者提供)
面对用户查询,典型的RAG流程分三步(见图4):
- 检索:把用户查询也转成向量嵌入,然后计算它和其他内容的相似度得分。
- 增强:用从向量库里搜到的最新上下文来做信息补充。
- 生成:把检索到的信息片段整合到提示词模板里,给LLM提供更丰富的上下文,最终生成有针对性的回答。
先回顾一下结构化数据/SQL世界里常见的数据质量维度:
- 准确性:数据反映真实情况的精确度。
- 完整性:数据有没有缺值或空值。
- 一致性:同样信息在不同地方存的是不是一样的。
- 及时性:数据的时间戳反映其新鲜程度。
现在,我们把这几条搬到非结构化数据/向量数据库领域——具体见图4。
图 4:RAG — 向量数据库中的数据质量问题(图片由作者提供)
在向量数据库里,集合(collection)对标的是SQL里的表(table),每个集合项通常包含:唯一标识符(ID)、向量(实际数据,以浮点数数组形式存)、元数据(比如时间戳)。
准确性:指的是向量存储中数据的精确度。试想一下,如果AI基于错误信息去生成新闻,结果是虚假新闻还是真正有价值的内容?衡量准确性通常看两个指标:
- 正确性:关注LLM回应的事实准确性。
- 基础性:关注LLM回应和底层知识库的关系。
有意思的是,一些研究发现[2],即使模型的回应本身是正确的,也可能缺乏足够的依据支撑。
错误和不一致的向量:嵌入过程一旦出问题,生成的向量就可能受损、不完整、或者维度不对。这会导致AI输出变得混乱甚至脱节。比如,如果AI是基于音质参差不齐的录音去生成音频,结果大概率不连贯;文本生成中,语法或语气不一致,也会让内容听起来很僵硬。
缺失数据:形式上可以是缺失向量或者缺失元数据。比如,生成式AI从一个数据不完整的数据集里生成视觉设计,出来的成品很可能带着缺失的元素。
及时性:如果RAG流水线里为提示词提供上下文向量的文档已经过时了,那生成式AI系统很可能会输出不相关的内容。一个典型的反面案例是:一个启用了生成式AI的聊天机器人,基于过时的政策文件回答用户问题,结果给出了不准确且具有误导性的答案。
Agentic Memory
前面说的这套方法,在把对话存成问答对、然后高效检索这件事上,做得确实不错。但要满足Agentic AI系统所需的其他记忆类型,就不太够了。要复制甚至改进人类行为,系统至少需要处理以下几种记忆:
- 语义记忆(Semantic memory) —— 存储事实、概念、意义等通用知识。
- 情景记忆(Episodic memory) —— 记录与特定事件和情境相关的个人经历。
- 程序记忆(Procedural memory) —— 像驾驶汽车这样的运动技能,以及完成任务的步骤。
- 情感记忆(Emotional memory) —— 保存与个体经历相关的情感体验。
理解人类记忆
在动手设计架构之前,有必要先看看人类大脑是怎么处理短期记忆和长期记忆的——图5展示得很清楚。
图 5:人类大脑的记忆管理(图片由作者提供)
记忆的形成从头到尾有一套流程:外界信息先进入感觉记忆(sensory memory),这一阶段以原始形式保存感觉信息,但时间极短,通常只有几百毫秒。
被我们注意到的信息,会转移到短期记忆(STM)。短期记忆容量很有限,大约只能保存7个信息块,持续时间只有20到30秒。但它是我们思考、解决问题、做决策这些有意识心理活动的核心场所。
信息想要从短期记忆转到长期记忆(LTM),得经过编码——把它转化成更持久、更有意义的表征。编码的机制有不少,比如重复、精细加工、或者和已有知识建立关联。
成功编码后,信息进入长期记忆。长期记忆的容量几乎是无限的,能存信息长达数小时,甚至一生。
记忆的检索系统依赖与上下文信息的关联。外部的和内部的检索线索,通过重现编码时的场景,帮助我们提取特定的记忆。
- 回忆是指在缺少外部线索的情况下,自己主动重建信息的过程。
- 再认是指在多个选项中识别出之前遇到过的东西。
- 除此之外,像促发(priming)、记忆技巧(mnemonic techniques)、分块(chunking)、复述(rehearsal)这些策略,都能明显提升记忆的提取效率。
映射到Agentic记忆
基于对人类大脑的理解,再加上AI Agent和应用的实际需求,我们需要重点考虑以下几种记忆类型(见图6):
- 语义知识:来自外部(比如Wikipedia)和内部系统(比如Sharepoint、Confluence、文档、消息平台等)的信息。
- 情景记忆:在AI Agent运行过程中,对特定过去事件和情境的记忆。
- 程序记忆:类似人类记住游泳或开车的运动技能,它涵盖了描述AI Agent如何实现特定任务的流程和步骤。
- 情感记忆:记录与个体经验相关的情感,包括用户关系、偏好、反应以及相关数据。这能让AI在交互中更像真人,并且在跨交互中保持一致性。
值得一提的是,语义记忆是目前唯一在LLM中可以通过预训练和嵌入相对容易实现的记忆类型——其他几种记忆类型,可以说还处在摸索和开发阶段。
接下来,咱们就展示一下,如何为Agentic AI系统实现一个更全面的记忆管理模块(见图6)。
图 6:Agentic AI 记忆管理(图片由作者提供)
这个架构的核心是记忆路由器(Memory Router)。默认情况下,它会先把请求路由到长期记忆(LTM)模块,看看有没有现成的模式能直接响应这个用户提示词。如果有,就直接检索并返回结果,同时根据需要进行个性化处理。
如果LTM没有命中,路由器就把请求转到短期记忆(STM)模块。STM模块会启动自己的检索流程(比如函数调用、API调用等),把相关上下文拉回到STM(工作记忆)中,并充分利用可用的数据服务。
架构里还有一个始终活跃的STM-LTM变换模块。它会不断获取检索到的上下文,从中提取“配方”(recipe,这个概念可以参考可教学智能体和AutoGen),然后存储到语义层(通过向量数据库实现)。与此同时,它还会收集其他相关属性(比如token数量、模型响应成本、系统状态、执行的任务/生成的响应),创建成一个episode,并存入知识图谱。而底层的执行过程,则被存储在有限状态机(FSM)中。
Conclusion
总的来说,记忆管理对于需要长期运行的AI Agent来说,是个绕不开的核心问题。向量数据库在处理对话型智能体时确实表现不错,但一旦面对复杂的Agentic AI系统那多样化的记忆需求——特别是情景记忆和程序记忆——它的短板就暴露出来了。
在这篇文章里,我们提出了一套Agentic记忆架构的初步设计方案。核心是记忆路由器,它负责在短期记忆模块(STM)和长期记忆模块(LTM)之间做请求调度。而我们最主要的贡献,是一个STM到LTM的转换器模块——它能将原先停留在短期工作记忆中的情景记忆抽象出来,存储到知识图谱中;同时把程序记忆存储到有限状态机里。目前,我们还在进一步优化Agentic AI系统中长期记忆(LTM)的存储和检索机制,包括探索更多其他的存储形式。
