Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
Se aplica a: SQL Server 2025 (17.x)
Base de datos SQL de Azure SQL Database
deAzure SQL Managed Instance
en Microsoft Fabric
La VECTOR_DISTANCE función calcula la distancia entre dos vectores mediante una métrica de distancia especificada. La distancia de vector siempre es exacta y no usa ningún índice vectorial, incluso si está disponible. Para usar un índice vectorial y, por tanto, realizar una búsqueda vectorial aproximada, debe usar la función VECTOR_SEARCH . Para obtener más información sobre cómo funciona la indexación de vectores y la búsqueda de vectores, y las diferencias entre la búsqueda exacta y aproximada, consulte Búsqueda de vectores e índices de vectores en el motor de base de datos SQL.
Note
VECTOR_DISTANCEestá disponible en Instancia administrada de Azure SQL con la directiva de actualización de sql Server 2025 o Always-up-to-date.
Syntax
Convenciones de sintaxis de Transact-SQL
VECTOR_DISTANCE ( distance_metric , vector1 , vector2 )
Arguments
distance_metric
Cadena con el nombre de la métrica de distancia que se va a usar para calcular la distancia entre los dos vectores especificados. Se admiten las siguientes métricas de distancia:
-
cosine- Distancia de coseno -
euclidean- Distancia euclidiana -
dot- (Negativo) Producto de puntos
vector1
Expresión que se evalúa como el tipo de datos vectorial .
vector2
Expresión que se evalúa como el tipo de datos vectorial .
Métricas de distancia
| Metric | Description | Range | Examples |
|---|---|---|---|
cosine |
Distancia de coseno (angular) | [0, 2] |
0: vectores idénticos2: vectores opuestos |
euclidean |
Distancia euclidiana | [0, +∞] |
0: vectores idénticos |
dot |
Indicación de distancia basada en producto de puntos, obtenido calculando el producto de puntos negativos |
[-∞, +∞] | Los números más pequeños indican vectores más similares |
Valor devuelto
La función devuelve un valor float escalar que representa la distancia entre los dos vectores mediante la métrica de distancia especificada.
Se devuelve un error si distance_metric no es una métrica válida y si los vectores proporcionados no son del tipo de datos vectorial.
Examples
Los detalles de la base de datos usada en el ejemplo se pueden encontrar en GitHub: Descargar e importar el artículo de Wikipedia con incrustaciones de vectores.
En los ejemplos se supone que existe una tabla denominada wikipedia_articles con una columna title_vector de tipo vector que almacena las inserciones de título de los artículos de Wikipedia.
title_vector se supone que es una inserción generada con un modelo de inserción, como text-embedding-ada-002 o text-embedding-3-small, que devuelve vectores con 1536 dimensiones.
Para obtener más ejemplos, incluidas las soluciones de un extremo a otro, vaya al repositorio de GitHub Ejemplos de búsqueda de vectores de Azure SQL Database.
A. Creación de un vector a partir de una matriz JSON
En el ejemplo siguiente se crea un vector con tres dimensiones a partir de una cadena con una 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. Devolver los 10 artículos más similares basados en títulos
En el ejemplo siguiente se devuelven los 10 artículos más similares a un artículo determinado, en función de la distancia coseno entre sus vectores 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. Devolver artículos similares basados en una distancia vectorial específica
En el ejemplo siguiente se devuelven todos los artículos similares a un artículo determinado, en función de la distancia coseno entre sus vectores de título, seleccionando solo títulos con una distancia 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;