En esta página, se describe cómo recuperar los recuerdos generados y subidos desde Memory Bank. Para ver el flujo de trabajo completo de configuración, generación y uso de Memory Bank, consulta la Guía de inicio rápido con la API de REST.
Tienes las siguientes opciones para recuperar los recuerdos generados:
Get memory: Obtén el contenido completo de un solo recuerdo.
List memories: Enumera recuerdos
Recuperar recuerdos: Recupera recuerdos con la recuperación de recuerdos basada en permisos. Recupera recuerdos con la búsqueda por similitud o todos los recuerdos dentro del alcance.
Configura tu entorno
Antes de comenzar, debes configurar tu entorno y la instancia de Agent Engine. En esta sección, se supone que configuraste un entorno de desarrollo de Python o que usas un tiempo de ejecución con un entorno de desarrollo de Python (como Colab).
Importa las bibliotecas
Instala el SDK de Vertex AI:
pip install google-cloud-aiplatform>=1.100.0
Configura un cliente del SDK de Vertex AI
import vertexai
client = vertexai.Client(
project="PROJECT_ID",
location="LOCATION",
)
Reemplaza lo siguiente:
- PROJECT_ID: ID del proyecto
- LOCATION: Tu región. Solo se admite
us-central1
para el banco de memoria de Vertex AI Agent Engine.
Configura tu instancia de Agent Engine
Para recuperar recuerdos de Memory Bank, primero necesitas una instancia de Agent Engine. Puedes crear una instancia nueva o obtener una existente. Las instancias nuevas de Agent Engine están vacías, a menos que primero crees o generes recuerdos.
Crear
agent_engine = client.agent_engines.create()
Usar existente
agent_engine = client.agent_engines.get(name="AGENT_ENGINE_NAME")
Reemplaza lo siguiente:
- AGENT_ENGINE_NAME: Es el nombre del motor de agentes. Debe tener el formato
projects/.../locations/.../reasoningEngines/...
. Solo puedes usar instancias de Agent Engine enus-central1
para el banco de memoria de Vertex AI Agent Engine.
Obtener memoria
Usa GetMemories
para obtener el contenido completo de un solo recuerdo:
memory = client.agent_engines.get_memory(name="MEMORY_NAME")
Reemplaza lo siguiente:
- MEMORY_NAME: Es un nombre de memoria completamente calificado con el formato "projects/.../locations/.../reasoningEngines/.../memories...".
Lista de recuerdos
Usa ListMemories
para recuperar todos los recuerdos de tu banco de recuerdos.
pager = client.agent_engines.list_memories(name=agent_engine.api_resource.name)
for page in pager:
print(page)
Recupera recuerdos con la recuperación basada en el alcance
Puedes usar RetrieveMemories
para recuperar recuerdos de un alcance en particular. Solo se devuelven los recuerdos que tienen exactamente el mismo alcance (independientemente del orden) que la solicitud de recuperación. Por ejemplo, puedes recuperar todos los recuerdos que se limitan a un usuario en particular con {"user_id": "123"}
. Si no se devuelven recuerdos, significa que Memory Bank no tiene recuerdos para el alcance proporcionado.
El alcance de un recuerdo se define cuando se genera o crea el recuerdo, y es inmutable.
Puedes usar RetrieveMemories
para realizar las siguientes operaciones en un alcance determinado:
Recupera recuerdos con la búsqueda por similitud
En los casos en los que tengas muchos recuerdos para un alcance en particular, puedes usar la búsqueda por similitud para recuperar solo los recuerdos más similares proporcionando parámetros de búsqueda por similitud. Memory Bank solo considera los recuerdos que tienen exactamente el mismo alcance que la solicitud cuando realiza la búsqueda por similitud. La búsqueda de similitud compara los vectores de incorporación entre los hechos de los recuerdos y la búsqueda de la solicitud.
Los recuerdos devueltos se ordenan desde el más similar (distancia euclidiana más corta) hasta el menos similar (distancia euclidiana más grande):
results = client.agent_engines.retrieve_memories(
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
),
]
"""
Reemplaza lo siguiente:
QUERY: Es la búsqueda para la que se realizará la búsqueda por similitud. Por ejemplo, puedes usar el último turno del usuario en la conversación como la búsqueda.
SCOPE: Es un diccionario que representa el alcance de la búsqueda de similitud. Por ejemplo,
{"user_id": "123"}
Solo se consideran los recuerdos con el mismo alcance que la solicitud.
Recupera todos los recuerdos
Si no se proporcionan parámetros de búsqueda de similitud, RetrieveMemories
devuelve todos los recuerdos que tienen el alcance proporcionado, independientemente de su similitud con la conversación actual.
results = client.agent_engines.retrieve_memories(
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."
}
),
]
"""
Reemplaza lo siguiente:
- SCOPE: Es un diccionario que representa el alcance de la recuperación. Por ejemplo,
{"user_id": "123"}
Solo se muestran los recuerdos con el mismo alcance que la solicitud.