Introdução aos embeddings e à pesquisa vetorial

Neste documento, você vai encontrar uma visão geral sobre embeddings e pesquisa vetorial no BigQuery. A pesquisa de vetor é uma técnica para comparar objetos semelhantes usando embeddings e é usada para impulsionar produtos do Google, incluindo a Pesquisa Google, o YouTube e o Google Play. Você pode usar a pesquisa vetorial para fazer pesquisas em grande escala. Ao usar índices vetoriais com a pesquisa vetorial, você pode aproveitar tecnologias fundamentais, como a indexação de arquivo invertido (IVF) e o algoritmo ScaNN.

A pesquisa vetorial é criada com base em embeddings. Os embeddings são vetores numéricos de alta dimensão que representam uma determinada entidade, como um texto ou um arquivo de áudio. Os modelos de machine learning (ML) usam embeddings para codificar semântica sobre essas entidades, facilitando o entendimento delas e sua comparação. Por exemplo, uma operação comum em modelos de clustering, classificação e recomendação é medir a distância entre vetores em um espaço de embedding para encontrar os itens semanticamente mais parecidos.

Esse conceito de semelhança semântica e distância em um espaço de embedding é demonstrado visualmente quando você considera como diferentes itens podem ser representados. Por exemplo, termos como gato, cachorro e leão, que representam tipos de animais, são agrupados próximos nesse espaço devido às características semânticas compartilhadas. Da mesma forma, termos como carro, caminhão e o termo mais genérico veículo formariam outro cluster. Isso é mostrado na imagem a seguir:

Conceitos semanticamente semelhantes, como _gato_, _cachorro_ e _leão_, ou _carro_, _caminhão_ e _veículo_, ficam próximos no espaço de embedding.

É possível notar que os clusters de animais e veículos estão posicionados bem longe um do outro. A separação entre os grupos ilustra o princípio de que quanto mais próximos os objetos estão no espaço de embedding, mais semelhantes semanticamente eles são, e quanto maiores as distâncias, maior a dissimilaridade semântica.

Casos de uso

A combinação de geração de embeddings e pesquisa vetorial permite muitos casos de uso interessantes. Confira alguns casos de uso possíveis:

  • Geração aumentada de recuperação (RAG):analise documentos, faça pesquisa vetorial em conteúdo e gere respostas resumidas a perguntas em linguagem natural usando modelos do Gemini, tudo no BigQuery. Para um notebook que ilustra esse cenário, consulte Criar um aplicativo de pesquisa vetorial usando o BigQuery DataFrames.
  • Recomendar substitutos ou produtos correspondentes:melhore os aplicativos de e-commerce sugerindo alternativas com base no comportamento do cliente e na semelhança entre os itens.
  • Análise de registros:ajuda as equipes a triar proativamente anomalias nos registros e acelerar as investigações. Você também pode usar esse recurso para enriquecer o contexto dos LLMs e melhorar os fluxos de trabalho de detecção de ameaças, análise forense e solução de problemas. Para um notebook que ilustra esse cenário, consulte Detecção e investigação de anomalias de registros com embeddings de texto e pesquisa vetorial do BigQuery.
  • Agrupamento e segmentação:segmente públicos-alvo com precisão. Por exemplo, uma rede de hospitais pode agrupar pacientes usando observações em linguagem natural e dados estruturados, ou um profissional de marketing pode segmentar anúncios com base na intenção da consulta. Para um notebook que ilustra esse cenário, consulte Create-Campaign-Customer-Segmentation.
  • Resolução e remoção de duplicação de entidades:limpe e consolide os dados. Por exemplo, uma empresa de publicidade pode remover registros duplicados de informações de identificação pessoal (PII), ou uma empresa imobiliária pode identificar endereços de correspondência iguais.

Gerar embeddings

As seções a seguir descrevem as funções que o BigQuery oferece para ajudar você a gerar ou trabalhar com incorporações.

Gerar embeddings únicos

É possível usar a função AI.EMBED com modelos de embedding da Vertex AI para gerar um único embedding da sua entrada.

A função AI.EMBED aceita os seguintes tipos de entrada:

Gerar uma tabela de embeddings

Você pode usar a AI.GENERATE_EMBEDDING para criar uma tabela com embeddings de todos os dados em uma coluna da sua tabela de entrada. Para todos os tipos de modelos com suporte, o AI.GENERATE_EMBEDDING trabalha com dados estruturados em tabelas padrão. Para modelos de incorporação multimodais, AI.GENERATE_EMBEDDING também funciona com conteúdo visual de colunas de tabelas padrão que contêm valores ObjectRef ou de tabelas de objetos.

Para modelos remotos, toda a inferência ocorre na Vertex AI. Para outros tipos de modelo, toda a inferência ocorre no BigQuery. Os resultados são armazenados no BigQuery.

Use os tópicos a seguir para testar a geração de embeddings no BigQuery ML:

Geração autônoma de embeddings

Você pode usar a geração autônoma de embeddings para simplificar o processo de criação, manutenção e consulta de embeddings. O BigQuery mantém uma coluna de incorporações na sua tabela com base em uma coluna de origem. Quando você adiciona ou modifica dados na coluna de origem, o BigQuery gera ou atualiza automaticamente a coluna de incorporação desses dados usando um modelo de incorporação da Vertex AI. Isso é útil se você quiser permitir que o BigQuery mantenha seus encapsulamentos quando os dados de origem forem atualizados regularmente.

As seguintes funções de pesquisa estão disponíveis:

Também é possível criar um índice vetorial usando a instrução CREATE VECTOR INDEX. Quando um índice vetorial é usado, as funções VECTOR_SEARCH e AI.SEARCH usam a técnica de pesquisa do Vizinho aproximado mais perto para melhorar o desempenho da pesquisa de vetor, mas reduzindo o recall e, portanto, retornando resultados mais aproximados. Sem um índice vetorial, essas funções usam a pesquisa de força bruta para medir a distância de cada registro. Também é possível usar a força bruta para encontrar resultados exatos mesmo quando um índice vetorial está disponível.

Preços

As funções VECTOR_SEARCH e AI.SEARCH e a instrução CREATE VECTOR INDEX usam os preços de computação do BigQuery.

  • Funções VECTOR_SEARCH e AI.SEARCH: você recebe uma cobrança pela pesquisa de similaridade usando preços sob demanda ou por edição.

    • Sob demanda: você paga pela quantidade de bytes verificados na tabela de base, no índice e na consulta de pesquisa.
    • Preços das edições: você recebe cobranças pelos slots necessários para concluir o job na edição da sua reserva. Cálculos de similaridade maiores e mais complexos geram mais cobranças.

  • Declaração CREATE VECTOR INDEX: não há cobrança pelo processamento necessário para criar e atualizar os índices vetoriais, desde que o tamanho total dos dados da tabela indexada esteja abaixo do limite por organização. Para permitir a indexação além desse limite, é preciso fornecer sua própria reserva para processar os jobs de gerenciamento de índice.

O armazenamento também é uma consideração para incorporações e índices. A quantidade de bytes armazenados como incorporações e índices está sujeita a custos de armazenamento ativo.

  • Os índices vetoriais geram custos de armazenamento quando estão ativos.
  • É possível encontrar o tamanho de armazenamento do índice usando a visualização INFORMATION_SCHEMA.VECTOR_INDEXES. Se o índice vetorial ainda não tiver 100% de cobertura, você ainda vai receber cobranças pelo que foi indexado. Use a visualização INFORMATION_SCHEMA.VECTOR_INDEXES para verificar a cobertura do índice.

Cotas e limites

Para mais informações, consulte Limites de índice vetorial e limites de funções de IA generativa.

Limitações

As consultas que contêm a função VECTOR_SEARCH ou AI.SEARCH não são aceleradas pelo BigQuery BI Engine.

A seguir