Este documento explica como realizar pesquisas de similaridade vetorial no AlloyDB for PostgreSQL
usando a extensão pgvector
. A pesquisa de similaridade vetorial, também conhecida como pesquisa de vizinhos mais próximos, permite-lhe encontrar os pontos de dados nos seus dados que são mais semelhantes a um determinado vetor de consulta.
Pode consultar a sua base de dados do AlloyDB para vetores semanticamente semelhantes depois de armazenar e indexar as incorporações. Use as funcionalidades de consulta pgvector
para encontrar os
vizinhos mais próximos de um vetor de incorporação.
Para mais informações sobre como armazenar incorporações vetoriais e criar um índice, consulte os artigos Armazene incorporações vetoriais e Crie índices, respetivamente.
Execute uma pesquisa de semelhanças com entrada vetorial
Para executar uma pesquisa de similaridade, especifique a tabela, a coluna de incorporação, a função de distância, a incorporação de destino e o número de linhas a devolver. Também pode usar a função embedding()
para traduzir texto num vetor e, em seguida, comparar o vetor com incorporações armazenadas através de operadores pgvector
.
Para encontrar os vizinhos semânticos mais próximos de um vetor de incorporação, pode executar a consulta de exemplo seguinte, em que define a mesma função de distância que usou durante a criação do índice.
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN DISTANCE_FUNCTION_QUERY ['EMBEDDING']
LIMIT ROW_COUNT
Substitua o seguinte:
TABLE
: a tabela que contém a incorporação com a qual comparar o texto.EMBEDDING_COLUMN
: a coluna que contém as incorporações armazenadas.DISTANCE_FUNCTION_QUERY
: a função de distância a usar com esta consulta. Escolha uma das seguintes opções com base na função de distância usada ao criar o índice:Distância L2:
<->
Produto interior:
<#>
Distância do cosseno:
<=>
EMBEDDING
: o vetor de incorporação para o qual quer encontrar os vizinhos semânticos armazenados mais próximos.ROW_COUNT
: o número de linhas a devolver.Especifique
1
se quiser apenas a melhor correspondência única.
Para mais informações sobre outros exemplos de consultas, consulte o artigo Consultar.
Execute uma pesquisa de semelhanças usando pgvector
com entrada de texto
Também pode usar a função embedding()
para traduzir o texto num vetor e encontrar as linhas da base de dados com as incorporações semanticamente mais semelhantes. A extensão do PostgreSQL pgvector
de origem é
personalizada para o AlloyDB e é denominada vector
. Aplica o vetor a um dos operadores de vizinho mais próximo, por exemplo, <=>
para a distância do cosseno.pgvector
Uma vez que embedding()
devolve uma matriz real
, tem de converter explicitamente a chamada embedding()
em vector
para usar estes valores com operadores pgvector
.
CREATE EXTENSION IF NOT EXISTS vector;
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN::vector
<=> google_ml.embedding('MODEL_IDVERSION_TAG', 'TEXT')
LIMIT ROW_COUNT
Substitua o seguinte:
MODEL_ID
: o ID do modelo a consultar.Se estiver a usar o Model Garden da Vertex AI, especifique
text-embedding-005
como o ID do modelo. Estes são os modelos baseados na nuvem que o AlloyDB pode usar para incorporações de texto. Para mais informações, consulte o artigo Incorporações de texto.Opcional:
VERSION_TAG
: a etiqueta de versão do modelo a consultar. Adicione@
antes da etiqueta.Se estiver a usar um dos
text-embedding-005
modelos em inglês com a Vertex AI, especifique uma das etiquetas de versão, por exemplo,text-embedding-005
, conforme indicado em Versões do modelo.A Google recomenda vivamente que especifique sempre a etiqueta de versão. Se não especificar a etiqueta de versão, o AlloyDB usa a versão do modelo mais recente, o que pode gerar resultados inesperados.
TEXT
: o texto a traduzir numa incorporação vetorial.
Para acelerar a pesquisa KNN filtrada, pode usar o motor de colunas do AlloyDB. Para mais informações, consulte os artigos Acelere a sua pesquisa vetorial filtrada (pré-visualização) e Configure o motor de colunas.
O que se segue?
- Faça o tutorial de pesquisa vetorial
- Otimize o desempenho das consultas vetoriais
- Métricas do índice vetorial
- Saiba como criar um assistente de compras inteligente com o AlloyDB, o pgvector e a gestão de pontos finais de modelos.