dot Redis 8 发布了——并且它是开源的

了解更多

构建更智能的AI代理:使用Redis管理短期和长期记忆

AI代理是能够通过利用大型语言模型 (LLMs) 的推理能力来规划、观察和执行行动,从而追求和实现目标的系统。预计到2025年,AI代理将在整个劳动力队伍中推动变革性变化,以重要方式影响生产力和效率,包括支持员工的日常工作 部署数字人执行关键业务职能,甚至取代我们所知的企业 SaaS。 

构建代理系统仍然是一个不断发展的领域,并且伴随着研究人员和行业专家正在积极努力解决的挑战。一个关键挑战是开发专注于推理任务的模型,而不是像总结那样侧重语言的任务,后者是第一波 GenAI 应用的特点。另一个关键障碍是管理AI代理的记忆,这通常需要采用复杂的方法来实现所需的代理性能水平。

记忆是让AI代理工作起来的关键。本指南涵盖了记忆的重要性、不同类型、管理它的最佳实践,以及为什么 Redis 是代理记忆的理想数据平台。我们还将介绍实际实现,帮助您有效地集成代理记忆。

为什么记忆很重要?

AI代理的记忆对于提高效率和能力至关重要,因为大型语言模型 (LLMs) 本身不具备记忆能力,即它们是无状态的。记忆使AI代理能够从过去的交互中学习、保留信息并维持上下文,从而产生更连贯和个性化的响应。 

想象一个设计用于规划和预订商务旅行的AI代理。如果没有记忆,它将记不住个人偏好(例如,“您喜欢直飞航班还是需要转机的航班?”);由于缺乏理解而犯程序性错误(例如,预订的酒店不提供商务旅行所需的设施,如会议室或可靠的 Wi-Fi);并且无法回忆起之前提供的详细信息,如护照信息。这会导致重复提问、行为不一致和缺乏个性化,从而带来令人沮丧的用户体验。

短期记忆 vs 长期记忆

AI代理,就像人类一样,依赖短期记忆和长期记忆才能有效运作。

短期记忆就像计算机的 RAM 一样工作——为正在进行的任务或对话保留相关细节。这种工作记忆只在对话线程中短暂存在,并且通常由于大型语言模型 (LLMs) 的有限上下文窗口或需要最小化不相关信息而受到限制。这就是像 LangGraph 这样的代理框架的作用所在。像LangGraph这样的代理框架通过提供 Checkpointers 等工具来简化短期记忆管理,这些工具有助于维护线程特定的上下文。这使得代理能够将短期记忆有效地存储在像Redis这样的高性能数据库中。

长期记忆更像是硬盘驱动器,存储大量信息以供以后访问。这些信息会跨多个任务运行或对话持续存在,使代理能够从反馈中学习并适应用户偏好。这些记忆可以进一步分为三种类型(有关不同记忆类型的细微差别,我们建议查阅著名的CoALA 框架论文)

  • 情景记忆:存储特定的过去事件和经历,就像AI交互的个人日记一样。例如,AI可能会记住用户之前曾预订去伦敦参加会议的行程,并且更喜欢住在市中心。 
  • 程序记忆:存储学习到的技能、程序和“如何做”的知识,构成AI的行动库。例如,AI可以学习预订航班的最佳流程,例如确保转机航班之间有适当的停留时间。 
  • 语义记忆:存储一般知识、事实、概念和关系,构成AI关于世界的知识库。例如,AI可以存储有关签证要求、热门旅游目的地或平均酒店费用等信息。

管理长期记忆很复杂,因为存在诸如决定存储哪种类型的记忆、确定存储什么、如何衰减旧的记忆以及如何将它们有效地检索到工作记忆中等挑战。

管理长期记忆的关键架构决策

在规划记忆管理架构时,您需要做出四个最高级别的决策

  1. 存储哪种类型的记忆? 

需要存储和管理的记忆类型可能取决于应用程序的类型。例如,会话型AI代理需要记住跨线程的用户偏好信息(因此存储情景记忆)。 另一方面,零售AI助手可能需要存储产品信息并从产品知识库中回忆相关事实(因此存储语义记忆)。 

  1. 如何存储和更新记忆? 

考虑到 LLM 上下文窗口的限制以及上下文污染的风险,有效地存储记忆至关重要。我们看到开发人员使用四种常见策略来有效地存储相关记忆。对于大多数生产部署,我们期望 AI 代理结合使用这些技术(请注意,这些技术并非互斥,许多开发人员可能希望结合使用它们)。  

  • 摘要:迄今为止最简单的方法是简单地总结先前的对话(通常使用 LLM)。记忆模块会逐步总结对话,随着新数据或经验的添加,更新和完善摘要。然后可以将总结的对话作为字符串存储在 Redis 中,并在检索时为 LLM 的未来查询提供上下文。Motorhead 团队在其开源项目中实现了这种方法的示例。 
  • 向量化:向量化是现代AI记忆管理的核心。它将文本信息转换为数值表示,这些表示封装了词语和概念的底层含义。通过将记忆分割成离散的块(我们建议使用语义分块)并对其进行向量化,开发人员可以利用向量搜索精确高效地检索最相关的记忆。 
  • 提取:总结或简单分块记忆的一种新兴替代方法是,从对话历史中提取关键事实,并将其存储在外部数据库中,同时附带事实的上下文。像 RedisJSON 这样的文档存储为存储这些事实提供了完美的解决方案。Langchain 团队最近分享了一个记忆代理示例,该示例能够提取和写入记忆。 
  • 图谱化:另一种有时使用的方法是,通过将信息映射为相互关联的实体和关系来存储AI代理记忆。这种结构化格式支持动态的、上下文丰富的记忆存储。 
  1. 如何检索相关的记忆? 

想象一下,您将记忆块存储在 Redis 这样的数据库中,其中包含它们的嵌入和文本描述。代理如何知道如何检索最相关的记忆?这是一个新兴的研究领域,研究人员正在尝试一些复杂的方法。例如,MemGPT 论文采用了一种将 LLM 用作查询生成器的方法,LLM 可以决定何时检索长期记忆,生成一个查询来进行搜索(通过生成函数调用 token),然后使用向量搜索来检索相关的块。对于大多数应用,我们建议开发人员从记忆数据库的向量搜索开始,并根据需要在此基础上增加额外的复杂性。 

  1. 如何衰减记忆? 

在AI系统中,衰减存储的记忆至关重要,以防止内存膨胀并保持效率。随着AI代理长时间交互,它会积累大量信息,其中一些信息会变得不相关或过时。如果没有遗忘机制,AI的记忆就会被无用数据淹没,导致检索时间变慢,响应准确性降低,以及资源使用效率低下。如果使用 Redis 存储记忆,您可以使用各种内置的逐出和过期策略来有效管理记忆衰减。您还可以在对象中添加时间戳作为另一个字段,并通过按时间顺序排序来影响最终的搜索结果。

为什么 Redis 是处理长期记忆的正确选择?

开发人员之所以偏爱 Redis 作为存储和管理 AI 代理记忆的平台,有几个原因。其中包括: 

  • 高性能: 读写记忆是应用程序流程的“热路径”。慢速检索时间会显著影响用户体验,或者迫使开发人员在最佳性能方面做出权衡。 Redis 的内存架构确保了微秒级的读写操作,这对这个用例至关重要。 
  • 最快且功能齐全的向量搜索: Redis 提供原生的、功能齐全的向量数据库,提供市场上最快的基准测试向量搜索解决方案。考虑到需要对记忆进行向量化和语义搜索,这是选择数据平台时的关键要求。 
  • 与您的 AI 技术栈集成: Redis 与流行的 AI 框架完全集成,包括LangGraphLlamaIndexAutogen。此外,开发人员可以使用RedisVL——一个强大、专用的 Python 客户端库,用于将 Redis 用于 GenAI 应用。RedisVL 内置了抽象层,包括用于管理会话记忆的抽象层。 
  • 可扩展性: 在构建代理系统时,预测AI代理记忆的存储需求、需要访问的客户端数量以及数据检索频率可能具有挑战性。Redis 提供了一套功能,可促进大规模部署,包括跨多个节点扩展、自动将不常访问的数据分层存储到磁盘(使用Redis Flex)以及支持高可用性和数据持久性。此外,Redis 内置的逐出和过期策略简化了记忆衰减,确保数据随时间得到高效处理。
  • 灵活性:Redis 开箱即用提供多种数据结构选项。这些数据结构,例如哈希(用于简化效率)或JSON(用于嵌套文档),为开发人员提供了按照他们偏好的方式进行内存管理的灵活性。 

通过我们的开源Redis Agent Memory Server,我们使记忆管理更加简单。

使用 LangGraph 和 Redis 的代理记忆示例

这个笔记本演示了如何使用 LangGraph 和 Redis 管理短期和长期代理记忆。在其中,我们探讨了

  1. 使用 LangGraph 的 checkpointer 进行短期记忆管理
  2. 使用 RedisVL 进行长期记忆存储和检索
  3. 手动管理长期记忆 vs 暴露工具访问(也称为函数调用)
  4. 使用摘要管理对话历史大小
  5. 记忆整合

在笔记本中,我们构建了两个版本的旅行代理,一个手动管理长期记忆,另一个则使用 LLM 调用的工具来管理。

以下是展示两个代理所使用的组件的两个图表

总结一下。让我们开始构建吧

想创建自己的代理?试试LangGraph 快速入门。然后添加我们的Redis checkpointer,为您的代理提供快速、持久的记忆。Redis Agent Memory Server 是我们用于管理代理和 AI 应用记忆的开源工具。

使用 Redis 管理 AI 代理的记忆,可以构建一个灵活且可扩展的系统,该系统能够快速存储和检索记忆。请查看下面的资源,立即开始使用 Redis 进行构建,或与我们的团队联系,讨论 AI 代理。

  • Redis Agent Memory Server: 这个仓库管理会话上下文和长期记忆。
  • Redis AI 资源包含代码示例和笔记本的 GitHub 仓库,可帮助您构建 AI 应用。 
  • Redis AI 文档快速入门和教程,帮助您快速上手。
  • Redis Cloud部署 Redis 最简单的方式——在 AWS、Azure 或 GCP 上免费试用。