agent的记忆怎么设计
agent为什么需要记忆?
LLM本身是无状态的,上下文窗口context有限,每次推理调用都是成本,注意力衰减
有记忆能补充上下文,依据这个记忆来整合推理,而非每次都从新开始
解决:当前会话内的上下文连贯性+跨会话的知识持久化
对应短期记忆和长期记忆
1、短期记忆的载体是LLM 的context window。包括在这次会话中用户的输入、工具调用和模型输出。如果对话边长,整个的内容太多
3种方式控制context
- 上下文缩减,对历史的信息做摘要或整合,把细节丢掉换空间(可能存在摘要的完整性和准确性问题
- 上下文卸载,把完整内容存到外部存储,context留引用的ID,需要时候再取(把记忆内容放到另一个空间,可能存在检索不准的问题?
- 上下文隔离,多agent架构拆给子agent,每个agent只有自己那部分精简指令,主agent只收结果(记忆也设计多agent?每个agent还要处理自己的prompt和记忆
【Langchain摘要,google ADK压缩窗口,agentscope渐进压缩策略】
2、长期记忆,跨会话持久化的信息。存用户历史偏好、历史事实、领域经验、工具使用模式
类似的两部分,先record,每轮对话后用llm在短期记忆里做事实提取,向量化,存入向量数据库或图数据库;再retrieve,在接收新的query后,在向量库中按语义相似度检索,把检索到的记忆注入当前的短期对话中辅助推理
的确,思路和RAG一致,区别在于RAG是静态的外部知识库,长期记忆检索式动态的交互历史累计,实时更新。同时包含巩固、更新、遗忘的过程
实现上,作为独立组件,agent通过集成接口。有开源方案Mem0,agent通过API集成它
Mem0是个协同工作机制,完成了整个过程。适合场景:短期上下文记忆、简单的用户偏好存储、快速原型验证。agent触发记忆就把对话内容发给它,llm从中提炼关键信息,用embedding存到数据库,检索时通过向量相似度匹配召回。

AgeMem论文工作,把记忆统一为tool action,成为工具的调用过程,用强化学习训练以学会什么时候存、忘,实现自主学习的过程
【记忆转化为工具,可以实现需要时候检索并使用,就是长程和短程两个工具。Step-wise GRPO (Step-wise Group Relative Policy Optimization)

来源:
丁师兄大模型
更多推荐
所有评论(0)