このページでは、生成された思い出やアップロードされた思い出を Memory Bank から取得する方法について説明します。メモリバンクの構成、生成、使用のワークフロー全体については、REST API のクイックスタートをご覧ください。
生成された思い出を取得するには、次のオプションがあります。
Get memory: 単一のメモリのコンテンツ全体を取得します。
思い出を一覧表示する: 思い出を一覧表示します
メモリを取得する: スコープベースのメモリ取得を使用してメモリを取得します。類似性検索またはスコープ内のすべての思い出を使用して、思い出を取得します。
始める前に
このページで説明する手順を完了するには、まずメモリバンクの設定の手順に沿って操作する必要があります。
思い出を取得する
GetMemories
を使用して、単一のメモリのコンテンツ全体を取得します。
memory = client.agent_engines.memories.get(
name="MEMORY_NAME")
次のように置き換えます。
- MEMORY_NAME: 「projects/.../locations/.../reasoningEngines/.../memories...」形式の完全修飾メモリ名。
思い出の一覧表示
ListMemories
を使用して、メモリーバンク内のすべてのメモリーを取得します。
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"}
リクエストと同じスコープのメモリのみが返されます。