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.
Se aplica a: SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
Base de datos SQL en Microsoft Fabric
Crea un índice aproximado en una columna vectorial para mejorar el rendimiento de las búsquedas de vecinos más cercanos. Para saber más sobre cómo funcionan la indexación vectorial y la búsqueda vectorial, y las diferencias entre la búsqueda exacta y la aproximada, consulte Búsqueda vectorial e índices vectoriales en el SQL Motor de base de datos.
Disponibilidad de funcionalidades
- Vector index y
VECTOR_SEARCHestán generalmente disponibles (GA) en Azure SQL Database, bases de datos SQL en Microsoft Fabric y Azure SQL Managed Instance con la política de actualizaciónde fechaup-toAlways (Always ). - Vector index y
VECTOR_SEARCHson funciones de vista previa en SQL Server 2025 (17.x) y en Azure SQL Managed Instance con la política de actualización de SQL Server 2025.
Advertencia
Aviso de deprecia: Los índices vectoriales creados mediante una estructura de datos anterior están soportados en la versión actual, pero serán retirados en una versión futura. Para garantizar la compatibilidad futura y el acceso a las últimas capacidades de búsqueda vectorial, migra los índices vectoriales existentes utilizando los pasos de la sección Migración desde versiones anteriores de índices vectoriales .
Función de vista previa de SQL Server 2025
En SQL Server 2025 y Azure SQL Managed Instance en la política de actualizaciónde SQL Server 2025, los índices vectoriales y la VECTOR_SEARCH función están en vista previa y sujetos a cambios. Para usar esta función, debes activar la PREVIEW_FEATURESconfiguración con alcance de base de datos.
Revisa las limitaciones actuales antes de usarlo.
Nota:
La última versión de los índices vectoriales está disponible en Azure SQL Database, la base de datos SQL en Microsoft Fabric y Azure SQL Managed Instance con la política de actualización de fechaup-toSempre.
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.
>
1Restringe 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.
Las operaciones de índices en paralelo no están disponibles en todas las ediciones de SQL Server. Para una lista de características soportadas por las ediciones en SQL Server, consulte Ediciones y características soportadas de SQL Server 2025.
Actualización de índices vectoriales a la versión más reciente
Importante
Aviso de deprecación: La versión actual soporta índices vectoriales creados usando una estructura de datos anterior, pero una versión futura retirará ese soporte. Para asegurar la compatibilidad futura y el acceso a las últimas capacidades de búsqueda vectorial, migra los índices vectoriales existentes utilizando los siguientes pasos.
Los índices vectoriales recién creados usan automáticamente la estructura de datos más reciente, que proporciona:
-
Compatibilidad completa con DML: quita la limitación anterior que hizo que las tablas indizadas por vectores solo leen después de la creación del índice. Ahora puedes realizar
INSERT,UPDATE,DELETE, yMERGEoperaciones manteniendo la funcionalidad del índice vectorial mediante mantenimiento automático en tiempo real del índice. -
Filtrado iterativo: Aplica predicados en la
WHEREcláusula durante el proceso de búsqueda vectorial, no después de la recuperación. - Optimizador: El optimizador de consultas determina automáticamente si usar el índice DiskANN o la búsqueda kNN en función de las características de la consulta.
- Cuantización avanzada: Integra técnicas de cuantización vectorial para proporcionar mejor eficiencia de almacenamiento y un rendimiento de consulta más rápido. Estas optimizaciones son transparentes para los usuarios.
Para detalles sobre las limitaciones anteriores de versiones de índices vectoriales, véase la sección Limitaciones y consideraciones.
Migración desde versiones anteriores del índice vectorial
Para habilitar las capacidades más recientes, debes eliminar y recrear índices vectoriales que usen una versión anterior. En esta sección se explica cómo identificar, migrar y comprobar las versiones del índice vectorial.
Paso 1: Identificación de índices vectoriales existentes
Use la consulta siguiente para identificar los índices vectoriales que requieren la migración:
SELECT
i.name AS index_name,
t.name AS table_name,
JSON_VALUE(v.build_parameters, '$.Version') AS index_version,
CASE
WHEN JSON_VALUE(v.build_parameters, '$.Version') >= '3'
THEN 'Uses latest version (no migration required)'
WHEN JSON_VALUE(v.build_parameters, '$.Version') < '3'
THEN 'Created using an earlier version (migration recommended)'
ELSE 'Unknown format'
END AS migration_status
FROM sys.vector_indexes AS v
INNER JOIN sys.indexes AS i
ON v.object_id = i.object_id
AND v.index_id = i.index_id
INNER JOIN sys.tables AS t
ON v.object_id = t.object_id
ORDER BY t.name, i.name;
Procedimiento para interpretar los resultados
Usa la versión más reciente
- Ya soporta filtrado iterativo, soporte completo para DML, ejecución impulsada por optimizadores y cuantización mejorada.
- No se requiere ninguna migración.
Creado con una versión anterior
- Utiliza comportamientos postfiltros heredados.
- No soporta las últimas capacidades de búsqueda vectorial.
- Se recomienda encarecidamente la migración para garantizar la compatibilidad futura.
Paso 2: Quitar y volver a crear el índice vectorial
No puedes actualizar índices vectoriales que usan un formato anterior. Para habilitar las funcionalidades de DiskANN más recientes, quite y vuelva a crear el índice.
Advertencia
Impacto en el servicio: quitar un índice vectorial deshabilita inmediatamente la búsqueda de vectores aproximada en la tabla afectada hasta que se vuelva a crear el índice. Planee las migraciones durante las ventanas de mantenimiento para sistemas de producción.
Quitar el índice existente
DROP INDEX vec_idx ON dbo.wikipedia_articles;
Volver a crear el índice
CREATE VECTOR INDEX vec_idx
ON dbo.wikipedia_articles (title_vector)
WITH (
TYPE = 'DISKANN',
METRIC = 'COSINE'
);
Nota:
Los índices vectoriales creados usando la instrucción actual CREATE VECTOR INDEX emplean automáticamente el último formato DiskANN. No se requieren opciones ni marcas adicionales.
Paso 3: Comprobación de la versión del índice
Después de recrear el índice, verifica que esté usando la última versión:
SELECT
i.name AS index_name,
t.name AS table_name,
JSON_VALUE(v.build_parameters, '$.Version') AS index_version
FROM sys.vector_indexes AS v
INNER JOIN sys.indexes AS i
ON v.object_id = i.object_id
AND v.index_id = i.index_id
INNER JOIN sys.tables AS t
ON v.object_id = t.object_id
WHERE i.name = 'vec_idx';
La index_version columna debe mostrarse 3 para la versión más reciente.
Comportamiento de error con incompatibilidad de versión
Si intenta usar el TOP_N parámetro en VECTOR_SEARCH con un índice de vector de versión más reciente, SQL Server devuelve el siguiente error:
Msg 42274, Level 16, State 1
Vector search with version 3 index does not support explicit TOP_N parameter.
Para resolver este error, quite el TOP_N parámetro de VECTOR_SEARCH y use la SELECT TOP (N) WITH APPROXIMATE sintaxis en su lugar. Para obtener información detallada, consulte Error mediante la sintaxis heredada.
Limitaciones y consideraciones
Limitaciones de la versión del índice vectorial anterior
Las versiones anteriores de índices vectoriales tienen las siguientes limitaciones. Para comprobar la versión del índice, consulte Comprobación de la versión del índice.
Solo después del filtrado: Los predicados se aplican solo después de la recuperación vectorial, no durante el proceso de búsqueda. Este comportamiento puede hacer que se devuelvan menos filas de las esperadas cuando aplicas filtros.
Tablas de solo lectura: las tablas con índices vectoriales son de solo lectura. No puedes realizar operaciones DML (
INSERT,UPDATE,DELETE,MERGE) después de crear el índice vectorial. Use laALLOW_STALE_VECTOR_INDEXconfiguración con ámbito de base de datos para habilitar las operaciones DML si puede tolerar resultados de búsqueda obsoletos.Ajuste manual TOP_N: Debes ajustar manualmente el
TOP_Nparámetro paraVECTOR_SEARCHcompensar el postfiltrado. A menudo necesitas valores sobredimensionados para obtener el número deseado de resultados.
Limitaciones actuales (también se aplica a la versión más reciente)
La versión preliminar actual tiene las siguientes limitaciones:
No puedes particionar índices vectoriales.
La tabla debe tener un índice agrupado de clave primaria en una columna int .
Los índices vectoriales no se replican en los suscriptores.
No puedes truncar tablas con índices vectoriales usando
TRUNCATE TABLE. Para quitar todos los datos, quite primero el índice de vectores, trunque la tabla, vuelva a rellenar con al menos 100 filas y vuelva a crear el índice. Para más información, consulte TRUNCATE TABLE restricciones.Los índices vectoriales no se pueden desplegar con DacPac. Puedes desplegar bases de datos que contengan índices vectoriales con BACPAC a partir de la versión 170.5.96 de DacFx. Los índices vectoriales se crean después de cargar los datos de la tabla, y la tabla indexada debe contener al menos 100 filas con valores no
NULLvectoriales.Durante un despliegue DACPAC solo con esquema, el despliegue puede tener éxito sin crear el índice vectorial si la tabla objetivo contiene menos de 100 filas con valores no
NULLvectoriales. DacFx no crea automáticamente el índice omitido cuando se añaden filas después. Después de cargar al menos 100 filas que califican, crea el índice vectorial usando un script post-despliegue, publicando de nuevo el DACPAC o ejecutandoCREATE VECTOR INDEX.Tras una importación o despliegue, verifica que el índice vectorial se haya creado consultando
sys.vector_indexes.Como solución temporal antes de la versión 170.5.96 de DacFx, eliminaba los índices vectoriales antes de exportar la base de datos y recreaba los índices tras la importación.
Requisitos mínimos de datos
Los índices vectoriales requieren un número mínimo de filas con valores noNULL vectoriales antes de poder crear el índice.
-
Recuento mínimo de filas: La tabla debe tener al menos 100 filas con valores no
NULLvectoriales. - Comportamiento de error: Si intentas crear un índice vectorial en una tabla con menos de 100 filas, la operación falla y devuelve el error Msg 42266.
Error de ejemplo de :
Msg 42266, Level 16, State 1
Cannot create a vector index. The table contains only 8 rows with non-null vectors,
but at least 100 are required for vector index creation.
Procedimiento recomendado: rellene la tabla con al menos 100 filas antes de crear el índice vectorial. Para escenarios de desarrollo y pruebas donde necesitas menos filas, VECTOR_SEARCH funciona sin índice usando un enfoque de escaneo por fuerza bruta. Sin embargo, este método degrada el rendimiento con conjuntos de datos más grandes.
Compatibilidad con DML
Cuando creas un índice vectorial DiskANN usando la última versión, la tabla deja de ser de solo lectura. Puedes modificar los datos utilizando operaciones de lenguaje estándar de manipulación de datos (DML), y los cambios aparecen automáticamente en los resultados de búsqueda vectorial.
Esta funcionalidad hace que la búsqueda vectorial sea adecuada para cargas de trabajo dinámicas y transaccionales en las que los datos cambian con el tiempo.
Notas de comportamiento
- Las operaciones DML no requieren quitar ni volver a generar el índice vectorial.
- Los cambios son visibles para las consultas de búsqueda vectorial después de que la transacción se confirme.
- Para el reemplazo de datos a gran escala (por ejemplo, eliminar la mayoría de las filas e insertar un conjunto completamente nuevo de incrustaciones), considere la posibilidad de quitar y volver a crear el índice de vector después de la carga de datos para garantizar una calidad de búsqueda óptima.
Nota:
El soporte DML solo está disponible con índices vectoriales creados usando la última versión. Las versiones anteriores requieren que las tablas sean de solo lectura o usen la ALLOW_STALE_VECTOR_INDEX configuración con ámbito de base de datos.
Supervisión del mantenimiento del índice vectorial
Los índices vectoriales realizan un mantenimiento en segundo plano para incorporar cambios de DML. Use la vista de administración dinámica sys.dm_db_vector_indexes para supervisar el estado de la tarea de mantenimiento y mantenimiento del índice.
Combinación de índices vectoriales con índices tradicionales
Los índices vectoriales funcionan junto con los índices tradicionales de árbol B para proporcionar un rendimiento óptimo de las consultas. Al usar el filtrado iterativo con VECTOR_SEARCH, considere la posibilidad de crear índices tradicionales en columnas usadas en predicados de filtro.
Para obtener información detallada sobre el comportamiento de filtrado iterativo y cómo difiere de las versiones anteriores, consulte Comportamiento de filtrado iterativo.
Sugerencia
El optimizador de consultas selecciona automáticamente la mejor estrategia de ejecución (índice vecino aproximado frente a búsqueda kNN). Para forzar el uso del índice vecino más cercano aproximado, use la FORCE_ANN_ONLY sugerencia de tabla. Para obtener más información, consulte Sugerencias de tabla para la búsqueda de vectores.
Escenario de ejemplo:
-- Create vector index for similarity search
CREATE VECTOR INDEX idx_embeddings_vector
ON product_embeddings(embedding)
WITH (METRIC = 'cosine');
-- Create traditional index for filter columns
CREATE NONCLUSTERED INDEX idx_embeddings_filters
ON product_embeddings(category);
Ventaja de rendimiento:
Al ejecutar consultas con filtrado iterativo, el optimizador de consultas de SQL Server usa ambos tipos de índice:
DECLARE @qv VECTOR(1536) = AI_GENERATE_EMBEDDINGS(N'wireless headphones' USE MODEL EmbeddingModel);
SELECT TOP (10) WITH APPROXIMATE
p.name,
p.price,
vs.distance
FROM products p
INNER JOIN VECTOR_SEARCH(
TABLE = product_embeddings AS e,
COLUMN = embedding,
SIMILAR_TO = @qv,
METRIC = 'cosine'
) AS vs ON p.id = e.product_id
WHERE e.approved = 1
AND e.category = 'Electronics' -- Can use traditional index
ORDER BY vs.distance;
En esta consulta:
- El índice vectorial identifica incrustaciones similares basadas en el vector de consulta.
- Índice tradicional en
(category)filtros candidatos de forma eficaz durante el proceso de búsqueda iterativa
Esta estrategia compuesta puede mejorar significativamente el rendimiento de las consultas en comparación con el uso de solo un índice vectorial, especialmente cuando los predicados de filtro tienen una alta selectividad.
Guía de calidad y mantenimiento de datos para índices vectoriales
Evitar conjuntos de datos con incrustaciones duplicadas elevadas
La indexación de vectores funciona mejor cuando las incrustaciones representan contenido semántico diverso. No uses conjuntos de datos con una alta proporción de vectores duplicados para indexar vectoriales.
La duplicación alta puede dar lugar a:
- Calidad de resultado deficiente: los vectores duplicados aparecen repetidamente en los resultados, lo que elimina las coincidencias semánticas más relevantes.
- Eficacia reducida: las incrustaciones duplicadas desplazan a mejores vecinos, lo que reduce la utilidad de la búsqueda de similitud.
- Uso innecesario de recursos: los índices vectoriales son costosos de compilar y mantener, y los duplicados agregan costo sin agregar valor.
Procedimiento recomendado: Desduplicar inserciones antes de crear un índice vectorial para mejorar el rendimiento y la calidad del resultado.
Escenarios de reemplazo de datos a gran escala
Los índices vectoriales admiten inserciones, actualizaciones y eliminaciones. Sin embargo, cuando reemplazas la mayoría o todos los embeddings —por ejemplo, reincrustando un conjunto de datos con un nuevo modelo— el índice existente puede dejar de reflejar la nueva distribución de datos.
En escenarios de reemplazo a gran escala:
- Las consultas de búsqueda vectorial continúan devolviendo resultados válidos.
- La calidad de recuperación y ranking podría degradarse, porque la estructura del índice fue construida para una distribución de incrustación diferente.
Procedimiento recomendado: al realizar un reemplazo de datos casi completo (eliminar e insertar inserciones nuevas), quite y vuelva a crear el índice de vector después de cargar los nuevos datos. Volver a crear el índice garantiza que está optimizado para la nueva distribución de inserción y restaura el comportamiento predecible de las consultas.
Problemas conocidos
Para obtener más información, consulte Problemas conocidos.
Permisos
Necesitas ALTER permiso sobre la mesa.
Ejemplos
Descargue e importe el artículo de Wikipedia con el ejemplo de incrustaciones de vectores .
Estos ejemplos suponen una tabla con nombre wikipedia_articles y columna title_vector de tipo vector que almacena las incrustaciones de títulos de los artículos de Wikipedia. Utiliza title_vector un modelo de incrustación como text-embedding-ada-002 o text-embedding-3-small, que devuelve vectores con 1.536 dimensiones.
Para más ejemplos, incluyendo soluciones de extremo a extremo, consulta el repositorio Azure SQL Database Vector Search Samples en GitHub.
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
El siguiente ejemplo crea un índice vectorial en la title_vector columna usando la métrica del producto (negativo dot ). 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
Este ejemplo utiliza CREATE VECTOR INDEX y la función relacionada VECTOR_SEARCH . Las incrustaciones se simulan. En un escenario real, genera incrustaciones usando un modelo de incrustación y AI_GENERATE_EMBEDDINGS, o utiliza una biblioteca externa como OpenAI SDK.
Nota:
Los índices vectoriales de última versión requieren al menos 100 filas de datos antes de poder crear el índice. En este ejemplo se insertan 100 filas para cumplir este requisito. Para obtener más información, consulte Requisitos mínimos de datos.
En el siguiente bloque de código se CREATE VECTOR INDEX muestra con incrustaciones simuladas:
- Activa la función de vista previa (necesaria solo para SQL Server 2025; no necesaria para Azure SQL Database ni SQL Database en Fabric).
- Cree una tabla
dbo.Articlesde ejemplo con una columnaembeddingcon vector de tipo de datos(5). - Inserte 100 filas de 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_SEARCHfunción .
-- Step 0: Enable Preview Feature (SQL Server 2025 only)
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
);
GO
-- Step 2: Insert sample data (100 rows required for latest version indexes)
INSERT INTO Articles (id, title, content, embedding)
SELECT
value AS id,
'Article ' || [value],
'Content for article ' || [value],
CAST(JSON_ARRAY(
CAST(value * 0.01 AS FLOAT),
CAST(value * 0.02 AS FLOAT),
CAST(value * 0.03 AS FLOAT),
CAST(value * 0.04 AS FLOAT),
CAST(value * 0.05 AS FLOAT)
) AS VECTOR(5))
FROM GENERATE_SERIES(1, 100);
GO
-- Step 3: Create a vector index on the embedding column
CREATE VECTOR INDEX vec_idx ON Articles(embedding)
WITH (METRIC = 'cosine', TYPE = 'diskann');
GO
-- Step 4: Perform a vector similarity search
DECLARE @qv VECTOR(5) = '[0.3, 0.3, 0.3, 0.3, 0.3]';
SELECT TOP(3) WITH APPROXIMATE
t.id,
t.title,
t.content,
s.distance
FROM
VECTOR_SEARCH(
TABLE = Articles AS t,
COLUMN = embedding,
SIMILAR_TO = @qv,
METRIC = 'cosine'
) AS s
ORDER BY s.distance, t.title;
La sintaxis para realizar consultas depende de la versión del índice vectorial:
| Versión del índice vectorial | Ejemplo de sintaxis |
|---|---|
| Versión más reciente | Uso SELECT TOP (N) WITH APPROXIMATE sin TOP_N parámetro |
| Versiones anteriores (en desuso) | Uso del TOP_N parámetro en la VECTOR_SEARCH función |
Para índices de versión anteriores (sintaxis en desuso):
DECLARE @qv VECTOR(5) = '[0.3, 0.3, 0.3, 0.3, 0.3]';
SELECT TOP(3)
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;
Ejemplo 4: Trabajar con operaciones DML
Los siguientes ejemplos demuestran operaciones DML en una tabla con un índice vectorial creado utilizando la última versión.
Eliminar filas
Al eliminar filas, se quitan de los resultados de la tabla y de la búsqueda vectorial.
DELETE FROM dbo.wikipedia_articles
WHERE id = 12345;
Una vez finalizada la operación de eliminación, la fila eliminada deja de aparecer en las consultas de búsqueda vectorial.
Insertar filas nuevas
Puede insertar nuevas filas con incrustaciones y se vuelven inmediatamente buscables sin volver a generar el índice.
INSERT INTO dbo.wikipedia_articles (id, title, title_vector)
VALUES (
99999,
N'Quantum Computing Basics',
AI_GENERATE_EMBEDDINGS(N'Quantum Computing Basics' USE MODEL Ada2Embeddings)
);
Las inserciones recién insertadas se incorporan automáticamente al índice de vectores y las consultas de búsqueda vectorial posteriores pueden devolverlas.
Actualización de filas existentes
La actualización de columnas vectoriales o no vectoriales es totalmente compatible.
DECLARE @new_embedding VECTOR(1536);
SET @new_embedding = AI_GENERATE_EMBEDDINGS(N'Updated article title' USE MODEL Ada2Embeddings);
UPDATE dbo.wikipedia_articles
SET title_vector = @new_embedding,
title = N'Updated article title'
WHERE id = 50000;
Si actualizas una columna vectorial, el índice se actualiza en consecuencia, así que futuras búsquedas vectoriales usan la nueva incrustación.
Uso MERGE para operaciones complejas
La MERGE instrucción permite realizar operaciones de inserción, actualización y eliminación en una sola instrucción.
MERGE INTO dbo.wikipedia_articles AS target
USING (
SELECT
id,
title,
AI_GENERATE_EMBEDDINGS(title USE MODEL Ada2Embeddings) AS title_vector
FROM dbo.staging_articles
) AS source
ON target.id = source.id
WHEN MATCHED THEN
UPDATE SET
title = source.title,
title_vector = source.title_vector
WHEN NOT MATCHED BY TARGET THEN
INSERT (id, title, title_vector)
VALUES (source.id, source.title, source.title_vector)
WHEN NOT MATCHED BY SOURCE AND target.id > 100000 THEN
DELETE;
El índice vectorial se actualiza automáticamente para reflejar todos los cambios realizados por la MERGE sentencia.