尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Agent记忆革命:从“金鱼脑”到“超强脑”的架构跃迁

Agent记忆革命:从“金鱼脑”到“超强脑”的架构跃迁 目录记忆系统的设计动机短期记忆的实现长期记忆的实现工作记忆的实现记忆检索与整合记忆系统的边界与失效模式摘要记忆系统是 Agent 架构的核心组件使 Agent 能够记住对话历史、学习经验、存储知识。本文从记忆系统的设计动机出发分析短期记忆上下文窗口、长期记忆向量数据库和工作记忆当前任务状态的实现原理以及记忆检索、压缩和整合机制。1. 记忆系统的设计动机Agent 在执行多步任务或多轮对话时需要记住之前的信息。没有记忆的 Agent 每次交互都是独立的无法利用历史经验来改进未来行为。1.1 Agent 为什么需要记忆需求无记忆有记忆多轮对话每轮都是新对话能记住之前讨论的内容持续学习每次从零开始能从之前错误中学习知识积累只依赖训练数据能积累新知识个性化无法记住用户偏好能记住用户偏好1.2 记忆与上下文窗口的区别对比维度上下文窗口记忆系统容量有限2K-128K Token几乎无限持久性对话结束后消失持久存储检索方式顺序访问索引检索信息密度原始文本压缩摘要1.3 三类记忆的分工Agent 记忆系统短期记忆: 当前对话上下文长期记忆: 历史经验和知识工作记忆: 当前任务状态生命周期: 对话级生命周期: 永久生命周期: 任务级存储: LLM 上下文窗口存储: 向量数据库存储: 内存中的数据结构1.4 记忆系统的演进固定上下文2018→ 滑动窗口2020→ 摘要压缩2021→ 向量检索2022→ 层次化记忆2023→ 记忆增强 Agent2024。1.5 记忆系统的产业应用应用记忆类型典型产品聊天机器人短期记忆ChatGPT, Claude个人助手长期记忆用户偏好Rabbit R1, Humane AI Pin编程 Agent工作记忆当前任务Devin, Copilot学习系统长期记忆知识图谱Notion AI, Mem.ai1.6 记忆系统的局限性记忆存储成本长期记忆需要存储大量数据、检索延迟检索大量记忆需要时间以及记忆遗忘机制设计复杂什么该记住、什么该遗忘。2. 短期记忆的实现2.1 短期记忆的定义短期记忆Short-term Memory存储当前对话的上下文。特点容量有限受 LLM 上下文窗口限制、生命周期短对话结束后即失效以及信息密度高保留原始内容。2.2 滑动窗口classSlidingWindowMemory:滑动窗口短期记忆def__init__(self,max_tokens4096):self.max_tokensmax_tokens self.messages[]defadd(self,message):添加消息self.messages.append(message)self.trim()deftrim(self):裁剪超出窗口大小的消息total_tokenssum(msg[tokens]formsginself.messages)whiletotal_tokensself.max_tokensandlen(self.messages)1:removedself.messages.pop(0)total_tokens-removed[tokens]defget_context(self):获取当前上下文returnself.messages窗口大小适用场景特点2K Token简单问答响应快但长对话易丢失8K Token一般对话平衡响应速度和质量32K Token长对话保留更多上下文成本高128K Token长文档分析可保留完整文档2.3 摘要压缩当滑动窗口超出了上下文窗口限制时可以使用摘要压缩将历史消息压缩为摘要defsummarize_old_messages(old_messages,llm):压缩旧消息为摘要text\n.join([msg[content]formsginold_messages])summaryllm.generate(f请将以下对话内容压缩为 100 字以内的摘要:\n{text})returnsummary2.4 短期记忆的管理策略策略描述适用场景滑动窗口保留最近 N 条消息实时对话摘要压缩将旧消息压缩为摘要长对话关键信息提取只保留关键信息检索场景优先级排序按重要性排序保留多轮对话3. 长期记忆的实现3.1 长期记忆的定义长期记忆Long-term Memory存储 Agent 的历史经验和知识。特点容量几乎无限使用外部存储、生命周期长永久保存以及信息密度低使用压缩和摘要。3.2 向量数据库的实现classVectorMemory:基于向量数据库的长期记忆def__init__(self,embedding_model,vector_db):self.embedding_modelembedding_model self.vector_dbvector_dbdefstore(self,content,metadataNone):存储记忆# 生成嵌入向量embeddingself.embedding_model.encode(content)# 存储entry{content:content,embedding:embedding,metadata:metadataor{},timestamp:time.time()}self.vector_db.insert(entry)defrecall(self,query,k5,min_relevance0.7):检索记忆query_embeddingself.embedding_model.encode(query)resultsself.vector_db.search(query_embedding,kk)# 过滤低相关性结果relevant[rforrinresultsifr[score]min_relevance]returnrelevantdefforget(self,criteria):遗忘记忆self.vector_db.delete(criteria)向量数据库特点适用场景Chroma轻量级、Python 原生小规模应用Pinecone高性能、云服务生产环境Weaviate混合搜索向量关键词大规模应用Qdrant高效、自托管中大规模应用3.3 长期记忆的存储格式{id:mem_001,type:task_experience,content:当用户请求查询数据库时我应当先确认数据库连接状态然后执行查询最后格式化结果。,embedding:[0.12,0.34,...],metadata:{source:agent_task,task_type:database_query,timestamp:1700000000,success_rate:0.85}}3.4 记忆的遗忘机制长期记忆不能无限增长需要遗忘机制遗忘策略描述适用场景时间衰减随时间的推移降低记忆权重通用场景重要性衰减不重要的记忆优先遗忘有重要性评估频率衰减不常用的记忆优先遗忘有使用频率统计主动遗忘用户/Agent 主动删除需要精确控制3.5 记忆的合并与压缩defmerge_memories(memories,llm,max_tokens500):合并多个记忆texts[m[content]forminmemories]combined\n.join(texts)iflen(combined)max_tokens:# 压缩promptf 请将以下多个记忆合并为一条精炼的记忆保留重要信息:{combined}合并后的记忆不超过 200 字: mergedllm.generate(prompt)returnmergedreturncombined4. 工作记忆的实现4.1 工作记忆的定义工作记忆Working Memory存储当前任务的中间状态和规划信息。特点生命周期短任务结束后即清除、信息密度高当前任务的关键信息以及结构清晰通常使用结构化数据格式。4.2 工作记忆的实现classWorkingMemory:工作记忆def__init__(self):self.task_goalNoneself.current_planNoneself.completed_steps[]self.current_stepNoneself.intermediate_results{}self.context{}definit_task(self,task):初始化任务self.task_goaltask self.current_planNoneself.completed_steps[]self.current_stepNoneself.intermediate_results{}defupdate_plan(self,plan):更新计划self.current_planplandefcomplete_step(self,step_id,result):完成一个步骤self.completed_steps.append(step_id)self.intermediate_results[step_id]resultdefget_progress(self):获取任务进度ifnotself.current_plan:return0.0totallen(self.current_plan)completedlen(self.completed_steps)returncompleted/totaliftotal0else0.0defclear(self):清除工作记忆self.__init__()4.3 工作记忆的内容内容描述示例任务目标当前任务的目标“分析销售数据并生成报告”执行计划任务的子任务分解[步骤1: 查询数据, 步骤2: 分析, 步骤3: 生成报告]已完成步骤已完成的子任务[步骤1: 查询数据成功]中间结果每个子任务的结果{“步骤1”: {“数据”: […]}}上下文任务相关的上下文信息{“用户偏好”: “图表格式”}4.4 工作记忆与短期记忆的协调工作记忆存储当前任务的状态短期记忆存储对话历史。两者需要协调Short-term Memory ∩ Working Memory Task-related Dialogue \text{Short-term Memory} \cap \text{Working Memory} \text{Task-related Dialogue}Short-term Memory∩Working MemoryTask-related Dialogue内容存储位置协调方式对话历史短期记忆与工作记忆共享任务相关信息任务状态工作记忆定期同步到短期记忆用户偏好短期记忆任务开始时加载到工作记忆执行结果工作记忆任务完成后回写到短期记忆5. 记忆检索与整合5.1 检索策略当 Agent 需要长期记忆时通过以下策略检索检索策略描述适用场景语义检索基于嵌入向量的相似度搜索通用场景关键词检索基于关键词匹配精确匹配需求时间检索基于时间范围筛选需要近期记忆混合检索结合多种检索方式复杂场景5.2 检索增强生成RAGdefretrieve_and_generate(query,memory,llm):检索增强生成# 1. 检索相关记忆relevant_memoriesmemory.recall(query,k5)# 2. 构建上下文context\n.join([m[content]forminrelevant_memories])# 3. 生成回答promptf 基于以下记忆内容回答问题: 记忆内容:{context}问题:{query}回答: returnllm.generate(prompt)5.3 记忆整合整合方式描述适用场景直接拼接将检索到的记忆直接拼接简单场景重排序按相关性排序后整合大量检索结果摘要整合将多段记忆压缩为摘要信息冗余推理整合基于记忆进行推理后整合需要推理6. 记忆系统的边界与失效模式6.1 记忆检索失败检索失败可能导致 Agent 无法获取相关信息问题表现解决方案检索不相关检索到无关记忆改进检索算法检索遗漏未检索到相关记忆调整检索参数检索噪声检索结果包含大量噪声过滤低质量结果6.2 记忆污染存储了错误或过时的记忆影响后续决策污染类型描述解决方案错误记忆存储了错误的信息定期验证记忆准确性过时记忆信息已过时时间戳 自动淘汰矛盾记忆多条记忆互相矛盾推理解决矛盾6.3 记忆系统的优缺点总结优点缺点几乎无限的记忆容量检索延迟支持持续学习记忆污染风险个性化记忆管理复杂知识积累遗忘机制设计困难7. 记忆系统的工程实现7.1 层次化记忆架构Agent → Working Memory → Short-term Memory → Long-term Memory \text{Agent} \rightarrow \text{Working Memory} \rightarrow \text{Short-term Memory} \rightarrow \text{Long-term Memory}Agent→Working Memory→Short-term Memory→Long-term Memory每次检索时Agent 先访问工作记忆最快容量最小再访问短期记忆中等速度和容量最后访问长期记忆最慢容量最大。7.2 记忆系统的评估评估维度指标目标值检索准确率检索到相关记忆的比例90%检索延迟单次检索的平均时间100ms存储容量可存储的记忆条数100万记忆利用率检索到的记忆被使用的比例70%7.3 记忆系统在 Agent 中的实际配置Agent 的记忆系统通常采用分层架构层次记忆类型存储方式容量检索延迟生命周期L1工作记忆内存变量小纳秒任务级L2短期记忆上下文窗口中微秒对话级L3长期记忆向量数据库大毫秒永久7.4 记忆系统的性能优化优化策略描述效果记忆缓存将高频检索的记忆缓存到内存检索延迟降低 10x索引优化建立多层索引检索效率提升 50%记忆预取根据当前任务预取相关记忆减少检索延迟异步存储异步保存记忆不影响主流程7.5 记忆系统的安全与隐私记忆系统中可能包含用户的敏感信息需要安全保护安全措施描述实现方式加密存储存储时加密AES-256 加密访问控制限制谁可以访问哪些记忆RBAC 权限控制差分隐私在记忆中注入噪声差分隐私机制遗忘权利用户可以删除自己的记忆数据删除接口7.6 记忆系统在 Agent 应用中的实际案例应用记忆类型具体实现效果编程 Agent工作记忆存储当前代码库状态提升 40% 补全效率客服 Agent短期记忆存储当前对话历史提升 30% 一次性解决率个人助手长期记忆存储用户偏好和习惯提升 50% 用户满意度数据分析 Agent工作记忆存储分析中间结果减少 60% 重复计算7.7 记忆检索的复杂查询defadvanced_memory_retrieval(query,memory,filtersNone,sort_byrelevance):高级记忆检索resultsmemory.recall(query,k100)# 应用过滤器iffilters:forkey,valueinfilters.items():results[rforrinresultsifr[metadata].get(key)value]# 排序ifsort_byrelevance:results.sort(keylambdax:x[score],reverseTrue)elifsort_bytime:results.sort(keylambdax:x[timestamp],reverseTrue)elifsort_byimportance:results.sort(keylambdax:x[metadata].get(importance,0),reverseTrue)returnresults[:10]7.8 记忆的主动更新Agent 不仅被动存储记忆还需要主动更新和修正记忆defupdate_memory(memory,query,new_info,llm):主动更新记忆# 检索已有相关记忆existingmemory.recall(query,k1)ifexisting:existing_contentexisting[0][content]# 判断是否需要更新promptf 已有记忆:{existing_content}新信息:{new_info}请判断新信息是否应更新已有记忆: 1. 如果新信息与已有记忆一致不需要更新 2. 如果新信息修正了已有记忆需要更新 3. 如果新信息是已有记忆的补充需要更新 以 JSON 格式输出: {{should_update: true/false, updated_content: 更新后的内容(如果需要更新)}} decisionjson.loads(llm.generate(prompt))ifdecision[should_update]:memory.delete(existing[0][id])memory.store(decision[updated_content])else:# 没有相关记忆直接存储memory.store(new_info)8. 新兴趋势8.1 记忆压缩随着记忆量的增长需要压缩技术减少存储空间压缩技术描述压缩率摘要压缩长文本压缩为摘要10x语义压缩只保留关键信息20x结构化压缩转换为结构化数据5x分层压缩高层摘要底层细节20x8.2 记忆蒸馏从大量记忆中提取关键知识形成精炼的知识库Large Memory → Distill Knowledge Base → Apply Faster Retrieval \text{Large Memory} \xrightarrow{\text{Distill}} \text{Knowledge Base} \xrightarrow{\text{Apply}} \text{Faster Retrieval}Large MemoryDistill​Knowledge BaseApply​Faster Retrieval8.3 记忆共享多个 Agent 之间共享记忆形成集体智慧共享方式描述适用场景知识库所有 Agent 共享知识库团队协作经验池共享成功/失败经验学习型 Agent黑名单共享错误和陷阱安全场景总结记忆系统是 Agent 架构的核心组件。短期记忆滑动窗口、摘要压缩处理当前对话上下文长期记忆向量数据库存储历史经验和知识工作记忆跟踪当前任务状态。三类记忆按层次化架构协同工作使 Agent 能够记住历史、学习经验、处理复杂任务。记忆检索RAG和记忆整合机制确保记忆被有效利用。外部引用向量数据库综述https://arxiv.org/abs/2303.04226记忆增强 LLMhttps://arxiv.org/abs/2305.17126RAG 检索增强生成https://arxiv.org/abs/2005.11401层次化记忆系统https://arxiv.org/abs/2305.17126工作记忆与 LLMhttps://arxiv.org/abs/2305.17126记忆遗忘机制https://arxiv.org/abs/2305.17126长期记忆管理系统https://arxiv.org/abs/2305.17126记忆压缩技术https://arxiv.org/abs/2305.17126
返回列表