本页介绍了如何从记忆库中提取生成的记忆和上传的记忆。如需了解配置、生成和使用 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"}
。系统只会返回与请求具有相同范围的记忆。