|

大半年前,介绍了基于LLM的Agent知识,文章《大模型智能体 LLM Agent》中提到: Agent是大模型与场景间价值传递桥梁, 重要性不言而喻。 
从功能上看,Agent有多个组件构成,规划、记忆和工具使用等 Agent=LLM+ Planning + Feedback + Tool use
今天聊聊其中的一个组件:Memory,记忆模块 (1)什么是记忆? 记忆定义为用于获取、存储、保留和后续检索信息的过程,人类大脑中主要有三种类型的记忆。 
感官记忆(Sensory memory)
记忆最早阶段,提供原始刺激结束后保留感官信息(视觉,听觉等)印象的能力,通常只持续几秒钟。 感官记忆的子类别包括图标记忆(视觉)、回声记忆(听觉)和触觉记忆(触觉)。 短时记忆(STM)或工作记忆(Working Memory)
长期记忆(LTM)
顾名思义,LTM可以将信息存储相当长的时间,范围从几天到几十年不等,具有基本上无限的存储容量。LTM有两种亚型: 1)显式/陈述性记忆,即对事实和事件的记忆,指那些可以有意识地回忆起来的记忆,包括情景记忆(事件和经验)和语义记忆(事实和概念)。 2)隐式/程序性记忆,这种类型的记忆是无意识的,包括自动执行的技能和例程,比如骑自行车或在键盘上打字。 
对应语言模型概念: 作为原始输入(包括文本、图像或其他形式)的学习嵌入表征的感官记忆; 短期记忆就是上下文学习(in-context learning),非常短且影响范围有限,受到Transformer的上下文窗口长度的限制。
长期记忆作为智能体在查询时可用的外部向量存储,可通过快速检索访问。
可见,记忆模块像 Agent大脑,帮助积累经验,自我进化,让行为更加一致、合理和有效。 LLM Memory设计灵感来自人类记忆过程的认知科学研究。
Agent 记忆结构设计借鉴了人类记忆特点。
(2)LLM记忆从何而来? 记忆来源: 智能体记忆内容的出处。 三种类型记忆来源: ①内部任务信息(Inside-trial Information): 当前任务执行信息 单个任务或交互过程中收集的数据。仅与当前正在进行的任务有关。 一个对话人物, Agent 要记住上下文信息,以便生成连贯的回应
②跨任务信息( Cross-trial Information ): 历史任务重的长期积累学习 跨越了多个任务或交互过程,它包括了Agent在不同任务中积累的经验、学到的教训以及可能的模式识别 旅行计划中, Agent 从用户预订过的机票酒店,用户反馈 这类跨任务信息优化改进执行策略
③外部知识(External Knowledge)
各个 记忆实现案例 分布对比 
其中,ExpeL的工作流程图包含以上三种方式 
(3)LLM记忆如何保存? 记忆如何保存?文本形式、参数形式为主 文本形式的记忆和参数形式的记忆同样也是各有千秋,它们适合不同的应用场景。
各种记忆形式案例总结 
(a)文本形式 分析 文本形式记忆可进一步细分为几种类型: 存储完整的交互信息: ReAct 最近的交互信息 检索到的交互信息和外部知识。
MemGPT 分别体现出了短期和召回记忆; Qwen-Agent中,通过 chatml 特有多轮格式<im_start><im_end>进行分割历史的会话,最后一轮才加上ReAct的prompt。 (b) 参数形式 这种方式更高级。不直接存储文字,而是把记忆转换成模型参数,就像是把知识压缩成精华。 参数形式的记忆则涉及更复杂的技术,比如: fine-tuning 和 editing。 经典Character-LLM: A Trainable Agent for Role-Playing,用微调方式 
(c)图谱
另外,也有更高级的形式:图谱 比如微软推出的 GraphRAG,使用LLM从语料中挖掘实体、关系,组成知识图谱,供下游使用。 详见:https://microsoft.github.io/graphrag/ 
形态上越来越像人类。
不少人将知识图谱技术利用起来,比如 Neo4j,效果示例: 
使用 Cypher语言查询节点,结果融入LLM

(4)LLM记忆如何工作? 实际应用中 有些系统只模拟人类的短期记忆,通过上下文学习实现,记忆信息直接写在prompt中。 而有些系统则采用了hybird memory(混合记忆架构),明确模拟了人类的短期和长期记忆。短期记忆暂时缓冲最近的感知,而长期记忆则随着时间的推移巩固重要信息。 记忆格式上,可以自然语言或嵌入向量形式存储。 操作方面,Agent通过记忆阅读、记忆写入和记忆反思三个关键操作与外部环境进行交互。
记忆操作像 LLM大脑,三个部分组成:记忆写入、记忆管理和记忆读取。 ①记忆写入: LLM短期记忆, 接收到新信息时(聊天),以特殊编码方式存入"大脑" MemGPT: 自我指导是否写入记忆,智能体根据上下文决定是否更新
MemoGPT: 聊天时做总结, 提取对话片段的主题, 关键词形式保存,便于查找, topic,summary,dialogues
②记忆管理: LLM长期记忆, 整理短期记忆信息;信息归类, 找出最重要的部分,忘掉次要信息,保持大脑的清晰、高效 MemoryBank: 智能体从对话内容中提炼每日大事记, 同时不断评估,生成个性特征
Voyager: 智能体根据环境反馈优化记忆
Generative Agents: 智能体自我反思,获取更高层次的信息. 从事件信息中生成抽象想法
GITM: 记忆模块中总结多个计划的关键行动, 建立各种情况下的共同参考计划, 提取最重要的行动步骤
③记忆读取: 使用LLM记忆解决问题 ChatDB: SQL操作完成记忆阅读
MPC: 从记忆池里检索相关记忆, 使用思维链示例方式,忽略次要信息
ExpeL: 用Faiss向量库作为记忆池, 找出与当前任务最相似的k个成功示例.
参考:Agent memory大揭秘:轻松搞定记忆写入、管理、读取
|