Gestire gli errori di quota chiamando ML.GENERATE_EMBEDDING in modo iterativo
Questo tutorial mostra come utilizzare la stored procedure pubblica BigQuery
bqutil.procedure.bqml_generate_embeddings per eseguire l'iterazione
delle chiamate alla funzione
ML.GENERATE_EMBEDDING.
La chiamata iterativa della funzione consente di risolvere eventuali errori ripetibili che
si verificano a causa del superamento delle
quote e dei limiti applicabili alla
funzione.
Per esaminare il codice sorgente della bqutil.procedure.bqml_generate_embeddings
stored procedure in GitHub, consulta
bqml_generate_embeddings.sqlx.
Per ulteriori informazioni sui parametri e sull'utilizzo della stored procedure, consulta il
file README.
Questo tutorial ti guida attraverso le seguenti attività:
- Creazione di un
modello remoto su un
text-embedding-005modello. - Esecuzione dell'iterazione delle chiamate alla funzione
ML.GENERATE_EMBEDDINGutilizzando il modello remoto e la tabella di dati pubblicibigquery-public-data.bbc_news.fulltextcon la stored procedurebqutil.procedure.bqml_generate_embeddings.
Autorizzazioni obbligatorie
Per eseguire questo tutorial, devi disporre dei seguenti ruoli Identity and Access Management (IAM):
- Creare e utilizzare set di dati, connessioni e modelli BigQuery: Amministratore BigQuery (
roles/bigquery.admin). - Concedere autorizzazioni al account di servizio della connessione: Amministratore IAM progetto (
roles/resourcemanager.projectIamAdmin).
Questi ruoli predefiniti contengono le autorizzazioni necessarie per eseguire le attività descritte in questo documento. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
- Creare un set di dati:
bigquery.datasets.create - Creare, delegare e utilizzare una connessione:
bigquery.connections.* - Impostare la connessione predefinita:
bigquery.config.* - Impostare le autorizzazioni del account di servizio:
resourcemanager.projects.getIamPolicyeresourcemanager.projects.setIamPolicy - Creare un modello ed eseguire l'inferenza:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateDatabigquery.models.updateMetadata
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
- BigQuery ML: You incur costs for the data that you process in BigQuery.
- Gemini Enterprise Agent Platform: You incur costs for calls to the Agent Platform model.
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il calcolatore prezzi.
Per ulteriori informazioni sui prezzi di BigQuery, consulta la pagina Prezzi di BigQuery.
Per ulteriori informazioni sui prezzi di Agent Platform, consulta la pagina Prezzi di Agent Platform.
Prima di iniziare
-
Nella Google Cloud console, nella pagina di selezione del progetto, seleziona o crea un Google Cloud progetto.
Ruoli richiesti per selezionare o creare un progetto
- Selezionare un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto su cui ti è stato concesso un ruolo.
-
Creare un progetto: per creare un progetto, devi disporre del ruolo Autore progetto
(
roles/resourcemanager.projectCreator), che contiene l'resourcemanager.projects.createautorizzazione. Scopri come concedere i ruoli.
-
Verifica che la fatturazione sia attivata per il tuo Google Cloud progetto.
-
Abilita le API BigQuery, BigQuery Connection e Agent Platform.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente hai già questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.
Crea un set di dati
Crea un set di dati BigQuery per archiviare i modelli e i dati di esempio:
Nella Google Cloud console, vai alla pagina BigQuery.
Nel riquadro Explorer, fai clic sul nome del progetto.
Fai clic su Visualizza azioni > Crea set di dati.
Nella pagina Crea set di dati, procedi nel seguente modo:
In ID set di dati, inserisci
target_dataset.Per Tipo di località, seleziona Multi-regione e poi seleziona Stati Uniti (più regioni negli Stati Uniti).
Lascia invariate le impostazioni predefinite rimanenti e fai clic su Crea set di dati.
Crea il modello di generazione di text embedding
Crea un modello remoto che rappresenti un modello text-embedding-005 ospitato da Agent Platform:
Nella Google Cloud console, vai alla pagina BigQuery.
Nell'editor di query, esegui la seguente istruzione:
CREATE OR REPLACE MODEL `target_dataset.embedding_model` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT = 'text-embedding-005');
Il completamento della query richiede alcuni secondi, dopodiché il modello
embeddingviene visualizzato nel set di datisamplenel riquadro Explorer. Poiché la query utilizza un'istruzioneCREATE MODELper creare un modello, non sono presenti risultati della query.
Esegui la stored procedure
Esegui la stored procedure bqutil.procedure.bqml_generate_embeddings, che esegue l'iterazione delle chiamate alla funzione ML.GENERATE_EMBEDDING utilizzando il modello target_dataset.embedding_model e la tabella di dati pubblici bigquery-public-data.bbc_news.fulltext:
Nella Google Cloud console, vai alla pagina BigQuery.
Nell'editor di query, esegui la seguente istruzione:
CALL `bqutil.procedure.bqml_generate_embeddings`( "bigquery-public-data.bbc_news.fulltext", -- source table "PROJECT_ID.target_dataset.news_body_embeddings", -- destination table "PROJECT_ID.target_dataset.embedding_model", -- model "body", -- content column ["filename"], -- key columns '{}' -- optional arguments encoded as a JSON string );
Sostituisci
PROJECT_IDcon l'ID progetto del progetto che stai utilizzando per questo tutorial.La stored procedure crea una tabella
target_dataset.news_body_embeddingsper contenere l'output della funzioneML.GENERATE_EMBEDDING.Al termine dell'esecuzione della query, verifica che nella tabella
target_dataset.news_body_embeddingsnon siano presenti righe contenenti un errore ripetibile. Nell'editor di query, esegui la seguente istruzione:SELECT * FROM `target_dataset.news_body_embeddings` WHERE ml_generate_embedding_status LIKE '%A retryable error occurred%';
La query restituisce il messaggio
No data to display.
Libera spazio
- Nella Google Cloud console, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare e fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID progetto, quindi fai clic su Chiudi per eliminare il progetto.