Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2025 (17.x)
Azure SQL Database
AzureSQL Managed Instance
SQL database in Microsoft Fabric
A VECTOR_DISTANCE função calcula a distância entre dois vetores usando uma métrica de distância especificada. A distância vetorial é sempre exata e não usa nenhum índice vetorial, mesmo se disponível. Para usar um índice vetorial e, assim, realizar uma pesquisa vetorial aproximada, você deve usar a função VETOR_SEARCH . Para saber mais sobre como a indexação vetorial e a pesquisa vetorial funcionam, e as diferenças entre a pesquisa exata e aproximada, consulte Pesquisa vetorial e índices vetoriais no Mecanismo de Banco de dados SQL.
Note
VECTOR_DISTANCEestá disponível na Instância Gerenciada SQL do Azure com a política de atualizaçãoSQL Server 2025 ou Always-up-to-date.
Syntax
Transact-SQL convenções de sintaxe
VECTOR_DISTANCE ( distance_metric , vector1 , vector2 )
Arguments
distance_metric
Uma cadeia de caracteres 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 cossena -
euclidean- Distância euclidiana -
dot- Produto Dot (Negativo)
vetor1
Uma expressão que é avaliada como tipo de dados vetoriais .
vetor2
Uma expressão que é avaliada como tipo de dados vetoriais .
Métricas de distância
| Metric | Description | Range | Examples |
|---|---|---|---|
cosine |
Distância cossena (angular) | [0, 2] |
0: vetores idênticos2: vetores opostos |
euclidean |
Distância euclidiana | [0, +∞] |
0: vetores idênticos |
dot |
Indicação da distância baseada no produto do ponto, obtido através do cálculo do produto ponto negativo |
[-∞, +∞] | Números menores indicam vetores mais semelhantes |
Valor de retorno
A função retorna um valor de flutuação escalar 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 vetoriais.
Examples
Detalhes do banco de dados usado no exemplo podem ser encontrados no GitHub: Baixe e importe o artigo da Wikipédia com incorporações vetoriais.
Os exemplos pressupõem 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 é assumido como 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, vá para o repositório GitHub de Exemplos de Pesquisa Vetorial do Banco de Dados SQL do Azure.
A. Criar um vetor a partir de uma matriz JSON
O exemplo a seguir cria um vetor com três dimensões a partir de uma cadeia de caracteres com uma matriz JSON.
DECLARE @v1 AS VECTOR(2) = '[1,1]';
DECLARE @v2 AS 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;
B. Retornar top 10 artigos semelhantes com base em títulos
O exemplo a seguir retorna os 10 principais artigos mais semelhantes a um determinado artigo, com base na distância 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;
C. Retornar artigos semelhantes com base na distância vetorial específica
O exemplo a seguir retorna todos os artigos semelhantes para um determinado artigo, com base na distância cosseno entre seus vetores de título, selecionando apenas títulos com uma distância inferior a 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;