我们在《终于有人把“智能体”的概念给我讲明白了!》一文中深入浅出地讲解了智能体的概念。
有些同学问:智能体的 Memory 中 短期记忆(Short-term memory)与长期记忆(Long-term memory)是什么意思?有什么区别?
本文用相对通俗易懂的语言帮助大家来理解这两个概念,以及如何实现的?

在 《LLM Powered Autonomous Agents》这篇文章中提到,大语言模型驱动的自主智能体中,大语言模型充当大脑,然后还有几个关键组件,如规划、工具、记忆。

其中记忆包括短期记忆和长期记忆。

短期记忆是智能体在单一会话中维护即时上下文的能力。

大模型的短期记忆其实是通过参数来维持的。我们是通过把对话的历史放在请求参数里,每次把前面的内容带上去,它才知道之前聊过什么。

拿 Cherry Studio 为例,不管是默认助手还是我们自定义的助手,在模型设置这里都可以看到「上下文数」。

我们第一个问题是:“你好”
注:点击 Cherry Studio 客户端窗口后按下快捷键 Ctrl + Shift + I(Mac端:Command + Option + I)可以打开控制台,查看请求过程。

我们第三个问题是“很好”

当我们问第四个问题:“不需要”时,我们可以看到我们第一个问题就被丢了!!!
这里的上下文轮数其实就是短期记忆的轮数。超过这个轮数的话,那么它就不会再发给大模型了。
有些朋友可能会问,那我们把上下文数设置长一点不就行了吗?
事情远没有想象的那么简单。

对于很多大模型来说,是按照输入和输出的 tokens 来计费的,上文越长越贵。截图来自;https://api-docs.deepseek.com/quick_start/pricing

对大多数模型来说,上下文越长,能力相对来说是会普遍下降的。
详情参见:https://research.trychroma.com/context-rot
由于短期是把聊天记录当做参数传过去,所以在不同的对话中无法自动共享一些关键信息。

长期记忆允许智能体存储、检索和利用过去跨越数天、数月甚至数年的信息。

拿 Cherry Studio 为例,长期记忆是通过“全局记忆”实现的。
你可以手动添加记忆,也可以在智能体里开启记忆。它就会把自己需要记忆的信息做判断,然后自动存储。

我们可以在整体设置这里打开全局记忆。

我们在和他们聊天的时候,它会先检索相关的记忆,然后再回答我们的问题。

如果它认为有些信息需要记住,也会自动保存到记忆中。

听着很完美,实际上还是会存在很多问题。

当我们开启全局记忆时,用户发起对话就会调用 Memory_Search 工具检索可能相关的记忆,并把它们放进上下文,帮助大语言模型更好地回答问题。
回答完成后,系统还会异步提取本次聊天的信息,如有需要增加、修改或删除的记忆,也会通过相应工具处理。
更多细节可 Cherry Studio 源码:https://github.com/CherryHQ/cherry-studio

简要来说,短期记忆是通过请求时传入对话历史来实现的,通常在对话内有效。长期记忆则是通过持久化存储,如向量数据库实现的,可以跨对话。
如果文章对你有帮助,可以给我三连击:点赞、喜欢,并转发给身边需要的朋友。
希望本文分享的技巧对你有帮助,我们下次再见。