Genera incorporamenti delle immagini utilizzando la funzione AI.GENERATE_EMBEDDING

Questo documento mostra come creare un modello remoto BigQuery ML che fa riferimento a un modello di incorporamento della piattaforma agentica Gemini Enterprise. Quindi devi utilizzare il modello con la funzione AI.GENERATE_EMBEDDING per creare gli embedding delle immagini utilizzando i dati di una tabella degli oggetti BigQuery.

Ruoli obbligatori

Per creare un modello remoto e generare incorporamenti, devi disporre dei seguenti ruoli Identity and Access Management (IAM):

  • Crea e utilizza set di dati, tabelle e modelli BigQuery: BigQuery Data Editor (roles/bigquery.dataEditor) nel tuo progetto.
  • Crea, delega e utilizza le connessioni BigQuery: BigQuery Connections Admin (roles/bigquery.connectionsAdmin) sul tuo progetto.

    Se non hai configurato una connessione predefinita, puoi crearne e impostarne una durante l'esecuzione dell'istruzione CREATE MODEL. Per farlo, devi disporre del ruolo Amministratore BigQuery (roles/bigquery.admin) nel tuo progetto. Per saperne di più, vedi Configura la connessione predefinita.

  • Concedi le autorizzazioni al account di servizio della connessione: Amministratore IAM progetto (roles/resourcemanager.projectIamAdmin) nel progetto che contiene l'endpoint della Gemini Enterprise Agent Platform. Questo è il progetto attuale per i modelli remoti che crei specificando il nome del modello come endpoint. Questo è il progetto identificato nell'URL per i modelli remoti che crei specificando un URL come endpoint.

    Se utilizzi il modello remoto per analizzare dati non strutturati da una tabella di oggetti e il bucket Cloud Storage che utilizzi nella tabella di oggetti si trova in un progetto diverso dall'endpoint di Agent Platform, devi disporre anche del ruolo Amministratore Storage (roles/storage.admin) nel bucket Cloud Storage utilizzato dalla tabella di oggetti.

  • Crea job BigQuery: Utente job BigQuery (roles/bigquery.jobUser) nel tuo progetto.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per eseguire le attività descritte in questo documento. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

  • Crea un set di dati: bigquery.datasets.create
  • Crea, delega e utilizza una connessione: bigquery.connections.*
  • Imposta le autorizzazioni del account di servizio: resourcemanager.projects.getIamPolicy e resourcemanager.projects.setIamPolicy
  • Crea una tabella degli oggetti: bigquery.tables.create e bigquery.tables.update
  • Crea un modello ed esegui l'inferenza:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Prima di iniziare

  1. Nella console Google Cloud , nella pagina di selezione del progetto, seleziona o crea un progetto Google Cloud .

    Ruoli richiesti per selezionare o creare un progetto

    • Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per il quale ti è stato concesso un ruolo.
    • Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (roles/resourcemanager.projectCreator), che contiene l'autorizzazione resourcemanager.projects.create. Scopri come concedere i ruoli.

    Vai al selettore di progetti

  2. Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .

  3. Abilita le API BigQuery, BigQuery Connection, Cloud Storage 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 disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.

    Abilita le API

Crea un set di dati

Crea un set di dati BigQuery che contenga le tue risorse:

Console

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

    Vai a BigQuery

  2. Nel riquadro a sinistra, fai clic su Spazio di esplorazione:

    Pulsante evidenziato per il riquadro Spazio di esplorazione.

    Se non vedi il riquadro a sinistra, fai clic su Espandi riquadro a sinistra per aprirlo.

  3. Nel riquadro Explorer, fai clic sul nome del progetto.

  4. Fai clic su Visualizza azioni > Crea set di dati.

  5. Nella pagina Crea set di dati, segui questi passaggi:

    1. In ID set di dati, digita un nome per il set di dati.

    2. Per Tipo di località, seleziona Regione o Più regioni.

      • Se hai selezionato Regione, seleziona una località dall'elenco Regione.
      • Se hai selezionato Più regioni, seleziona Stati Uniti o Europa dall'elenco Più regioni.
    3. Fai clic su Crea set di dati.

bq

  1. Per creare un nuovo set di dati, utilizza il comando bq mk con il flag --location:

    bq --location=LOCATION mk -d DATASET_ID

    Sostituisci quanto segue:

    • LOCATION: la posizione del set di dati.
    • DATASET_ID: l'ID del set di dati che stai creando.
  2. Verifica che il set di dati sia stato creato:

    bq ls

Crea una connessione

Crea una connessione alle risorse Cloud e ottieni il account di servizio della connessione. Crea la connessione nella stessa posizione del set di dati creato nel passaggio precedente.

Puoi saltare questo passaggio se hai configurato una connessione predefinita o se disponi del ruolo Amministratore BigQuery.

Seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro a sinistra, fai clic su Explorer:

    Pulsante evidenziato per il riquadro Spazio di esplorazione.

    Se non vedi il riquadro a sinistra, fai clic su Espandi riquadro a sinistra per aprirlo.

  3. Nel riquadro Explorer, espandi il nome del progetto e fai clic su Connessioni.

  4. Nella pagina Connessioni, fai clic su Crea connessione.

  5. Per Tipo di connessione, scegli Modelli remoti di Vertex AI, funzioni remote, BigLake e Spanner (risorsa Cloud).

  6. Nel campo ID connessione, inserisci un nome per la connessione.

  7. Per Tipo di località, seleziona una località per la connessione. La connessione deve essere collocata insieme alle altre risorse, ad esempio i set di dati.

  8. Fai clic su Crea connessione.

  9. Fai clic su Vai alla connessione.

  10. Nel riquadro Informazioni sulla connessione, copia l'ID dell'account di servizio da utilizzare in un passaggio successivo.

SQL

Utilizza l'istruzione CREATE CONNECTION:

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

    Vai a BigQuery

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

    CREATE CONNECTION [IF NOT EXISTS] `CONNECTION_NAME`
    OPTIONS (
      connection_type = "CLOUD_RESOURCE",
      friendly_name = "FRIENDLY_NAME",
      description = "DESCRIPTION"
      );

    Sostituisci quanto segue:

    • CONNECTION_NAME: il nome della connessione nel formato PROJECT_ID.LOCATION.CONNECTION_ID, LOCATION.CONNECTION_ID o CONNECTION_ID. Se il progetto o la località vengono omessi, vengono dedotti dal progetto e dalla località in cui viene eseguita l'istruzione.
    • FRIENDLY_NAME (facoltativo): un nome descrittivo per la connessione.
    • DESCRIPTION (facoltativo): una descrizione della connessione.

  3. Fai clic su Esegui.

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

bq

  1. In un ambiente a riga di comando, crea una connessione:

    bq mk --connection --location=REGION --project_id=PROJECT_ID \
        --connection_type=CLOUD_RESOURCE CONNECTION_ID

    Il parametro --project_id sostituisce il progetto predefinito.

    Sostituisci quanto segue:

    • REGION: la tua regione di connessione
    • PROJECT_ID: il tuo Google Cloud ID progetto
    • CONNECTION_ID: un ID per la connessione

    Quando crei una risorsa di connessione, BigQuery crea un account di serviziot di sistema univoco e lo associa alla connessione.

    Risoluzione dei problemi: se viene visualizzato il seguente errore di connessione, aggiorna Google Cloud SDK:

    Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
    
  2. Recupera e copia l'ID account di servizio da utilizzare in un passaggio successivo:

    bq show --connection PROJECT_ID.REGION.CONNECTION_ID

    L'output è simile al seguente:

    name                          properties
    1234.REGION.CONNECTION_ID     {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
    

Python

Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.

import google.api_core.exceptions
from google.cloud import bigquery_connection_v1

client = bigquery_connection_v1.ConnectionServiceClient()


def create_connection(
    project_id: str,
    location: str,
    connection_id: str,
):
    """Creates a BigQuery connection to a Cloud Resource.

    Cloud Resource connection creates a service account which can then be
    granted access to other Google Cloud resources for federated queries.

    Args:
        project_id: The Google Cloud project ID.
        location: The location of the connection (for example, "us-central1").
        connection_id: The ID of the connection to create.
    """

    parent = client.common_location_path(project_id, location)

    connection = bigquery_connection_v1.Connection(
        friendly_name="Example Connection",
        description="A sample connection for a Cloud Resource.",
        cloud_resource=bigquery_connection_v1.CloudResourceProperties(),
    )

    try:
        created_connection = client.create_connection(
            parent