Visão geral da pesquisa vetorial do Spanner

Nesta página, descrevemos a pesquisa vetorial e como ela funciona no Spanner.

A pesquisa vetorial é um recurso integrado de alto desempenho que permite a pesquisa semântica e a correspondência de similaridade em dados vetoriais de alta dimensão. Ao armazenar e indexar embeddings vetoriais diretamente no banco de dados transacional, o Spanner elimina a necessidade de bancos de dados vetoriais separados e pipelines de ETL complexos.

Principais conceitos

Esta seção apresenta os seguintes conceitos principais da pesquisa vetorial:

  • Embeddings de vetor
  • Métodos de pesquisa (KNN e ANN)
  • Funções de distância

Embeddings de vetor

Os embeddings de vetor são representações numéricas de alta dimensão de dados não estruturados. Eles são gerados com base em dados não estruturados usando modelos de machine learning. Por exemplo, é possível usar a API de embedding de texto da Vertex AI para gerar, armazenar e atualizar embeddings de texto para dados armazenados no Spanner.

Métodos de pesquisa

O Spanner oferece suporte a dois métodos para encontrar vetores semelhantes:

  • Vizinho k-mais próximo (KNN): realiza uma pesquisa exata calculando a distância entre a consulta e todos os vetores no conjunto de dados. Ele oferece um recall mais preciso, mas é caro do ponto de vista computacional para conjuntos de dados muito grandes.

  • Vizinho mais próximo aproximado (ANN): usa um índice de vetor (baseado no algoritmo ScaNN do Google) para encontrar correspondências rapidamente em um grande número de vetores. Ele troca uma pequena quantidade de acurácia (recall) por ganhos em velocidade e escalonabilidade.

Principais recursos

  • Escalabilidade: oferece suporte a bilhões de vetores para pesquisa ANN não particionada ou trilhões de vetores para cargas de trabalho KNN particionadas.

  • Banco de dados e mecanismo de IA unificados: use a função GoogleSQL ML.PREDICT ou PostgreSQL spanner.ML_PREDICT_ROW para gerar embeddings de modelos da Vertex AI diretamente no fluxo de consultas.

  • Filtragem inline: combine de maneira eficiente a pesquisa vetorial com filtros de metadados estruturados (por exemplo, "Encontrar imagens semelhantes em que categoria = 'sapatos' e preço < 100") sem perder desempenho.

  • Integração com o LangChain: o suporte integrado ao LangChain permite criar aplicativos de geração aumentada de recuperação (RAG) usando o Spanner como o repositório de vetores.

Recursos de pesquisa híbrida

A pesquisa vetorial é mais eficiente quando combinada com outros recursos de dados do Spanner:

Combinação Benefício
Pesquisa vetorial com filtragem SQL Combine de maneira eficiente a pesquisa vetorial com filtros (por exemplo, "Encontrar imagens semelhantes em que categoria = 'sapatos' e preço < 100").
Pesquisa vetorial + pesquisa de texto completo Combine a similaridade semântica com a precisão das palavras-chave usando a fusão de classificação recíproca (RRF) para uma relevância de pesquisa superior.
Vetor + gráfico Use a pesquisa vetorial para encontrar pontos de entrada (nós) relevantes em um grafo de propriedades e percorrer relacionamentos complexos.

A seguir