借助 Agent Platform 记忆库,您可以根据用户与智能体的对话动态生成长期记忆。这些记忆是个性化信息,可在多个会话中保持,使智能体能够根据上下文和连续性调整和个性化回答。
特性
记忆库帮助您管理记忆,从而您可以个性化您的智能体与用户互动的方式,并管理上下文窗口。对于每个范围,记忆库都会维护一个独立的记忆集合。每段记忆都是独立且自成一体的信息,可用于扩展您的智能体可用的上下文。例如:
{
"name": "projects/.../locations/.../reasoningEngines/.../memories/...",
"scope": {
"agent_name": "My agent",
"user": "my user ID"
},
"fact": "I use Memory Bank to manage my memories."
}
记忆库包含以下功能:
记忆生成:使用大语言模型 (LLM) 创建、优化和管理记忆。
记忆提取:仅从源数据中提取最有意义的信息,将其持久化为记忆。
记忆整合:将新提取的信息与现有记忆整合,使记忆能够随着新信息的注入而不断演变。您还可以将预提取的记忆(例如智能体或人机协同系统认为有意义的信息)与现有记忆整合起来。
异步生成:在后台生成记忆,这样智能体就不必等待记忆生成完成。
持续事件提取:通过事件提取功能流式传输和管理对话事件,该功能会根据您配置的批处理规则自动触发记忆生成。
可自定义提取:通过提供特定的主题和少样本示例,配置记忆库认为有意义的信息。
多模态理解:处理多模态信息,生成并持久化文本分析洞见。
托管式存储和检索:受益于全代管式、持久且可访问的记忆存储区。
跨身份数据隔离:记忆整合和检索仅限于特定身份。
持久且可访问的存储空间:存储可从多个环境(包括 Agent Runtime、本地环境或其他部署选项)访问的记忆内容。
相似度搜索:使用相似度搜索功能检索记忆,且搜索范围限定为特定身份。
自动到期:为记忆设置存留时间 (TTL),以确保过时信息会自动删除。配置记忆库实例,以便 TTL 自动应用于插入或生成的记忆。
记忆修订:自动创建和维护记忆修订,以便您检查记忆在注入新信息后如何发生变化。
受限权限:使用 IAM Condition限制哪些主体可以读取或写入特定范围的记忆。
智能体集成:将记忆库连接到智能体,以便智能体编排调用来生成和检索记忆。
智能体开发套件 (ADK) 集成:使用内置 ADK 工具和
VertexAiMemoryBankService来编排基于 ADK 的智能体发起的调用,以从记忆库读取数据和向记忆库写入数据。其他框架:将记忆库代码封装在工具和回调中,以编排记忆生成和检索。
使用场景
您可以使用记忆库将无状态的智能体互动转变为有状态的上下文感知体验,让智能体能够随着时间的推移去进行记忆、学习和自适应。记忆库非常适合有以下要求的应用:
长期个性化:打造为每位用户量身定制的体验。记忆库会将记忆的范围限定于特定身份,从而使智能体能够跨多个会话记住用户的偏好、对话记录和关键细节。
- 示例:一个客服人员可以记住用户过去支持服务工单和产品偏好中的关键信息,而无需再次询问。
LLM 驱动的知识提取:当您需要自动识别和持久化对话或多模态内容中最重要的信息,而无需人工干预时使用。
- 示例:一个研究智能体可以读取一系列技术论文,并构建一个由关键发现、方法论和结论组成的整合记忆。
不断变化的动态上下文:如果您需要非静态的知识来源,则可以使用记忆库。记忆库旨在持续整合来自智能体的新信息,并在有新数据可用时优化和更新存储的记忆。这样可确保您的智能体所依赖的上下文始终是最新且准确的。RAG 具有静态的外部知识库,而记忆库可以根据智能体提供的上下文信息不断演变。
用法示例

您可以将记忆库与 Agent Platform 会话搭配使用,以通过以下流程从存储的会话生成记忆:
(会话)
CreateSession:在每次对话开始时,创建新会话。智能体使用的对话历史记录范围限定为此会话。会话包含用户与智能体之间互动按时间顺序排列的消息和操作 (SessionEvents) 序列。所有会话都必须具有用户 ID;此会话的提取记忆(请参阅GenerateMemories)会映射到此用户。(会话)
AppendEvent:当用户与代理互动时,事件(例如用户消息、代理回答、工具操作)会上传到会话。这些事件会保留对话历史记录,并创建可用于生成记忆的对话记录。(会话)
ListEvents:当用户与智能体互动时,智能体会检索对话历史记录。(记忆库)生成或创建记忆:
GenerateMemories:按照指定的时间间隔(例如每个会话结束时或每个对话轮次结束时),代理可以触发使用对话历史记录生成记忆。系统会自动从对话历史记录中提取有关用户的事实信息,以便在当前会话或未来会话中使用。CreateMemory:您的智能体可以直接将记忆写入记忆库。例如,智能体可以决定何时写入记忆以及应保存哪些信息(即“记忆即工具”)。如果您希望智能体对提取的事实有更多控制权,请使用CreateMemory。
(记忆库)
RetrieveMemories:当用户与智能体互动时,智能体可以检索保存的有关该用户的记忆。您可以检索所有记忆内容(简单检索),也可以仅检索与当前对话最相关的记忆内容(相似性搜索检索)。然后,您可以将检索到的记忆插入到提示中。
快速入门
您可以按照以下快速入门开始使用记忆库:
使用 REST API 快速入门:按照 REST API 快速入门直接向会话和记忆库发出 API 调用。
使用 ADK 快速入门:如果您希望 ADK 智能体为您编排对会话和记忆库的调用,请按照 ADK 快速入门中的说明操作。
记忆库治理
本部分介绍了使用 Memory Bank 时的各种数据治理注意事项,例如安全责任和数据驻留。
提示注入的安全风险
除了Agent Platform 责任共担中概述的安全责任之外,使用长期记忆时,还要考虑提示词注入和记忆投毒的风险,这些风险可能会影响您的智能体。当记忆库中存储了虚假信息时, 就会发生记忆投毒。然后,智能体可能会在未来的会话中处理此虚假或恶意信息。
为降低记忆投毒的风险,您可以执行以下操作:
Model Armor:使用 Model Armor 检查发送到记忆库或来自智能体的提示。
对抗性测试:通过模拟攻击,主动测试 LLM 应用是否存在提示注入漏洞。这通常称为“红队测试”。
沙盒执行:如果智能体能够执行外部或关键系统,或者与这些系统互动,则应在具有严格访问权限控制和人工审核的沙盒环境中执行这些操作。
如需了解详情,请参阅 Google 的安全 AI 智能体方法。
数据驻留
为了遵守《一般数据保护条例》(GDPR) 等监管框架和区域数据主权要求,您必须确保在记忆库中生成和存储的记忆符合严格的数据驻留和隔离边界。
虽然记忆库在实例内的不同身份之间提供基于范围的数据隔离,但您必须应用基于角色的访问控制 (RBAC) 和 Identity and Access Management 政策,以强制执行区域边界并防止不同区域实例之间发生跨境记忆污染。
区域实例部署和数据驻留
创建 Memory Bank 实例时,请选择单区域或多区域位置(例如,欧盟选择 eu,美国选择 us),以确保静态数据保留在特定地理边界内。
机器学习 (ML) 处理位置取决于底层模型的区域可用性。如果您选择的模型或位置(例如 Gemini 3 模型或亚洲单区域)没有区域端点,则系统会使用全球 Gemini 端点进行机器学习处理。如需了解详情,请参阅数据驻留以及多区域和全球端点。
防止跨境内存污染
当在一个管辖区(例如美国)运行的 Agent Runtime、Agent Identity、服务账号或应用向位于另一个管辖区(例如欧盟)的 Memory Bank 实例写入记忆或从中检索记忆时,就会发生跨境污染。
为防止跨境污染并保持监管合规,您可以配置以下 IAM 控制措施:
专用区域代理身份或服务账号:为每个管辖区创建单独的、特定于区域的代理身份或服务账号(例如,为美国工作负载创建
agent-us@PROJECT_ID.,为欧盟工作负载创建agent-eu@PROJECT_ID.)。确保仅向区域级代理身份和服务账号授予位于同一地理管辖区内的 Memory Bank 实例的 IAM 角色,以防止区域级运行时访问跨境实例。- 最小权限专用角色:仅向主账号授予其工作负载所需的特定 Memory Bank 角色(例如,用于只读检索的
roles/aiplatform.memoryViewer或用于写入和生成访问权限的roles/aiplatform.memoryEditor),并绑定到适当的区域级资源。如需详细了解可用角色,请参阅专用 Memory Bank IAM 角色。
- 最小权限专用角色:仅向主账号授予其工作负载所需的特定 Memory Bank 角色(例如,用于只读检索的
组织政策:使用
gcp.resourceLocations组织政策限制条件在组织、文件夹或项目级层强制执行位置限制。这会将记忆库资源的创建和使用限制在已获批准的合规区域,并防止未经授权使用全球端点。
如需详细了解如何实现条件访问权限政策,请参阅使用 IAM Conditions 控制对 Agent Platform Memory Bank 的访问权限。
客户管理的加密密钥 (CMEK)
默认情况下, Google Cloud 会使用 Google-owned and Google-managed encryption keys对静态记忆和记忆修订版本进行加密。如需使用您在 Cloud Key Management Service (Cloud KMS) 中管理的加密密钥来保护 Memory Bank 数据,请在创建父智能体 Agent Runtime 实例时指定 encryption_spec (kms_key_name)。如需了解项目和密钥设置要求,请参阅适用于 Gemini Enterprise Agent Platform 的 CMEK。
将 CMEK 与 Memory Bank 搭配使用时,存在以下限制:
- 全球端点和部署的运行时限制:如果 Memory Bank(或会话)配置为使用
global端点 (location="global"),则无法使用 CMEK,因为 Cloud Key Management Service 要求加密密钥位于地理数据驻留边界内。如需使用 CMEK,请在受支持的区域级或多区域级位置创建独立的父级实例(不部署 Agent Runtime 代码),并使用匹配的 Cloud KMS 密钥(对于多区域级实例,请为us使用us密钥,或为eu使用europe密钥)。如果父级实例还在 Agent Runtime 上部署了智能体,则您必须使用单区域位置,因为已部署的运行时不支持在多区域级端点(us或eu)上使用 CMEK。 - 无法更新加密密钥:使用 Cloud KMS 密钥创建实例后,您无法更改该实例的加密密钥。如需使用其他密钥,请创建新实例。
VPC Service Controls (VPC Service Controls)
Memory Bank 支持 VPC Service Controls,可保护存储的记忆,防止数据渗漏。在创建 Memory Bank 实例之前,请将 Agent Platform API (aiplatform.googleapis.com) 添加到 VPC Service Controls 服务边界,并将您的项目添加到该边界。如果已部署的智能体通过服务边界内的 Agent Gateway 路由出站流量,请参阅适用于 Agent Gateway 的 VPC Service Controls 合规性和适用于会话的 VPC Service Controls。