当讨论创建 AI 代理的独特优势时,主要讨论两件事:调用工具完成任务的能力,以及随时间不断改进的能力。记忆是创建能够自我改进并为用户创造更好体验的代理的基础。
在本课中,我们将了解 AI 代理的记忆是什么,以及如何管理和使用它来使我们的应用受益。
本课将涵盖:
• 了解 AI 代理的记忆:什么是记忆以及为何对代理至关重要。
• 实现与存储记忆:为 AI 代理添加记忆功能的实用方法,重点关注短期和长期记忆。
• 使 AI 代理自我改进:记忆如何使代理从过去的交互中学习并随时间改进。
本课包含两个完整的 notebook 教程:
• 13-agent-memory.ipynb:使用 Mem0 和 Azure AI Search 与 Microsoft Agent Framework 实现记忆
• 13-agent-memory-cognee.ipynb:使用 Cognee 实现结构化记忆,自动构建由嵌入支持的知识图谱,可视化图谱,以及智能检索
完成本课后,你将了解如何:
• 区分 AI 代理的各种记忆类型,包括工作记忆、短期记忆和长期记忆,以及人格记忆和情节记忆等专门形式。
• 为 AI 代理实现和管理短期与长期记忆,使用 Microsoft Agent Framework,利用 Mem0、Cognee、Whiteboard memory 等工具,并与 Azure AI Search 集成。
• 了解自我改进 AI 代理的原理,以及强大的记忆管理系统如何促进持续学习和适应。
从本质上来说,AI 代理的记忆是指让代理能够保留和回忆信息的机制。这些信息可以是关于对话的具体细节、用户偏好、过去的行动,甚至是学到的规律。
没有记忆的 AI 应用通常是无状态的,意味着每次交互都从头开始。这会导致重复且令人沮丧的用户体验,代理会”忘记”之前的上下文或偏好。
代理的智慧与其回忆和利用过去信息的能力密切相关。记忆使代理能够:
• 具有反思能力:从过去的行动和结果中学习。
• 具有互动能力:在持续进行的对话中维持上下文。
• 具有前瞻性和反应性:根据历史数据预测需求或做出适当回应。
• 具有自主性:通过调用已存储的知识更加独立地运作。
实现记忆的目标是使代理更加可靠且强大。
可以将其视为代理在单次进行中的任务或思考过程中使用的草稿纸。它保存计算下一步所需的即时信息。
对于 AI 代理来说,工作记忆通常捕获对话中最相关的信息,即使完整的聊天记录很长或被截断。它专注于提取需求、提案、决策和行动等关键要素。
工作记忆示例
在旅行预订代理中,工作记忆可能会捕获用户当前的请求,例如”我想预订一趟去巴黎的行程”。这个具体需求保存在代理的即时上下文中,以指导当前的交互。
这种类型的记忆在单次对话或会话期间保留信息。它是当前聊天的上下文,允许代理回顾对话中之前的轮次。
短期记忆示例
如果用户问”飞往巴黎的机票大概多少钱?”然后接着问”那里的住宿呢?”,短期记忆可确保代理知道”那里”指的是同一对话中的”巴黎”。
这是跨多次对话或会话持续存在的信息。它允许代理在较长时间内记住用户偏好、历史交互或通用知识。这对个性化非常重要。
长期记忆示例
长期记忆可能会存储”Ben 喜欢滑雪和户外活动,喜欢有山景的咖啡,并因过去受伤而想避开高级滑雪道”等信息。这些从以往交互中学到的信息会影响未来旅行规划会话中的推荐,使推荐具有高度个性化。
这种专门的记忆类型帮助代理形成一致的”个性”或”角色”。它允许代理记住关于自身或其预期角色的细节,使交互更加流畅和专注。
人格记忆示例 如果旅行代理被设计为”专业滑雪规划师”,人格记忆可能会强化这一角色,影响其回应以符合专家的语气和知识。
此记忆存储代理在执行复杂任务时所采取步骤的顺序,包括成功和失败。它就像记住特定的”情节”或过去的经历,以便从中学习。
情节记忆示例
如果代理尝试预订某班航班但因无法订到而失败,情节记忆可以记录这次失败,使代理在后续尝试中能够尝试替代航班,或以更有依据的方式告知用户问题所在。
这涉及从对话中提取并记住特定实体(如人物、地点或事物)及事件。它使代理能够建立对所讨论关键要素的结构化理解。
实体记忆示例
从一段关于过去旅程的对话中,代理可能提取”巴黎”、”埃菲尔铁塔”和”在 Le Chat Noir 餐厅的晚餐”等实体。在未来的交互中,代理可以回想起”Le Chat Noir”并主动提出帮助重新预订。
虽然 RAG 是一种更广泛的技术,但”结构化 RAG”被强调为一种强大的记忆技术。它从各种来源(对话、电子邮件、图像)中提取密集且结构化的信息,并用于提升回应的精准度、召回率和速度。与单纯依赖语义相似性的传统 RAG 不同,结构化 RAG 利用信息的内在结构进行工作。
结构化 RAG 示例
结构化 RAG 可以从电子邮件中解析出航班详细信息(目的地、日期、时间、航空公司),并以结构化方式存储。这允许进行精确查询,例如”我星期二预订的飞往巴黎的是哪班航班?”
为 AI 代理实现记忆涉及一个系统性的记忆管理过程,包括生成、存储、检索、整合、更新,甚至”遗忘”(或删除)信息。检索是其中特别关键的方面。
存储和管理代理记忆的一种方式是使用 Mem0 等专用工具。Mem0 作为一个持久化记忆层运作,允许代理回想相关交互、存储用户偏好和事实性上下文,并从成功和失败中学习。这里的核心思想是将无状态的代理变为有状态的代理。
它通过两阶段记忆管道:提取和更新来工作。首先,添加到代理线程的消息会被发送到 Mem0 服务,该服务使用大型语言模型(LLM)来总结对话历史并提取新记忆。随后,由 LLM 驱动的更新阶段决定是否添加、修改或删除这些记忆,并将其存储在混合数据存储中,可包含向量、图谱和键值数据库。该系统还支持各种记忆类型,并可整合图谱记忆以管理实体之间的关系。
另一种强大的方法是使用 Cognee,这是一种面向 AI 代理的开源语义记忆,它将结构化和非结构化数据转换为由嵌入支持的可查询知识图谱。Cognee 提供双存储架构,将向量相似度搜索与图谱关系相结合,使代理不仅能理解信息的相似性,还能理解概念之间的关联。
它擅长混合检索,融合向量相似度、图谱结构和 LLM 推理——从原始数据块查找到具备图谱感知的问答。系统维持着一个会持续演化和增长的活体记忆,同时保持作为一个连通图而可被查询,支持短期会话上下文和长期持久记忆。
Cognee 的 notebook 教程(13-agent-memory-cognee.ipynb)演示了构建此统一记忆层的方式,并提供了导入多样化数据源、可视化知识图谱,以及根据特定代理需求使用不同搜索策略进行查询的实践示例。
除了 Mem0 等专用记忆工具之外,你还可以利用 Azure AI Search 等强大的搜索服务作为存储和检索记忆的后端,尤其适合结构化 RAG。
这使你能够用自己的数据为代理的回应提供依据,确保更相关、更准确的答案。Azure AI Search 可用于存储用户特定的旅行记忆、产品目录或任何其他领域特定的知识。
Azure AI Search 支持结构化 RAG 等功能,擅长从对话历史、电子邮件或图像等大型数据集中提取和检索密集、结构化的信息。与传统的文本分块和嵌入方法相比,这提供了”超越人类的精准度和召回率”。
自我改进代理的一种常见模式是引入“知识代理”。这个独立的代理观察用户与主要代理之间的主要对话。其角色是:
识别有价值的信息:判断对话中是否有部分值得作为通用知识或特定用户偏好进行保存。
提取与总结:从对话中提炼出重要的学习内容或偏好。
存储到知识库:将提取的信息持久化,通常存储在向量数据库中,以便日后检索。
增强未来查询:当用户发起新查询时,知识代理检索相关的已存储信息并将其附加到用户的提示中,为主要代理提供关键上下文(类似于 RAG)。
• 延迟管理:为避免降低用户交互速度,可以先使用更便宜、更快速的模型来快速检查信息是否值得存储或检索,仅在必要时才调用更复杂的提取/检索流程。
• 知识库维护:对于不断增长的知识库,可以将使用频率较低的信息移到”冷存储”以管理成本。
加入 Microsoft Foundry Discord 与其他学习者交流,参加答疑时间并获得你的 AI 代理问题解答。
免责声明: 本文件由 AI 翻译服务 Co-op Translator(https://github.com/Azure/co-op-translator)翻译。虽然我们力求准确,但请注意自动翻译可能包含错误或不准确之处。原始文档的原文应被视为权威版本。对于关键信息,建议由专业人工译者进行翻译。对于因使用本翻译而产生的任何误解或曲解,我们不承担任何责任。