☰
几种常见的 Agent Memory 策略
2026/10/11 1:39:28 网站建设 项目流程

关于 Agent Memory的一些理解

  • 前言
  • Memory 的几种常见存储策略
    • 完整的存储:
    • 近期交互记录:
    • 摘要存储:
    • 检索交互记录
    • 混合方式
  • 后记
  • 参考

前言

虽说大模型现在还不是完全普及,但是工作中基本上是离不开各种基于大模型的各种buddy(codebuddy、workbuddy)和搭子了。 这些 工作中的“buddy”在上层看是作为一种 Agent 的形式存在,其底层依赖的还是 LLM, 每一次我们向“buddy”下达任务的时候,这些“buddy”都会几十上百次的请求 LLM。

从某种程度上说,llm 是存储了世上绝大多数的普适知识,我们向 llm 询问的时候,其实是从 llm 的知识空间中匹配到那个可能性最大的结果(所以说是一种概率模型)输出给我们(当然这只是简单的比方,llm 的推理、多模态等会涉及到更复杂的能力)。 而这一次次提供给 llm ,使得 llm 能够在知识空间中搜索结果的提示词,就是记忆,就是 memory。(我理解这也是为什么在chatbot 阶段,大模型应用开发很重要的工作就是提示词工程)


如果没有 memory,那只能和 llm进行单次交互(除非所有的信息一股脑的全塞给 llm, 这样基本玩不了啥东西 ),单次交互之后llm 就会忘记之前的信息。

ps: 这里是以 glm-4-flash 的 llm做的实验,在 glm-5版本中测试,llm好像会也有记忆。

所以现在Agent Memory 拥有 Memory 是标配,但是使用什么样的Memory, 以何种方式管理 Memory不同的 Agent 可能各有侧重。 这里 涉及到很多内容,下面简单总结其中的几种常见存储策略,希望可以便人便己。


Memory 的几种常见存储策略

Agent memory 一般有一下几种存储方式:

完整的存储:

全量存储是把Agent 和环境交互的上下文完整的存储下来,保留最完整的信息。这种方案对于简单的会话任务还可以,但是对于长会话来说,计算开销大,而且容易产生推理误差(过长的上下文会干扰 LLM)。


近期交互记录:

根据局部性原理,存储一部分最近产生的 Memory 信息。最近产生的 Memory信息再不久的将来用的概率也最大。典型的实现方案是滑动窗口来保留窗口内的Memory,实现简单,计算开销较小。但是这种方案也有弊端,最开始的原始目标在交互的过程中可能慢慢就丢失了,跑着跑着,原始的初心就丢了。



如上图所示,在最后询问“我是谁” 这句话的时候, 由于窗口已经划过了之前的身份信息,所以已经不会把之前的 memory 带给 llm 了,llm 也不会记得这个信息。

摘要存储:

很多时候交互的轮次比较多,会产生极多的上下文,如果按照原来的消息 原封不动的存下来,会有大量的消息存储消耗,也会有干扰信息。使用摘要存储时一种很常见的方式,让大模型先帮我们总结已有片段的摘要信息,这样既保留了上下文核心信息,也不至于产生大量上下文。



上述实验配置如果超过 4 条交互消息,即触发摘要,将之前的信息送给 llm进行一次摘要总结。后续的交互将摘要和保留的信息当做完整的 memory 送给 llm(其实确切的来说,这种方式也就是下面说的混合存储方式)。

检索交互记录

如果我们存了很多上下文,但是有可能本次交互不需要所有的上下文信息,只需要关联的那部分即可。所以还有一种方式是通过关键词打分来检索已存储的那部分 memory 信息,选取 top-k的信息交给LLM。


上面的示例是使用 jieba 分词,然后按照匹配的关键字进行打分,按照 设置的token 预算,筛选出最关联的几条上下文信息最终注入请求。

上述方式是关键词匹配来打分(有点类似于 ES 那样统计词频来进行打分的逻辑),无法进行语义检索。 一般在实际操作的时候会为每条交互记录生成嵌入向量作为索引,并记录辅助信息(如时间戳、重要性评分);检索时,计算当前上下文与各记忆条目的匹配得分,选取Top-K条目用于决策,实现语义检索的逻辑功能。

是不是有些熟悉? 对, 这也就是 RAG 的基本思路。

混合方式

在线上生产的项目一般都不会单独使用某一种存储方式,而是将上述(或者其他的类型)几种方式混合起来使用。比如说使用滑动窗口+摘要总结存储, 窗口内的信息完整存储,窗口外的信息摘要存储, 充分利用各种存储的优势,来达到更优的效果。


后记

Agent Memory 是Agent 技术树中一个非常重要且复杂的部分,包括很多内容。上面介绍的几种常见的 memory 存储策略算是属于基本的词元级文本形式,一般使用非结构化的原始文本来存储(现在也有很多 memory 使用结构化形式(如Graph图结构(2D)、Tree树结构(2D)、多层级结构(3D)等, 这样可以应对更复杂的场景)。

除此之外,Memory 信息还可以内化到模型本身的参数权重中(还可以存在于模型内部的非参数化表征空间中)。 这部分的内容涉及到底层模型的训练部分,目前我也不是很熟悉,留待以后慢慢探索了。


参考

【1】AI Agent 入门指南(四):Memory 记忆机制综述
【2】AI大模型之美 | 极客时间技术好课
【3】Memory & Context Management

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询