メモリーを取得する

このページでは、生成されたメモリやアップロードされたメモリを Memory Bank から取得する方法について説明します。Memory Bank の構成、生成、使用のワークフロー全体については、REST API のクイックスタートをご覧ください。

生成されたメモリを取得するには、次のオプションがあります。

  • メモリを取得する: Vertex AI SDK を使用して、単一のメモリのコンテンツ全体を取得します。

  • メモリを一覧表示する: Vertex AI SDK または Google Cloud コンソールを使用してメモリを一覧表示します。

  • メモリを取得する: Vertex AI SDK を使用して、スコープベースのメモリ取得を使用してメモリを取得します。類似性検索またはスコープ内のすべてのメモリを使用して、メモリを取得します。

始める前に

このページで説明する手順を完了するには、まずMemory Bank の設定の手順に沿って操作する必要があります。

メモリを取得する

GetMemories を使用して、単一のメモリのコンテンツ全体を取得します。

memory = client.agent_engines.memories.get(
    name="MEMORY_NAME")

次のように置き換えます。

  • MEMORY_NAME: 「projects/.../locations/.../reasoningEngines/.../memories...」形式の完全修飾メモリ名。

メモリの一覧表示

コンソール

デプロイされたエージェントの場合は、 Google Cloud コンソールを使用して、Agent Engine インスタンスに関連付けられているすべてのメモリを一覧表示できます。

  1. Google Cloud コンソールで、[Vertex AI Agent Engine] ページに移動します。

    Agent Engine に移動

    選択したプロジェクトの一部である Agent Engine インスタンスがリストに表示されます。[フィルタ] フィールドを使用して、指定した列でリストをフィルタできます。

  2. Agent Engine インスタンスの名前をクリックします。

  3. [思い出] タブをクリックします。思い出のリストが ID ごとに表示されます。メモリはスコープ({"user_id": "123"} など)でフィルタできます。

Vertex AI SDK

ListMemories を使用して、Memory Bank 内のすべてのメモリを取得します。

pager = client.agent_engines.memories.list(name=agent_engine.api_resource.name)
for page in pager:
  print(page)

スコープベースの取得を使用してメモリを取得する

RetrieveMemories を使用して、特定のスコープのメモリを取得できます。取得リクエストと同じスコープ(順序は関係ありません)を持つメモリのみが返されます。たとえば、{"user_id": "123"} を使用して、特定のユーザーにスコープ設定されたすべてのメモリを取得できます。メモリが返されない場合、Memory Bank には指定されたスコープのメモリがありません。

メモリのスコープは、メモリの生成時または作成時に定義され、変更できません。

RetrieveMemories を使用して、特定のスコープに対して次のオペレーションを実行できます。

特定のスコープに多くのメモリがある場合は、類似性検索パラメータを指定して類似性検索を使用すると、最も類似したメモリのみを取得できます。Memory Bank は、類似性検索を実行する際に、リクエストとまったく同じスコープを持つメモリのみを考慮します。類似性検索では、メモリの事実とリクエストの検索クエリのエンベディング ベクトルを比較します。

返されたメモリは、最も類似している(ユークリッド距離が最も短い)ものから最も類似していない(ユークリッド距離が最も長い)ものの順に並べ替えられます。

results = client.agent_engines.memories.retrieve(
    name=agent_engine.api_resource.name,
    scope=SCOPE,
    similarity_search_params={
        "search_query": "QUERY",
        # Optional. Defaults to 3.
        "top_k": 3
    }
)
# RetrieveMemories returns a pager. You can use `list` to retrieve all memories.
list(results)

"""
Returns:

[
    RetrieveMemoriesResponseRetrievedMemory(
      memory=Memory(
        name="projects/.../locations/.../reasoningEngines/.../memories/...",
        ...
        fact="This is a fact."
      },
      distance=0.5
    ),
    RetrieveMemoriesResponseRetrievedMemory(
      memory=Memory(
        name="projects/.../locations/.../reasoningEngines/.../memories/...",
        ...
        fact="This is another fact."
      },
      distance=0.7
    ),
]
"""

次のように置き換えます。

  • QUERY: 類似検索を実行するクエリ。たとえば、会話の最後のユーザーターンをクエリとして使用できます。

  • SCOPE: 類似検索のスコープを表す辞書。たとえば、{"user_id": "123"} のようにします。リクエストと同じスコープのメモリのみが考慮されます。

すべてのメモリを取得する

類似性検索パラメータが指定されていない場合、RetrieveMemories は、現在の会話との類似性に関係なく、指定されたスコープを持つすべてのメモリを返します。

results = client.agent_engines.memories.retrieve(
    name=agent_engine.api_resource.name,
    scope=SCOPE
)
# RetrieveMemories returns a pager. You can use `list` to retrieve all pages' memories.
list(results)

"""
Returns:

[
    RetrieveMemoriesResponseRetrievedMemory(
      memory=Memory(
        name="projects/.../locations/.../reasoningEngines/.../memories/...",
        ...
        fact="This is a fact."
      }
    ),
    RetrieveMemoriesResponseRetrievedMemory(
      memory=Memory(
        name="projects/.../locations/.../reasoningEngines/.../memories/...",
        ...
        fact="This is another fact."
      }
    ),
]
"""

次のように置き換えます。

  • SCOPE: 取得のスコープを表す辞書。たとえば、{"user_id": "123"} のようにします。リクエストと同じスコープのメモリのみが返されます。