Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Aplica a: SQL Server 2025 (17.x)
Azure SQL Database
SQL database in Microsoft Fabric
Cree un índice aproximado en una columna vectorial para mejorar el rendimiento de la búsqueda de vecinos más cercanos. 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.
Azure SQL Database y SQL Database en Fabric
La función está en vista previa. Asegúrese de consultar las limitaciones actuales antes de usarlas.
Nota:
Como característica en versión preliminar, la tecnología que se presenta en este artículo está sujeta a los términos de uso complementarios para las versiones preliminares de Microsoft Azure.
Función de Vista previa de SQL Server 2025
En SQL Server 2025 esta función está en vista previa y está sujeta a cambios. Para poder usar esta característica, debe habilitar la PREVIEW_FEATURESconfiguración con ámbito de base de datos.
Asegúrese de consultar las limitaciones actuales antes de usarlas.
Sintaxis
Convenciones de sintaxis de Transact-SQL
CREATE VECTOR INDEX index_name
ON object ( vector_column )
[ WITH (
[ , ] METRIC = { 'cosine' | 'dot' | 'euclidean' }
[ [ , ] TYPE = 'DiskANN' ]
[ [ , ] MAXDOP = max_degree_of_parallelism ]
) ]
[ ON { filegroup_name | "default" } ]
[;]
Argumentos
index_name
El nombre del índice. Los nombres de índice deben ser únicos dentro de una tabla, pero no tienen que ser únicos dentro de una base de datos. Los nombres de índice deben seguir las reglas de identificadores.
de objeto
Tabla en la que se crea el índice. Debe ser una tabla base. No se admiten vistas, tablas temporales, tanto locales como globales.
vector_column
Columna que se va a usar para crear el índice vectorial. Debe ser de tipo vector .
MÉTRICO
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
TYPE
Tipo de algoritmo ANN usado para compilar el índice. Actualmente solo se admite DiskANN. DiskANN es el valor predeterminado.
MAXDOP
Invalida la grado máximo de paralelismo opción de configuración para la operación de índice. Para obtener más información, vea Configuración del servidor: grado máximo de paralelismo. Use MAXDOP para limitar el grado de paralelismo y el consumo de recursos resultante para una operación de compilación de índice.
max_degree_of_parallelism puede tener estos valores:
1Suprime la generación de planes paralelos.
>1
Restringe el grado máximo de paralelismo usado en una operación de índice paralelo al número especificado o menos en función de la carga de trabajo del sistema actual.
0(valor predeterminado)Usa el grado de paralelismo especificado en el nivel de servidor, base de datos o grupo de cargas de trabajo, a menos que se reduzca en función de la carga de trabajo del sistema actual.
Para obtener más información, consulte Configuración de operaciones de índice en paralelo.
Nota:
Las operaciones de índices en paralelo no están disponibles en todas las ediciones de SQL Server. Para una lista de funciones soportadas por las ediciones de SQL Server, consulte Ediciones y características soportadas de SQL Server 2022 o Ediciones y características soportadas de SQL Server 2025.
Limitaciones
La versión preliminar actual tiene las siguientes limitaciones:
El índice vectorial no se puede particionar. No se admite ninguna partición.
La tabla debe tener una sola columna, entero, índice agrupado de clave principal.
Los índices vectoriales no se replican en los suscriptores.
Una tabla con un índice vectorial se convierte en de solo lectura. No se permite ninguna modificación de datos mientras el índice vectorial está presente en la tabla.
En Azure SQL Database y SQL Database en Microsoft Fabric, puedes establecer la
ALLOW_STALE_VECTOR_INDEXconfiguración con alcance de base de datos enON, lo que permite que la tabla vuelva a ser escriturable.Nota:
La
ALLOW_STALE_VECTOR_INDEXopción de configuración con alcance de base de datos no está disponible actualmente en SQL Server 2025 (17.x).El índice vectorial no se actualiza cuando se insertan o actualizan nuevos datos en la tabla. Para actualizar el índice vectorial, debes dejarlo caer y recrearlo.
Problemas conocidos
Para obtener más información, consulte Problemas conocidos.
Permisos
El usuario debe tener ALTER permiso en la tabla.
Ejemplos
Los detalles de la base de datos usada en el ejemplo se pueden encontrar aquí: 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-embeding-ada-002 o text-embeding-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.
Ejemplo 1
En el ejemplo siguiente se crea un índice vectorial en la title_vector columna mediante la cosine métrica .
CREATE VECTOR INDEX vec_idx
ON [dbo].[wikipedia_articles] ([title_vector])
WITH (METRIC = 'COSINE', TYPE = 'DISKANN');
Ejemplo 2
En el ejemplo siguiente se crea un índice vectorial en la title_vector columna mediante la métrica del producto (negativo), dot lo que limita el paralelismo a 8 y almacena el vector en el SECONDARY grupo de archivos.
CREATE VECTOR INDEX vec_idx
ON [dbo].[wikipedia_articles] ([title_vector])
WITH (METRIC = 'DOT', TYPE = 'DISKANN', MAXDOP = 8)
ON [SECONDARY];
Ejemplo 3
Ejemplo básico de un extremo a otro mediante CREATE VECTOR INDEX y la función relacionada VECTOR_SEARCH . Las incrustaciones se simulan. En un escenario real, las incrustaciones se generan mediante un modelo de inserción y AI_GENERATE_EMBEDDINGS, o una biblioteca externa como sdk de OpenAI.
El siguiente bloque de código crea incrustaciones simuladas con los pasos siguientes:
- Habilita la marca de seguimiento, necesaria en la versión preliminar actual.
- Cree una tabla
dbo.Articlesde ejemplo con una columnaembeddingcon vector de tipo de datos(5). - Inserte datos de ejemplo con datos ficticios de inserción.
- Cree un índice de vector en
dbo.Articles.embedding. - Muestra la búsqueda de similitud vectorial con la
VECTOR_SEARCH()función .
-- Step 0: Enable Preview Feature
ALTER DATABASE SCOPED CONFIGURATION
SET PREVIEW_FEATURES = ON;
GO
-- Step 1: Create a sample table with a VECTOR(5) column
CREATE TABLE dbo.Articles
(
id INT PRIMARY KEY,
title NVARCHAR(100),
content NVARCHAR(MAX),
embedding VECTOR(5) -- mocked embeddings
);
-- Step 2: Insert sample data
INSERT INTO Articles (id, title, content, embedding)
VALUES
(1, 'Intro to AI', 'This article introduces AI concepts.', '[0.1, 0.2, 0.3, 0.4, 0.5]'),
(2, 'Deep Learning', 'Deep learning is a subset of ML.', '[0.2, 0.1, 0.4, 0.3, 0.6]'),
(3, 'Neural Networks', 'Neural networks are powerful models.', '[0.3, 0.3, 0.2, 0.5, 0.1]'),
(4, 'Machine Learning Basics', 'ML basics for beginners.', '[0.4, 0.5, 0.1, 0.2, 0.3]'),
(5, 'Advanced AI', 'Exploring advanced AI techniques.', '[0.5, 0.4, 0.6, 0.1, 0.2]');
-- Step 3: Create a vector index on the embedding column
CREATE VECTOR INDEX vec_idx ON Articles(embedding)
WITH (metric = 'cosine', type = 'diskann');
-- Step 4: Perform a vector similarity search
DECLARE @qv VECTOR(5) = '[0.3, 0.3, 0.3, 0.3, 0.3]';
SELECT
t.id,
t.title,
t.content,
s.distance
FROM
VECTOR_SEARCH(
table = Articles AS t,
column = embedding,
similar_to = @qv,
metric = 'cosine',
top_n = 3
) AS s
ORDER BY s.distance, t.title;