NVIDIA NeMoとAWS S3 Vectorsによる永続的エージェントメモリの構築
技術ガイドでは、NVIDIA NeMo Agent ToolkitとAmazon EKS上のAmazon S3 Vectorsを使用して、AIエージェント向けにスケーラブルで一貫性のある長期メモリを構築する方法が詳しく解説されています。
英語の原文から自動翻訳されました。
マルチエージェントシステムを開発するエンジニアは現在、Amazon S3 Vectorsをバックエンドとして利用するNVIDIA NeMo Agent Toolkit(NAT)を用いて、永続的で共有されたメモリを実装するための具体的な道筋を持っています。2026年10月に公開されたこの技術ガイドでは、これらのコンポーネントをAmazon Elastic Kubernetes Service(EKS)上にデプロイし、本番環境における一貫性とスケーリングの課題を解決する方法を示しています。
何が起きたか
この記事では、NAT内でカスタムメモリプロバイダーを作成するための段階的な実装戦略を提供しています。NATはRedisやZepなどの既存バックエンドをサポートしていますが、ガイドでは、弾力的なスケーリングと強力な書き込み一貫性を必要とする本番用マルチエージェントシステムには、Amazon S3 Vectorsの方が適していると主張しています。著者らは、必要なインフラストラクチャの作成、カスタムプラグインの記述、およびエージェントワークフローの設定手順を順を追って説明しています。
実装の核心は、MemoryEditorインターフェースの定義にあります。これはカスタムバックエンド向けのプラグイン契約として機能します。開発者は、add_items()、search()、remove_items()という3つの特定のメソッドを実装する必要があります。このプラグインにより、エージェントは会話履歴、ユーザー設定、長期知識をMemoryItemオブジェクトとして保存でき、これらにはフィルタリングやクエリスコープ用のメタデータフィールドが含まれます。
デプロイメントは、エージェントライフサイクルに対する運用管理のためにAmazon EKSに依存しています。アーキテクチャでは、CPU使用率に基づいてエージェントレプリカをスケーリングするためにHorizontalPodAutoscalerを使用します。各レプリカは、Service Accounts用のIAMロール(IRSA)を通じて同じS3 Vectorsインデックスに接続します。この構成により、リクエストを処理する任意のポッドがキャッシュ無効化戦略を必要とせずに最新のメモリにアクセスできることが保証されます。
仕組み
このシステムは、標準的なエージェントをauto_memory_agentコンポーネントでラップすることで動作します。このラッパーはコンテキストのキャプチャと取得を自動的に処理するため、大規模言語モデルが毎ターン明示的にメモリツールを呼び出す必要がなくなります。エージェントが応答を生成すると、システムはAmazon Titan Text Embeddings V2などのモデルを使用してコンテンツを組み込み、S3 Vectorsインデックスに保存します。
S3 Vectorsは耐久性のあるバックエンドとして機能し、1つのインデックスあたり最大20億ベクトルをサポートします。コサイン類似度やユークリッド距離など、設定可能な距離指標を用いたセマンティック検索を提供します。重要なのは、強力な書き込み一貫性を提供することです。つまり、あるエージェントポッドがメモリを書き込むと、他のすべてのポッドでもそれが即座に見えるようになります。これにより、複数のエージェントが単一のタスクで協調動作する際に最終整合性データベースでよく見られる競合状態が解消されます。
メタデータフィルタリングにより、エージェントは検索を効果的に絞り込めます。各ベクトルは文字列、数値、ブール値、リスト形式のメタデータを保持でき、特定のユーザー、セッション、トピックを対象としたクエリが可能になります。この構造は、エピソディックメモリ、セマンティックメモリ、プロシージャルメモリなど、異なる種類のメモリをサポートしており、システムは特定のインタラクションに対して最も関連性の高いコンテキストのみを取得できます。
主要な詳細
- プラグインインターフェース: カスタムメモリバックエンドは、
add_items、search、remove_itemsメソッドを持つ抽象インターフェースMemoryEditorを実装する必要があります。 - 一貫性モデル: Amazon S3 Vectorsは強力な書き込み一貫性を提供し、キャッシュ管理なしで新しいメモリがすべてのエージェントポッドで即座に可視化されることを保証します。
- スケーリングメカニズム: Amazon EKS上のエージェントレプリカは、CPU使用率に基づいて
HorizontalPodAutoscalerを通じてスケーリングされ、すべてのインスタンスが単一のS3 Vectorsインデックスを共有します。 - 評価指標: NATの評価ハーネス(
nat eval)は、根拠性(groundedness)、トークン使用量、レイテンシ、重複作業の削減における改善を測定します。 - インフラ制限: S3 Vectorsは1つのインデックスあたり最大20億ベクトルをサポートし、容量計画は不要で、ストレージとクエリに対する従量課金制です。
- アクセス制御: セキュリティはバケットとインデックスごとのAWS IAMポリシーによって管理され、テナントやチーム間の厳格な分離を可能にします。
なぜ重要なのか
複雑なエージェントワークフローを構築するソフトウェアチームにとって、メモリ管理はしばしばボトルネックとなります。共有され一貫性のあるメモリ層がない場合、エージェントは作業を繰り返し、セッション間でコンテキストを失い、協調動作に苦労します。メモリをS3 Vectorsへオフロードすることで、開発者はアイドル計算リソースを管理せずに弾力的にスケールするシステムを手に入れます。これにより運用オーバーヘッドが削減され、マルチエージェント協働の信頼性が向上します。
メモリの影響を定量化できることも重要です。ガイドでは、メモリを有効にすることで検証可能なソースコンテキストが提供され根拠性が一般的に向上し、既知の事実の再導出をスキップすることでトークン使用量が削減される点が強調されています。ベクトルクエリによりレイテンシはわずかに増加しますが、トレードオフとして出力品質の向上と反復タスク全体の低コスト化につながることが多いです。このデータ駆動型のアプローチは、エンジニアがtop_kや類似性閾値などのパラメータを調整し、コストとパフォーマンスのバランスを取るのに役立ちます。
実行可能なこと
- NVIDIA NeMo Agent Toolkit バージョン1.6以降をインストールし、環境がPython 3.11または3.12で動作していることを確認してください。
- エージェントのメモリ要件に一致するメタデータスキーマを持つAmazon S3 Vectorsバケットとインデックスを作成し、Titan埋め込み用に1024次元を使用してください。
- Pythonで
MemoryEditorインターフェースを実装してNATをS3 Vectorsインデックスに接続し、埋め込み生成とメタデータタグ付けを処理してください。 - NAT YAML設定で
auto_memory_agentラッパーを設定し、エージェントの自動メモリキャプチャと取得を有効にしてください。 - メモリを有効にした場合と無効にした場合で
nat evalを用いた比較評価を実行し、精度、根拠性、トークン消費量の変化を測定してください。 - テスト完了後は、継続的な課金を避けるために、EKS名前空間、S3 Vectorsインデックス、IAMロールを削除してリソースをクリーンアップしてください。

