本頁面說明如何從記憶體庫擷取生成和上傳的記憶體。如要瞭解如何設定、產生及使用 Memory Bank 的完整工作流程,請參閱「使用 REST API 快速入門」。
您可以透過下列選項擷取生成的記憶內容:
事前準備
如要完成本頁面說明的步驟,請先按照「設定記憶體庫」中的步驟操作。
取得記憶體
使用 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"}
擷取特定使用者的所有回憶集錦。如果未傳回任何回憶集錦,表示記憶庫沒有指定範圍的回憶集錦。
記憶體的範圍會在生成或建立記憶體時定義,且無法變更。
您可以使用 RetrieveMemories
,針對特定範圍執行下列作業:
使用相似度搜尋功能擷取回憶
如果特定範圍內有許多記憶內容,您可以提供相似度搜尋參數,使用相似度搜尋功能只擷取最相似的記憶內容。執行相似度搜尋時,記憶體庫只會考量與要求範圍完全相同的記憶體。相似度搜尋會比較記憶內容的事實和要求搜尋查詢之間的嵌入向量。
系統會根據相似程度排序回憶集錦 (從歐氏距離最短到最長):
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"}
。系統只會傳回與要求範圍相同的記憶內容。