Generazione di embedding autonomi

Questo documento descrive come utilizzare la generazione autonoma di embedding per i tuoi dati, che consente a BigQuery di mantenere una colonna di embedding in una tabella in base a una colonna di origine. La colonna di origine deve avere un tipo di dati STRING o ObjectRef. Quando aggiungi o modifichi i dati nella colonna di origine, BigQuery genera o aggiorna automaticamente la colonna di embedding per questi dati utilizzando un modello di embedding di Agent Platform. Questo è utile se vuoi che BigQuery gestisca gli embedding quando i dati di origine vengono aggiornati regolarmente.

Gli embedding sono utili per le moderne applicazioni di AI generativa come la Retrieval Augmented Generation (RAG), ma possono essere complessi da creare, gestire ed eseguire query. Puoi utilizzare la generazione autonoma di embedding per semplificare il processo di creazione, manutenzione e query degli embedding da utilizzare nelle ricerche di somiglianza e in altre applicazioni di AI generativa.

Ad esempio, puoi utilizzare query simili alle seguenti per creare una tabella con la generazione autonoma di embedding abilitata, inserire dati ed eseguire la ricerca semantica:

CREATE TABLE mydataset.products (
  name STRING,
  description STRING,
  description_embedding STRUCT<result ARRAY<FLOAT64>, status STRING>
    GENERATED ALWAYS AS (
      AI.EMBED(description, connection_id => 'us.example_connection',
        endpoint => 'text-embedding-005')
      # Alternatively, you can use the syntax for a built-in model.
      # AI.EMBED(description, model => 'embeddinggemma-300m')
    ) STORED OPTIONS( asynchronous = TRUE ));

# Values in the description_embedding column are automatically generated.
INSERT INTO mydataset.products (name, description) VALUES
  ('Super slingers', 'An exciting board game for the whole family'), ...;

SELECT * FROM AI.SEARCH(TABLE mydataset.products, 'description', 'A really fun toy');

Prima di iniziare

Per abilitare la generazione autonoma di embedding su una tabella, devi disporre delle autorizzazioni e della connessione necessarie e abilitare l'API Vertex AI per il tuo progetto.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per abilitare la generazione autonoma di embedding, chiedi all'amministratore di concederti i seguenti ruoli IAM:

  • Per utilizzare una risorsa di connessione: Utente connessioni BigQuery (roles/bigquery.connectionUser) sulla connessione
  • Per creare o modificare una tabella: BigQuery Data Editor (roles/bigquery.dataEditor) nella tabella
  • Concedi al account di servizio della connessione il seguente ruolo in modo che possa accedere ai modelli ospitati negli endpoint della piattaforma agente: Agent Platform User (roles/aiplatform.user) nel progetto che ha la connessione

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Crea una connessione e concedi l'autorizzazione a un account di servizio

Per abilitare la generazione autonoma di embedding su una tabella, devi creare una connessione alle risorse Cloud. Quindi, concedi il ruolo Agent Platform User (roles/aiplatform.user) al account di servizio creato quando hai creato la connessione.

Crea una colonna di embedding generata automaticamente

Puoi creare una colonna di embedding generata automaticamente all'interno di una nuova tabella o aggiungerne una a una tabella esistente.

Quando definisci la funzione AI.EMBED per una colonna di embedding generata automaticamente, se non specifichi l'argomento task_type e il tuo modello supporta task_type, BigQuery imposta task_type su RETRIEVAL_DOCUMENT per impostazione predefinita. Quando esegui una query sulla tabella utilizzando la funzione AI.SEARCH o la funzione VECTOR_SEARCH, BigQuery genera l'embedding della query in tempo reale utilizzando il seguente comportamento di task_type:

  • Se la colonna di embedding della tabella utilizza RETRIEVAL_DOCUMENT, per impostazione predefinita o specificata esplicitamente, BigQuery utilizza RETRIEVAL_QUERY per incorporare la query di ricerca.
  • In caso contrario, BigQuery utilizza lo stesso task_type configurato per la colonna di embedding della tabella.

Crea una tabella con una colonna di embedding generata automaticamente

Puoi utilizzare la generazione autonoma di embedding per generare embedding utilizzando la funzione AI.EMBED in un'istruzione CREATE TABLE.

SQL

Utilizza un'istruzione CREATE TABLE per creare una tabella con una colonna di embedding generata automaticamente. Per creare la tabella, segui questi passaggi:

  1. Nella console Google Cloud , vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, inserisci la seguente istruzione:

    CREATE TABLE DATASET_ID.TABLE (
      [COLUMN, ...]
      SOURCE_COL { STRING | ObjectRef },
      EMBEDDING_COL_NAME STRUCT<result ARRAY<FLOAT64>, status STRING>
        GENERATED ALWAYS AS (
          AI.EMBED(
            SOURCE_COL,
            {
              connection_id => CONNECTION_ID,
              endpoint => ENDPOINT |
              model => MODEL
            })
        )
        STORED OPTIONS (asynchronous = TRUE)
    );

    Sostituisci quanto segue:

    • DATASET_ID: il nome del set di dati in cui vuoi creare la tabella.
    • TABLE: il nome della tabella su cui creare la generazione autonoma degli embedding.
    • COLUMN, ...: tutte le colonne che la tabella deve contenere oltre alla colonna che vuoi incorporare automaticamente.
    • SOURCE_COL: il nome della colonna STRING o ObjectRef che vuoi incorporare automaticamente.
    • EMBEDDING_COL_NAME: il nome della colonna di embedding generata automaticamente.
    • CONNECTION_ID: un valore STRING che contiene il nome di una connessione da utilizzare, ad esempio my_project.us.example_connection. Devi concedere il ruolo Utente piattaforma agente al account di servizio della connessione nel progetto in cui crei la tabella.
    • ENDPOINT: un valore STRING che specifica un endpoint del modello di text embedding di Agent Platform supportato da utilizzare per il modello di text embedding. Il valore dell'endpoint specificato deve includere la versione del modello, ad esempio text-embedding-005. Se specifichi il nome del modello anziché un URL, BigQuery ML identifica automaticamente il modello e utilizza l'endpoint completo del modello.
    • MODEL (anteprima): un valore STRING che specifica un modello di text embedding integrato. L'unico valore supportato è il modello embeddinggemma-300m. Se specifichi questo parametro, non puoi specificare i parametri endpoint o connection_id. Quando specifichi il parametro MODEL, i tuoi dati rimangono in BigQuery e i tuoi slot vengono utilizzati per creare gli embedding; non vengono inviati dati ad Agent Platform e non vengono addebitati costi in Agent Platform.

  3. Fai clic su Esegui.

Per saperne di più su come eseguire le query, consulta Esegui una query interattiva.

bq

Per creare una tabella con una colonna di embedding generata automaticamente utilizzando lo strumento a riga di comando bq, utilizza il comando bq mk con un file di schema JSON che definisce lo schema della tabella:

  1. Crea un file di schema JSON. L'esempio seguente mostra uno schema che crea una colonna di embedding basata su una colonna di origine. Questo esempio utilizza un endpoint Agent Platform per la generazione di embedding.

    [
      {
        "name": "SOURCE_COL",
        "type": "STRING"
      },
      {
        "fields": [
          {
            "mode": "REPEATED",
            "name": "result",
            "type": "FLOAT"
          },
          {
            "name": "status",
            "type": "STRING"
          }
        ],
        "generatedColumn": {
          "generationExpressionInfo": {
            "asynchronous": true,
            "generationExpression": "AI.EMBED(SOURCE_COL, connection_id => 'CONNECTION_ID', endpoint => 'ENDPOINT')",
            "stored": true
          },
          "generatedMode": "GENERATED_ALWAYS"
        },
        "name": "EMBEDDING_COL_NAME",
        "type": "RECORD"
      }
    ]
    

    Se utilizzi un modello integrato anziché un endpoint Agent Platform, utilizza una sintassi simile alla seguente per generationExpression: "AI.EMBED(SOURCE_COL, model => 'MODEL')"

    Per informazioni sui valori da utilizzare, consulta le descrizioni di SOURCE_COL, EMBEDDING_COL_NAME, CONNECTION_ID, ENDPOINT e MODEL nella scheda SQL.

  2. Salva lo schema in un file, ad esempio schema.json.

  3. Crea la tabella utilizzando il comando bq mk --table:

    bq mk --table DATASET_ID.TABLE schema.json
    

Sostituisci quanto segue:

  • DATASET_ID: il nome del set di dati in cui vuoi creare la tabella.
  • TABLE: il nome della tabella su cui creare la generazione autonoma degli embedding.
  • COLUMN, ...: tutte le colonne che la tabella deve contenere oltre alla colonna che vuoi incorporare automaticamente.
  • STRING_COL: il nome della colonna STRING che vuoi incorporare automaticamente.
  • EMBEDDING_COL_NAME: il nome della colonna di embedding generata automaticamente.
  • CONNECTION_ID: un valore STRING che contiene il nome di una connessione da utilizzare, ad esempio my_project.us.example_connection. Devi concedere il ruolo Agent Platform User al account di servizio della connessione nel progetto in cui crei la tabella.
  • ENDPOINT: un valore STRING che specifica un endpoint del modello di text embedding Agent Platform supportato da utilizzare per il modello di text embedding. Il valore dell'endpoint specificato deve includere la versione del modello, ad esempio text-embedding-005. Se specifichi il nome del modello anziché un URL, BigQuery ML identifica automaticamente il modello e utilizza l'endpoint completo del modello.
  • MODEL (anteprima): un valore STRING che specifica un modello di text embedding integrato. L'unico valore supportato è il modello embeddinggemma-300m. Se specifichi questo parametro, non puoi specificare i parametri endpoint o connection_id.

    Quando specifichi il parametro MODEL, i tuoi dati rimangono in BigQuery e i tuoi slot vengono utilizzati per creare gli embedding. Non vengono inviati dati ad Agent Platform e non vengono addebitati costi in Agent Platform.

Aggiungi una colonna di embedding generata automaticamente a una tabella esistente

Puoi anche aggiungere una colonna di embedding generata automaticamente a una tabella esistente utilizzando un'istruzione ALTER TABLE ADD COLUMN.

SQL

Utilizza un'istruzione ALTER TABLE ADD COLUMN per aggiungere una colonna di embedding generata automaticamente a una tabella esistente. Per aggiungere la colonna:

  1. Nella console Google Cloud , vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, inserisci la seguente istruzione:

    ALTER TABLE DATASET_ID.TABLE
      ADD COLUMN EMBEDDING_COL_NAME
        STRUCT<result ARRAY<FLOAT64>, status STRING>
        GENERATED ALWAYS AS (
          AI.EMBED(
            SOURCE_COL,
            {
              connection_id => CONNECTION_ID,
              endpoint => ENDPOINT |
              model => MODEL
            })
        )
        STORED OPTIONS (asynchronous = TRUE)
    ;

    Sostituisci quanto segue:

    • DATASET_ID: il nome del set di dati contenente la tabella.
    • TABLE: il nome della tabella a cui vuoi aggiungere la colonna di embedding generata automaticamente.
    • EMBEDDING_COL_NAME: il nome della colonna di embedding generata automaticamente.
    • SOURCE_COL: il nome della colonna STRING o ObjectRef che vuoi incorporare automaticamente.
    • CONNECTION_ID: un valore STRING che contiene il nome di una connessione da utilizzare, ad esempio my_project.us.example_connection.
    • ENDPOINT: un valore STRING che specifica un endpoint del modello di text embedding di Agent Platform supportato da utilizzare per il modello di text embedding.
    • MODEL (anteprima): un valore STRING che specifica un modello di text embedding integrato. L'unico valore supportato è il modello embeddinggemma-300m. Se specifichi questo parametro, non puoi specificare i parametri endpoint o connection_id. Quando specifichi il parametro MODEL, i tuoi dati rimangono in BigQuery e i tuoi slot vengono utilizzati per creare gli embedding; non vengono inviati dati ad Agent Platform e non vengono addebitati costi in Agent Platform.

  3. Fai clic su Esegui.

Per saperne di più su come eseguire le query, consulta Esegui una query interattiva.

bq

Per aggiungere una colonna di embedding generata automaticamente a una tabella esistente utilizzando lo strumento a riga di comando bq, utilizza il comando bq update con un file di schema JSON che definisce lo schema della tabella aggiornato:

  1. Recupera lo schema corrente della tabella e salvalo in un file, ad esempio schema.json:
    bq show --schema --format=prettyjson DATASET_ID.TABLE > schema.json
    
  2. Modifica schema.json per aggiungere la definizione della nuova colonna di embedding generata automaticamente. L'esempio seguente mostra la definizione di una colonna di incorporamento basata su una colonna di origine. Questo esempio utilizza un endpoint Agent Platform per la generazione di embedding.

    [
      {
        "name": "SOURCE_COL",
        "type": "STRING"
      },
      {
        "fields": [
          {
            "mode": "REPEATED",
            "name": "result",
            "type": "FLOAT"
          },
          {
            "name": "status",
            "type": "STRING"
          }
        ],
        "generatedColumn": {
          "generationExpressionInfo": {
            "asynchronous": true,
            "generationExpression": "AI.EMBED(SOURCE_COL, connection_id => 'CONNECTION_ID', endpoint => 'ENDPOINT')",
            "stored": true
          },
          "generatedMode": "GENERATED_ALWAYS"
        },
        "name": "EMBEDDING_COL_NAME",
        "type": "RECORD"
      }
    ]
    

    Se utilizzi un modello integrato anziché un endpoint Agent Platform, utilizza una sintassi simile alla seguente per generationExpression: "AI.EMBED(SOURCE_COL, model => 'MODEL')"

    Per informazioni sui valori da utilizzare, consulta le descrizioni di SOURCE_COL, EMBEDDING_COL_NAME, CONNECTION_ID, ENDPOINT e MODEL nella scheda SQL.

  3. Aggiorna la tabella utilizzando il comando bq update --table:

    bq update --table DATASET_ID.TABLE schema.json
    

    Sostituisci quanto segue:

    • DATASET_ID: il nome del set di dati contenente la tabella.
    • TABLE: il nome della tabella a cui vuoi aggiungere la colonna di embedding generata automaticamente.

Il job di generazione degli embedding in background viene avviato poco dopo la creazione o la modifica della tabella o dopo l'aggiornamento dei dati nella colonna di origine.

Per monitorare l'avanzamento della generazione degli embedding, puoi utilizzare una query simile alla seguente:

SELECT
  COUNT(*) AS total_num_rows,
  COUNTIF(description_embedding IS NOT NULL
          AND description_embedding.status = '') AS total_num_generated_embeddings
FROM
  PROJECT_ID.DATASET_ID.TABLE;

Dopo aver creato la tabella con gli embedding, puoi creare un indice vettoriale nella colonna STRUCT che contiene l'embedding generato automaticamente.

Esempio

Supponiamo che tu sia un grande rivenditore che vende molti prodotti diversi. Hai una tabella di nomi e descrizioni dei prodotti e vuoi aiutare i tuoi clienti a trovare i prodotti che stanno cercando. Le seguenti query mostrano come configurare la generazione autonoma di embedding per facilitare la ricerca semantica delle descrizioni dei prodotti.

Innanzitutto, crea un set di dati:

CREATE SCHEMA mydataset;

Successivamente, crea una tabella con la generazione di embedding autonomi abilitata per contenere le informazioni sui prodotti. La colonna generata automaticamente si chiama description_embedding e si basa sulla colonna description.

# Create a table of products and descriptions with a generated embedding column.
CREATE TABLE mydataset.products (
  name STRING,
  description STRING,
  description_embedding STRUCT<result ARRAY<FLOAT64>, status STRING>
    GENERATED ALWAYS AS (
      AI.EMBED(description, connection_id => 'us.example_connection',
        endpoint => 'text-embedding-005')
      # Alternatively, you can use the syntax for a built-in model.
      # AI.EMBED(description, model => 'embeddinggemma-300m')
    ) STORED OPTIONS( asynchronous = TRUE )
);

La seguente query inserisce alcuni nomi e descrizioni dei prodotti nella tabella. Non specifichi un valore per description_embedding perché viene generato automaticamente.

# Insert product descriptions into the table.
# The description_embedding column is automatically updated.
INSERT INTO mydataset.products (name, description) VALUES
  ("Lounger chair", "A comfortable chair for relaxing in."),
  ("Super slingers", "An exciting board game for the whole family."),
  ("Encyclopedia set", "A collection of informational books.");

Se vuoi, puoi creare un indice vettoriale sulla tabella per velocizzare la ricerca. Un indice vettoriale richiede più di tre righe, quindi la seguente query presuppone che tu abbia inserito dati aggiuntivi. Ogni volta che inserisci dati, la colonna description_embedding viene aggiornata automaticamente.

CREATE VECTOR INDEX my_index
ON mydataset.products(description_embedding)
OPTIONS(index_type = 'IVF');

Infine, puoi utilizzare la funzione AI.SEARCH per eseguire la ricerca semantica sui tuoi prodotti per un giocattolo divertente:

# Search for products that are fun to play with.
SELECT base.name, base.description, distance
FROM AI.SEARCH(TABLE mydataset.products, 'description', "A really fun toy");

/*------------------+----------------------------------------------+----------------------+
 | name             | description                                  | distance             |
 +------------------+----------------------------------------------+----------------------+
 | Super slingers   | An exciting board game for the whole family. | 0.80954913893618929  |
 | Lounger chair    | A comfortable chair for relaxing in.         | 0.938933930620146    |
 | Encyclopedia set | A collection of informational books.         | 1.1119297739353384   |
 +------------------+----------------------------------------------+----------------------*/

Embedding generati da ObjectRef colonne

Puoi aggiungere colonne di embedding generate per una colonna ObjectRef in una tabella.

L'esempio seguente mostra come creare una tabella con una colonna ObjectRef e poi aggiungere una colonna di embedding generato per quella colonna:

# Create a table with ObjectRef columns.
CREATE TABLE mydataset.images AS
SELECT
  REGEXP_EXTRACT(ref.uri, r'.*/(.*).jpg$') AS name,
  ref
FROM mydataset.object_table;

# Add a generated embedding column for the ObjectRef column.
ALTER TABLE mydataset.images
ADD COLUMN image_embedding STRUCT<result ARRAY<FLOAT64>, status STRING>
GENERATED ALWAYS AS (
  AI.EMBED(
    ref,
    connection_id => "us.my_connection",
    endpoint => "multimodalembedding@001")
)
STORED OPTIONS (asynchronous = true);

Ottieni informazioni sulle colonne di embedding generate automaticamente

Per verificare che una colonna sia una colonna di embedding generata automaticamente, esegui una query sulla vista INFORMATION_SCHEMA.COLUMNS.

La seguente query mostra informazioni su tutte le colonne di embedding generate automaticamente:

SELECT *
FROM PROJECT_ID.DATASET_ID.INFORMATION_SCHEMA.COLUMNS
WHERE is_generated = 'ALWAYS';

Il campo generation_expression mostra la chiamata alla funzione AI.EMBED utilizzata per generare gli embedding nella colonna, incluso l'argomento task_type => 'RETRIEVAL_DOCUMENT' predefinito se non hai specificato un task_type per un modello che lo supporta.

Utilizza la tua prenotazione

Per impostazione predefinita, BigQuery utilizza gli slot on demand per gestire l'elaborazione richiesta per mantenere la colonna di embedding generata. Per garantire prestazioni prevedibili e coerenti, puoi facoltativamente creare una prenotazione e impostare job_type su BACKGROUND. Se è presente una prenotazione in background, BigQuery la utilizza per gestire la colonna di embedding generata.

Quote

Quando utilizzi un endpoint della piattaforma agente per la generazione di embedding specificando il parametro endpoint nella funzione AI.EMBED, BigQuery invia richieste alla piattaforma agente per generare gli embedding. Queste richieste sono soggette alle quote per Agent Platform. La quota di richieste al minuto per il modello di embedding influisce direttamente sul throughput dei job di generazione di embedding in background. Se la generazione degli embedding è lenta, richiedi un limite di quota più alto per Agent Platform seguendo le istruzioni riportate in Richiedi un aumento della quota. Se specifichi il parametro model nella funzione AI.EMBED, gli embedding vengono generati all'interno di BigQuery e non vengono inviate richieste ad Agent Platform, pertanto le quote di Agent Platform non vengono applicate.

Risoluzione dei problemi

La colonna di embedding generata contiene due campi: result e status. Se si verifica un errore quando BigQuery tenta di generare un embedding per una determinata riga della tabella, il campo result è NULL e il campo status descrive l'errore. Ad esempio, se la colonna di origine è NULL, anche l'embedding result è NULL e lo stato è NULL value is not supported for embedding generation.

Un errore più grave può bloccare la generazione degli embedding. In questo caso, puoi eseguire una query sulla colonna async_generation_status nella vista INFORMATION_SCHEMA.COLUMNS per identificare l'errore di blocco.

Gli errori di blocco possono includere quelli che seguono:

  • Errori di autorizzazione negata
  • Errori "Non trovato"
  • Errori relativi agli endpoint dei modelli di embedding non supportati
  • Errori relativi all'API Vertex AI non abilitata

Una volta completato il job di generazione degli embedding successivo, la colonna async_generation_status viene cancellata.

La seguente query mostra come verificare la presenza di errori di blocco:

SELECT
  column_name,
  async_generation_status
FROM
  mydataset.INFORMATION_SCHEMA.COLUMNS
WHERE
  table_name = 'images';

Se la colonna image_embedding contiene un errore di blocco, il risultato è simile al seguente:

[
  {
    "column_name": "image_embedding",
    "async_generation_status": {
      "blocking_error": {
        "message": "<service_account> does not have the permission to access resources used by AI.EMBED. Please follow https://docs.cloud.google.com/bigquery/docs/permissions-for-ai-functions to set up permissions.",
        ...
      }
    }
  }
]

Puoi anche eseguire una query sulla vista INFORMATION_SCHEMA.JOBS per il job in background e consultare le informazioni nel campo error_result. L'ID job di un job di embedding in background ha il prefisso gc_. Ad esempio, la seguente query estrae tutti i job in background il cui risultato di errore non è NULL:

SELECT * FROM `region-REGION.INFORMATION_SCHEMA.JOBS` j
WHERE EXISTS (
  SELECT 1
  FROM unnest(j.referenced_tables) t
  WHERE
    j.project_id = 'PROJECT_ID'
    AND t.dataset_id = 'DATASET_ID'
    AND t.table_id = 'TABLE'
)
AND starts_with(job_id, 'gc')
AND error_result IS NOT NULL
ORDER BY j.creation_time DESC;

Monitora i costi

I costi di generazione autonoma degli embedding rientrano nelle seguenti categorie.

Costi DML in background di BigQuery

Gli incorporamenti generati vengono scritti nella tabella utilizzando job DML in background. Per impostazione predefinita, BigQuery utilizza gli slot on demand per gestire questi job. Il progetto della tabella viene fatturato in base al modello di fatturazione on demand DML.

In alternativa, per garantire prestazioni prevedibili e coerenti, puoi creare una prenotazione e impostare job_type su BACKGROUND. Se è presente una prenotazione in background, BigQuery la utilizza per eseguire i job DML in background. Inoltre, la prenotazione in background verrà fatturata per l'utilizzo del tempo degli slot dei job DML in background.

Per monitorare i valori total_slot_ms e total_bytes_billed per i job DML in background su una tabella, esegui una query sulla vista INFORMATION_SCHEMA.JOBS per i job con un prefisso job_id di gc_:

SELECT
  job_id,
  creation_time,
  reservation_id,
  total_slot_ms,
  total_bytes_processed,
  total_bytes_billed
FROM
  `region-REGION.INFORMATION_SCHEMA.JOBS` j
WHERE
  EXISTS (
    SELECT 1
    FROM UNNEST(j.referenced_tables) t
    WHERE
      j.project_id = 'PROJECT_ID'
      AND t.dataset_id = 'DATASET_ID'
      AND t.table_id = 'TABLE'
  )
  AND STARTS_WITH(job_id, 'gc_')
ORDER BY
  j.creation_time DESC;

Sostituisci quanto segue:

  • REGION: la regione del set di dati che contiene la tabella, ad esempio us.
  • PROJECT_ID: l'ID del progetto che contiene la tabella.
  • DATASET_ID: il nome del set di dati che contiene la tabella.
  • TABLE: il nome della tabella con la generazione autonoma degli embedding abilitata.

Se specifichi il modello embeddinggemma-300m integrato utilizzando il parametro model nella funzione AI.EMBED, BigQuery genera anche gli embedding direttamente all'interno di questi job DML in background utilizzando gli slot BigQuery. Nessuna richiesta viene inviata ad Agent Platform e non vengono addebitati costi per Agent Platform. Per ulteriori informazioni, consulta la sezione Scegli un modello.

Costi di Gemini Enterprise Agent Platform

Quando specifichi un modello Gemini Enterprise Agent Platform utilizzando il parametro endpoint nella funzione AI.EMBED, la generazione autonoma degli embedding invia richieste a Gemini Enterprise Agent Platform, il che può comportare costi. Per monitorare i costi della piattaforma agente sostenuti dai job di embedding in background, segui questi passaggi:

  1. Visualizza i report sulla fatturazione in Fatturazione Cloud.
  2. Utilizza i filtri per perfezionare i risultati.

    Per i servizi, seleziona Vertex AI.

  3. Per visualizzare gli addebiti per un job specifico, filtra per etichetta.

    Imposta la chiave su bigquery_ml_job e il valore sull'ID job del job di embedding. Tutti i job di embedding in background hanno il prefisso gc_.

Può essere necessario attendere fino a 24 ore prima che alcuni addebiti vengano visualizzati nella fatturazione Cloud.

Limitazioni

  • Ogni tabella supporta al massimo una colonna di embedding generata automaticamente.
  • Le operazioni DML simultanee possono causare ritardi ed errori temporanei nella generazione degli embedding. Per migliorare le prestazioni e ridurre i costi, ti consigliamo di inserire i dati in batch ed evitare aggiornamenti DML frequenti.
  • Se utilizzi l'API di flussi di dati legacy per l'importazione dei dati, potrebbero verificarsi alcuni ritardi prima dell'avvio della generazione degli embedding.
  • Quando utilizzi l'API BigQuery Storage Write (gRPC), i job di generazione degli embedding in background potrebbero non riuscire se un job di scrittura in modalità flusso è in esecuzione contemporaneamente. In questo caso, la quota della piattaforma dell'agente e i costi del DML in background vengono sprecati. L'utilizzo dell'API Storage Write (gRPC) causa anche job di generazione di embedding simultanei sulla tabella, ma questo viene gestito da BigQuery e non vengono sprecati costi per la quota di Agent Platform o per il DML in background.
  • Per un throughput più elevato sugli endpoint remoti di Agent Platform, ti consigliamo di utilizzare i modelli di text embedding rispetto ai modelli Gemini. Per scoprire di più, consulta Quote.
  • Non viene indicato che una colonna viene generata automaticamente quando visualizzi lo schema di una tabella utilizzando la console Google Cloud o il campo ddl della vista INFORMATION_SCHEMA.TABLES.
  • Se crei una copia, un clone o uno snapshot di una tabella con una colonna di embedding generata, vengono copiati solo i dati. La configurazione della generazione non si applica alla nuova tabella e gli aggiornamenti alla colonna di origine della nuova tabella non genereranno nuovi embedding.
  • Se ripristini da uno snapshot una tabella per cui era abilitata la generazione autonoma di embedding, la configurazione della generazione di embedding non viene ripristinata.
  • Quando utilizzi l'API BigQuery, puoi specificare la proprietà generatedColumn solo durante la creazione di una nuova colonna. Non puoi aggiungere, aggiornare o rimuovere la proprietà generatedColumn in una colonna esistente.
  • Dopo aver creato la colonna di embedding generata, si applicano le seguenti limitazioni:

    • Non puoi eliminare o rinominare la colonna di origine, ma puoi comunque eliminare o rinominare la colonna di embedding generata. Se elimini la colonna di embedding, puoi eliminare o rinominare la colonna di origine.
    • Non puoi modificare il tipo di dati della colonna di origine o della colonna di embedding generata.
  • Non puoi specificare valori predefiniti per le colonne di embedding generate automaticamente.

  • Non puoi scrivere direttamente nelle colonne di embedding generate utilizzando questi metodi:

    • DML
    • Scritture in modalità flusso
    • bq insert
    • bq load
    • bq copy -a
  • Le tabelle con colonne di embedding generate non supportano policy di sicurezza a livello di colonna, come i tag di policy.

  • Quando chiami una funzione di ricerca, ad esempio VECTOR_SEARCH o AI.SEARCH, le righe con embedding mancanti nella tabella di base vengono ignorate durante la ricerca.

  • Non puoi creare un indice vettoriale partizionato su una tabella per cui è abilitata la generazione autonoma degli embedding.

  • Se crei un indice vettoriale sulla colonna di embedding generata automaticamente, l'addestramento dell'indice inizia dopo che almeno l'80% delle righe ha generato embedding. Puoi controllare l'avanzamento della generazione degli embedding seguendo questi passaggi:

    Esegui una query sulla percentuale di incorporamenti generati nella tabella:

    SELECT
      COUNTIF(description_embedding IS NOT NULL
      AND description_embedding.status = '') * 100.0 / COUNT(*) AS percent
    FROM PROJECT_ID.DATASET_ID.TABLE;
    

Passaggi successivi