思い出を取得する

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

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

  • Get memory: 単一のメモリのコンテンツ全体を取得します。

  • 思い出を一覧表示する: 思い出を一覧表示します

  • 思い出を取得する: スコープベースの思い出取得を使用して思い出を取得します。類似性検索またはスコープ内のすべての思い出を使用して、思い出を取得します。

始める前に

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

思い出を取得する

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

memory = client.agent_engines.get_memory(name="MEMORY_NAME")

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

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

思い出を一覧表示する

ListMemories を使用して、メモリバンク内のすべてのメモリを取得します。

pager = client.agent_engines.list_memories(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.retrieve_memories(
    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.retrieve_memories(
    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"}リクエストと同じスコープのメモリのみが返されます。