乐于分享
好东西不私藏

AI Agent 记忆系统

AI Agent 记忆系统

关注最新技术的发展和应用落地,聚焦性能优化与架构设计,欢迎关注!

在人工智能领域,大语言模型(LLM)的显著突破使AI Agent成为可能,然而,"记忆"仍然是这些智能体的关键短板。与人类不同,现代LLM本质上是无状态的,它们只能记住有限的上下文窗口内的信息,无法在跨会话、长对话或复杂任务中保持连贯性。

一、记忆系统的核心价值与问题解决

记忆系统是AI Agent的"大脑",它使Agent从"一问一答的聊天机器人"转变为"有连续性、有持久性、能陪你长期干活的真正助手"。记忆系统使 AI Agent 能够像人类一样,在单次对话中保持上下文连贯性(短期记忆),同时能够跨会话记住用户偏好、历史交互和领域知识(长期记忆)。记忆系统可以解决以下关键问题:

1.上下文长度限制

大模型就像只能同时记住一张A4纸内容的聪明人,其固定上下文窗口限制了其处理长文本的能力。例如,当用户要求写一篇5000字的报告时,Agent可能会在写作过程中忘记最初要求的"面向领导、正式风格"。记忆系统通过智能压缩和检索机制,确保核心要求始终被保留。

2.信息衰减

在长对话中,早期的重要信息容易被后续内容挤出记忆窗口。记忆系统通过标记重要信息并实施智能检索策略,确保关键内容在对话过程中不会被遗忘。研究表明,人类在长对话中也会经历类似的信息衰减,这正是记忆系统需要解决的核心问题。

3.任务连续性

多步骤的长任务需要Agent记住当前进度、已完成事项和下一步行动。没有记忆系统,Agent每完成一个步骤后都需要重新开始,导致效率低下。记忆系统通过维护任务状态和进度信息,使Agent能够无缝地从一个步骤过渡到下一个。

4.个性化

优秀的Agent应该越用越懂你,能够记住用户的偏好、习惯和沟通风格。例如,知道用户喜欢简洁的文案、习惯使用Excel处理数据,或对某些话题特别敏感。记忆系统通过记录和分析用户行为模式,使Agent能够提供更加个性化的服务体验。

5.经验积累

AI Agent需要从过往的成功和失败中学习,避免重复同样的错误。记忆系统通过存储和检索历史交互经验,使Agent能够不断优化其行为模式,提高任务完成的质量和效率。

二、记忆系统的分层架构

对于 AI Agent 而言,记忆至关重要,因为它使它们能够记住之前的互动、从反馈中学习,并适应用户的偏好。

1.常用记忆分层

(1)短期会话级记忆

短期记忆存储会话中产生的各类消息,包括用户输入、模型回复、工具调用及其结果等。这些消息直接参与模型推理,实时更新,并受模型的 maxToken 限制。当消息累积导致上下文窗口超出限制时,需要通过上下文工程策略(压缩、卸载、摘要等)进行处理,这也是上下文工程主要处理的部分。

核心特点:

  • 存储会话中的所有交互消息(用户输入、模型回复、工具调用等)
  • 直接参与模型推理,作为 LLM 的输入上下文
  • 实时更新,每次交互都会新增消息
  • 受模型 maxToken 限制,需要上下文工程策略进行优化
(2)长期情景记忆
  • 功能:记录Agent与用户交互的具体事件和任务执行过程
  • 特点:带时间戳和元数据的具体事件记录,容量较大,但受时间衰减影响
  • 技术实现:向量数据库(如Pinecone、Qdrant)结合时间戳索引,支持语义相似性检索
  • 应用场景:客服系统中记录用户投诉历史、教育系统中保存学习过程中的错误和纠正

(3)长期语义记忆

  • 功能:存储Agent需要的通用事实、领域知识和概念定义

  • 特点:不带个人场景的通用知识,容量几乎无限,支持关系推理

  • 技术实现:知识图谱(如Neo4j、AWS Neptun)或结构化数据库,支持实体关系查询

  • 应用场景:医疗Agent记住药物相互作用知识、法律Agent了解法规条款

2.记忆的核心操作流程

记忆系统的核心价值通过其五大核心操作实现:写入(Write)、索引(Index)、检索(Recall)、更新(Update)和遗忘/归档(Forgetting/Archiving)。

(1)写入(Write)流程

写入是记忆系统的基础操作,负责将新产生的记忆(对话、知识、规则)存入系统。具体流程包括:

  • 原始信息获取:从用户输入、工具调用结果或环境反馈中捕获原始数据

  • 信息提取:通过LLM或专用模型从原始数据中提取关键信息(如Mem0的双LLM架构:信息提取LLM生成Cypher语句,决策LLM生成上下文)

  • 记忆类型判断:确定提取信息应存储在记忆系统的哪一层(工作记忆、情景记忆等)

  • 存储操作:将信息以适当格式存储到对应层的数据库中

  • 关键挑战:如何从大量原始信息中高效提取有价值的记忆,同时避免存储冗余或错误信息。

(2)索引(Index)机制

索引是记忆系统的核心组件,它决定了如何高效地存储和检索记忆。不同记忆层采用不同的索引机制:

工作记忆层

  • 索引类型:基于时间的FIFO队列

  • 特点:简单高效,但缺乏智能检索能力

  • 技术实现Redis Streams或内存队列,支持快速插入和删除

情景记忆层

  • 索引类型:向量数据库索引

  • 特点:支持语义相似性检索,但受上下文窗口限制

语义记忆层

  • 索引类型:图数据库索引

  • 特点:支持复杂的关系推理和模式匹配

(3)检索(Recall)流程

检索是记忆系统的核心操作,负责根据当前查询召回最相关记忆。记忆检索的本质是多维度加权打分排序:

其中:

  • 语义相似度,通常通过向量数据库的余弦相似度计算

  • 结构关联相似度,用于衡量记忆与当前查询的实体关系匹配度

  • 时间相似度,确保近期记忆优先被检索

主流框架实现差异

  • Mem0:采用语义向量检索为主,适合简单的用户偏好存储和短期上下文记忆

  • Zep:基于时间感知的图谱检索,擅长处理时序问题和复杂关系查询

  • Letta:基于分页的检索机制,模拟操作系统的虚拟内存分页策略

(4)更新(Update)与冲突解决

记忆系统需要能够更新已有记忆的内容、属性和权重,并解决可能的冲突:

  • 记忆更新:根据新信息调整现有记忆的内容和权重

  • 冲突检测:当新旧信息存在矛盾时,识别冲突并应用解决策略

  • 解决策略:基于时间戳优先级、用户反馈置信度或LLM判断进行决策

冲突解决的关键技术

  • 动态权重模型:根据访问频率和时效性动态调整记忆权重

  • 版本控制:为记忆内容维护版本历史,支持回滚和对比

  • LLM仲裁:当冲突无法通过规则解决时,使用LLM进行判断

(5)遗忘(Forgetting)与归档机制

遗忘不是简单的删除,而是根据记忆的价值和时效性进行智能管理:

  • TTL(Time-To-Live):为记忆设置自动过期时间

  • 冷热分层:将频繁访问的记忆保留在高速存储(热层),低频记忆归档到低速存储(冷层)

  • 重要性衰减:根据记忆的使用频率和时间衰减计算重要性分数

技术实现

  • Redis热层:存储最近20轮对话,设置自动淘汰

  • PostgreSQL冷层:存储长期记忆,使用扩展支持向量检索

  • 对象存储归档:将过期记忆归档到MinIO或AWS S3,降低存储成本

3.长期记忆与短期记忆交互
  • Record(写入):从短期记忆的会话消息中提取有效信息,通过LLM进行语义理解和抽取,存储到长期记忆中
  • Retrieve(检索):根据当前用户查询,从长期记忆中检索相关信息,注入到短期记忆中作为上下文,辅助模型推理

实践中的实现方式:

在 Agent 开发实践中,长期记忆通常是一个独立的第三方组件,因为其内部有相对比较复杂的流程(信息提取、向量化、存储、检索等)。常见的长期记忆组件包括 Mem0、Zep、Memos、ReMe 等,这些组件提供了完整的 Record 和 Retrieve 能力,Agent 框架通过 API 集成这些组件。