Introdução à pesquisa vetorial
Este documento oferece uma vista geral da pesquisa vetorial no BigQuery. A pesquisa vetorial é uma técnica para comparar objetos semelhantes através de incorporações e é usada para alimentar os produtos Google, incluindo a Pesquisa Google, o YouTube e o Google Play. Pode usar a pesquisa vetorial para fazer pesquisas em grande escala. Quando usa índices vetoriais com a pesquisa vetorial, pode tirar partido de tecnologias fundamentais, como a indexação de ficheiros invertidos (IVF) e o algoritmo ScaNN.
A pesquisa vetorial baseia-se em incorporações. As incorporações são vetores numéricos de alta dimensão que representam uma determinada entidade, como um fragmento de texto ou um ficheiro de áudio. Os modelos de aprendizagem automática usam incorporações para codificar a semântica sobre essas entidades, o que facilita o raciocínio e a comparação das mesmas. Por exemplo, uma operação comum nos modelos de clustering, classificação e recomendação é medir a distância entre vetores num espaço de incorporação para encontrar itens semanticamente mais semelhantes.
Este conceito de semelhança semântica e distância num espaço de incorporação é demonstrado visualmente quando considera como diferentes itens podem ser representados graficamente. Por exemplo, termos como gato, cão e leão, que representam tipos de animais, estão agrupados próximos neste espaço devido às suas características semânticas partilhadas. Da mesma forma, termos como carro, camião e o termo mais genérico veículo formariam outro cluster. Isto é apresentado na imagem seguinte:
Pode ver que os grupos de animais e veículos estão posicionados muito distantes uns dos outros. A separação entre os grupos ilustra o princípio de que quanto mais próximos estiverem os objetos no espaço de incorporação, mais semelhantes são semanticamente e as distâncias maiores indicam uma maior dissimilaridade semântica.
O BigQuery oferece uma experiência integral para gerar incorporações, indexar conteúdo e realizar pesquisas vetoriais. Pode concluir cada uma destas tarefas de forma independente ou num único percurso. Para ver um tutorial que mostra como concluir todas estas tarefas, consulte o artigo Realize uma pesquisa semântica e uma geração aumentada de recuperação.
Para executar uma pesquisa vetorial através de SQL, usa a
função VECTOR_SEARCH
.
Opcionalmente, pode criar um índice vetorial usando a declaração CREATE VECTOR INDEX
.
Quando é usado um índice vetorial, o VECTOR_SEARCH
usa a técnica de pesquisa de vizinho mais próximo aproximado para melhorar o desempenho da pesquisa vetorial, com a contrapartida de reduzir a relembrança e, por isso, devolver resultados mais aproximados. Sem um índice vetorial,
o VECTOR_SEARCH
usa a
pesquisa de força bruta
para medir a distância de cada registo. Também pode optar por usar a força bruta para obter resultados exatos, mesmo quando está disponível um índice vetorial.
Este documento foca-se na abordagem SQL, mas também pode realizar pesquisas vetoriais usando DataFrames do BigQuery em Python. Para ver um bloco de notas que ilustra a abordagem Python, consulte o artigo Crie uma aplicação de pesquisa vetorial com DataFrames do BigQuery.
Exemplos de utilização
A combinação da geração de incorporações e da pesquisa vetorial permite muitos exemplos de utilização interessantes. Seguem-se alguns exemplos de utilização possíveis:
- Geração aumentada de recuperação (RAG): analise documentos, faça uma pesquisa vetorial sobre o conteúdo e gere respostas resumidas a perguntas em linguagem natural usando os modelos Gemini, tudo no BigQuery. Para ver um bloco de notas que ilustra este cenário, consulte o artigo Crie uma aplicação de pesquisa vetorial com DataFrames do BigQuery.
- Recomendar substitutos de produtos ou produtos correspondentes: melhore as aplicações de comércio eletrónico sugerindo alternativas de produtos com base no comportamento do cliente e na semelhança dos produtos.
- Análise de registos: ajuda as equipas a triarem proativamente anomalias nos registos e a acelerarem as investigações. Também pode usar esta capacidade para enriquecer o contexto dos MDIs/CEs, de modo a melhorar a deteção de ameaças, a análise forense e os fluxos de trabalho de resolução de problemas. Para ver um bloco de notas que ilustra este cenário, consulte o artigo Deteção e investigação de anomalias de registo com incorporações de texto + pesquisa vetorial do BigQuery.
- Agrupamento e segmentação: segmente públicos-alvo com precisão. Por exemplo, uma cadeia de hospitais pode agrupar pacientes através de notas de linguagem natural e dados estruturados, ou um profissional de marketing pode segmentar anúncios com base na intenção da consulta. Para ver um bloco de notas que ilustra este cenário, consulte o artigo Create-Campaign-Customer-Segmentation.
- Resolução de entidades e remoção de duplicados: limpe e consolide os dados. Por exemplo, uma empresa de publicidade pode remover duplicados de registos de informações de identificação pessoal (IIP) ou uma empresa imobiliária pode identificar moradas correspondentes.
Preços
A função VECTOR_SEARCH
e a declaração CREATE VECTOR INDEX
usam os preços de computação do BigQuery.
VECTOR_SEARCH
função: é-lhe cobrado o valor da pesquisa de semelhanças, usando os preços a pedido ou das edições.- A pedido: é-lhe cobrado o número de bytes analisados na tabela base, no índice e na consulta de pesquisa.
Preços das edições: é cobrado o número de espaços necessários para concluir a tarefa na edição da reserva. Os cálculos de semelhança maiores e mais complexos geram mais custos.
CREATE VECTOR INDEX
: Não existe qualquer custo para o processamento necessário para criar e atualizar os seus índices vetoriais, desde que o tamanho total dos dados da tabela indexada esteja abaixo do seu limite por organização. Para suportar a indexação além deste limite, tem de fornecer a sua própria reserva para processar as tarefas de gestão de índices.
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 ativos.
- Os índices vetoriais incorrem em custos de armazenamento quando estão ativos.
- Pode encontrar o tamanho do armazenamento do índice através da vista
INFORMATION_SCHEMA.VECTOR_INDEXES
. Se o índice vetorial ainda não tiver uma cobertura de 100%, continua a ser cobrado por tudo o que foi indexado. Pode verificar a cobertura do índice através da vistaINFORMATION_SCHEMA.VECTOR_INDEXES
.
Quotas e limites
Para mais informações, consulte o artigo Limites do índice vetorial.
Limitações
As consultas que contêm a função VECTOR_SEARCH
não são aceleradas pelo
BigQuery BI Engine.
O que se segue?
- Saiba como criar um índice vetorial.
- Saiba como realizar uma pesquisa vetorial usando a
VECTOR_SEARCH
função. - Experimente o tutorial Incorporações de pesquisa com pesquisa vetorial para saber como criar um índice vetorial e, em seguida, fazer uma pesquisa vetorial de incorporações com e sem o índice.
Experimente o tutorial Realizar pesquisa semântica e geração aumentada de recuperação para saber como realizar as seguintes tarefas:
- Gerar incorporações de texto.
- Crie um índice vetorial nas incorporações.
- Realizar uma pesquisa vetorial com as incorporações para pesquisar texto semelhante.
- Realizar a geração aumentada de recuperação (RAG) através dos resultados da pesquisa vetorial para aumentar a entrada de comandos e melhorar os resultados.
Experimente o tutorial Analise PDFs num pipeline de geração aumentada de recuperação para saber como criar um pipeline de RAG com base no conteúdo de PDFs analisados.