Nella guida rapida di ricerca vettoriale di Gemini Enterprise Agent Platform, scopri come creare un indice da un set di dati di esempio di un sito di abbigliamento di e-commerce fittizio. Ai fini di questa guida rapida, gli incorporamenti sono già stati creati. Questa guida rapida ha lo scopo di aiutarti a iniziare a creare e fare il deployment di un indice in meno di 30 minuti.
Prerequisiti
Questo tutorial richiede un progetto Google Cloud collegato a un account di fatturazione. Per creare un nuovo progetto, consulta Configurare un progetto e un ambiente di sviluppo. Devi creare un progetto e configurare il tuo account di fatturazione.
Scegliere l'ambiente di runtime
Questo tutorial può essere eseguito su Colab o su Gemini Enterprise Agent Platform Workbench.
- Colab: apri questo tutorial in Colab
- Gemini Enterprise Agent Platform Workbench: apri questo tutorial in Gemini Enterprise Agent Platform Workbench. Se è la prima volta che utilizzi Gemini Enterprise Agent Platform Workbench nel tuo Google Cloud progetto, vai alla sezione Gemini Enterprise Agent Platform Workbench della Google Cloud console e fai clic su Attiva per attivare l'API Notebooks.
Per visualizzare questo notebook in GitHub, vedi GitHub.
Costo per completare questa guida rapida
Il completamento di questo tutorial costa all'incirca qualche dollaro statunitense. I prezzi dei servizi Google Cloud utilizzati in questo tutorial sono disponibili nelle seguenti pagine:
- Ricerca vettoriale di Gemini Enterprise Agent Platform
- Cloud Storage
- Gemini Enterprise Agent Platform Workbench
Puoi anche utilizzare il calcolatore prezzi per generare una stima dei costi in base all'utilizzo previsto.
Configurazione
Prima di iniziare a utilizzare Gemini Enterprise Agent Platform, devi configurare quanto segue:
- Installa l'SDK Agent Platform per Python
- Imposta le variabili di ambiente
- Autenticazione (solo Colab)
- Imposta le autorizzazioni IAM
- Abilita le API
Installare l'SDK Agent Platform per Python
È possibile accedere alle API Gemini Enterprise Agent Platform e Cloud Storage in diversi modi, tra cui l'API REST e l'SDK Agent Platform per Python. In questo tutorial viene utilizzato l'SDK Agent Platform per Python.
!pip install --upgrade --user google-cloud-aiplatform>=1.29.0 google-cloud-storage
Per utilizzare i pacchetti appena installati in questo runtime Jupyter, devi riavviare il runtime, come mostrato nel seguente snippet di codice.
# Restart kernel after installs so that your environment can access the new packages
import IPython
app = IPython.Application.instance()
app.kernel.do_shutdown(True)
Variabili di ambiente
Imposta le variabili di ambiente. Se richiesto, sostituisci your-project-id
con l'ID progetto ed esegui la cella.
# get project ID
PROJECT_ID = ! gcloud config get-value project
PROJECT_ID = PROJECT_ID[0]
LOCATION = "us-central1"
if PROJECT_ID == "(unset)":
print(f"Please set the project ID manually below")
# define project information
if PROJECT_ID == "(unset)":
PROJECT_ID = "[your-project-id]"
# generate a unique id for this session
from datetime import datetime
UID = datetime.now().strftime("%m%d%H%M")
Autenticazione (solo Colab)
Se esegui questo notebook su Colab, devi eseguire l'autenticazione della cella seguente. Questo passaggio non è necessario se utilizzi Gemini Enterprise Agent Platform Workbench, poiché è preautenticato.
import sys
# if it's Colab runtime, authenticate the user with Google Cloud
if 'google.colab' in sys.modules:
from google.colab import auth
auth.authenticate_user()
Imposta autorizzazioni IAM
Devi aggiungere le autorizzazioni di accesso al account di servizio predefinito per utilizzare i servizi.
- Vai alla pagina IAM nella console Google Cloud .
- Cerca l'entità per il account di servizio Compute predefinito.
Dovrebbe avere questo aspetto:
compute@developer.gserviceaccount.com - Fai clic sul pulsante di modifica e concedi al account di servizio Compute predefinito i seguenti ruoli: Utente della piattaforma dell'agente Gemini Enterprise, Amministratore Storage e Amministratore utilizzo del servizio.
Abilita API
Esegui il comando seguente per abilitare le API per Compute Engine, Gemini Enterprise Agent Platform e Cloud Storage con questo progetto Google Cloud .
! gcloud services enable compute.googleapis.com aiplatform.googleapis.com storage.googleapis.com --project {PROJECT_ID}
Preparare i dati di esempio
In questo tutorial, utilizziamo il set di dati TheLook,che contiene una tabella dei prodotti con circa 5000 righe di dati di prodotto sintetici per un sito di abbigliamento e-commerce fittizio.

Da questa tabella abbiamo preparato il file product-embs.json.

Questo file è in formato JSONL e ogni riga contiene l'ID per l'ID prodotto, il nome per il nome del prodotto e l'incorporamento per l'incorporamento del nome del prodotto in 768 dimensioni, generato in precedenza con gli incorporamenti di Gemini Enterprise Agent Platform per il testo.
Gli incorporamenti di testo rappresentano il significato dei nomi dei prodotti di abbigliamento. In questo tutorial, utilizziamo la ricerca vettoriale per completare una ricerca semantica degli articoli. Questo codice campione può essere utilizzato come base per altri sistemi di suggerimenti rapidi in cui puoi trovare rapidamente "altri prodotti simili a questo".
Per scoprire di più su come creare gli incorporamenti dai dati di una tabella BigQuery e archiviarli in un file JSON, consulta Guida introduttiva a Text Embeddings + Gemini Enterprise Agent Platform Vector Search.
Prepara i dati su Cloud Storage
Per creare un indice con Gemini Enterprise Agent Platform, inserisci il file di incorporamento in un bucket Cloud Storage. Il seguente codice completa due attività:
- Crea un bucket Cloud Storage.
- Copia il file di esempio nel bucket Cloud Storage.
BUCKET_URI = f"gs://{PROJECT_ID}-vs-quickstart-{UID}"
! gcloud storage buckets create $BUCKET_URI --location=$LOCATION --project=$PROJECT_ID
! gcloud storage cp "gs://github-repo/data/vs-quickstart/product-embs.json" $BUCKET_URI
Per utilizzare la ricerca vettoriale per eseguire query, devi anche copiare il file di incorporamento nella directory locale:
! gcloud storage cp "gs://github-repo/data/vs-quickstart/product-embs.json" . # for query tests
Crea ed esegui il deployment di un indice della Ricerca vettoriale
Scopri come creare un indice, un endpoint indice e poi eseguire il deployment dell'indice sull'endpoint.
Crea un indice
Ora è il momento di caricare gli incorporamenti nella ricerca vettoriale.
Le API sono disponibili nel pacchetto aiplatform dell'SDK.
# init the aiplatform package
from google.cloud import aiplatform
aiplatform.init(project=PROJECT_ID, location=LOCATION)
Crea un MatchingEngineIndex
con la relativa funzione create_tree_ah_index (Matching Engine è il nome precedente di Ricerca vettoriale).
# create Index
my_index = aiplatform.MatchingEngineIndex.create_tree_ah_index(
display_name = f"vs-quickstart-index-{UID}",
contents_delta_uri = BUCKET_URI,
dimensions = 768,
approximate_neighbors_count = 100,
)
Il metodo MatchingEngineIndex.create_tree_ah_index() crea un indice.
L'operazione richiede meno di 10 minuti se il set di dati è piccolo, altrimenti circa 60 minuti o più a seconda delle dimensioni del set di dati. Puoi controllare lo stato della creazione dell'indice nella console Vector Search Google Cloud
I parametri per la creazione dell'indice:
contents_delta_uri: l'URI della directory Cloud Storage in cui hai archiviato i file JSON di incorporamentodimensions: la dimensione della dimensione di ogni embedding. In questo caso, è 768 perché utilizzi gli embedding dell'API text embeddings.approximate_neighbors_count: il numero di elementi simili che vuoi recuperare nei casi tipici
Per scoprire di più sulla creazione dell'indice e sui parametri disponibili, consulta Creare e gestire l'indice.
Crea l'endpoint indice ed esegui il deployment dell'indice
Per utilizzare l'indice, devi creare un endpoint indice. Funziona come un'istanza server che accetta richieste di query per l'indice.
## create `IndexEndpoint`
my_index_endpoint = aiplatform.MatchingEngineIndexEndpoint.create(
display_name = f"vs-quickstart-index-endpoint-{UID}",
public_endpoint_enabled = True
)
Con l'endpoint indice, esegui il deployment dell'indice specificando un ID indice di cui è stato eseguito il deployment univoco.
DEPLOYED_INDEX_ID = f"vs_quickstart_deployed_{UID}"
# deploy the Index to the Index Endpoint
my_index_endpoint.deploy_index(
index = my_index, deployed_index_id = DEPLOYED_INDEX_ID
)
Se è la prima volta che viene eseguito il deployment di questo indice in un endpoint di indice, potrebbero essere necessari circa 30 minuti per creare e inizializzare automaticamente il backend. Per visualizzare lo stato del deployment dell'indice, nella sezione Piattaforma dell'agente della consoleGoogle Cloud , vai alla sezione Esegui il deployment e utilizza. Seleziona Indici.
Esegui una query con la ricerca vettoriale
Nel seguente codice, viene trovata un'incorporamento per un nome prodotto specificato e vengono trovati nomi di prodotti simili con la ricerca vettoriale.
Ottenere un embedding per eseguire una query
Innanzitutto, carica il file JSON di incorporamento per creare un dict di nomi e incorporamenti dei prodotti.
import json
# build dicts for product names and embs
product_names = {}
product_embs = {}
with open('product-embs.json') as f:
for l in f.readlines():
p = json.loads(l)
id = p['id']
product_names[id] = p['name']
product_embs[id] = p['embedding']
Con il dizionario product_embs, puoi specificare un ID prodotto per ottenere un embedding.
# Get the embedding for ID 6523 "cloudveil women's excursion short"
# You can also try with other IDs such as 12711, 18090, 19536 and 11863
query_emb = product_embs['6523']
Esegui una query
Passa l'incorporamento al metodo Endpoint.find_neighbors() per trovare nomi di prodotti simili.
# run query
response = my_index_endpoint.find_neighbors(
deployed_index_id = DEPLOYED_INDEX_ID,
queries = [query_emb],
num_neighbors = 10
)
# show the results
for idx, neighbor in enumerate(response[0]):
print(f"{neighbor.distance:.2f} {product_names[neighbor.id]}")
Il metodo find_neighbors() richiede solo millisecondi per recuperare gli elementi simili
anche quando hai miliardi di elementi nell'indice, grazie all'algoritmo ScaNN.
Vector Search supporta anche la scalabilità automatica, che può ridimensionare automaticamente
il numero di nodi in base alle esigenze dei tuoi workload.
Pulizia
Se utilizzi un tuo progetto Cloud, non un progetto temporaneo su Qwiklabs, assicurati di eliminare tutti gli indici, gli endpoint di indice e i bucket Cloud Storage al termine di questo tutorial. In caso contrario, potresti sostenere costi imprevisti per le risorse rimanenti.
Se hai utilizzato Workbench, potresti dover eliminare i notebook anche dalla console.
# wait for a confirmation
input("Press Enter to delete Index Endpoint, Index and Cloud Storage bucket:")
# delete Index Endpoint
my_index_endpoint.undeploy_all()
my_index_endpoint.delete(force = True)
# delete Index
my_index.delete()
# delete Cloud Storage bucket
! gcloud storage rm {BUCKET_URI} --recursive
Utilità
La creazione o il deployment degli indici può richiedere un po' di tempo e, nel frattempo, potresti perdere la connessione con il runtime di Colab. Se la connessione viene interrotta, anziché creare o implementare di nuovo il nuovo indice, puoi controllare la console Google Cloud di ricerca vettoriale e utilizzare quelli esistenti per continuare.
Recupera un indice esistente
Per ottenere un oggetto indice già esistente, sostituisci your-index-id con l'ID indice ed esegui la cella. Puoi ottenere l'ID indice controllando la console
Vector Search Google Cloud . Nella sezione Piattaforma dell'agente
della console Google Cloud , vai alla sezione
Esegui il deployment e utilizza. Seleziona Indici.
my_index_id = "[your-index-id]"
my_index = aiplatform.MatchingEngineIndex(my_index_id)
Recupera un endpoint indice esistente
Per ottenere un oggetto endpoint indice già esistente, sostituisci il seguente
your-index-endpoint-id con l'ID endpoint indice ed esegui la cella.
Puoi ottenere l'endpoint indice controllando la console Google Cloud Vector Search.
Nella sezione Agent Platform della console Google Cloud , vai alla sezione Esegui il deployment e utilizza. Seleziona Endpoint indice.
Visualizza gli endpoint indice
my_index_endpoint_id = "[your-index-endpoint-id]"
my_index_endpoint = aiplatform.MatchingEngineIndexEndpoint(my_index_endpoint_id)