Neste tutorial, mostramos como usar consultas SQL, a função AI.GENERATE, a função AI.EMBED e o BigQuery DataFrames para analisar dados multimodais do conjunto de dados públicos da loja de animais Cymbal.
Com a função AI.GENERATE, é possível analisar qualquer combinação de dados estruturados e não estruturados. Já a função AI.EMBED permite criar embeddings de dados de texto ou imagem no BigQuery.
Para encontrar imagens semelhantes, use a função VECTOR_SEARCH. A função VECTOR_SEARCH permite fazer uma pesquisa semântica ou híbrida em embeddings para encontrar entidades semelhantes.
Este tutorial usa uma tabela de objetos persistente que armazena valores ObjectRef.
Objetivos
- Use valores
ObjectRefpara armazenar dados de imagem junto com dados estruturados em uma tabela do BigQuery. - Use a função
AI.GENERATEpara enriquecer seus dados. - Use a função
AI.EMBEDpara gerar embeddings com base em dados de imagem. - Use a função
VECTOR_SEARCHpara encontrar imagens semelhantes. - Use matrizes de valores
ObjectRefpara resumir manuais do usuário.
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do 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.
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Para mais informações sobre custos, consulte as seguintes páginas de preços:
Antes de começar
-
No console do Google Cloud , na página do seletor de projetos, selecione ou crie um projeto do Google Cloud .
Funções necessárias para selecionar ou criar um projeto
- Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
-
Ative as APIs BigQuery, BigQuery Connection, Cloud Storage e Agent Platform.
Funções necessárias para ativar APIs
Para ativar APIs, você precisa da permissão
serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão com o papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão com o papel de Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.
Funções exigidas
Para conseguir as permissões necessárias para concluir este tutorial, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Criar conjuntos de dados e tabelas:
Proprietário de dados do BigQuery (
roles/bigquery.dataOwner) -
Executar jobs do BigQuery:
Usuário de jobs do BigQuery (
roles/bigquery.jobUser) -
Criar conexões:
Administrador de conexão do BigQuery (
roles/bigquery.connectionAdmin) -
Conceder permissões à conta de serviço de uma conexão:
Administrador do IAM do projeto (
roles/resourcemanager.projectIamAdmin) -
Crie URLs que permitam ler e modificar objetos do Cloud Storage:
Administrador de ObjectRef do BigQuery (
roles/bigquery.objectRefAdmin)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Criar o conjunto de dados, as tabelas, os modelos e a conexão
Nesta seção, você vai criar o conjunto de dados, a conexão, as tabelas e os modelos usados neste tutorial.
Criar um conjunto de dados
Crie um conjunto de dados do BigQuery para conter os objetos criados neste tutorial. Para isso, escolha uma das seguintes opções:
Console
No console do Google Cloud , acesse a página BigQuery.
No painel à esquerda, clique em Explorer:

Se o painel esquerdo não aparecer, clique em Expandir painel esquerdo para abrir.
Em Explorer, expanda seu projeto e clique em Conjuntos de dados.
Na página Conjuntos de dados, clique em Criar conjunto de dados.
Na página Criar conjunto de dados, faça o seguinte:
Para o código do conjunto de dados, insira
cymbal_pets.Em Local dos dados, selecione US.
Mantenha as configurações padrão restantes e clique em Criar conjunto de dados.
SQL
Use a
instrução CREATE SCHEMA.
No console do Google Cloud , acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
CREATE SCHEMA
PROJECT_ID.cymbal_pets OPTIONS ( description = 'Dataset for BigQuery ML tutorial', location = 'US');Substitua
PROJECT_IDpela ID do seu projeto.Clique em Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
Você recebe uma mensagem de confirmação semelhante a esta: The dataset
named cymbal_pets was created.
Crie uma conexão
Crie uma conexão a recursos do Cloud e tenha acesso à conta de serviço da conexão. O BigQuery usa a conexão para acessar objetos no Cloud Storage.
No painel à esquerda, clique em Explorer:

No painel Explorer, clique em Conexões.
Na página Conexões, clique em Criar conexão.
Na página Fonte de dados externa, faça o seguinte:
Em Tipo de conexão, escolha Modelos remotos da Vertex AI, funções remotas, Lakehouse e Spanner (recurso do Cloud).
No campo ID da conexão, digite
cymbal_conn.Mantenha as configurações restantes como estão e clique em Criar conexão.
Na página Conexões, clique em
cymbal_conn.No painel Informações da conexão, copie o valor do ID da conta de serviço. Ele é necessário para as etapas a seguir.
Conceder permissões para usar modelos da Agent Platform
Conceda à conta de serviço da conexão a função de usuário da Agent Platform para acessar modelos remotos na plataforma. É necessário conceder essa função no mesmo projeto que você criou ou selecionou anteriormente. Conceder as
funções em um projeto diferente resulta no erro
bqcx-1234567890-abcd@gcp-sa-bigquery-condel.iam.gserviceaccount.com
does not have the permission to access resource.
Para conceder à conta de serviço acesso aos modelos da Agent Platform, siga estas etapas:
Acesse a página IAM e administrador.
Clique em Conceder acesso.
Na caixa de diálogo Conceder acesso, faça o seguinte:
No campo Novos principais, digite o ID da conta de serviço que você copiou anteriormente.
No campo Selecionar papel, escolha ou pesquise Usuário da Agent Platform.
Clique em Salvar.
Criar a tabela products
Para criar uma tabela padrão com as informações do produto de animais de estimação da Cymbal, siga estas etapas para carregar os dados do Cloud Storage:
No console do Google Cloud , acesse a página Studio.
Para criar a tabela
products, escolha uma das seguintes opções:SQL
Cole este comando no editor de consultas e clique em Executar:
LOAD DATA OVERWRITE cymbal_pets.products FROM FILES( format = 'avro', uris = [ 'gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/tables/products/products_*.avro']);
Você recebe uma mensagem de confirmação semelhante a esta:
Data was successfully loaded into managed table.BigQuery DataFrames
Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames. Para mais informações, consulte a documentação de referência do BigQuery DataFrames.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local.
Criar a tabela product_images
Para criar uma tabela de objetos (product_images) com as imagens de produtos de animais de estimação da Cymbal, selecione uma das seguintes opções:
* { 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.
Criar modelos
As instruções SQL neste tutorial mostram como chamar funções de IA que
não exigem a criação de um modelo. Se você estiver seguindo as instruções dos
BigQuery DataFrames, selecione essa opção para criar
modelos remotos
que representam um modelo do Gemini e um modelo de embedding multimodal.
SQL
Pule esta etapa.
BigQuery DataFrames
Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames.
Para mais informações, consulte a
documentação de referência do BigQuery DataFrames.
Para autenticar no BigQuery, configure o Application Default Credentials.
Para mais informações, consulte Configurar
o ADC para um ambiente de desenvolvimento local.
Criar uma tabela products_mm com dados multimodais
Crie uma tabela products_mm que contenha uma coluna image preenchida com imagens de produtos da tabela de objetos product_images. A coluna image criada é uma coluna STRUCT que usa valores ObjectRef para armazenar dados de imagem junto com dados estruturados em uma tabela padrão do BigQuery.
Um valor ObjectRef é um tipo STRUCT com um esquema predefinido que faz referência a objetos do Cloud Storage para análise multimodal.
Os valores ObjectRef podem ser processados por funções OBJ, funções de IA ou funções definidas pelo usuário em Python.
Para criar e preencher a tabela products_mm, siga estas etapas:
Para criar uma tabela products_mm, escolha uma das seguintes opções:
SQL
Cole este comando no editor de consultas e clique em
Executar:
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;
Você recebe uma mensagem de confirmação semelhante a esta: This
statement created a new table named products_mm.
BigQuery DataFrames
Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames.
Para mais informações, consulte a
documentação de referência do BigQuery DataFrames.
Para autenticar no BigQuery, configure o Application Default Credentials.
Para mais informações, consulte Configurar
o ADC para um ambiente de desenvolvimento local.
Para conferir os dados da coluna image, escolha uma das seguintes opções:
SQL
Cole este comando no editor de consultas e clique em
Executar:
SELECT product_name, image
FROM cymbal_pets.products_mm
BigQuery DataFrames
Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames.
Para mais informações, consulte a
documentação de referência do BigQuery DataFrames.
Para autenticar no BigQuery, configure o Application Default Credentials.
Para mais informações, consulte Configurar
o ADC para um ambiente de desenvolvimento local.
Os resultados são semelhantes aos seguintes:
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
| 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}} |
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
| ... | ... | ... | | ... |
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
Gerar informações do produto
Use a função AI.GENERATE
para gerar os seguintes dados dos produtos da loja de animais:
- Adicione uma coluna
image_description à tabela products_mm.
- Preencha as colunas
animal_type, search_keywords e subcategory da tabela products_mm.
- Execute uma consulta que retorne uma descrição de cada marca de produto e uma contagem do número de produtos dessa marca. A descrição da marca é gerada analisando as informações do produto de todos os produtos da marca, incluindo imagens do produto.
Com a função AI.GENERATE, é possível gerar texto ou saída estruturada de acordo com um esquema personalizado especificado. A função envia solicitações a um modelo do Gemini e retorna uma struct que contém seus dados gerados, a resposta completa do modelo e um status.
Para gerar os dados de produtos, siga estas etapas:
Para gerar as informações do produto usando AI.GENERATE, escolha uma das seguintes opções:
SQL
Para criar e preencher a coluna image_description, cole o seguinte no editor de consultas e clique em
Executar:
-- 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;
Você recebe uma mensagem de confirmação semelhante a esta: This
statement altered the table named products_mm.
BigQuery DataFrames
Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames.
Para mais informações, consulte a
documentação de referência do BigQuery DataFrames.
Para autenticar no BigQuery, configure o Application Default Credentials.
Para mais informações, consulte Configurar
o ADC para um ambiente de desenvolvimento local.
Para conferir o conteúdo da coluna image_description, cole o seguinte no editor de consultas e clique em Executar:
SELECT product_name, image_description
FROM cymbal_pets.products_mm;
Os resultados são semelhantes aos seguintes:
+--------------------------------+-------------------------------------+
| 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... |
| | |
| | |
+--------------------------------+-------------------------------------+
| ... | ... |
+--------------------------------+-------------------------------------+
Para atualizar as colunas animal_type, search_keywords e subcategory com dados gerados, escolha uma das seguintes opções:
SQL
Cole o seguinte no editor de consultas e clique em
Executar:
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;
Você recebe uma mensagem de confirmação semelhante a esta: This
statement modified 205 rows in products_mm.
BigQuery DataFrames
Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames.
Para mais informações, consulte a
documentação de referência do BigQuery DataFrames.
Para autenticar no BigQuery, configure o Application Default Credentials.
Para mais informações, consulte Configurar
o ADC para um ambiente de desenvolvimento local.
Para conferir os dados gerados, escolha uma das seguintes opções:
SQL
Cole o seguinte no editor de consultas e clique em
Executar:
SELECT
product_name,
image_description,
animal_type,
search_keywords,
subcategory,
FROM cymbal_pets.products_mm;
BigQuery DataFrames
Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames.
Para mais informações, consulte a
documentação de referência do BigQuery DataFrames.
Para autenticar no BigQuery, configure o Application Default Credentials.
Para mais informações, consulte Configurar
o ADC para um ambiente de desenvolvimento local.
Os resultados são semelhantes aos seguintes:
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
| 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 | |
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
| ... | ... | ... | ... | ... |
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
Para gerar uma descrição de cada marca de produto e uma contagem do número de produtos dessa marca, escolha uma das seguintes opções:
SQL
Cole o seguinte no editor de consultas e clique em
Executar:
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
Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames.
Para mais informações, consulte a
documentação de referência do BigQuery DataFrames.
Para autenticar no BigQuery, configure o Application Default Credentials.
Para mais informações, consulte Configurar
o ADC para um ambiente de desenvolvimento local.
Os resultados são semelhantes aos seguintes:
+--------------+-------------------------------------+-----+
| 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.. | |
+--------------+-------------------------------------+-----+
| ... | ... |... |
+--------------+-------------------------------------+-----+
Gerar embeddings e fazer uma pesquisa vetorial
Gere embeddings com base em dados de imagens e use-as para retornar imagens semelhantes usando a pesquisa de vetor.
Em um cenário de produção, recomendamos criar um índice vetorial antes de executar uma pesquisa vetorial. Um índice vetorial permite realizar a pesquisa de vetor mais rapidamente e retorna resultados mais aproximados, mas o recall é reduzido.
Para criar os embeddings e realizar uma pesquisa vetorial, siga estas etapas:
Para criar a tabela products_embeddings, escolha uma das seguintes opções:
SQL
Cole o seguinte no editor de consultas e clique em
Executar:
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
);
Você recebe uma mensagem de confirmação semelhante a esta: This
statement created a new table named products_embedding.
BigQuery DataFrames
Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames.
Para mais informações, consulte a
documentação de referência do BigQuery DataFrames.
Para autenticar no BigQuery, configure o Application Default Credentials.
Para mais informações, consulte Configurar
o ADC para um ambiente de desenvolvimento local.
Para realizar uma pesquisa vetorial que retorne imagens de produtos semelhantes à imagem de entrada, escolha uma das seguintes opções:
SQL
Cole o seguinte no editor de consultas e clique em
Executar:
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
Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames.
Para mais informações, consulte a
documentação de referência do BigQuery DataFrames.
Para autenticar no BigQuery, configure o Application Default Credentials.
Para mais informações, consulte Configurar
o ADC para um ambiente de desenvolvimento local.
Os resultados são semelhantes aos seguintes:
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
| 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 | | | | | |
| ... | | ... | | | | | |
| | | | | | | | |
| | | | | | | | |
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
| ... | ... | ... | ... | ... | ... | ... | ... |
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
Processar dados multimodais ordenados usando matrizes de valores ObjectRef
Esta seção mostra como resumir manuais do usuário processando dados multimodais ordenados usando matrizes de valores ObjectRef. O BigQuery pode analisar vários arquivos não estruturados simultaneamente usando matrizes.
Conclua as seguintes tarefas:
Crie a tabela product_manuals para que ela contenha um arquivo PDF do manual do produto Crittercuisine Pro 5000 e arquivos PDF de cada página desse manual.
Crie uma tabela que mapeie o manual para os blocos. O manual completo e as páginas do manual são armazenados em uma coluna ObjectRef.
Analise uma matriz de valores ObjectRef para retornar um único valor gerado.
Analise uma matriz de valores ObjectRef separadamente e retorne um valor gerado para cada valor da matriz.
Para processar dados multimodais ordenados usando valores ObjectRef, siga estas etapas:
Para criar a tabela product_manuals, escolha uma das seguintes opções:
SQL
Cole o seguinte no editor de consultas e clique em
Executar:
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']);
Você recebe uma mensagem de confirmação semelhante a esta: This
statement created a new table named product_manuals.
BigQuery DataFrames
Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames.
Para mais informações, consulte a
documentação de referência do BigQuery DataFrames.
Para autenticar no BigQuery, configure o Application Default Credentials.
Para mais informações, consulte Configurar
o ADC para um ambiente de desenvolvimento local.
Para gravar dados de PDF na tabela map_manual_to_chunks, escolha uma das seguintes opções:
SQL
Cole o seguinte no editor de consultas e clique em
Executar:
-- 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;
Você recebe uma mensagem de confirmação semelhante a esta: This
statement created a new table named map_manual_to_chunks.
BigQuery DataFrames
Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames.
Para mais informações, consulte a
documentação de referência do BigQuery DataFrames.
Para autenticar no BigQuery, configure o Application Default Credentials.
Para mais informações, consulte Configurar
o ADC para um ambiente de desenvolvimento local.
Para ver os dados do PDF na tabela map_manual_to_chunks, escolha uma das seguintes opções:
SQL
Cole o seguinte no editor de consultas e clique em
Executar:
SELECT *
FROM cymbal_pets.map_manual_to_chunks;
BigQuery DataFrames
Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames.
Para mais informações, consulte a
documentação de referência do BigQuery DataFrames.
Para autenticar no BigQuery, configure o Application Default Credentials.
Para mais informações, consulte Configurar
o ADC para um ambiente de desenvolvimento local.
Os resultados são semelhantes aos seguintes:
+-------------------------------------+--------------------------------+-----------------------------------+------------------------------------------------------+-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
| 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}} |
| | | | +-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
| | | | | ... | ... | ... | ... |
+-------------------------------------+--------------------------------+-----------------------------------+------------------------------------------------------+-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
Para gerar uma única resposta de um modelo do Gemini com base na análise de uma matriz de valores ObjectRef, escolha uma das seguintes opções:
SQL
Cole o seguinte no editor de consultas e clique em
Executar:
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
Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames.
Para mais informações, consulte a
documentação de referência do BigQuery DataFrames.
Para autenticar no BigQuery, configure o Application Default Credentials.
Para mais informações, consulte Configurar
o ADC para um ambiente de desenvolvimento local.
Os resultados são semelhantes aos seguintes:
+---------------------------------------------------------------------------+
| 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. |
+---------------------------------------------------------------------------+
Para gerar várias respostas de um modelo do Gemini com base na análise de uma matriz de valores ObjectRef, escolha uma das seguintes opções:
SQL
Cole o seguinte no editor de consultas e clique em
Executar:
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
Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames.
Para mais informações, consulte a
documentação de referência do BigQuery DataFrames.
Para autenticar no BigQuery, configure o Application Default Credentials.
Para mais informações, consulte Configurar
o ADC para um ambiente de desenvolvimento local.
Os resultados são semelhantes aos seguintes:
+-----------------------------------------------+-------------------------------------------+----------------------------------------------------+
| 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. |
+-----------------------------------------------+-------------------------------------------+----------------------------------------------------+
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
- No console Google Cloud , acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.
Como alternativa, para manter o projeto e excluir os recursos usados neste tutorial, siga estas etapas:
Acessar a página do BigQuery.
No painel à esquerda, expanda o projeto e clique em Conjuntos de dados.
No conjunto de dados
bqml_tutorial, clique em Abrir ações > Excluir.Na caixa de diálogo Excluir conjunto de dados, clique em Excluir para confirmar.
No painel à esquerda, clique em Conexões.
Na conexão
cymbal_conn, clique em Abrir ações > Excluir.Na caixa de diálogo Excluir conexão, digite
deletee clique em Excluir para confirmar.
A seguir
- Para mais informações sobre como trabalhar com dados multimodais, consulte Analisar dados multimodais no BigQuery.
- Para mais informações sobre valores
ObjectRef, consulte Trabalhar com valores ObjectRef. - Para saber como analisar dados multimodais com SQL e a função
OBJ.LIST, consulte Analisar dados multimodais com SQL.
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2026-09-17 UTC.