Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A extensão pgvector adiciona uma pesquisa de similaridade de vetor de código aberto ao PostgreSQL.
Este artigo nos apresenta recursos extras habilitados pelo pgvector. Ele aborda os conceitos de similaridade e inserções de vetores e fornece diretrizes sobre como habilitar a extensão pgvector. Aprendemos sobre como criar, armazenar e consultar os vetores.
Talvez você também queira consultar o README oficial do projeto.
Habilitar extensão
Antes de habilitar a pgvector na sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL, você precisa adicioná-la à lista de permissões, conforme descrito em Como usar extensões do PostgreSQL, e verificar se ela foi adicionada corretamente executando SHOW azure.extensions;.
Importante
Observe que embora toda a comunidade PostgreSQL tenda a se referir a esta extensão como pgvector, o nome do binário e a extensão em si são simplesmente vector. Leve isso em consideração, porque esse é o nome que você deve usar para incluí-lo na lista de permissões ou criá-lo em qualquer banco de dados por meio do comando CREATE EXTENSION.
Em seguida, instale a extensão conectando-se ao banco de dados de destino e executando o comando CREATE EXTENSION. Você precisará repetir o comando separadamente para cada banco de dados no qual deseja que a extensão fique disponível.
CREATE EXTENSION vector;
Observação
Para remover a extensão do banco de dados conectado no momento, use DROP EXTENSION vector;.
Conceitos
Similaridade de vetor
A similaridade de vetor é um método usado para medir o quão semelhantes são dois itens, representando-os como vetores, que são uma série de números. Os vetores geralmente são usados para representar pontos de dados, em que cada elemento do vetor representa um recurso ou atributo do ponto de dados.
A similaridade de vetor é comumente calculada usando métricas de distância, como similaridade de Euclidean distance ou cosine. A distância euclidiana mede a distância em linha reta entre dois vetores no espaço n-dimensional, enquanto a similaridade de cosseno mede o cosseno do ângulo entre dois vetores. Os valores das métricas de similaridade normalmente variam entre 0 e 1, com valores higher que indicam maior semelhança entre os vetores.
A similaridade de vetor é amplamente usada em vários aplicativos, como sistemas de recomendação, classificação de texto, reconhecimento de imagem e clustering. Por exemplo, em sistemas de recomendação, a similaridade de vetor pode ser usada para identificar itens semelhantes com base nas preferências do usuário. Na classificação de texto, a similaridade de vetor pode ser usada para determinar a similaridade entre dois documentos ou frases com base em suas representações de vetor.
Inserções
Uma inserção é uma técnica de avaliação da "relação" de texto, imagens, vídeos ou outros tipos de informações. A avaliação permite que os modelos de machine learning identifiquem com eficiência as relações e as semelhanças entre os dados, permitindo que os algoritmos identifiquem padrões e façam previsões precisas. Por exemplo, em uma tarefa de análise de sentimento, palavras com inserções semelhantes podem ter pontuações de sentimento semelhantes.
Introdução
Crie uma tabela tblvector com uma coluna embedding do tipo vector(3) que representa um vetor tridimensional.
CREATE TABLE tblvector(
id bigserial PRIMARY KEY,
embedding vector(3)
);
Depois de gerar uma inserção usando um serviço como a API do OpenAI, você poderá armazenar o vetor resultante em seu banco de dados. Definir um vetor como vector(3) designa [x,y,z] coordinates no plano tridimensional. O comando insere cinco novas linhas na tabela tblvector com as inserções fornecidas.
INSERT INTO tblvector (id, embedding) VALUES (1, '[1,2,3]'), (2, '[4,5,6]'), (3, '[5,4,6]'), (4, '[3,5,7]'), (5, '[7,8,9]');
Usando a instrução INSERT INTO ... ON CONFLICT, você pode especificar uma ação alternativa, como atualizar registros que correspondam aos critérios. Ele permite que você lide com possíveis conflitos de maneira mais efetiva e eficaz.
INSERT INTO tblvector (id, embedding) VALUES (1, '[1,2,3]'), (2, '[4,5,6]')
ON CONFLICT (id) DO UPDATE SET embedding = EXCLUDED.embedding;
O comando DELETE remove linhas de uma tabela especificada com base nas condições definidas na cláusula WHERE. Quando a cláusula WHERE não está presente, todas as linhas na tabela são excluídas.
DELETE FROM tblvector WHERE id = 1;
Para recuperar vetores e calcular a similaridade, use instruções SELECT e os operadores de vetor internos. Por exemplo, a consulta calcula a distância euclidiana (distância L2) entre o vetor especificado e os vetores armazenados na tabela tblvector, classifica os resultados pela distância calculada e retorna os cinco itens mais próximos mais semelhantes.
SELECT * FROM tblvector
ORDER BY embedding <-> '[3,1,2]'
LIMIT 5;
A consulta usa o operador "<->", que é o "operador de distância" usado para calcular a distância entre dois vetores em um espaço multidimensional. A consulta retorna todas as linhas com a distância inferior a 6 do vetor [3,1,2].
SELECT * FROM tblvector WHERE embedding <-> '[3,1,2]' < 6;
O comando recupera o valor médio da coluna "embedding" da tabela "tblvector". Por exemplo, se a coluna "embedding" contiver inserções de palavras de um modelo de linguagem, o valor médio dessas inserções poderá ser usado para representar a frase ou o documento todo.
SELECT AVG(embedding) FROM tblvector;
Operadores vetoriais
pgvector introduz seis novos operadores que podem ser usados em vetores:
| Operador | Descrição |
|---|---|
| + | adição elemento a elemento |
| - | subtração elemento a elemento |
| * | multiplicação elemento a elemento |
| <-> | Distância euclidiana |
| <#> | produto interno negativo |
| <=> | distância do cosseno |
Funções vetoriais
cosine_distance
Calcula a distância do cosseno entre dois vetores.
cosine_distance(vector, vector)
Argumentos
vector
Primeiro vector.
vector
Segundo vector.
Tipo de retorno
double precision como distância entre os dois vetores fornecidos.
inner_product
Calcula o produto interno de dois vetores.
inner_product(vector, vector)
Argumentos
vector
Primeiro vector.
vector
Segundo vector
Tipo de retorno
double precision como produto interno dos dois vetores.
l2_distance
Calcula a distância euclidiana (também conhecida como L2) entre dois vetores.
l2_distance(vector, vector)
Argumentos
vector
Primeiro vector.
vector
Segundo vector
Tipo de retorno
double precision como a distância euclidiana entre os dois vetores.
l1_distance
Calcula a distância do táxi (também conhecido como L1) entre dois vetores.
l1_distance(vector, vector)
Argumentos
vector
Primeiro vector.
vector
Segundo vector
Tipo de retorno
double precision como a distância do táxi entre os dois vetores.
vector_dims(vector)
Retorna as dimensões de um determinado vetor.
Argumentos
vector
Um vector.
Tipo de retorno
integer que representa o número de dimensões do vetor dado.
vector_norms(vector)
Calcula a norma euclidiana de um dado vetor.
Argumentos
vector
Um vector.
Tipo de retorno
double precision representando a norma euclidiana do vetor dado.
Agregados vetoriais
AVG
Calcula a média dos vetores processados.
Argumentos
vector
Um vector.
Tipo de retorno
vector representando a média dos vetores processados.
SUM
Argumentos
vector
Um vector.
Tipo de retorno
vector representado a soma dos vetores processados.
Conteúdo relacionado
- Otimize o desempenho ao usar o pgvector no servidor flexível do Banco de Dados do Azure para PostgreSQL.
- Integre o servidor flexível do Banco de Dados do Azure para PostgreSQL aos Serviços Cognitivos do Azure.
- Gerar incorporações de vetores no servidor flexível do Banco de Dados do Azure para PostgreSQL com LLMs implantados localmente (Versão Prévia).
- Integrar o Banco de Dados do Azure para PostgreSQL aos Serviços do Azure Machine Learning.
- Gerar inserções de vetor com o OpenAI do Azure no Banco de Dados do Azure para PostgreSQL – servidor flexível.
- Extensão de IA do Azure em um servidor flexível do Azure Database para PostgreSQL.
- IA generativa com Banco de Dados do Azure para servidor flexível PostgreSQL.
- Sistema de recomendação com o Azure Database for PostgreSQL servidor flexível e Azure OpenAI.
- Pesquisa Semântica com Azure Database for PostgreSQL servidor flexível e Azure OpenAI.
- Habilite e use o pgvector no servidor flexível do Banco de Dados do Azure para PostgreSQL.