Vertex AI Agent Engine Memory Bank の概要

Vertex AI Agent Engine Memory Bank を使用すると、ユーザーとエージェントの会話に基づいて長期記憶を動的に生成できます。長期記憶は、特定のユーザーの複数のセッションでアクセスできるパーソナライズされた情報です。エージェントはメモリーを使用してユーザーへの回答をパーソナライズし、セッション間の継続性を実現できます。

概要

Memory Bank は、エージェントがユーザーとやり取りする方法をパーソナライズし、コンテキスト ウィンドウを管理できるように、メモリーの管理を支援します。Memory Bank は、スコープごとに分離されたメモリのコレクションを維持します。各メモリは、エージェントが利用できるコンテキストを拡張するために使用できる、独立した自己完結型の情報です。次に例を示します。

{
  "name": "projects/.../locations/.../reasoningEngines/.../memories/...",
  "scope": {
    "agent_name": "My agent"
  },
  "fact": "I use Memory Bank to manage my memories."
}

Memory Bank には次の機能があります。

  • 記憶の生成: 大規模言語モデル(LLM)を使用して、記憶を作成、調整、管理します。

    • 記憶の抽出: ソースデータから最も意味のある情報のみを抽出し、記憶として永続化します。

    • メモリの統合: 新しく抽出された情報を既存のメモリと統合し、新しい情報が取り込まれるにつれてメモリを進化させます。事前抽出されたメモリ(エージェントや人間が意味のあると考える情報など)を既存のメモリと統合することもできます。

    • 非同期生成: メモリはバックグラウンドで生成できるため、エージェントはメモリ生成の完了を待つ必要がありません。

    • カスタマイズ可能な抽出: 特定のトピックと少数ショットの例を指定して、Memory Bank が意味があると考える情報を構成します。

    • マルチモーダル理解: マルチモーダル情報を処理して、テキストによる分析情報を生成し、永続化します。

  • マネージド ストレージと取得: フルマネージドで永続的かつアクセス可能なメモリ ストアを利用できます。

  • エージェントの統合: Memory Bank をエージェントに接続して、記憶の生成と取得の呼び出しをオーケストレートできるようにします。

    • Agent Development Kit(ADK)の統合: 組み込みの ADK ツールと VertexAiMemoryBankService を使用して、Memory Bank からの読み取りと Memory Bank への書き込みを行う ADK ベースのエージェントからの呼び出しをオーケストレートします。

    • その他のフレームワーク: Memory Bank コードをツールとコールバックでラップして、メモリの生成と取得をオーケストレートします。

ユースケース

Memory Bank を使用すると、ステートレス エージェントのインタラクションを、エージェントが時間の経過とともに記憶、学習、適応するステートフルなコンテキスト エクスペリエンスに変換できます。Memory Bank は、次のものを必要とするアプリケーションに最適です。

  • 長期的なパーソナライズ: 個々のユーザーに合わせてカスタマイズされたエクスペリエンスを構築します。Memory Bank は、メモリを特定の ID にスコープ設定します。これにより、エージェントは複数のセッションにわたってユーザーの好み、履歴、重要な詳細を記憶できます。

    • 例: ユーザーの過去のサポート チケットや製品の好みに関する重要な情報を記憶し、再度尋ねる必要がないカスタマー サービス エージェント。
  • LLM を活用した知識抽出: 手動で介入することなく、会話やマルチモーダル コンテンツから最も重要な情報を自動的に特定して永続化する必要がある場合に使用します。

    • 例: 一連の技術論文を読み、主な調査結果、方法論、結論を統合したメモリを構築する研究エージェント。
  • 動的で進化するコンテキスト: 静的でないナレッジソースが必要な場合は、Memory Bank を使用します。Memory Bank は、エージェントからの新しい情報を継続的に統合し、新しいデータが利用可能になるたびに保存された記憶を洗練して更新するように設計されています。これにより、エージェントが依存するコンテキストが常に最新かつ正確になります。RAG には静的な外部ナレッジベースがありますが、Memory Bank はエージェントから提供されたコンテキストに基づいて進化できます。

使用例

Vertex AI Agent Engine Memory Bank のコンセプトの概要

Memory Bank を Vertex AI Agent Engine Sessions とともに使用すると、次のプロセスで保存されたセッションから記憶を生成できます。

  1. (セッション)CreateSession: 会話の開始時に新しいセッションを作成します。エージェントが使用する会話履歴は、このセッションに限定されます。セッションには、ユーザーとエージェント間のやり取りのメッセージとアクション(SessionEvents)の時系列順のシーケンスが含まれます。すべてのセッションにユーザー ID が必要です。このセッションで抽出されたメモリ(GenerateMemories を参照)はこのユーザーにマッピングされます。

  2. (セッション)AppendEvent: ユーザーがエージェントとやり取りすると、イベント(ユーザー メッセージ、エージェントの応答、ツール アクションなど)がセッションにアップロードされます。イベントは会話履歴を保持し、記憶の生成に使用できる会話の記録を作成します。

  3. (セッション)ListEvents: ユーザーがエージェントとやり取りすると、エージェントは会話履歴を取得します。

  4. (メモリーバンク)記憶を生成または作成する:

    • GenerateMemories: エージェントは会話履歴を使用してメモリを生成するトリガーを、指定された間隔(セッションの終了時やターンの終了時など)で起動できます。ユーザーに関する事実が会話履歴から自動的に抽出され、現在または将来のセッションで使用できるようになります。

    • CreateMemory: エージェントはメモリを Memory Bank に直接書き込むことができます。たとえば、エージェントはメモリを書き込むタイミングや保存する情報を決定できます(メモリをツールとして使用)。エージェントが抽出するファクトをより詳細に制御する場合は、CreateMemory を使用します。

  5. (Memory Bank)RetrieveMemories: ユーザーがエージェントとやり取りすると、エージェントはそのユーザーについて保存された記憶を取得できます。すべての記憶を取得することも(単純な取得)、現在の会話に最も関連性の高い記憶のみを取得することもできます(類似性検索による取得)。その後、取得した思い出をプロンプトに挿入できます。

クイックスタート

次のクイックスタートを使用して Memory Bank を使ってみましょう。

プロンプト インジェクションのセキュリティ リスク

Vertex AI の共有責任で説明されているセキュリティ上の責任に加えて、長期記憶を使用する際にエージェントに影響を与える可能性のあるプロンプト インジェクションとメモリ ポイズニングのリスクを考慮してください。メモリ ポイズニングは、誤った情報がメモリバンクに保存されたときに発生します。エージェントは、その後のセッションでこの誤った情報や悪意のある情報に基づいて動作する可能性があります。

メモリ ポイズニングのリスクを軽減するには、次の手順を実施します。

  • Model Armor: Model Armor を使用して、Memory Bank に送信されるプロンプトやエージェントから送信されるプロンプトを検査します。

  • 敵対的テスト: 攻撃をシミュレートして、プロンプト インジェクションの脆弱性について LLM アプリケーションを事前にテストします。これは一般に「レッドチーム」と呼ばれます。

  • サンドボックス実行: エージェントが外部システムや重要なシステムを実行または操作できる場合、これらのアクションは厳格なアクセス制御と人間によるレビューが行われるサンドボックス環境で実行する必要があります。

詳細については、Google のセキュア AI エージェントに対するアプローチをご覧ください。

次のステップ