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:
É 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:
- Dados de texto.
- Dados de imagem representados por valores
ObjectRef. (Visualizar) - Dados de imagem representados por valores
ObjectRefRuntime.
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:
- Gere texto, imagens ou vídeo usando a função
AI.GENERATE_EMBEDDING. - Gerar e pesquisar embeddings multimodais
- Realizar pesquisa semântica e geração aumentada de recuperação
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.
Pesquisar
As seguintes funções de pesquisa estão disponíveis:
VECTOR_SEARCH: faça uma pesquisa vetorial usando SQL.AI.SEARCH(Prévia): pesquisa resultados semelhantes a uma string fornecida. É possível usar essa função se a tabela tiver a geração autônoma de incorporações ativada.AI.SIMILARITY(prévia): 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. UseVECTOR_SEARCHquando 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 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_SEARCHeAI.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çãoINFORMATION_SCHEMA.VECTOR_INDEXESpara 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
- Saiba mais sobre como criar um índice vetorial.
- Saiba como fazer uma pesquisa de vetor usando a função
VECTOR_SEARCH. - Saiba como fazer uma pesquisa semântica usando a
função
AI.SEARCH. - Saiba mais sobre a geração autônoma de incorporações.
- Siga o tutorial Pesquisar embeddings com pesquisa de vetor para aprender a criar um índice de vetor e, em seguida, faça uma pesquisa de vetor para embeddings com e sem o índice.
Faça o tutorial Realizar pesquisa semântica e geração aumentada de recuperação para aprender a realizar as seguintes tarefas:
- Gere embeddings de texto.
- Crie um índice de vetor nos embeddings.
- Realize uma pesquisa vetorial com os embeddings para procurar textos semelhantes.
- Realize a geração aumentada de recuperação (RAG, na sigla em inglês) usando resultados da pesquisa de vetor para aumentar a entrada do comando e melhorar os resultados.
Confira o tutorial Analisar PDFs em um pipeline de geração aumentada de recuperação para saber como criar um pipeline de RAG com base no conteúdo de PDF analisado.
Também é possível realizar pesquisas vetoriais usando o BigQuery DataFrames em Python. Para um notebook que ilustra essa abordagem, consulte Criar um aplicativo de pesquisa vetorial usando o BigQuery DataFrames.