AI News HubLIVE
站内改写2 分钟阅读

上下文窗口并非记忆:AI智能体开发者需要理解的关键点

本文解释了为什么大上下文窗口不等于智能体记忆,并介绍了检索、压缩和摘要技术如何在智能体的认知栈中协同工作,从而实现真正的记忆持久化。

来源Machine Learning Mastery作者: Iván Palomares Carrascosa

在本文中,你将深入了解大上下文窗口为何不等同于智能体记忆,以及检索、压缩和摘要等技术如何在智能体的认知栈中各自扮演独特角色,共同实现有效的上下文管理。文章通过办公室隐喻,帮助开发者直观理解这些概念。

首先,上下文窗口被比喻为办公桌表面或临时便签。AI模型本质上是完全无状态的,每次API调用都从零开始。将大量对话历史塞入上下文窗口,模型并非真正“记住”,而是快速重读整个“宇宙”。长期依赖此策略会带来三大陷阱:模型像懒学生一样只关注提示的开头和结尾,忽略中间内容;对话增长导致雪球效应,每次步骤必须重发所有历史,包括最早期无关的轮次;延迟方面,面对巨大文本墙,模型需要较长时间才能开始生成第一个词。文章通过代码示例展示了雪球效应的具体体现:第47步时,整个44步历史必须重新发送,仅为了回答关于第1步的问题。

检索增强生成(RAG)系统好比办公室里的书架,能实时获取相关数据。但在智能体循环中,向量相似性不一定等于语义真相。例如,用户先要求将会议改到周五,后因Alice生病取消周四会议,RAG可能同时返回矛盾信息。更可靠的模式是在生成前解决冲突,例如根据时间戳选择最新指令。文章给出了一个简单的代码片段:通过比较时间戳选择最新相关块,从而避免智能体错误地重复过时指令。

压缩类似于将文件压缩为ZIP,通过算法减少令牌数,同时保持关键数据完整。例如,将15000令牌的JSON有效载荷压缩到5000,为模型腾出工作空间。实践中,可以在大型有效载荷到达主提示之前,通过压缩模型(如LLMLingua)进行预处理。压缩后的事实原样保留,仅缩小了“桌面”上的占用空间。

摘要则不同,它删除原始数据并替换为抽象,是不可逆的单向过程。良好的实践是使用分支存储:将原始记录存入廉价存储(如S3),只在活动提示中传递合成摘要。文章提供了两层存储模式的示例代码:第一层持久化原始转录,第二层生成摘要并仅将摘要放回上下文窗口。这样,后续步骤如需细节,可从S3检索,无需从活动提示中重建。

记忆持久化需要智能体作为数据库管理员,而非数据库本身。例如,用户说“我的狗叫Goofy,但可能改名为Pluto”,智能体应显式触发工具调用更新实体图。无论底层是SQL表、知识图谱还是Redis,智能体应在每轮开始时查询当前状态,并在结束时提交更改。文章展示了实现该循环的示例函数:先查询实体图获取当前状态,然后生成响应,最后根据响应中的工具调用更新实体图。

总之,文章的核心教训是:别再试图购买一个千万令牌的巨大“桌子”,而是给智能体一支铅笔,教它如何打开文件柜并有效利用其中的内容。