AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


智能体的记忆管理系统概述
发布日期:2024-12-17 16:21:16 浏览次数: 1592 来源:深入LLM Agent应用开发


为什么矢量数据库不足以管理智能体系统的内存?本文翻译自Medium千赞好文:Long-term Memory for AI Agents。

1. 智能体系统简介

智能体是当前的热门话题。我写过关于它们的文章,其他人也在讨论它们。然而,总的来说,这确实意味着存在着许多混乱。什么是智能体系统?它们与生成式人工智能(Gen AI)或大型语言模型(LLM)智能体有何不同?在本节中,我们试图通过强调智能体系统在实施实际营销用例方面的功能/非功能要求(如图 1 所示),来澄清这一争论。

给定一个用户任务,智能体平台的目标就是找出能够执行该任务的智能体(智能体组)。因此,我们需要的第一个组件是一个协调层,它能够将任务分解为子任务,并由协调引擎协调相应智能体的执行。从今天起,我们将提示任务分解的 LLM。这就是与 Gen AI 的重叠之处。不幸的是,这也意味着当今的智能体受限于大型语言模型(LLM)的推理能力。

例如,提示的 GPT4 任务分解。

生成量身定制的电子邮件营销活动,在 1 个月内实现 100 万美元的销售额,适用的产品及其性能指标请参见 [url]。连接客户关系管理系统 [集成],获取客户姓名、电子邮件地址和人口统计详细信息。详见图 1:(分析产品)-(确定目标受众)-(创建量身定制的电子邮件营销活动)。

然后,它监控执行情况/环境,并进行自主调整。在本例中,智能体意识到自己无法实现销售目标,于是自主增加了以下任务:(寻找替代产品)-(利用客户数据)-(进行 A/B 测试)。同样重要的是,大多数用例都需要与企业系统(如本例中的客户关系管理)集成。例如,可以参考 Anthropic 最近提出的模型上下文协议(MCP),将智能体与企业数据所在的外部系统连接起来。鉴于此类复杂任务的长期运行性质,内存管理是智能体系统的关键。初始电子邮件营销活动启动后,智能体需要对营销活动进行为期 1 个月的监控。

这既需要任务之间共享上下文,也需要长期保持执行上下文。

目前的解决方案是使用矢量数据库(Vector DBs)从外部存储智能体内存,以便根据需要访问数据项。在后续文章中,我们将深入探讨

  • 使用矢量数据库管理智能体内存
  • 数据质量问题。

然后我们证明,向量数据库不足以用于智能体任务,因为它们需要管理额外的记忆类型:

  • 语义记忆(常识)、
  • 外显记忆(个人经历)
  • 程序记忆(技能和任务程序);

并强调需要其他形式主义(如知识图谱、有限状态机)来有效地管理这些问题。

2.使用矢量数据库的对话式内存管理

矢量数据库专门用于存储矢量和处理基于矢量相似性的查询。目前,它们是存储和检索与对话智能体相对应的数据的主要媒介。图 2 展示了基于矢量数据库的对话智能体编码/内存管理。

这就需要选择一种编码器模型,将离线数据编码作为一个单独的流程来执行,将各种形式的原始数据(如文本、音频和视频)转换为向量。类似的原始对话数据项会被映射到编码空间中位置相近的向量上。

例如,文本需要转换成数字向量才能被计算机处理,这需要使用标记符号转换器。标记可以是字节、字符、字符集、单词,甚至是完整的句子。字节对编码(BPE)是目前最常用的标记化器,它使用一对相邻的字节作为标记。

选择正确的 "标记 "是关键,因为它既影响神经网络能够掌握的标记间关系,也影响训练该网络的计算复杂度。

这些编码数据保存在矢量数据库中,然后可以在推理过程中使用基于矢量相似性的相同编码器模型进行检索。在聊天过程中,对话智能体可以选择通过编码查询长期记忆系统,并在矢量数据库中搜索相关信息。然后,检索到的信息将用于根据存储的信息回答查询。

2.1 矢量数据库的数据质量问题

虽然大家都同意数据质量对人工智能的重要性,但目前企业的数据质量计划大多集中在结构化/SQL 数据上。它们没有考虑到非结构化数据,如文本、图像、音频和视频,而这些数据几乎占企业数据的 80%,与 Gen AI 使用案例相关。因此,我们将在本节中讨论这个问题:

数据质量对于非结构化数据/存储在矢量数据库中的非结构化数据意味着什么?

RAG 与微调一起,构成了根据企业数据 "调整 "预先训练的 LLM 的主要机制之一,使其更符合实际情况,从而在此过程中减少幻觉,如图 3 中的 Gen AI 生命周期阶段所示。

给定用户查询后,RAG 管道实际上由以下 3 个阶段组成(图 4):

  • 检索:将用户查询转化为嵌入(矢量格式),以便将其相似度得分(搜索)与其他内容进行比较。
  • 增强:从矢量存储中检索搜索结果/上下文,该存储与底层文档库保持最新和同步。
  • 生成:将检索到的信息块作为提示模板的一部分,为 LLM 提供更多关于如何回答查询的上下文,从而生成符合上下文的回复。

我们首先来看看当今结构化/SQL 数据世界中常见的数据质量维度:

  • 准确性:数据在多大程度上反映了真实世界的情景?
  • 完整性:数据的缺失值、空值等。
  • 一致性:相同信息在不同地方的存储方式不同。
  • 及时性:以时间戳形式获取的数据的新鲜度。

然后尝试将它们映射到非结构化数据世界/矢量数据库,如图 4 所示。

在矢量数据库的世界里,一个集合对应一个 SQL 表,每个集合项可以包括 ID、矢量、元数据。

准确性:矢量存储中捕获的数据的准确性。想想人工智能根据不准确的信息撰写新闻文章,它最终产生的可能是错误信息,而不是有价值的见解(研究表明,一个回答可能是正确的,但仍然是不恰当的)。我们依靠以下两个指标来捕捉这一点:

  • 正确性:指 LLM 答复的事实准确性
  • 基础性:指 LLM 的回复与其基础知识库之间的关系。

不正确:由于嵌入过程中的问题,一些向量最终可能会损坏、不完整或生成不同维度的向量。这会导致输出结果混乱或脱节。例如,如果人工智能根据不同质量的录音生成音频,结果可能会明显不均匀。在文本生成中,数据中不一致的语法或语气可能会导致内容混乱或脱节。缺失数据:缺失向量或元数据。例如,根据不完整数据集生成可视化设计的 GenAI 可能会输出特征缺失的产品。及时性:如果为 RAG 管道中的提示提供相关上下文的矢量存储中的文件已经过时,那么 GenAI 系统可能会导致不相关的输出。启用了 GenAI 的聊天机器人在回答与政策相关的问题时,如果从过时的政策文件中获取信息,就可能对问题做出不准确和误导性的回答。

3. 智能体记忆

虽然上述方法能很好地存储和检索作为问答对的对话,但它不足以管理智能体系统所需的其他记忆类型,特别是复制/改进人类执行的操作:

  • 语义记忆,包含事实、概念、含义等的常识。
  • 外显记忆,有关过去具体事件和情况的个人记忆。
  • 程序记忆,运动技能,如驾驶汽车,以及完成任务的相应程序。
  • 情感记忆,与经历相关的感受。

3.1 人类记忆的理解

在本节中,我们首先尝试了解人脑在短期和长期记忆方面的工作原理,如图 5 所示。

这一切都始于感官系统,来自环境的信息在这里进入我们的感官记忆。最初的记忆阶段以原始形式保存感官信息,但持续时间很短,通常只有几百毫秒。从这里开始,我们关注的信息会被转移到**短时记忆(STM)**中。这种工作记忆的容量有限,大约能在 20-30 秒内保存 7 块信息。思考、解决问题和决策等有意识的心理过程都是在这里进行的。

信息要从短时记忆转移到长时记忆(LTM),就必须经过编码,将其转化为更持久、更有意义的表征。

编码是通过重复、阐述或与现有知识建立联系等机制进行的。

一旦编码成功,信息就会进入长时记忆,长时记忆容量大,可以长时间存储信息,从数小时到一生。检索系统的运作基于对上下文信息的联想。外部和内部的检索线索通过重现编码情境来帮助获取特定记忆。

  • 回忆包括在没有外部线索的情况下主动重建信息。
  • 识别包括从备选信息中识别出以前遇到过的信息。
  • 最后,启动效应、助记技巧、信息分块和复述等检索策略可以加强检索过程。

3.2 与智能体记忆的映射

根据我们对人脑的理解和智能体/应用程序的要求,我们需要考虑以下内存类型,如图 6 所示:

  • 语义知识:信息来源于外部系统(如维基百科)和内部系统(如 Sharepoint、Confluence、文档、消息平台等)。
  • 情节记忆:对过去具体事件和情况的记忆。这些洞察力是在智能体运行过程中获得的。
  • 程序记忆:相当于人类记忆游泳或开车等运动技能的方式。它包括概述智能体如何完成特定任务的工作流程和程序。
  • 情感记忆:记录与体验相关的情感。它深入研究用户的关系、偏好、反应和数据,使人工智能在用户互动中更像人并与之保持一致。

语义记忆可能是目前 LLM 中唯一可以通过预训练和嵌入获得的记忆类型,其他记忆类型仍在研发中。

在接下来的内容中,我们将展示如何为智能体系统实施一个全面的内存管理模块,如图 6 所示。

默认情况下,记忆路由器总是会路由到长期记忆(LTM)模块,查看是否存在现有模式来响应给定的用户提示。如果有,它就会检索并立即做出响应,并根据需要进行个性化处理。如果 LTM 出现故障,内存路由器会将其路由到短时记忆 (STM) 模块,然后利用其检索流程(函数调用、应用程序接口等)将相关上下文导入 STM(工作记忆),充分利用适用的数据服务。

STM - LTM 转换器模块始终处于活动状态,不断获取所检索的上下文并从中提取配方(例如,参考 AutoGen 中的可教智能体和配方概念),然后存储在语义层中(通过矢量数据库实现)。与此同时,它还收集其他相关属性(例如,令牌数量、执行响应的成本、系统状态、执行的任务/生成的响应),并将其存储在一个语义层中(通过矢量数据库实现)。

  • 创建一个插曲,然后将其存储在知识图谱中
  • 底层程序存储在有限状态机(FSM)中。

4.结论

总之,内存管理对于采用长期运行的智能体至关重要。虽然矢量数据库对于对话型智能体来说性能很好,但我们发现它们不足以满足复杂的智能体任务对内存的不同要求,尤其是对情节记忆和程序记忆的要求。

在这篇文章中,我们提出了智能体记忆架构的初稿,其中的记忆路由器可在 STM 和 LTM 模块之间路由请求。我们的主要贡献在于提出了一个从 STM 到 LTM 的转换器模块,它能够分别在知识图谱和 FSM 中抽象和存储情节性记忆和程序性记忆。我们正积极致力于优化智能体系统的 LTM 存储和检索(包括探索其他形式)。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询