Cómo recuperar recuerdos

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 en us-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:

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.