Agent的记忆机制分为四种:感知记忆(用户在于大模型对话中输入的原始内容)、短期记忆(context window里的对话历史)、长期记忆(存在外部数据库、语义检索召回)、实体记忆(结构化提取的关键事实)

如果Agent没有记忆机制:有两个问题:第一个就是偏好记忆丢失,第二个就是任务的中间状态会丢失,这个就会可能导致Agent完成任务的质量不高

1.感知记忆

感知记忆是存续时间最短的一层,只会留存本轮对话中用户发给大模型的内容,比如一段文字,一张图片或者一个文档等其他信息,且这些内容只有一次调用的有效期,不会自动保留

2.短期记忆

短期记忆就是context window中的message列表,主要存储用户发送的内容,大模型每一轮对话的输出,大模型调用了哪一些工具,一些任务的中间状态,只要任务没完成,这些内容会都会保存在上下文中,作为大模型进行下一轮推论的依据

任务持续期间,短期记忆中的内容会一直存在,持续作为大模型进行下一轮任务推理的依据,此时有两种回收策略:如果是任务已经被完成了,此时任务对应的短期记忆的内容就会被清空,如果此时对话的上下文超出上限,此时就会触发截断机制,会主动将最早一批的上下文信息删除掉,腾出空间容纳新的交换内容

3.长期记忆

长期记忆一般是用来保存跨任务,跨对话的内容,一般存储在第三方介质中,比如一些向量数据库,关系型数据库或者一些非关系性数据库中,这一层的记忆内容会长期存储,方便大模型下次进行同类任务时,可以对该部分的记忆进行检索召回,形成复用

4.实体记忆

实体记忆是经过信息精炼的记忆层级,,这一层存储的不是原文内容,而是从用户的输入中提取一些关键信息,比如一些用户的偏好信息,用户的预算信息等等,这些关键信息就会被转换成一些结构化的数据存储

完整记忆模块的配合方式

首先用户发来一个新的任务描述时,Agent此时不是立即去干活,而是先去实体记忆去获取用户的一些关键的结构化信息,再检索召回长期记忆中的相关历史内容,然后将这两部分信息和任务的描述词与System Prompt拼接并发给大模型,此时大模型就可以知道了用户和任务的一些背景信息

进入任务执行阶段后,短期记忆持续工作,用户的每一次输入,大模型的每一次输出结果,每一次工具调用产生的结果等信息都会被完整得存储到message列表中,每次调用大模型时都会带上这部分的完整信息,让 Agent 清晰掌握当前任务进度与过程中获取到的各类新增信息

如果任务执行到某一步时,模型现有的上下文缺乏一些关键信息,比如一些接口文档、过往业务的一些记录等数据,短期记忆中没存这些数据,此时就需要去长期记忆的记忆数据库中临时调取

此时就需要将检索长期记忆封装成Tool工具的形式,拿当前上下文作为检索关键词去向量数据库中匹配相似的历史长期记忆,此时从长期记忆得到的检索结果只会在这一次调用大模型的时候临时发给大模型,帮助其完成这一步的推理,用完就走,不会存储在短期记忆中的message列表中

任务结束后,还需要更新记忆,也就是把这次任务产生的新知识写入到对应的记忆层次中,比如用户在任务执行的过程中提到了一些其他的新的个人背景信息,此时就需要将这个新的信息写入到实体记忆中,如果任务产生了一些其他新的有价值的结论,比如某商品是按照用量来收费的,这些新的有价值的信息就需要写入到长期记忆中,供下次任务使用,最后就是清空短期记忆,工作台恢复干净,等待下一个任务

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐