本页面介绍了如何从记忆库中提取生成的记忆和上传的记忆。如需了解配置、生成和使用记忆库的完整工作流程,请参阅 REST API 快速入门。
您可以使用以下选项来提取生成的记忆:
获取记忆:使用 Vertex AI SDK 获取单个记忆的完整内容。
列出记忆:使用 Vertex AI SDK 或 Google Cloud 控制台列出记忆。
检索记忆:使用 Vertex AI SDK,通过基于范围的记忆检索功能检索记忆。使用相似度搜索功能检索记忆,或检索范围内的所有记忆。
准备工作
如需完成本页面中演示的步骤,您必须先按照设置记忆库中的步骤操作。
获取记忆内容
使用 GetMemories 获取单个记忆的完整内容:
memory = client.agent_engines.memories.get(
name="MEMORY_NAME")
替换以下内容:
- MEMORY_NAME:完全限定的记忆名称,格式为“projects/.../locations/.../reasoningEngines/.../memories...”。
列出记忆
控制台
对于已部署的代理,您可以使用 Google Cloud 控制台列出与您的 Agent Engine 实例关联的所有记忆:
- 在 Google Cloud 控制台中,前往 Vertex AI Agent Engine 页面。
属于所选项目的 Agent Engine 实例会显示在列表中。您可以使用过滤字段按指定列过滤列表。
点击 Agent Engine 实例的名称。
点击回忆标签页。系统会按 ID 显示回忆列表。您可以按范围(例如
{"user_id": "123"})过滤回忆。
Vertex AI SDK
使用 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"}。系统只会返回与请求具有相同范围的记忆。