Recuperare i ricordi

Questa pagina descrive come recuperare i ricordi generati e caricati da Memory Bank. Per l'intero flusso di lavoro di configurazione, generazione e utilizzo di Memory Bank, consulta la Guida rapida con l'API REST.

Per recuperare i ricordi generati, hai a disposizione le seguenti opzioni:

  • Ottieni ricordo: visualizza l'intero contenuto di un singolo ricordo.

  • Elenca ricordi: elenca i ricordi

  • Recupera ricordi: recupera i ricordi utilizzando il recupero dei ricordi basato sull'ambito. Recupera i ricordi utilizzando la ricerca per somiglianza o tutti i ricordi nell'ambito.

Configura l'ambiente

Prima di iniziare, devi configurare l'ambiente e l'istanza di Agent Engine. Questa sezione presuppone che tu abbia configurato un ambiente di sviluppo Python o che tu stia utilizzando un runtime con un ambiente di sviluppo Python (come Colab).

Importare librerie

Installa l'SDK Vertex AI:

  pip install google-cloud-aiplatform>=1.100.0

Configura un client SDK Vertex AI

  import vertexai

  client = vertexai.Client(
      project="PROJECT_ID",
      location="LOCATION",
  )

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto.
  • LOCATION: La tua regione. Per il Memory Bank di Vertex AI Agent Engine è supportato solo us-central1.

Configura l'istanza di Agent Engine

Per recuperare i ricordi da Memory Bank, devi prima disporre di un'istanza di Agent Engine. Puoi creare una nuova istanza o ottenerne una esistente. Le nuove istanze di Agent Engine sono vuote, a meno che tu non crei o generi ricordi.

Crea

agent_engine = client.agent_engines.create()

Utilizza esistente

agent_engine = client.agent_engines.get(name="AGENT_ENGINE_NAME")

Sostituisci quanto segue:

  • AGENT_ENGINE_NAME: il nome di Agent Engine. Deve essere nel formato projects/.../locations/.../reasoningEngines/.... Puoi utilizzare le istanze Agent Engine solo in us-central1 per Vertex AI Agent Engine Memory Bank.

Recuperare un ricordo

Utilizza GetMemories per ottenere l'intero contenuto di un singolo ricordo:

memory = client.agent_engines.get_memory(name="MEMORY_NAME")

Sostituisci quanto segue:

  • MEMORY_NAME: un nome di memoria completo nel formato "projects/.../locations/.../reasoningEngines/.../memories...".

Elenco dei ricordi

Utilizza ListMemories per recuperare tutti i ricordi nel tuo Memory Bank.

pager = client.agent_engines.list_memories(name=agent_engine.api_resource.name)
for page in pager:
  print(page)

Recuperare i ricordi utilizzando il recupero basato sull'ambito

Puoi utilizzare RetrieveMemories per recuperare i ricordi per un ambito specifico. Vengono restituite solo le memorie che hanno esattamente lo stesso ambito (indipendentemente dall'ordine) della richiesta di recupero. Ad esempio, puoi recuperare tutti i ricordi associati a un determinato utente utilizzando {"user_id": "123"}. Se non vengono restituiti ricordi, la banca dati dei ricordi non ne contiene per l'ambito fornito.

L'ambito di un ricordo viene definito quando il ricordo viene generato o creato ed è immutabile.

Puoi utilizzare RetrieveMemories per eseguire le seguenti operazioni per un ambito specifico:

Nei casi in cui hai molti ricordi per un ambito specifico, puoi utilizzare la ricerca per similarità per recuperare solo i ricordi più simili fornendo i parametri di ricerca per similarità. Memory Bank prende in considerazione solo i ricordi che hanno esattamente lo stesso ambito della richiesta quando esegue la ricerca di similarità. La ricerca per somiglianza confronta i vettori di embedding tra i fatti dei ricordi e la query di ricerca della richiesta.

I ricordi restituiti sono ordinati dal più simile (distanza euclidea più breve) al meno simile (distanza euclidea più lunga):

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
    ),
]
"""

Sostituisci quanto segue:

  • QUERY: La query per cui eseguire la ricerca di similarità. Ad esempio, puoi utilizzare l'ultimo turno della conversazione come query.

  • SCOPE: un dizionario che rappresenta l'ambito della ricerca di similarità. Ad esempio, {"user_id": "123"}. Vengono prese in considerazione solo le memorie con lo stesso ambito della richiesta.

Recuperare tutti i ricordi

Se non vengono forniti parametri di ricerca per similarità, RetrieveMemories restituisce tutti i ricordi che hanno l'ambito fornito, indipendentemente dalla loro somiglianza con la conversazione corrente.

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."
      }
    ),
]
"""

Sostituisci quanto segue:

  • SCOPE: Un dizionario che rappresenta l'ambito del recupero. Ad esempio, {"user_id": "123"}. Vengono restituiti solo i ricordi con lo stesso ambito della richiesta.