产品AWS Machine Learning·原文 2026年10月2日

AWS发布教程:用S3 Vectors为NVIDIA NeMo Agent Toolkit构建持久记忆层

AWS机器学习博客发布实操教程,演示如何将Amazon S3 Vectors实现为NVIDIA NeMo Agent Toolkit的自定义记忆提供方,并部署在Amazon EKS上,以多智能体投资研究为运行示例。

AI解读:这条新闻的实质是一份实现教程:AWS把此前关于智能体记忆架构的讨论推进到了可落地的代码层面,给出NAT自定义记忆提供方的完整实现路径,并选择在Amazon EKS上部署以获得完整的运维控制权。

真正受影响的是一线搭建多智能体系统的开发者。NAT自带的记忆后端是Mem0、MemMachine、Redis和Zep,而这篇教程要解决的是另一类需求:向量存储要能弹性扩展到十亿级、写入后立即可见、且没有闲置算力计费。

教程给出的方案有两个实际约束需要留意:S3 Vectors元数据值有大小限制,示例中把内容截断到 1024 字符;同时每个索引最多支持 20 亿个向量,无需容量规划。超出这些边界的场景需要自行设计分片或压缩策略。

关于记忆对智能体表现的影响,原文只给了方向性预期而非基准测试数据:可溯源性应会提升、token用量应会下降、延迟会有小幅增加、重复工作会减少。这些效果的具体幅度取决于工作负载,文章明确表示没有实测。

教程还包含责任AI部分,要求设置记忆留存策略、避免在元数据中存储个人身份信息,并用按租户隔离的索引和最小权限IAM策略限制访问范围。这部分不是可选项,而是涉及持久化用户数据时的必要设计。

AWS机器学习博客发布了一篇实操教程,主题是使用Amazon S3 Vectors作为NVIDIA NeMo Agent Toolkit(NAT)中的持久记忆层,并部署在Amazon Elastic Kubernetes Service(Amazon EKS)上,以获得完整的运维控制权。作者为Venkata Sistla。教程以多智能体投资研究作为贯穿示例。

据文章介绍,NVIDIA NeMo Agent Toolkit是一个用于构建、分析和优化AI智能体的开源框架,与框架无关,可与Strands Agents、LangChain、LlamaIndex、CrewAI及自定义实现配合使用。NAT提供四类与生产智能体系统相关的能力:智能体编排、性能分析、评估和优化。

NAT记忆模块的扩展点与内置提供方

文章说明,NAT包含一个专用记忆子系统,用于在智能体调用之间存储和检索对话历史、用户偏好和长期知识。该模块可扩展,通过实现NAT插件接口来创建自定义记忆提供方(后端)。

关键组件包括:MemoryEditor,所有记忆后端必须实现的抽象接口,定义add_items()、search() 和remove_items() 三个方法;MemoryItem,表示一条记忆的数据模型,包含对话历史、标签、元数据、user_id以及可选的文本记忆字符串等字段;MemoryBaseConfig,自定义记忆配置继承的Pydantic基类。NAT通过YAML配置中的 _type字段发现提供方。此外还有自动记忆包装器auto_memory_agent工作流类型,可自动捕获和检索记忆,无需LLM显式调用记忆工具。

文章列举NAT当前内置的记忆提供方为Mem0、MemMachine、Redis和Zep。文章称,对于需要弹性向量存储、强写入一致性和经济高效扩展到十亿级向量的生产多智能体系统,基于Amazon S3 Vectors的自定义提供方是合适选择。

为何选S3 Vectors作为持久记忆后端

文章用一张表总结了S3 Vectors满足NAT记忆层要求的属性:语义检索方面,支持可配置距离度量(余弦、欧几里得)的向量相似度搜索;范围查询方面,每个向量带可过滤元数据,支持字符串、数字、布尔值和列表;多智能体协调方面,具备强写入一致性,记忆插入后立即可见;扩展性方面,每个索引最多支持 20 亿个向量,无需容量规划;成本效率方面,仅为存储、写入和查询付费,无闲置计算费用;访问控制方面,支持按存储桶和索引的AWS Identity and Access Management(IAM)策略,并可通过按租户的索引实现硬隔离。

实现自定义记忆提供方的关键细节

教程给出的实现代码中,插件使用Amazon Titan Text Embeddings V2生成嵌入,维度为 1024 并做归一化。存储时,每条记忆以向量形式写入,键格式为mem_{user_id}_{uuid前 12 位},代码注释说明使用uuid4是为了避免同一秒内的键冲突。

代码注释还提到,S3 Vectors元数据值有大小限制,生产使用中内容截断到 1024 字符。元数据字段包括user_id、memory_type、agent_id、team_id、task_id、confidence、created_at_epoch、is_shared、source和content,若存在ticker字段也会一并加入。

检索时,搜索方法根据传入的kwargs构建元数据过滤表达式,支持的字段有agent_id、memory_type、ticker、team_id、user_id,以及针对is_shared的布尔过滤;随后调用query_vectors并返回元数据。删除方法则根据传入的keys调用delete_vectors。

配置层面,YAML中通过 _type: s3vectors_memory指定记忆提供方,并配置vector_bucket、index_name和aws_region。示例工作流使用auto_memory_agent包装器,开启save_user_messages_to_memory、retrieve_memory_for_every_response和save_ai_messages_to_memory;示例LLM为anthropic.claude-sonnet-4-20250514,temperature设为 0.3。

  • 前提条件:需要具备创建Amazon S3 Vectors资源和Amazon EKS集群权限的AWS账户、一个现有Amazon EKS集群、已安装的NVIDIA NeMo Agent Toolkit(测试版本为 1.6),以及Python 3.11或 3.12。

多智能体投资研究示例与记忆整合

教程给出的运行示例是三个专门化智能体协作完成投资研究:Research Agent收集市场数据、财报和新闻;Analysis Agent执行定量分析并识别模式;Synthesis Agent生成综合两个智能体发现的报告。借助持久记忆,Research Agent可回忆此前收集的数据以避免重复API调用,Analysis Agent可基于此前会话识别的模式,Synthesis Agent可访问累积发现以生成逐步丰富的报告。

多智能体记忆协调方面,每个智能体使用同一个S3 Vectors索引,但写入时带上自己的agent_id元数据。智能体通过元数据过滤检索共享知识,例如Analysis Agent以team_id='investment-research'、is_shared=True检索Research Agent的发现,Synthesis Agent以同样的team_id查询团队全部知识。文章称NAT内置的多租户记忆隔离使用user_id按用户限定记忆范围,而team_id元数据字段在同一索引内提供额外的分组维度。

记忆整合方面,文章指出情境记忆会随时间累积,定期将其整合为语义记忆(泛化知识)可保持检索精确高效。整合可通过定时cron任务、向量数量阈值,或在可配置数量的研究周期后由智能体发起信号来触发。示例代码先检索某股票代码下的情境记忆,用提示词要求识别持久模式和泛化知识并返回JSON数组,再把每条整合后的洞见作为语义记忆存入,元数据中memory_type为semantic、confidence为 0.9、source为consolidation。

EKS部署与评估方法

文章解释选择Amazon EKS是因为团队需要对智能体工作负载拥有完整运维控制权,可控制扩缩容、网络和生命周期管理,并原生集成IAM以访问S3 Vectors。若倾向全托管运行时,文章提到Amazon Bedrock AgentCore是移除运维开销的托管替代方案。智能体以容器化服务通过nat serve运行,每种智能体是一个Kubernetes Deployment,通过IAM Roles for Service Accounts(IRSA)授予IAM访问权限。

教程给出的Dockerfile基于python:3.12-slim,安装nvidia-nat[langchain] 和boto3。Kubernetes清单部署Research Agent,初始副本数为 2,配置CPU请求 500m、内存请求 1Gi、CPU上限 2000m、内存上限 4Gi,并附带HorizontalPodAutoscaler,最少 1 个副本、最多 10 个副本,以CPU利用率 70% 为目标。IAM策略授予s3vectors:PutVectors、s3vectors:QueryVectors、s3vectors:GetVectors和s3vectors:DeleteVectors权限,资源范围限定到指定向量存储桶。

部署与验证部分给出创建命名空间、应用清单、检查Pod运行状态、端口转发并发送curl请求测试端点的命令。文章称S3 Vectors提供强写入一致性,Pod和智能体类型可立即看到智能体Pod存储的记忆,无需缓存失效;HorizontalPodAutoscaler根据CPU利用率扩缩容副本,每个副本通过IRSA连接同一S3 Vectors索引,无论哪个Pod处理请求都能保持一致的记忆访问。

评估方面,文章介绍可用NAT的评估框架nat eval量化记忆对智能体表现的影响,配置两次运行——一次启用记忆、一次不启用作为基线,使用相同数据集,指标为accuracy、groundedness、token_usage和latency。

  • 文章列出的方向性预期(明确说明是方向性预期而非基准测量):可溯源性提升,因为回忆起的记忆提供可验证的来源上下文;token用量下降,因为智能体跳过重新推导此前已确立的事实,下降幅度随工作流中重复上下文的多少而变化;延迟小幅增加,因为每次记忆召回增加一次S3 Vectors查询,在标准访问模式下为亚秒级,通常只占整体LLM推理时间的很小一部分;重复工作减少,因为共享记忆让智能体避免重复队友已完成的研究或分析。
  • 文章指出这些效果的幅度取决于工作负载——跨会话复用的上下文有多少、多少智能体协作、检索预算(top-k)有多大。NAT的超参数优化器可系统调优top_k和相似度阈值,以找到特定用例的最优成本—质量权衡。
  • 责任AI与数据处理方面,文章要求为存储的记忆设置留存策略,使用文中提到的记忆整合与删除路径让不再需要的数据过期;避免在记忆元数据中存储个人身份信息,并在嵌入前对敏感字段进行脱敏或令牌化;通过按租户的索引和最小权限IAM策略限定访问,使每个智能体只能读写自己拥有的记忆。

信息来源