Introdução à pesquisa de vetor
Neste documento, apresentamos uma visão geral da pesquisa de vetor no BigQuery. A pesquisa vetorial é uma técnica para comparar objetos semelhantes usando embeddings. Ela é usada para oferecer produtos do Google, incluindo a Pesquisa Google, o YouTube e o Google Play. Você pode usar a pesquisa vetorial para realizar pesquisas em grande escala. Ao usar índices de vetor com a pesquisa vetorial, você pode aproveitar tecnologias básicas, como indexação de arquivos invertidos (IVF, na sigla em inglês) e o algoritmo ScaNN.
A pesquisa vetorial é criada com 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 itens diferentes podem ser plotados. 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 abaixo:
Os clusters de animais e veículos estão posicionados bem afastados uns dos outros. 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 semanticamente semelhantes eles são, e distâncias maiores indicam maior dissimilaridade semântica.
O BigQuery oferece uma experiência completa para gerar embeddings, indexar conteúdo e realizar pesquisas vetoriais. É possível concluir cada uma dessas tarefas de forma independente ou em uma única jornada. Para conferir um tutorial que mostra como concluir todas essas tarefas, consulte Realizar pesquisa semântica e geração aumentada de recuperação.
Para realizar uma pesquisa de vetor usando SQL, use a
função VECTOR_SEARCH
.
Você pode criar um índice de vetor usando a
instrução CREATE VECTOR INDEX
.
Quando um índice vetorial é usado, VECTOR_SEARCH
usa a técnica de pesquisa do
Vizinho aproximado mais perto
para melhorar o desempenho da pesquisa vetorial, mas reduzindo o
recall
e, portanto, retornando resultados mais aproximados. Sem um índice de vetor,
VECTOR_SEARCH
usa
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.
Este documento se concentra na abordagem SQL, mas você também pode realizar pesquisas de vetor usando o BigQuery DataFrames no Python. Para conferir um notebook que ilustra a abordagem do Python, consulte Criar um aplicativo de pesquisa vetorial usando DataFrames do BigQuery.
Casos de uso
Com a combinação de geração de embeddings e pesquisa de vetor, temos muitos casos de uso interessantes. Confira alguns casos de uso possíveis:
- Geração aumentada de recuperação (RAG, na sigla em inglês):analise documentos, realize pesquisas vetoriais no conteúdo e gere respostas resumidas a perguntas em linguagem natural usando modelos do Gemini, tudo isso no BigQuery. Para conferir um notebook que ilustra esse cenário, consulte Criar um aplicativo de pesquisa de vetor usando os DataFrames do BigQuery.
- Recomendar produtos substitutos ou correspondentes:melhore as aplicações de e-commerce sugerindo alternativas de produtos com base no comportamento do cliente e na semelhança do produto.
- Análise de registros:ajude as equipes a triar proativamente as anomalias nos registros e acelerar as investigações. Você também pode usar esse recurso para enriquecer o contexto de LLMs, a fim de melhorar a detecção de ameaças, a análise forense e os fluxos de trabalho de solução de problemas. Para conferir um notebook que ilustra esse cenário, consulte Detecção e investigação de anomalias de registro com embeddings de texto e pesquisa de vetor do BigQuery.
- Agrupamento e segmentação:segmente os públicos-alvo com precisão. Por exemplo, uma rede de hospitais pode agrupar pacientes usando notas de linguagem natural e dados estruturados, ou um profissional de marketing pode segmentar anúncios com base na intenção da consulta. Para conferir um notebook que ilustra esse cenário, consulte Create-Campaign-Customer-Segmentation.
- Resolução e eliminação de duplicação de entidades:limpe e consolide os dados. Por exemplo, uma empresa de publicidade pode eliminar registros de informações de identificação pessoal (PII) ou uma empresa imobiliária pode identificar endereços de correspondência correspondentes.
Preços
A função VECTOR_SEARCH
e a instrução CREATE VECTOR INDEX
usam os preços de computação do BigQuery.
Função
VECTOR_SEARCH
: você vai receber cobranças pela pesquisa de similaridade usando preços sob demanda ou edições.- Sob demanda: você é cobrado pela quantidade de bytes verificados na tabela base, no índice e na consulta de pesquisa.
Preços das edições: você vai receber cobranças pelos slots necessários para concluir o job na edição de 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 índices vetoriais, desde que o tamanho total dos dados da tabela indexada esteja abaixo do limite por organização. Para oferecer suporte à 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 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 por tudo o que foi indexado. É possível verificar a cobertura do índice usando a visualizaçãoINFORMATION_SCHEMA.VECTOR_INDEXES
.
Cotas e limites
Para mais informações, consulte Limites de índice vetorial.
Limitações
As consultas que contêm a função VECTOR_SEARCH
não são aceleradas pelo BigQuery BI Engine.
A seguir
- Saiba mais sobre como criar um índice vetorial.
- Saiba como realizar uma pesquisa de vetor usando a função
VECTOR_SEARCH
. - 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.
Teste 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.