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.
Aplica-se a: SQL Server 2025 (17.x) Versão prévia
do Banco de Dados
SQL do Azurebanco de dadosSQL do Banco de Dados SQL do Azure banco de dados SQL gerenciado
no Microsoft Fabric
Observação
Esse tipo de dados está em versão prévia e está sujeito a alterações. Leia os termos de uso da versão prévia no SLA (Contratos de Nível de Serviço) para Serviços Online.
Calcula a distância entre dois vetores usando uma métrica de distância especificada. A distância do vetor é sempre exata e não usa nenhum índice de vetor, mesmo que disponível. Para usar um índice de vetor e, portanto, executar uma pesquisa de vetor aproximada, você deve usar a função VECTOR_SEARCH . Para saber mais sobre como funciona a indexação de vetores e a pesquisa de vetores e as diferenças entre a pesquisa exata e aproximada, consulte vetores no Mecanismo de Banco de Dados SQL.
Sintaxe
Convenções de sintaxe de Transact-SQL
VECTOR_DISTANCE ( distance_metric, vector1, vector2 )
Argumentos
distance_metric
Uma string com o nome da métrica de distância a ser usada para calcular a distância entre os dois vetores fornecidos. As seguintes métricas de distância são suportadas:
-
cosine
- Distância do cosseno -
euclidean
- Distância euclidiana -
dot
- (Negativo) Produto escalar
vetor1
Uma expressão que é avaliada como tipo de dados de vetor .
vetor2
Uma expressão que é avaliada como tipo de dados de vetor .
Métricas de distância
Métrica | Descrição | Intervalo | Exemplos |
---|---|---|---|
cosine |
Distância do cosseno (angular) | [0, 2] |
0 : vetores idênticos 2 : vetores opostos |
euclidean |
Distância euclidiana | [-∞, +∞] |
0 : vetores idênticos |
dot |
Indicação de distância baseada em produto escalar, obtido pelo cálculo do produto escalar negativo |
[-∞, +∞] | Números menores indicam vetores mais semelhantes |
Valor retornado
A função retorna um valor escalar flutuante que representa a distância entre os dois vetores usando a métrica de distância especificada.
Um erro será retornado se distance_metric não for uma métrica válida e se os vetores fornecidos não forem do tipo de dados de vetor.
Exemplos
Os detalhes do banco de dados usado no exemplo podem ser encontrados aqui: Baixe e importe o artigo da Wikipédia com o Vector Embeddings.
Os exemplos assumem a existência de uma tabela nomeada wikipedia_articles
com uma coluna title_vector
do tipo vector
que armazena as incorporações de títulos de artigos da Wikipédia.
title_vector
é considerado uma incorporação gerada com um modelo de incorporação como text-embedding-ada-002 ou text-embedding-3-small , que retorna vetores com 1.536 dimensões.
Para obter mais exemplos, incluindo soluções de ponta a ponta, acesse o repositório GitHub de Exemplos de Pesquisa de Vetor do Banco de Dados SQL do Azure.
Exemplo 1
O exemplo a seguir cria um vetor com três dimensões de uma cadeia de caracteres com uma matriz JSON.
DECLARE @v1 VECTOR(2) = '[1,1]';
DECLARE @v2 VECTOR(2) = '[-1,-1]';
SELECT
VECTOR_DISTANCE('euclidean', @v1, @v2) AS euclidean,
VECTOR_DISTANCE('cosine', @v1, @v2) AS cosine,
VECTOR_DISTANCE('dot', @v1, @v2) AS negative_dot_product;
Exemplo 2
O exemplo a seguir retorna os 10 artigos mais semelhantes a um determinado artigo, com base na distância do cosseno entre seus vetores de título.
DECLARE @v AS VECTOR(1536);
SELECT @v = title_vector FROM [dbo].[wikipedia_articles] WHERE title = 'Alan Turing';
SELECT TOP(10)
id,
title,
VECTOR_DISTANCE('cosine', @v, title_vector) AS distance
FROM
[dbo].[wikipedia_articles]
ORDER BY
distance
Exemplo 3
O exemplo a seguir retorna todos os artigos semelhantes a um determinado artigo, com base na distância do cosseno entre seus vetores de título, selecionando apenas aqueles com uma distância menor que 0,3.
DECLARE @v AS VECTOR(1536);
SELECT @v = title_vector FROM [dbo].[wikipedia_articles] WHERE title = 'Alan Turing';
SELECT
id,
title,
VECTOR_DISTANCE('cosine', @v, title_vector) AS distance
FROM
[dbo].[wikipedia_articles]
WHERE
VECTOR_DISTANCE('cosine', @v, title_vector) < 0.3
ORDER BY
distance