AI Agent总是忘记对话?一文讲透持久化记忆架构
从用户记忆、RAG到知识图谱,解析Mem0、GraphRAG与双层记忆架构,帮助开发者构建可跨会话检索、持续更新的AI Agent。

一、引言:从单次会话走向跨会话记忆
如果说单次交互的上下文管理是难题,那本文处理的就是一个更难的问题:如何让 Agent 在对话结束后仍然记住用户、记住知识。这种持久化记忆体系可以从两个尺度理解。用户记忆针对单个用户,Agent 在交互中逐渐了解其偏好、习惯和需求,构建专属知识模型。知识库面向所有用户共享,例如一个行业的法规体系、一家公司的内部流程、一个技术领域的专业文档。前者让 Agent 成为"懂你的助手",后者让 Agent 成为"领域专家"。
两者解决的是同一个问题,只是尺度不同:一个关注个体,一个关注群体。正因如此,两者共用许多底层技术——向量检索、知识压缩——也面临同样的麻烦:信息冲突、知识过期、检索不准。两者最终汇合于"双层记忆架构"。
二、用户记忆系统
要构建具备个性化、连续性服务的 AI Agent,用户记忆系统是不可或缺的核心能力。记忆并非简单记录用户说过的每句话。用户记忆的本质是一个主动的、持续的学习过程,目标是构建关于用户的简洁而有效的预测模型。它投入额外算力,通过专门的 LLM 调用来分析、总结和结构化信息,把分散在冗长对话中的关键信息显式提取和压缩。这与上下文学习形成对比:用户记忆是持久的、可审查的;上下文学习是临时的,会话结束就消失。
用一个订机票的例子理解这个过程。用户表示要订下周五去东京的航班、偏好靠窗座位、是素食者需要特殊餐食,并提供了常旅客号码。对话结束后,Agent 框架调用一次专门的 LLM 分析对话,提取出值得长期记住的信息:偏好靠窗座位、是素食者、常旅客号码、有去东京的出行计划。这个提取过程有四个关键特征:选择性——不记住"搜索返回了3个选项"这类临时信息;抽象化——"偏好靠窗座位"被提炼成通用偏好而非绑定到某次航班;结构化——良好组织便于后续检索。下次订票时,Agent 无需再问座位和餐食偏好。
2.1 记忆能力的三层次评估框架
在设计记忆系统之前,先要回答"什么样的记忆系统算好"。学术界已发布若干公开基准,其中 LoCoMo(长期对话记忆,Maharana 等人,2024,arXiv:2402.17753)是代表性的一项:它构造平均约300轮、最多35个会话的超长多轮对话,通过问答、事件摘要和多模态对话生成三类任务,考察模型对长程对话的记忆与理解能力。
综合各类记忆基准与商业产品实践,用户记忆能力可归纳为八项:个人信息保留、偏好追踪、上下文切换、记忆更新、多会话连续性、复杂思考、时间感知、冲突解决。在此基础上,本文设计了更贴合 Agent 场景的三层次评估框架。
第一层是基础回忆,要求 Agent 准确存储和检索用户直接提供的、结构化的、无歧义的信息,如"我的会员号是12345"。第二层是多会话检索,要求 Agent 面对多个对象、多个时期的会话时,检索出所有相关信息并推理判断。当用户有两辆车时询问"为我的车预约保养",系统需找出全部两辆车的信息并主动询问为哪辆服务。取消"洛杉矶之旅"时需理解旅行是复合事件,主动关联所有相关预订。第三层是主动服务,这是衡量 Agent 是否达到"助理"级别最高标准的试金石,要求系统综合跨越多个甚至很久以前的会话信息,提供预见性的主动帮助。预订国际航班时主动关联数月前存储的护照信息,发现即将过期并预警。
2.2 记忆的层次结构与四种存储格式
记忆系统可拆成三个维度:放哪里、怎么存、存什么。记忆需要分层次,就像人有短期工作记忆和长期记忆的区分。轨迹是单次 Agent 运行过程的完整历史记录,按时间顺序追加、只增不改;用户长期记忆是跨会话提炼的稳定信息,会被反复改写、合并、淘汰。前者是流水账,后者是档案。此外还有业务状态,是开发者定义的高层状态抽象,表示任务逻辑阶段。
解决"怎么存",有四种渐进式存储格式,代表记忆粒度和结构复杂度的递进:
- Simple Notes:每条记忆是最小不可再分的事实。优点是极低开销、O(1) 操作;缺点是信息关联性完全丢失。
- Enhanced Notes:整体论视角,每条记忆保存为包含完整上下文的段落。优点是语义完整;缺点是冗余、难更新。
- JSON Cards:三层嵌套结构(类别→子类别→键值对),模拟人类分类认知。支持部分更新;但刚性分类会丢失多维性。
- Advanced JSON Cards:从信息存储到知识管理的范式转变,每个卡片加入来源叙事背景、主体身份、与用户的关系和时间戳。解决消歧问题,但生成维护成本高。
实践选择标准是:关键且少量的数据用 Advanced JSON Cards 保证可检索性;大量且非关键的对话事实用 Simple Notes 降低成本;多数生产系统采用混合模式。
2.3 进阶知识表示:可执行代码
前面四种格式本质上都是文本。User as Code 提出把表示的介质从文本换成可执行代码,让"表示用户"和"推理用户"发生在同一个可被解释器运行的介质里。它把记忆更新拆成两阶段:记忆阶段,每次会话后 LLM 把事实逐条抽成字符串,追加到只增不删的事实日志;结构化阶段,周期性用 LLM 从完整日志重新生成带类型的 Python 对象,这正是数据库"预写日志+周期性检查点"的经典设计。有了带类型状态,聚合统计、冲突发现、约束执行都变成确定性代码,正确率接近100%。
2.4 记忆框架案例:Mem0 与 Memobase
Mem0 的演进提供有价值的系统设计案例。2025年论文与 v2 把冲突处理放在写入阶段:LLM 抽取候选事实,系统用向量检索找到相近的已有记忆,由 LLM 在 ADD、UPDATE、DELETE、NOOP 中做决定。优势是记忆库始终简洁一致;风险是一次错误更新会不可逆丢失历史。2026年4月的 v3 算法把冲突处理移到检索阶段:一次 LLM 调用抽取事实且只做 ADD,历史并存;查询时融合语义相似度、BM25 关键词和实体匹配,结合时间信息排序。Mem0 报告 LoCoMo 从71.4提升到92.5(+21.1),LongMemEval 从67.8提升到94.4(+26.6)。
Memobase 聚焦"用户画像"这一具体形态,分用户画像和事件记忆两部分,采用缓冲批处理策略摊薄 LLM 调用成本。
三、RAG 基础:构建 Agent 的知识获取管道
构建共享知识库的核心技术是检索增强生成(RAG)。其核心思想是把 LLM 的思考生成能力与外部知识库的广度和时效性结合。模型训练数据有截止日期,知识库可以随时更新。典型 RAG 由检索器和生成器构成:检索器从知识库找出相关片段,生成器拿到片段作为上下文生成答案。流程统一为"检索相关片段→注入上下文→LLM 基于上下文生成答案"。
3.1 文档分块
分块之所以必要有两个原因:嵌入模型对输入长度有限制,且整篇文档压缩成一个向量时多主题混在一起无法精确表达;检索目标只把相关部分注入上下文,片段太大会连带无关内容。常见策略三类:固定大小切分,按固定 token 数切分并保留重叠;递归/结构感知切分,按文档自然边界递归切分,是生产系统最常用默认;语义切分,计算相邻句子嵌入相似度在语义断崖处切分。实践中常见起点是每块256-1024 token、相邻块重叠10%-20%。
3.2 稠密嵌入
稠密嵌入用深度学习把文本映射到向量空间,语义相近内容向量距离也近。衡量相似度的常用方法是余弦相似度,计算两个向量夹角的余弦值。早期 Word2Vec 只能捕捉词汇共现,无法处理一词多义;上下文感知模型(BERT、BGE-M3)能理解上下文,同一个词在不同语境有不同向量。BGE-M3 支持多语言与长文本输入。
3.3 稀疏嵌入与 BM25
稀疏嵌入根植传统信息检索,核心是精确关键词匹配。TF-IDF 的核心直觉是:一个词在当前文档出现越多、在整个语料库越少见,对检索越重要。BM25 修正了 TF-IDF 的两个局限:词频饱和与长度归一化。参数 k1 控制词频饱和速度,b 控制长度归一化强度。一个词出现10次不会比5次贡献整两倍,较长文档中的相同词频权重更低。
3.4 混合检索与神经重排序
稠密检索懂语义但可能漏掉关键词,稀疏检索精确匹配但读不懂同义词。混合检索思路是两个引擎都跑、结果合并,难点在于整合分布迥异的两组得分。常用融合方法有两种:归一化后加权求和;倒数排名融合(RRF),只看排名,综合得分是排名平滑倒数之和。
流水线第三阶段是神经重排序,用跨编码器对查询和文档做深度交互匹配,精度远高于双编码器各自编码再算相似度。双编码器适合从海量数据初筛,跨编码器拼接查询和文档逐词比对,判断更准但更慢。
3.5 检索质量度量
核心指标有三个:recall@k 回答"该找的找到了吗";MRR 回答"找到得够不够靠前";nDCG 回答"整个排序列表质量如何"。
四、超越扁平文本:结构化索引与知识组织
传统 RAG 把文档切成独立、无关联的文本块,忽略知识内在结构。处理复杂文档时,仅检索零散片段如同读字典随机词条理解小说。文中用"黑猫白猫计数问题"和"Xfinity 优惠规则"两个案例说明:直接把原始案例平铺进知识库,检索机制无法保证召回全部相关信息。若预先生成摘要或提炼规则再索引,一次检索即可获得准确信息。
4.1 RAPTOR 与 GraphRAG
RAPTOR 采用自下而上的递归抽象,把长文档切成叶子节点,聚类语义相近的叶子分组,用 LLM 生成更高层次摘要作为父节点,递归形成从细节到全局概览的知识树。GraphRAG 将文档知识建模为实体和关系构成的知识图谱,核心优势是多跳关系推理和实体消歧。但作为通用存储方案有局限:自然语言转三元组导致语义降级,条件逻辑和时间依赖丢失。
4.2 文件系统范式:OpenViking
字节跳动开源的 OpenViking 提出第三种哲学:把所有上下文映射为虚拟文件系统中的目录和文件。核心设计是 L0/L1/L2 三层按需加载:L0 摘要约100 token,L1 概览约2000 token,L2 全文按需加载。采用 Markdown 纯文本而非专用数据库,便于阅读、Git 版本控制和 Agent 自主记录。关键前提是文件间必须建立链接与索引,形成双向可达的引用网络。
4.3 知识更新机制
知识更新必须同时包含两条路径:事件触发的增量更新和周期触发的全量整理。增量更新的最稳妥工程答案是"把知识库当成代码库,把每次变更当成一个 Pull Request":Proposer Agent 提交 PR,Reviewer Agent 独立审核,双方迭代至收敛,合入后再重建派生索引。两个 Agent 应优先使用能力相近但来自不同家族的模型,降低同类错误概率。定期整理至少包含三项工作:去重去旧与合并、回到原始数据核查、冲突解决与场景限定。
多用户共享知识库还需权限与租户隔离,检索必须按调用者权限过滤,租户间向量索引和元数据相互隔离。
4.4 智能体化 RAG
传统 RAG 是被动的"检索-生成"管道,能力上限低。智能体化 RAG 把知识库检索封装成 Agent 可随时调用的工具,采用 ReAct 模式通过"思考→行动→观察"循环主导。面对复杂问题,Agent 先分析需求、自主决定查询关键词,观察结果后评估信息是否充分,不够则再次检索,直到信息充分才生成答案。实验用中文司法问答数据集验证:简单问题传统 RAG 响应更快、质量相当;复杂问题如"醉酒过失致人重伤且有盗窃前科如何量刑",智能体化 RAG 的多轮迭代检索显著提升多跳问题准确率。
4.5 上下文感知检索
传统分块不可避免将紧密关联的上下文分离。Anthropic 提出上下文感知检索:在向量化索引前用 LLM 为文本块生成包含核心上下文的"前缀摘要",再拼接后索引。这同时增强稀疏和稠密检索。结合 BM25 可将检索失败率降低49%,再结合重排序器降幅达67%。代价是索引阶段额外 LLM 调用,但通过 prompt caching 成本可控。
4.6 双层记忆架构
把上下文感知检索应用到用户记忆,加上 Advanced JSON Cards,就得到双层记忆架构:用 Advanced JSON Cards 把关键事实结构化后常驻上下文提供"概览",用上下文感知检索按需从海量原始对话取回"细节"。这是用户记忆与知识库 RAG 的交汇点,也是三层次框架中最高层"主动服务"的具体实现路径。前者提供概览,后者提供细节,两者叠加才第一次让"主动服务"在工程上落地。
五、从数据集中提取深度知识
在许多专业领域,知识以隐性的、分布式形式蕴含在海量结构化案例数据中。从数据集学习需要全新 RAG 范式。过程分两阶段:第一阶段知识提取与结构化,用 LLM 把每个案例的非结构化描述转换为包含关键判决因素的标准化 JSON 对象,采用"自下而上"因子发现策略构建更贴合数据的模块化数据模式;第二阶段因子分析与重要性建模,用数据分析技术提炼规律、识别对结果影响最显著的因素并量化权重。
实验以 CAIL2018 中文刑事判决数据集为基础:特征向量化采用独热编码,聚类算法发现案件原型如"轻微口角引发的轻伤",构建因子重要性层次模型,成为 Agent 对话式信息收集的核心驱动力。
六、前沿探索:多模态记忆
一张脸的模样、一个人的嗓音很难用文字描述,文本记忆机制无法存储。三种思路:一是存储原始多模态数据和文本描述;二是把多模态信息的嵌入压缩存储到上下文中,每张人脸或声纹一般只需存储一个嵌入,在上下文中只占1个token空间,一段1000 token区域可容纳1000张人脸;三是把嵌入压缩存储到模型参数中,如为每个用户训练专属 LoRA,但 fact-LoRA 在间接推理时失灵。User as Engram 把多模态信息嵌入写入 Engram 模型空闲的哈希 N-gram 槽位,无需梯度更新。
七、本章小结
本文系统地构建了 AI Agent 的持久化记忆体系。用户记忆层面,从原子化事实到情境化知识管理的四种渐进式策略,揭示了简单性与表达力之间的张力。知识获取层面,核心技术栈是分块、稠密嵌入、稀疏嵌入、结果融合、神经重排序,以 recall@k 等指标度量质量。知识理解层面,通过 RAPTOR 树状层次摘要和 GraphRAG 实体关系网络构建结构化索引,上下文感知检索解决语义丢失,智能体化 RAG 实现从被动管道到主动探索的范式转变,最终收敛于双层记忆架构。知识更新层面,增量更新与定期整理双轨并行,Proposer/Reviewer 双 Agent 审核保证知识质量。
把这套记忆与检索体系接入生产时,多模型负载下的路由与治理是工程化落地的一个现实环节。koalaapi 可作为 API 网关统一编排不同模型端点的请求转发、限流与观测,降低多 Agent 栈接入多种推理后端时的运维成本,让记忆提取、检索重排和生成这些高调用量的环节共用一套稳定的接入层。双层记忆架构说明,最高级的记忆系统不是单一技术产物,而是结构化知识管理与非结构化信息精准检索协同的结果。只有概览与细节兼备,Agent 才能真正"懂你"并具备主动服务能力。

