Visão geral
Com a pesquisa vetorial do BigQuery, você encontra os itens mais semelhantes no conjunto de dados comparando as representações matemáticas dos atributos, conhecidas como embeddings, em vez de usar correspondências exatas de palavras-chave.
Você já se pegou comprando algo pela Internet e se surpreendeu com a capacidade de um site recomendar produtos incrivelmente parecidos com o que você está procurando, mesmo que você não consiga descrevê-los? Isso geralmente é feito com a pesquisa vetorial, uma técnica que vai além da simples correspondência de palavras-chave. Em vez de apenas pesquisar texto, a pesquisa vetorial analisa os atributos e as características de um item. Assim, ela encontra os resultados conceitual ou visualmente semelhantes. Neste laboratório, você vai ter experiência prática com os recursos de pesquisa vetorial escalonáveis e avançados, integrados ao BigQuery.
Para uma loja global como a Cymbal E-commerce, essa tecnologia é revolucionária para a experiência do cliente. Imagine um cliente pesquisando "jaqueta leve para caminhada". Uma pesquisa tradicional por palavras-chave pode não encontrar o produto perfeito se a descrição usar "corta-vento" em vez de "jaqueta". Com a pesquisa vetorial, a Cymbal analisa embeddings (representações numéricas de imagens e descrições de produtos) para retornar uma lista de todos os resultados relevantes, mesmo que a terminologia não seja exata. Isso ajuda os clientes a encontrar os produtos que querem mais rápido. Assim, eles ficam mais satisfeitos, e as vendas aumentam. Vamos criar isso para a Cymbal!
Neste laboratório, você vai aprender a usar o BigQuery para realizar pesquisas vetoriais.
**Observação: neste laboratório, você vai usar um banco de dados público de patentes em vez das listagens de produtos e descrições detalhadas da Cymbal, por motivos de privacidade. O processo é o mesmo. Você só precisa mudar os nomes do conjunto de dados, da tabela e da coluna de acordo com seus dados de origem.
Atividades deste laboratório
- Usar um modelo de ML para gerar embeddings
- Criar um índice vetorial
- Usar a função
VECTOR_SEARCH nos embeddings criados
Configuração e requisitos
Antes de clicar no botão Começar o Laboratório
Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é iniciado quando você clica em Começar o laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.
Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.
O que é necessário
Veja os requisitos para concluir o laboratório:
- Acesso a um navegador de Internet padrão (recomendamos o Chrome).
- tempo disponível para concluir as atividades.
Observação: não use seu projeto ou conta pessoal do Google Cloud neste laboratório.
Observação: se você estiver usando um Pixelbook, faça o laboratório em uma janela anônima.
Fazer login no console do Google Cloud
- Na guia ou janela do navegador desta sessão de laboratório, copie o Nome de usuário do painel Detalhes da conexão e clique no botão Abrir console do Google.
Observação: se precisar escolher uma conta, clique em Usar outra conta.
- Cole o nome de usuário e a senha quando solicitado.
- Clique em Próxima.
- Aceite os Termos e Condições.
Como a conta é temporária, ela só dura até o final deste laboratório:
- não adicione opções de recuperação.
- não se inscreva em testes.
- Assim que o console abrir, clique no menu de navegação (
) no canto superior esquerdo para acessar a lista de serviços.

Verificar ou ativar as APIs necessárias
-
No console do Google Cloud, digite API BigQuery na barra de pesquisa superior.
-
Clique no resultado de API BigQuery em Marketplace.
-
Se a API ainda não estiver ativada, clique em Ativar.
-
Repita as etapas de 1 a 3 para a API BigQuery Connection, e novamente para a API Vertex AI.
Tarefa 1: criar o modelo remoto para geração de embedding de texto
Nesta tarefa, você vai criar um modelo de geração de embeddings de texto da Vertex AI, necessário para uma pesquisa vetorial e para criar os embeddings do banco de dados.
Criar um modelo de IA
-
No Menu de navegação (
) do console do Google Cloud, acesse BigQuery > Studio.
-
Selecione a guia Consulta sem título.
-
Insira o código a seguir:
CREATE OR REPLACE MODEL `bqml_lab.embedding_model`
REMOTE WITH CONNECTION DEFAULT
OPTIONS (ENDPOINT = 'text-embedding-005');
Clique em Verificar meu progresso para conferir o objetivo.
Criar um modelo de ML
-
Clique em Executar. A consulta vai levar alguns minutos. Se você receber um erro relacionado à falta de uma conta de serviço, basta executar a mesma consulta novamente.
-
Substitua a consulta pelo código a seguir:
CREATE OR REPLACE TABLE `bqml_lab.embeddings` AS
SELECT * FROM ML.GENERATE_EMBEDDING( MODEL `bqml_lab.embedding_model`,
( SELECT
title,
url,
abstract AS content
FROM
`bqml_lab.patent_data`
LIMIT 200000))
WHERE LENGTH(ml_generate_embedding_status) = 0;
-
Clique em Executar. A consulta leva cerca de 5 minutos.
Clique em Verificar meu progresso para conferir o objetivo.
Criar uma tabela chamada "embeddings" usando um modelo do BigQuery ML
-
Substitua a consulta pelo código a seguir:
CREATE OR REPLACE VECTOR INDEX my_index
ON `bqml_lab.embeddings`(ml_generate_embedding_result)
OPTIONS(index_type = 'IVF',
distance_type = 'COSINE',
ivf_options = '{"num_lists":500}');
-
Clique em Executar. A consulta vai levar alguns minutos.
Clique em Verificar meu progresso para conferir o objetivo.
Criar um índice vetorial na tabela "embeddings"
-
Insira o código a seguir para verificar o status do índice:
SELECT table_name,
index_name,
index_status,
coverage_percentage,
last_refresh_time,
disable_reason
FROM `{{{project_0.project_id | "Project ID"}}}.bqml_lab.INFORMATION_SCHEMA.VECTOR_INDEXES`;
-
Clique em Executar. O índice está pronto para ser usado quando o valor da coluna coverage_percentage é maior que 0, e o valor da coluna last_refresh_time não é NULL. Se o índice não estiver pronto na primeira vez que você executar a consulta acima, execute-a de novo de vez em quando para verificar o status do índice. Continue o laboratório quando os resultados indicarem que o índice está pronto.
Realizar uma pesquisa de similaridade de texto usando o índice vetorial
Você vai usar a função VECTOR_SEARCH para pesquisar entradas relevantes para o termo de pesquisa, que, neste exemplo, é a frase "improving online shopper search results". O modelo usado para gerar os embeddings nesta consulta precisa ser o mesmo usado para gerar os embeddings na tabela que você está comparando. Caso contrário, os resultados da pesquisa não serão precisos.
-
Na guia de consulta do BigQuery, substitua o código pelo seguinte:
SELECT query.query, base.title, base.content
FROM VECTOR_SEARCH(
TABLE `bqml_lab.embeddings`, 'ml_generate_embedding_result',
(
SELECT ml_generate_embedding_result, content AS query
FROM ML.GENERATE_EMBEDDING(
MODEL `bqml_lab.embedding_model`,
(SELECT 'improving online shopper search results' AS content))
),
top_k => 5, options => '{"fraction_lists_to_search": 0.01}');
-
Clique em Executar.
-
Opcional: se quiser tentar outras pesquisas, substitua 'improving online shopper search results' no código por outra pesquisa.
Clique em Verificar meu progresso para conferir o objetivo.
Realizar uma pesquisa de similaridade de texto usando o índice vetorial
Parabéns!
Você criou um modelo de IA, embeddings para seus dados, um índice vetorial e fez consultas usando o índice para encontrar os itens mais relevantes para seu termo de pesquisa.