原文链接:https://medium.com/@parklize/how-memory-is-implemented-in-llm-based-agents-f08e7b6662ff
在之前的文章中,我们讨论了大语言模型(LLM)的局限性以及LLM与基于LLM的智能体之间的关系。
智能体为LLM带来的关键增强功能之一是记忆能力,这有助于克服LLM的上下文长度限制。但记忆功能在智能体中是如何具体实现的呢?这正是本文要探讨的重点。
首先,我们将探讨一个名为《语言智能体的认知架构》(CoALA)的概念性框架。然后,我们将分析近期研究中几个记忆实现的案例,例如MemGPT和Zep。
CoALA框架(2023年)
《语言智能体的认知架构》(CoALA)[3]为基于LLM的智能体提供了一个清晰的概念框架,其中包含两种主要记忆类型(如图1所示):
- 工作记忆
- 长期记忆
我们可以暂时忽略图1中的其他细节,因为它们与本文讨论的内容无关。
工作记忆存储当前决策周期中活跃且随时可用的信息。这包括感知输入、主动知识(通过推理生成或从长期记忆中检索)以及从前一个决策周期传递过来的其他核心信息(例如智能体的当前目标)。
长期记忆分为三种不同类型:
- 程序性记忆:包含存储在LLM权重中的_隐性_知识,以及写入智能体代码中的_显性_知识。智能体代码可进一步分为两类:实现动作的程序(例如推理、检索、基础和学习程序),以及实现决策本身的程序。
- 语义记忆:存储智能体关于世界和自身的知识。检索增强生成(RAG)可以看作是从非结构化文本(如维基百科)的语义记忆中检索信息。
- 情景记忆:存储早期决策周期的经验。
有了这个概念框架,让我们看看近期研究中记忆功能的一些具体实现方式。本质上,这些方法旨在将关键信息保留在工作记忆中,而将其余信息存储在长期记忆中,并通过机制促进两者之间的信息交换。
MemGPT(2023年)
MemGPT[1]提出了一种受操作系统启发的多级内存架构,包含两种主要内存类型:
- 主上下文(类似于主内存/物理内存或RAM):指LLM有限上下文窗口内的上下文,可在推理过程中被LLM访问(图1顶部)
- 外部上下文(类似于磁盘内存/磁盘存储):指任何位于LLM固定上下文窗口_之外_的信息,由图1中的_归档存储_(MemGPT读写数据库,存储任意长度的文本对象)和_回忆存储_(MemGPT消息数据库)组成。
在CoALA框架的语境下,主上下文可视为工作记忆,而外部上下文则充当长期记忆。
核心思想:
- FIFO队列在主上下文中维护消息的滚动历史,其第一个索引是系统消息,包含从队列中移除消息的递归摘要。
- 队列管理器在管理主上下文方面起着关键作用:
- 管理回忆存储和FIFO队列中的消息:将传入消息和生成的LLM输出写入回忆存储。回忆存储中的消息可通过函数调用(由图1中的函数执行器处理)检索并附加到主上下文。
- 当提示令牌超过"警告令牌计数"(例如LLM上下文窗口的70%)时,队列管理器插入警告,并允许LLM使用函数调用将FIFO队列中的重要信息存储到_工作上下文_或_归档存储_中。
- 当提示令牌超过"刷新令牌计数"(例如上下文窗口的100%)时,队列管理器刷新队列以释放上下文窗口空间,并使用现有递归摘要和被逐出消息生成新的递归摘要。这些被逐出的消息将无限期存储在回忆存储中,可通过MemGPT函数调用读取。
Zep(2025年)
Zep[2]通过引入时间知识图谱(KG)作为智能体的记忆来解决记忆问题,这可视为长期记忆的一种形式。
核心思想:
构建的KG包含三种节点类型:
- 事件节点:包含原始输入数据(消息、文本或JSON);事件边将节点(事件)连接到它们引用的语义_实体_
- 语义实体节点:表示从事件中提取并解析到现有图实体的实体;_实体节点_之间的语义边捕获从事件中提取的实体之间的关系
- 社区节点:表示强连接实体的组(通过社区检测方法识别);社区边将_社区_与其各自的_实体成员_连接起来。
KG的时间特性:
- KG构建从创建事件节点开始,使用_双时间_模型。一个时间方面表示事件的时间顺序,另一个跟踪Zep数据摄取的事务顺序。
- 这种方法允许通过时间提取和边失效过程进行动态信息更新。具体来说,系统跟踪四个时间戳:t' created_和_t' expired(属于T')监控事实在系统中的创建或失效时间,t valid_和_t invalid(属于T)跟踪事实保持有效的时间范围。这些时间数据点与其他事实一起存储在边上。
KG的记忆检索分为三个步骤:
- 搜索过程:识别可能包含相关信息的候选节点和边,并返回三元组(语义边、实体节点、社区节点)
- 重新排序器:对搜索结果重新排序
- 构造器:将相关节点和边转换为_文本上下文_
时间KG可视为CoALA架构中长期记忆的实现,记忆检索机制用于工作记忆和长期记忆之间的信息交换。此外,CoALA架构中的语义记忆更广泛,包含了Zep中的语义实体节点。
最终评述
记忆在克服LLM固有的上下文长度限制方面起着至关重要的作用,使其能够作为智能体的组成部分有效运作。CoALA框架提供了对基于LLM的智能体中记忆的概念性理解,区分了工作记忆和长期记忆。
MemGPT和Zep提供了这些记忆概念的具体实现。MemGPT采用受操作系统启发的方法,使用滚动FIFO队列作为工作记忆,外部存储作为长期记忆,并通过队列管理器促进信息流动。Zep则利用时间知识图谱来构建和检索长期记忆,结合时间推理来保持知识的准确性。
作为基于LLM的智能体的关键能力,近期已引入许多记忆机制[4],未来肯定还会出现更多。这个GitHub仓库包含了基于LLM的智能体记忆机制的最新进展,如果您有兴趣了解更多。
参考文献
- MemGPT:将LLM视为操作系统,2023年
- Zep:智能体记忆的时间知识图谱架构,2025年
- 语言智能体的认知架构,2023年
- 基于大语言模型的智能体记忆机制综述,2024年