Neste tutorial, você vai aprender a 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 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, se alguma delas ainda não estiver ativada.
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 pelo papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão pelo 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 permitem 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 um papel, escolha ou pesquise Usuário da Agent Platform.
Clique em Salvar.
Crie 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.
Crie a tabela product_images.
Para criar uma tabela de objetos (product_images) com as imagens dos produtos da Cymbal Pets, selecione uma das seguintes opções:
SQL
Cole este comando no editor de consultas e clique em Executar:
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);
Você recebe uma mensagem de confirmação semelhante a esta: This
statement created a new table named product_images.
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 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 do pet shop:
- Adicione uma coluna
image_descriptionà tabelaproducts_mm. - Preencha as colunas
animal_type,search_keywordsesubcategoryda tabelaproducts_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 por você. 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 ver 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_keywordsesubcategorycom 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 de vetor 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 fornecida, 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_manualspara que ela contenha um arquivo PDF do manual do produtoCrittercuisine Pro 5000e 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
ObjectRefpara retornar um único valor gerado.Analisa uma matriz de valores
ObjectRefseparadamente e retorna 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.
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.
Para a 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.