En esta página se describe cómo obtener recuerdos generados y subidos de Memory Bank. Para ver todo el flujo de trabajo de configuración, generación y uso de Memory Bank, consulta la guía de inicio rápido con la API REST.
Tienes las siguientes opciones para obtener los recuerdos generados:
Obtener memoria: obtiene todo el contenido de una sola memoria.
Lista de recuerdos: lista de recuerdos
Recuperar recuerdos: recupera recuerdos mediante la recuperación de memoria basada en el ámbito. Recuperar recuerdos mediante la búsqueda por similitud o todos los recuerdos del ámbito.
Antes de empezar
Para completar los pasos que se muestran en esta página, primero debes seguir los pasos de Configuración de Memory Bank.
Obtener recuerdo
Usa GetMemories
para obtener todo el contenido de una sola memoria:
memory = client.agent_engines.memories.get(
name="MEMORY_NAME")
Haz los cambios siguientes:
- MEMORY_NAME: nombre de memoria completo con el formato "projects/.../locations/.../reasoningEngines/.../memories...".
Listar recuerdos
Usa ListMemories
para obtener todos los recuerdos de tu banco de recuerdos.
pager = client.agent_engines.memories.list(name=agent_engine.api_resource.name)
for page in pager:
print(page)
Obtener recuerdos mediante la recuperación basada en el ámbito
Puedes usar RetrieveMemories
para recuperar recuerdos de un ámbito concreto. Solo se devuelven los recuerdos que tengan exactamente el mismo ámbito (independientemente del orden) que la solicitud de recuperación. Por ejemplo, puedes recuperar todos los recuerdos que estén asociados a un usuario concreto mediante {"user_id": "123"}
. Si no se devuelve ningún recuerdo, significa que Memory Bank no tiene ningún recuerdo para el ámbito proporcionado.
El ámbito de un recuerdo se define cuando se genera o se crea y es inmutable.
Puedes usar RetrieveMemories
para realizar las siguientes operaciones en un ámbito concreto:
Recuperar recuerdos mediante la búsqueda por similitud
En los casos en los que tengas muchos recuerdos de un ámbito concreto, puedes usar la búsqueda por similitud para recuperar solo los más similares proporcionando parámetros de búsqueda por similitud. Memory Bank solo tiene en cuenta los recuerdos que tienen exactamente el mismo ámbito que la solicitud al realizar una búsqueda de similitud. La búsqueda de similitudes compara los vectores de inserción entre los datos de la memoria y la consulta de búsqueda de la solicitud.
Los recuerdos devueltos se ordenan del más similar (distancia euclidiana más corta) al menos similar (distancia euclidiana más larga):
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
),
]
"""
Haz los cambios siguientes:
QUERY: la consulta para la que se va a realizar la búsqueda de similitud. Por ejemplo, puedes usar el último turno del usuario en la conversación como consulta.
SCOPE: diccionario que representa el ámbito de la búsqueda de similitud. Por ejemplo,
{"user_id": "123"}
. Solo se tienen en cuenta los recuerdos que tengan el mismo ámbito que la solicitud.
Recuperar todos los datos memorizados
Si no se proporcionan parámetros de búsqueda de similitud, RetrieveMemories
devuelve todos los recuerdos que tengan el ámbito proporcionado, independientemente de su similitud con la conversación actual.
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."
}
),
]
"""
Haz los cambios siguientes:
- SCOPE: diccionario que representa el ámbito de la recuperación. Por ejemplo,
{"user_id": "123"}
. Solo se devuelven los recuerdos que tengan el mismo ámbito que la solicitud.