Questo tutorial mostra come utilizzare le query SQL, la funzione AI.GENERATE, la funzione AI.EMBED e BigQuery DataFrames per analizzare i dati multimodali del set di dati pubblico del negozio di animali Cymbal.
La funzione AI.GENERATE consente di analizzare qualsiasi combinazione di dati strutturati e non strutturati, mentre la funzione AI.EMBED consente di creare incorporamenti da dati di testo o immagini in BigQuery.
Puoi trovare immagini simili utilizzando la funzione VECTOR_SEARCH. La funzione VECTOR_SEARCH consente di eseguire una ricerca semantica o una
ricerca ibrida sugli embedding per trovare entità simili.
Questo tutorial utilizza una tabella degli oggetti persistente
che memorizza i valori di ObjectRef.
Obiettivi
- Utilizza i valori
ObjectRefper archiviare i dati delle immagini insieme ai dati strutturati in una tabella BigQuery. - Utilizza la funzione
AI.GENERATEper arricchire i dati. - Utilizza la funzione
AI.EMBEDper generare embedding basati sui dati delle immagini. - Utilizza la funzione
VECTOR_SEARCHper trovare immagini simili. - Utilizza array di valori
ObjectRefper riassumere i manuali utente.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
- BigQuery: you incur costs for the data that you process in BigQuery.
- Cloud Storage: you incur costs for reading the objects stored in Cloud Storage.
- Gemini Enterprise Agent Platform: you incur costs for calls to Agent Platform models.
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il calcolatore prezzi.
Per ulteriori informazioni sui costi, consulta le seguenti pagine dei prezzi:
Prima di iniziare
-
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'autorizzazioneresourcemanager.projects.create. Scopri come concedere i ruoli.
-
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .
-
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.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per completare questo tutorial, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Crea set di dati e tabelle:
Proprietario dati BigQuery (
roles/bigquery.dataOwner) -
Esegui job BigQuery:
Utente job BigQuery (
roles/bigquery.jobUser) -
Crea connessioni:
BigQuery Connection Admin (
roles/bigquery.connectionAdmin) -
Concedi le autorizzazioni al account di servizio di una connessione:
Project IAM Admin (
roles/resourcemanager.projectIamAdmin) -
Crea URL che ti consentono di leggere e modificare gli oggetti Cloud Storage:
BigQuery ObjectRef Admin (
roles/bigquery.objectRefAdmin)
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 il set di dati, le tabelle, i modelli e la connessione
In questa sezione, creerai il set di dati, la connessione, le tabelle e i modelli utilizzati in questo tutorial.
Crea un set di dati
Crea un set di dati BigQuery contenente gli oggetti che crei in questo tutorial scegliendo una delle seguenti opzioni:
Console
Nella console Google Cloud , vai alla pagina BigQuery.
Nel riquadro a sinistra, fai clic su Explorer:

Se non vedi il riquadro a sinistra, fai clic su Espandi riquadro a sinistra per aprirlo.
In Explorer, espandi il progetto e fai clic su Set di dati.
Nella pagina Set di dati, fai clic su Crea set di dati.
Nella pagina Crea set di dati, segui questi passaggi:
In ID set di dati, inserisci
cymbal_pets.Per Località dei dati, seleziona US.
Lascia invariate le restanti impostazioni predefinite e fai clic su Crea set di dati.
SQL
Utilizza l'istruzione CREATE SCHEMA.
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
CREATE SCHEMA
PROJECT_ID.cymbal_pets OPTIONS ( description = 'Dataset for BigQuery ML tutorial', location = 'US');Sostituisci
PROJECT_IDcon l'ID progetto.Fai clic su Esegui.
Per saperne di più su come eseguire le query, consulta Eseguire una query interattiva.
Ricevi un messaggio di conferma simile al seguente: The dataset
named cymbal_pets was created.
Crea una connessione
Crea una connessione risorsa Cloud e recupera il account di servizio della connessione. BigQuery utilizza la connessione per accedere agli oggetti in Cloud Storage.
Nel riquadro a sinistra, fai clic su Explorer:

Nel riquadro Explorer, fai clic su Connessioni.
Nella pagina Connessioni, fai clic su Crea connessione.
Nella pagina Origine dati esterna, segui questi passaggi:
Per Tipo di connessione, scegli Modelli remoti di Vertex AI, funzioni remote, Lakehouse e Spanner (risorsa Cloud).
Nel campo ID connessione, digita
cymbal_conn.Lascia invariate le restanti impostazioni, quindi fai clic su Crea connessione.
Nella pagina Connessioni, fai clic su
cymbal_conn.Nel riquadro Informazioni sulla connessione, copia il valore ID account di servizio. È necessario per i passaggi successivi.
Concedi le autorizzazioni per utilizzare i modelli Agent Platform
Concedi all'account di servizio della connessione il ruolo Utente della piattaforma dell'agente per accedere
ai modelli remoti nella piattaforma dell'agente. Devi concedere
questo ruolo nello stesso progetto che hai creato o selezionato in precedenza. La concessione dei
ruoli in un progetto diverso genera l'errore
bqcx-1234567890-abcd@gcp-sa-bigquery-condel.iam.gserviceaccount.com
does not have the permission to access resource.
Per concedere all'account di servizio l'accesso all'utilizzo dei modelli della piattaforma dell'agente, segui questi passaggi:
Vai alla pagina IAM e amministrazione.
Fai clic su Concedi l'accesso.
Nella finestra di dialogo Concedi l'accesso:
Nel campo Nuove entità, inserisci l'ID account di servizio che hai copiato in precedenza.
Nel campo Seleziona un ruolo, scegli o cerca Utente della piattaforma Agente.
Fai clic su Salva.
Crea la tabella products
Per creare una tabella standard che contenga le informazioni sui prodotti per animali domestici Cymbal, segui questi passaggi per caricare i dati da Cloud Storage:
Nella console Google Cloud , vai alla pagina Studio.
Per creare la tabella
products, scegli una delle seguenti opzioni:SQL
Incolla questo comando nell'editor di query, quindi fai clic su Esegui:
LOAD DATA OVERWRITE cymbal_pets.products FROM FILES( format = 'avro', uris = [ 'gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/tables/products/products_*.avro']);
Ricevi un messaggio di conferma simile al seguente:
Data was successfully loaded into managed table.BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery per l'utilizzo di BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale.
Crea la tabella product_images
Per creare una tabella degli oggetti (product_images) che contenga le immagini dei prodotti per animali domestici Cymbal, seleziona una delle seguenti opzioni:
* { SQL }
Paste this command into the query editor, and then click
<span class="material-icons" aria-hidden="true">play_circle</span>
**Run**:
<pre class="lang-googlesql notranslate prettyprint devsite-click-to-copy">
CREATE OR REPLACE EXTERNAL TABLE cymbal_pets.product_images
WITH CONNECTION `us.cymbal_conn`
OPTIONS (
object_metadata = 'SIMPLE',
uris = ['gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/images/*.png'],
max_staleness = INTERVAL 30 MINUTE,
metadata_cache_mode = AUTOMATIC);
</pre>
You receive a confirmation message similar to the following: `This
statement created a new table named product_images.`
* { BigQuery DataFrames }
Before trying this sample, follow the BigQuery DataFrames
setup instructions in the BigQuery quickstart
using BigQuery DataFrames.
For more information, see the
BigQuery DataFrames reference documentation.
To authenticate to BigQuery, set up Application Default Credentials.
For more information, see Set
up ADC for a local development environment.
Creazione modelli
Le istruzioni SQL in questo tutorial mostrano come chiamare le funzioni di AI che
non richiedono la creazione di un modello. Se segui le istruzioni di BigQuery DataFrames, seleziona questa opzione per creare modelli remoti che rappresentano un modello Gemini e un modello di embedding multimodale.
SQL
Puoi saltare questo passaggio.
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery per l'utilizzo di BigQuery DataFrames.
Per ulteriori informazioni, consulta la
documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione.
Per saperne di più, consulta Configura
ADC per un ambiente di sviluppo locale.
Crea una tabella products_mm con dati multimodali
Crea una tabella products_mm che contenga una colonna image compilata con
immagini dei prodotti dalla tabella degli oggetti product_images. La colonna image
creata è una colonna STRUCT
che utilizza valori ObjectRef per
archiviare i dati delle immagini insieme ai dati strutturati in una
tabella standard BigQuery.
Un valore ObjectRef è un tipo STRUCT con uno schema predefinito che fa riferimento
agli oggetti Cloud Storage per l'analisi multimodale.
I valori ObjectRef possono essere elaborati dalle funzioni OBJ,
dalle funzioni AI o
dalle funzioni definite dall'utente Python.
Per creare e compilare la tabella products_mm:
Per creare una tabella products_mm, scegli una delle seguenti opzioni:
SQL
Incolla questo comando nell'editor di query, quindi fai clic su
Esegui:
CREATE OR REPLACE TABLE cymbal_pets.products_mm
AS
SELECT products.* EXCEPT (uri), ot.ref AS image FROM cymbal_pets.products
INNER JOIN cymbal_pets.product_images ot
ON ot.uri = products.uri;
Ricevi un messaggio di conferma simile al seguente: This
statement created a new table named products_mm.
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery per l'utilizzo di BigQuery DataFrames.
Per ulteriori informazioni, consulta la
documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione.
Per saperne di più, consulta Configura
ADC per un ambiente di sviluppo locale.
Per visualizzare i dati della colonna image, scegli una delle seguenti opzioni:
SQL
Incolla questo comando nell'editor di query, quindi fai clic su
Esegui:
SELECT product_name, image
FROM cymbal_pets.products_mm
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery per l'utilizzo di BigQuery DataFrames.
Per ulteriori informazioni, consulta la
documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione.
Per saperne di più, consulta Configura
ADC per un ambiente di sviluppo locale.
I risultati sono simili ai seguenti:
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
| product_name | image.uri | image.version | image.authorizer | image.details |
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
| AquaClear Aquarium Background | gs://cloud-samples-data/bigquery/ | 1234567891011 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"image/png", |
| | tutorials/cymbal-pets/images/ | | | "md5_hash":"494f63b9b137975ff3e7a11b060edb1d", |
| | aquaclear-aquarium-background.png | | | "size":1282805,"updated":1742492680017000}} |
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
| AquaClear Aquarium | gs://cloud-samples-data/bigquery/ | 2345678910112 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"image/png", |
| Gravel Vacuum | tutorials/cymbal-pets/images/ | | | "md5_hash":"b7bfc2e2641a77a402a1937bcf0003fd", |
| | aquaclear-aquarium-gravel-vacuum.png | | | "size":820254,"updated":1742492682411000}} |
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
| ... | ... | ... | | ... |
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
Generare informazioni sui prodotti
Utilizza la funzione AI.GENERATE
per generare i seguenti dati per i prodotti del negozio di animali:
- Aggiungi una colonna
image_description alla tabella products_mm.
- Compila le colonne
animal_type, search_keywords e subcategory
della tabella products_mm.
- Esegui una query che restituisca una descrizione di ogni brand di prodotto e anche
un conteggio del numero di prodotti di quel brand. La descrizione del brand
viene generata analizzando le informazioni sui prodotti di tutti i prodotti
di quel brand, comprese le immagini dei prodotti.
Con la funzione AI.GENERATE, puoi scegliere di generare testo o output strutturato in base a uno schema personalizzato che specifichi. La funzione invia
richieste a un modello Gemini e restituisce una struttura che contiene i
dati generati, la risposta completa del modello e uno stato.
Per generare i dati di prodotto:
Per generare le informazioni sul prodotto utilizzando AI.GENERATE, scegli una delle
seguenti opzioni:
SQL
Per creare e compilare la colonna image_description, incolla quanto segue
nell'editor di query, quindi fai clic su
Esegui:
-- Add the column to the existing table
ALTER TABLE bqml_tutorial.products_mm
ADD COLUMN IF NOT EXISTS image_description STRING;
-- Populate the new column using the AI.GENERATE function
UPDATE bqml_tutorial.products_mm
SET image_description = AI.GENERATE(
('Describe the following image: ', image),
endpoint => 'gemini-3.5-flash'
).result
WHERE image_description IS NULL;
Ricevi un messaggio di conferma simile al seguente: This
statement altered the table named products_mm.
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery per l'utilizzo di BigQuery DataFrames.
Per ulteriori informazioni, consulta la
documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione.
Per saperne di più, consulta Configura
ADC per un ambiente di sviluppo locale.
Per visualizzare i contenuti della colonna image_description, incolla quanto segue
nell'editor di query, quindi fai clic su
Esegui:
SELECT product_name, image_description
FROM cymbal_pets.products_mm;
I risultati sono simili ai seguenti:
+--------------------------------+-------------------------------------+
| product_name | image_description |
+--------------------------------+-------------------------------------+
| AquaClear Aquarium Background | The image shows a colorful coral |
| | reef backdrop. The background is a |
| | blue ocean with a bright light... |
| | |
| | |
+--------------------------------+-------------------------------------+
| AquaClear Aquarium | The image shows a long, clear |
| Gravel Vacuum | plastic tube with a green hose |
| | attached to one end. The tube... |
| | |
| | |
+--------------------------------+-------------------------------------+
| ... | ... |
+--------------------------------+-------------------------------------+
Per aggiornare le colonne animal_type, search_keywords e subcategory
con i dati generati, scegli una delle seguenti opzioni:
SQL
Incolla quanto segue nell'editor di query, quindi fai clic su
Esegui:
UPDATE cymbal_pets.products_mm t
SET
animal_type = r.animal_type,
search_keywords = SPLIT(r.search_keywords, ','),
subcategory = r.subcategory
FROM (
SELECT
product_id,
g.* EXCEPT(full_response, status)
FROM bqml_tutorial.products_mm,
UNNEST([AI.GENERATE(
('For the image and description of a pet product, concisely generate the following metadata: 1) animal_type and 2) 5 SEO search keywords (comma separated), and 3) product subcategory. ', image, description),
endpoint => 'gemini-3.5-flash',
output_schema => 'animal_type STRING, search_keywords STRING, subcategory STRING'
)]) AS g
) r
WHERE t.product_id = r.product_id;
Ricevi un messaggio di conferma simile al seguente: This
statement modified 205 rows in products_mm.
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery per l'utilizzo di BigQuery DataFrames.
Per ulteriori informazioni, consulta la
documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione.
Per saperne di più, consulta Configura
ADC per un ambiente di sviluppo locale.
Per visualizzare i dati generati, scegli una delle seguenti opzioni:
SQL
Incolla quanto segue nell'editor di query, quindi fai clic su
Esegui:
SELECT
product_name,
image_description,
animal_type,
search_keywords,
subcategory,
FROM cymbal_pets.products_mm;
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery per l'utilizzo di BigQuery DataFrames.
Per ulteriori informazioni, consulta la
documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione.
Per saperne di più, consulta Configura
ADC per un ambiente di sviluppo locale.
I risultati sono simili ai seguenti:
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
| product_name | image_description | animal_type | search_keywords | subcategory |
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
| AquaClear Aquarium Background | The image shows a colorful coral | fish | aquarium background | aquarium decor |
| | reef backdrop. The background is a | | fish tank backdrop | |
| | blue ocean with a bright light... | | coral reef decor | |
| | | | underwater scenery | |
| | | | aquarium decoration | |
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
| AquaClear Aquarium | The image shows a long, clear | fish | aquarium gravel vacuum | aquarium |
| Gravel Vacuum | plastic tube with a green hose | | aquarium cleaning | cleaning |
| | attached to one end. The tube... | | aquarium maintenance | |
| | | | fish tank cleaning | |
| | | | gravel siphon | |
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
| ... | ... | ... | ... | ... |
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
Per generare una descrizione di ogni brand di prodotto e un conteggio del numero di prodotti di quel brand, scegli una delle seguenti opzioni:
SQL
Incolla quanto segue nell'editor di query, quindi fai clic su
Esegui:
SELECT
brand,
COUNT(*) AS cnt,
AI.GENERATE(('Use the images and text to give one concise brand description ',
'for a website brand page. Return the description only.',
ARRAY_AGG(image LIMIT 10), ARRAY_AGG(description), ARRAY_AGG(category),
ARRAY_AGG(subcategory)),
endpoint => 'gemini-2.5-pro').result AS brand_description
FROM
cymbal_pets.products_mm
GROUP BY brand
ORDER BY cnt DESC;
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery per l'utilizzo di BigQuery DataFrames.
Per ulteriori informazioni, consulta la
documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione.
Per saperne di più, consulta Configura
ADC per un ambiente di sviluppo locale.
I risultati sono simili ai seguenti:
+--------------+-------------------------------------+-----+
| brand | brand_description | cnt |
+--------------+-------------------------------------+-----+
| AquaClear | AquaClear is a brand of aquarium | 33 |
| | and pond care products that offer | |
| | a wide range of solutions for... | |
+--------------+-------------------------------------+-----+
| Ocean | Ocean Bites is a brand of cat food | 28 |
| Bites | that offers a variety of recipes | |
| | and formulas to meet the specific.. | |
+--------------+-------------------------------------+-----+
| ... | ... |... |
+--------------+-------------------------------------+-----+
Genera gli embedding ed esegui una ricerca vettoriale
Genera gli incorporamenti dai dati immagine, quindi utilizzali per restituire
immagini simili utilizzando la ricerca vettoriale.
In uno scenario di produzione, ti consigliamo di creare un
indice vettoriale
prima di eseguire una ricerca vettoriale. Un indice vettoriale consente di eseguire la ricerca vettoriale
più rapidamente e restituisce risultati più approssimativi, ma il richiamo è
ridotto.
Per creare gli embedding ed eseguire una ricerca vettoriale:
Per creare la tabella products_embeddings, scegli una delle seguenti opzioni:
SQL
Incolla quanto segue nell'editor di query, quindi fai clic su
Esegui:
CREATE OR REPLACE TABLE cymbal_pets.products_embedding
AS (
SELECT
product_id,
AI.EMBED(image, endpoint => 'gemini-embedding-2').result AS embedding,
image
FROM cymbal_pets.products_mm
);
Ricevi un messaggio di conferma simile al seguente: This
statement created a new table named products_embedding.
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery per l'utilizzo di BigQuery DataFrames.
Per ulteriori informazioni, consulta la
documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione.
Per saperne di più, consulta Configura
ADC per un ambiente di sviluppo locale.
Per eseguire una ricerca vettoriale che restituisca immagini di prodotti simili
all'immagine di input specificata, scegli una delle seguenti opzioni:
SQL
Incolla quanto segue nell'editor di query, quindi fai clic su
Esegui:
SELECT *
FROM
VECTOR_SEARCH(
TABLE cymbal_pets.products_embedding,
'embedding',
query_value => AI.EMBED(
OBJ.MAKE_REF('gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/images/cozy-naps-cat-scratching-post-with-condo.png'),
endpoint => 'gemini-embedding-2').result);
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery per l'utilizzo di BigQuery DataFrames.
Per ulteriori informazioni, consulta la
documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione.
Per saperne di più, consulta Configura
ADC per un ambiente di sviluppo locale.
I risultati sono simili ai seguenti:
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
| query.embedding | base.product_id | base.embedding | base.image.uri | base.image.version | base.image.authorizer | base.image.details | distance |
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
| -0.0112330541 | 181 | -0.0112330541 | gs://cloud-samples-data/bigquery/ | 12345678910 | myproject.region.myconnection | {"gcs_metadata":{"content_type": | 0.0 |
| 0.0142525584 | | 0.0142525584 | tutorials/cymbal-pets/images/ | | | "image/png","md5_hash":"21234567hst16555w60j", | |
| 0.0135886827 | | 0.0135886827 | cozy-naps-cat-scratching-post-with-condo.png | | | "size":828318,"updated":1742492688982000}} | |
| 0.0149955815 | | 0.0149955815 | | | | | |
| ... | | ... | | | | | |
| | | | | | | | |
| | | | | | | | |
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
| -0.0112330541 | 187 | -0.0190353896 | gs://cloud-samples-data/bigquery/ | 23456789101 | myproject.region.myconnection | {"gcs_metadata":{"content_type": | 0.4216330832.. |
| 0.0142525584 | | 0.0116206668 | tutorials/cymbal-pets/images/ | | | "image/png","md5_hash":"7328728fhakd9937djo4", | |
| 0.0135886827 | | 0.0136198215 | cozy-naps-cat-scratching-post-with-bed.png | | | "size":860113,"updated":1742492688774000}} | |
| 0.0149955815 | | 0.0173457414 | | | | | |
| ... | | ... | | | | | |
| | | | | | | | |
| | | | | | | | |
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
| ... | ... | ... | ... | ... | ... | ... | ... |
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
Elaborare dati multimodali ordinati utilizzando array di valori ObjectRef
Questa sezione mostra come riassumere i manuali utente elaborando dati multimodali ordinati utilizzando array di valori ObjectRef. BigQuery può
analizzare più file non strutturati contemporaneamente utilizzando gli array.
Completa le seguenti attività:
Crea la tabella product_manuals in modo che contenga sia un file PDF per
il manuale del prodotto Crittercuisine Pro 5000 sia file PDF per ogni pagina
del manuale.
Crea una tabella che mappi il manuale ai suoi blocchi. Il manuale completo e
le pagine del manuale sono memorizzati in una colonna ObjectRef.
Analizza insieme una matrice di valori ObjectRef per restituire un singolo valore generato.
Analizza separatamente un array di valori ObjectRef e restituisce un valore generato per ogni valore dell'array.
Per elaborare dati multimodali ordinati utilizzando i valori ObjectRef:
Per creare la tabella product_manuals, scegli una delle seguenti opzioni:
SQL
Incolla quanto segue nell'editor di query, quindi fai clic su
Esegui:
CREATE OR REPLACE EXTERNAL TABLE `cymbal_pets.product_manuals`
WITH CONNECTION `us.cymbal_conn`
OPTIONS (
object_metadata = 'SIMPLE',
uris = [
'gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/documents/*.pdf',
'gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/document_chunks/*.pdf']);
Ricevi un messaggio di conferma simile al seguente: This
statement created a new table named product_manuals.
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery per l'utilizzo di BigQuery DataFrames.
Per ulteriori informazioni, consulta la
documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione.
Per saperne di più, consulta Configura
ADC per un ambiente di sviluppo locale.
Per scrivere i dati PDF nella tabella map_manual_to_chunks, scegli una delle seguenti opzioni:
SQL
Incolla quanto segue nell'editor di query, quindi fai clic su
Esegui:
-- Extract the file and chunks into a single table.
-- Store the chunks in the chunks column as array of ObjectRefs (ordered by page number)
CREATE OR REPLACE TABLE cymbal_pets.map_manual_to_chunks
AS
SELECT ARRAY_AGG(m1.ref)[0] manual, ARRAY_AGG(m2.ref ORDER BY m2.ref.uri) chunks
FROM cymbal_pets.product_manuals m1
JOIN cymbal_pets.product_manuals m2
ON
REGEXP_EXTRACT(m1.uri, r'.*/([^.]*).[^/]+')
= REGEXP_EXTRACT(m2.uri, r'.*/([^.]*)_page[0-9]+.[^/]+')
GROUP BY m1.uri;
Ricevi un messaggio di conferma simile al seguente: This
statement created a new table named map_manual_to_chunks.
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery per l'utilizzo di BigQuery DataFrames.
Per ulteriori informazioni, consulta la
documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione.
Per saperne di più, consulta Configura
ADC per un ambiente di sviluppo locale.
Per visualizzare i dati del PDF nella tabella map_manual_to_chunks, scegli una delle seguenti opzioni:
SQL
Incolla quanto segue nell'editor di query, quindi fai clic su
Esegui:
SELECT *
FROM cymbal_pets.map_manual_to_chunks;
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery per l'utilizzo di BigQuery DataFrames.
Per ulteriori informazioni, consulta la
documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione.
Per saperne di più, consulta Configura
ADC per un ambiente di sviluppo locale.
I risultati sono simili ai seguenti:
+-------------------------------------+--------------------------------+-----------------------------------+------------------------------------------------------+-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
| manual.uri | manual.version | manual.authorizer | manual.details | chunks.uri | chunks.version | chunks.authorizer | chunks.details |
+-------------------------------------+--------------------------------+-----------------------------------+------------------------------------------------------+-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
| gs://cloud-samples-data/bigquery/ | 1742492785900455 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"application/pef", | gs://cloud-samples-data/bigquery/ | 1745875761227129 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"application/pdf", |
| tutorials/cymbal-pets/documents/ | | | "md5_hash":"c9032b037693d15a33210d638c763d0e", | tutorials/cymbal-pets/documents/ | | | "md5_hash":"5a1116cce4978ec1b094d8e8b49a1d7c", |
| crittercuisine_5000_user_manual.pdf | | | "size":566105,"updated":1742492785941000}} | crittercuisine_5000_user_manual_page1.pdf | | | "size":504583,"updated":1745875761266000}} |
| | | | +-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
| | | | | crittercuisine_5000_user_manual_page1.pdf | 1745875760613874 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"application/pdf", |
| | | | | tutorials/cymbal-pets/documents/ | | | "md5_hash":"94d03ec65d28b173bc87eac7e587b325", |
| | | | | crittercuisine_5000_user_manual_page2.pdf | | | "size":94622,"updated":1745875760649000}} |
| | | | +-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
| | | | | ... | ... | ... | ... |
+-------------------------------------+--------------------------------+-----------------------------------+------------------------------------------------------+-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
Per generare una singola risposta da un modello Gemini in base all'analisi di
un array di valori ObjectRef, scegli una delle seguenti opzioni:
SQL
Incolla quanto segue nell'editor di query, quindi fai clic su
Esegui:
SELECT
AI.GENERATE((
'''Can you provide a page by page summary for the first 3 pages of the attached manual?
Only write one line for each page. The pages are provided in serial order''',
chunks),
endpoint => 'gemini-3.5-flash').result AS Response,
FROM cymbal_pets.map_manual_to_chunks;
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery per l'utilizzo di BigQuery DataFrames.
Per ulteriori informazioni, consulta la
documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione.
Per saperne di più, consulta Configura
ADC per un ambiente di sviluppo locale.
I risultati sono simili ai seguenti:
+---------------------------------------------------------------------------+
| Response |
+---------------------------------------------------------------------------+
| Here is a one-line summary for each of the first 3 pages: |
| |
| Page 1 introduces the CritterCuisine Pro 5000 automatic pet feeder and |
| presents the initial part of the manual's Table of Contents. |
| Page 2 lists the items included with the feeder and details important |
| safety precautions for its use. |
| Page 3 describes the feeder's key features, provides assembly and initial |
| setup instructions, and begins the programming guide with clock setting. |
+---------------------------------------------------------------------------+
Per generare più risposte da un modello Gemini in base all'analisi di
un array di valori ObjectRef, scegli una delle seguenti opzioni:
SQL
Incolla quanto segue nell'editor di query, quindi fai clic su
Esegui:
WITH results AS (
SELECT
AI.GENERATE((
'''Can you provide a page by page summary for the first 3 pages of the attached manual?
Only write one line for each page. The pages are provided in serial order''',
chunks),
endpoint => 'gemini-3.5-flash',
output_schema => 'page1_summary STRING, page2_summary STRING, page3_summary STRING').*
FROM cymbal_pets.map_manual_to_chunks)
SELECT page1_summary, page2_summary, page3_summary
FROM results;
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery per l'utilizzo di BigQuery DataFrames.
Per ulteriori informazioni, consulta la
documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione.
Per saperne di più, consulta Configura
ADC per un ambiente di sviluppo locale.
I risultati sono simili ai seguenti:
+-----------------------------------------------+-------------------------------------------+----------------------------------------------------+
| page1_summary | page2_summary | page3_summary |
+-----------------------------------------------+-------------------------------------------+----------------------------------------------------+
| This manual provides an overview of the | This section explains how to program | This page covers connecting the feeder to Wi-Fi |
| CritterCuisine Pro 5000 automatic pet feeder, | the feeder's clock, set feeding | using the CritterCuisine Connect app, remote |
| including its features, safety precautions, | schedules, copy and delete meal settings, | feeding, managing feeding schedules, viewing |
| assembly instructions, and initial setup. | manually feed your pet, record | feeding logs, receiving low food alerts, |
| | a voice message, and understand | updating firmware, creating multiple pet profiles, |
| | the low food level indicator. | sharing access with other users, and cleaning |
| | | and maintaining the feeder. |
+-----------------------------------------------+-------------------------------------------+----------------------------------------------------+
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
- Nella console Google Cloud , vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona quello che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID progetto, quindi fai clic su Chiudi per eliminare il progetto.
In alternativa, per conservare il progetto ed eliminare le risorse utilizzate in questo tutorial, segui questi passaggi:
Vai alla pagina BigQuery.
Nel riquadro a sinistra, espandi il progetto e fai clic su Set di dati.
Per il set di dati
bqml_tutorial, fai clic su Apri azioni > Elimina.Nella finestra di dialogo Elimina set di dati, fai clic su Elimina per confermare.
Nel riquadro a sinistra, fai clic su Connessioni.
Per la connessione
cymbal_conn, fai clic su Apri azioni > Elimina.Nella finestra di dialogo Elimina connessione, inserisci
delete, quindi fai clic su Elimina per confermare.
Passaggi successivi
- Per ulteriori informazioni su come lavorare con i dati multimodali, consulta Analizzare i dati multimodali in BigQuery.
- Per ulteriori informazioni sui valori
ObjectRef, consulta Utilizzare i valori ObjectRef. - Per scoprire come analizzare dati multimodali con SQL e la funzione
OBJ.LIST, consulta Analizzare dati multimodali con SQL.
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2026-09-17 UTC.