https://mem0.ai/blog/memory-in-agents-what-why-and-how/
想象一下,你在和一个朋友聊天,可对方把你说过的所有话都忘得一干二净。每一次对话都得从头开始,没有记忆,没有上下文,也没有进展。这会让人感觉尴尬、疲惫,而且缺乏人情味。不幸的是,如今大多数人工智能系统的表现正是如此。它们确实很智能,但却缺少一样关键的东西:记忆。
我们先来谈谈在人工智能领域中,记忆究竟意味着什么,以及它为何如此重要。
本文虽然是mem0的产品推广,但是作为一个技术博客,总结了记忆相关的主要问题。
简介:当今人工智能中的记忆假象
像 ChatGPT 这样的工具或者代码辅助程序,在你发现自己一次又一次地重复指令或偏好之前,似乎都很有用。要构建能够学习、进化和协作的智能体,真正的记忆不仅仅是有益的 —— 它是必不可少的。
由上下文窗口和巧妙的提示工程所营造出的这种记忆假象,让很多人以为智能体已经具备了 “记忆” 能力。而实际上,如今的大多数智能体都是无状态的,无法从过去的交互中学习,也无法随着时间的推移进行调整。
要从无状态的工具转变为真正智能、自主(有状态)的智能体,我们需要赋予它们记忆,而不只是提供更大的提示或者更好的检索功能。
人工智能智能体中的记忆指的是什么?
在人工智能智能体的范畴内,记忆是指在不同时间、任务以及多次用户交互过程中,保留和调用相关信息的能力。它能让智能体记住过去发生的事情,并利用这些信息在未来改善自身的行为。
记忆不仅仅是存储聊天记录,或者在提示中输入更多的标记。它是要构建一个持久的内部状态,这个状态会不断演变,并影响智能体的每一次交互,即便这些交互之间相隔数周甚至数月。
定义智能体记忆的三大支柱:
状态:了解当前正在发生的事情
持久性:在不同会话中保留知识
选择性:决定哪些信息值得记住
这三者共同实现了我们前所未有的东西:连续性。
记忆如何融入智能体架构
无状态智能体(无记忆)与有状态智能体(有记忆)
让我们把记忆放到现代智能体的架构中来看。典型的组成部分包括:
- 一个用于推理和生成答案的大语言模型(LLM)
- 一个策略或规划器(例如 ReAct、AutoGPT 风格的)
- 对工具或应用程序编程接口(API)的访问权限
- 一个用于获取文档或过往数据的检索器
问题在于:这些组件都无法记住昨天发生了什么。没有内部状态,没有不断发展的理解,没有记忆。
当把记忆纳入其中时:
智能体架构中的记忆层
这将智能体从一次性的助手转变为不断进化的协作伙伴。
上下文窗口 ≠ 记忆
一个常见的误解是,大的上下文窗口能够消除对记忆的需求。
但由于某些限制,这种方法并不够。向大语言模型输入更多上下文的一个主要缺点是成本高昂:更多的标记 = 更高的成本和延迟。
特性 | 上下文窗口 | 记忆 |
保留性 | 临时的 —— 每次会话都会重置 | 持久的 —— 跨会话保留 |
范围 | 扁平且线性 —— 平等对待所有标记,没有优先级概念 | 分层且结构化 —— 对重要细节进行优先处理 |
扩展成本 | 高 —— 随输入规模增加 | 低 —— 只存储相关信息 |
延迟 | 较慢 —— 更大的提示会增加延迟 | 较快 —— 经过优化且稳定 |
调用 | 基于接近度 —— 会忘记较早的内容 | 基于意图或相关性 |
行为 | 被动反应 —— 缺乏连续性 | 自适应 —— 随每次交互而进化 |
个性化 | 无 —— 每次会话都是无状态的 | 深度的 —— 记住偏好和历史记录 |
上下文窗口有助于智能体在一次会话中保持一致性。而记忆能让智能体在不同会话之间都保持智能。即使上下文长度达到 10 万个标记,由于缺乏持久性、优先级设定和突出性,它对于真正的智能来说仍然是不够的。
为什么检索增强生成(RAG)与记忆不同
虽然检索增强生成(RAG)和记忆系统都会检索信息来支持大语言模型,但它们解决的是截然不同的问题。
- RAG 在推理时将外部知识引入提示中,它有助于依据文档中的事实给出有根据的回答。
- 但 RAG 从根本上来说是无状态的 —— 它不了解之前的交互、用户身份,也不知道当前的查询与过去的对话有何关联。
另一方面,记忆带来了连续性。它捕捉用户的偏好、过往的查询、决策和失败经历,并在未来的交互中加以利用。
可以这样来理解:
RAG 帮助智能体回答得更好。记忆帮助智能体表现得更聪明。
系统层面的关键差异
方面 | 检索增强生成(RAG) | 智能体中的记忆 |
时间感知 | 没有时间或顺序的概念 | 跟踪交互的顺序、时间和演变 |
有状态性 | 无状态;每个查询都是独立的 | 有状态;上下文在不同会话中累积 |
用户建模 | 受限于任务;与用户身份无关 | 随着用户的情况学习和进化 |
适应性 | 无法从过去的交互中学习 | 根据成功或失败的经验进行调整 |
你两者都需要 —— 用 RAG 为大语言模型提供信息,用记忆来塑造它的行为。
智能体中记忆的类型:一个高级分类
从基础层面来看,人工智能智能体中的记忆有两种形式:
短期记忆:在单次交互中保存即时的上下文。
长期记忆:在不同会话、任务和时间中保留知识。
就像在人类身上一样,这些不同类型的记忆有着不同的认知功能。短期记忆帮助智能体在当下保持连贯,长期记忆则帮助它学习、实现个性化并进行调整。
让我们进一步细分:
类型 | 作用 | 示例 |
工作记忆(短期) | 保持短期对话的连贯性 | “上一个问题是什么来着?” |
事实性记忆(长期) | 保留用户偏好、沟通风格、领域背景 | “你更喜欢 Markdown 格式的输出和简短的答案。” |
情景记忆(长期) | 记住特定的过往交互或结果 | “上次我们部署这个模型时,延迟增加了。” |
语义记忆(长期) | 存储随着时间积累的一般性、抽象知识 | “涉及 JSON 解析的任务通常会让你感到压力大,需要一个快速模板吗?” |
记忆优势:Mem0 的与众不同之处
在 Mem0 中,记忆不仅仅是一个附加功能 —— 它是我们的核心。
- 当其他人工智能系统把记忆当作事后才考虑的事情时,我们构建的整个架构都是围绕着创造真正类似人类的记忆能力展开的:
- 智能过滤:并非所有信息都值得记住。Mem0 使用优先级评分和上下文标记来决定存储哪些信息。这避免了记忆臃肿,让智能体专注于重要的事情,就像人类下意识地过滤掉噪音一样。
- 动态遗忘:优秀的记忆系统需要能够有效地遗忘。Mem0 并不把记忆看作是一个静态的存储库。相反,它会随着时间推移让相关性低的条目逐渐失效,释放空间和注意力。遗忘并非缺陷 —— 它是智能记忆的一个特性。
- 记忆巩固:我们根据使用模式、新近程度和重要性,在短期和长期记忆存储之间转移信息,优化调用速度和存储效率。这模仿了我们内化知识的方式。
- 跨会话连续性:大多数智能体在会话结束时会重置。Mem0 不会。我们的记忆架构在不同会话、设备和时间段之间保持相关的上下文。
记忆在实际中的应用
以下是记忆如何在实际应用场景中改变智能体的行为:
客服智能体:它不会把每一个投诉都当作新问题来处理,而是记住过去的问题和解决方案 —— 从而提供更顺畅、更个性化的服务。
个人助理:它会随着时间的推移适应你的习惯 —— 比如根据你的日常安排来安排会议,而不只是依据你的日程表。
代码辅助程序:它会学习你的编码风格、偏好的工具,甚至避免使用你不喜欢的模式。
结论:记忆是基础,而非一项功能
在一个每个智能体都能使用相同模型和工具的世界里,记忆将成为区分优劣的关键。胜出的不是那些只会回复的智能体,而是那些能够记住、学习并与你一同成长的智能体。
对于优秀的智能体来说,记忆不是一项功能或额外的能力。它是将智能体从一次性工具转变为长久伙伴的基础。
接下来:这篇文章奠定了基础。在后续的文章中,我们将深入探讨:
记忆在底层是如何工作的 —— 从架构和数据流向到实际集成。
智能体系统中的记忆,配以实际操作的例子。
记忆评估指标(调用率、突出性、老化程度)
在此之前,请记住:
在一个充斥着普通智能体的世界里,如果你在思考人机交互的未来,记忆不是可有可无的。它是必不可少的。让我们打造能记住的人工智能吧。