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 incorporações e é usada para impulsionar produtos do Google, incluindo a Pesquisa Google, o YouTube e o Google Play. Você pode usar a pesquisa vetorial para realizar pesquisas semânticas em grande escala ou fazer uma pesquisa híbrida que combina uma pesquisa semântica com uma pesquisa lexical (por palavra-chave). 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 uns dos outros 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_, estão próximos no espaço de embedding.

É possível notar que os clusters de animais e veículos estão posicionados bem distantes 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 eles são semanticamente, 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 por 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.
  • Recomendação de substitutos ou produtos correspondentes:melhore os aplicativos de e-commerce sugerindo alternativas com base no comportamento do cliente e na similaridade dos produtos.
  • Análise de dados de registros:ajuda as equipes a fazer a triagem proativa de anomalias em 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 de entidades e eliminação de duplicação:limpe e consolide os dados. Por exemplo, uma empresa de publicidade pode remover a duplicação de registros 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 incorporação da plataforma de agentes do Gemini Enterprise para gerar uma única incorporação da sua entrada.

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

  • Dados de texto.
  • Dados de imagem representados por valores ObjectRef.

Gerar uma tabela de embeddings

Você pode usar a função 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 Plataforma de Agentes. 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 embeddings 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 embedding desses dados usando um modelo de embedding do Agent Platform. Isso é útil se você quiser que o BigQuery mantenha seus incorporações quando os dados de origem forem atualizados regularmente.

É possível usar as seguintes funções de pesquisa para realizar uma pesquisa de vetor semântico ou uma pesquisa híbrida que combina uma pesquisa semântica com uma pesquisa lexical por palavras-chave:

  • VECTOR_SEARCH: faça uma pesquisa semântica de vetor ou híbrida usando SQL.

  • AI.SEARCH (pré-lançamento): faça uma pesquisa semântica ou híbrida para encontrar resultados semelhantes a uma string que você fornecer. Use essa função se a tabela tiver a geração autônoma de incorporação ativada.

  • AI.SIMILARITY: compare duas entradas calculando a similaridade de cosseno entre os embeddings delas. Essa função é útil se você quiser fazer um pequeno número de comparações e não tiver pré-calculado nenhum encadeamento. Use VECTOR_SEARCH quando o desempenho for essencial e você estiver trabalhando com um grande número de embeddings. Compare a funcionalidade delas para escolher a melhor opção para seu caso de uso.

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 de vetor, 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ê recebe uma cobrança 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, é necessário fornecer sua própria reserva para processar os jobs de gerenciamento de índice.

O armazenamento também é uma consideração para embeddings 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 será cobrado por tudo o 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