Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : SQL Server 2025 (17.x)
Azure SQL Database
SQL database in Microsoft Fabric
Créez un index approximatif sur une colonne vectorielle pour améliorer les performances de la recherche des voisins les plus proches. Pour en savoir plus sur le fonctionnement de l’indexation vectorielle et de la recherche vectorielle et les différences entre la recherche exacte et approximative, reportez-vous à la recherche vectorielle et aux index vectoriels dans le moteur de base de données SQL.
Base de données Azure SQL et base de données SQL dans Fabric
La fonctionnalité est en aperçu. Vérifiez les limitations et considérations avant de continuer.
Remarque
En tant que fonctionnalité en préversion, la technologie présentée dans cet article est soumise aux conditions d’utilisation supplémentaires des préversions de Microsoft Azure.
Avertissement
Avis de dépréciation : les index vectoriels créés à l’aide d’une structure de données antérieure sont pris en charge dans la version actuelle, mais seront supprimés dans une version ultérieure. Pour garantir la compatibilité future et l’accès aux dernières fonctionnalités de recherche vectorielle, migrez les index vectoriels existants en suivant les étapes de la section Migration à partir des versions antérieures de l’index vectoriel .
Disponibilité régionale
Cette fonctionnalité est déployée dans Azure SQL Database et sql Database dans Microsoft Fabric. Pendant le déploiement, la disponibilité et le comportement peuvent varier selon la région et la version d’index. Si une fonctionnalité ou une syntaxe n’est pas disponible, elle devient automatiquement disponible à mesure que le déploiement se termine. Pour connaître l’état actuel de la disponibilité régionale, consultez Disponibilité des fonctionnalités par région.
Fonctionnalité d’aperçu de SQL Server 2025
Dans SQL Server 2025, cette fonction est en aperçu et peut être modifiée. Pour utiliser cette fonctionnalité, vous devez activer la PREVIEW_FEATURES la base de données.
Veillez à consulter les limitations actuelles avant de l’utiliser.
Remarque
La dernière version des index vectoriels est disponible uniquement dans Azure SQL Database et dans la base de données SQL dans Microsoft Fabric actuellement.
Syntaxe
Conventions de la syntaxe 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" } ]
[;]
Les arguments
index_name
Nom de l’index. Les noms d’index doivent être uniques dans une table, mais ne doivent pas être uniques dans une base de données. Les noms d’index doivent suivre les règles des identificateurs.
objet
Table sur laquelle l’index est créé. Il doit s’agir d’une table de base. Les vues, les tables temporaires, locales et globales, ne sont pas prises en charge.
vector_column
Colonne à utiliser pour créer l’index vectoriel. Il doit être de type vecteur .
MÉTRIQUE
Chaîne portant le nom de la métrique de distance à utiliser pour calculer la distance entre les deux vecteurs donnés. Les métriques de distance suivantes sont prises en charge :
-
cosine- Distance cosinus -
euclidean- Distance euclide -
dot- (Négatif) Produit point
TYPE
Type d’algorithme ANN utilisé pour générer l’index. Seule DiskANN est actuellement prise en charge. DiskANN est la valeur par défaut.
MAXDOP
Remplace l’option de configuration max degree of parallelism pour l’opération d’index. Pour plus d’informations, consultez Configuration du serveur : degré maximal de parallélisme. Permet MAXDOP de limiter le degré de parallélisme et la consommation de ressources résultante pour une opération de génération d’index.
max_degree_of_parallelism peut avoir la valeur :
1Supprime la création de plans parallèles.
>1
Limite le degré maximal de parallélisme utilisé dans une opération d’index parallèle au nombre spécifié ou inférieur en fonction de la charge de travail système actuelle.
0(valeur par défaut)Utilise le degré de parallélisme spécifié au niveau du serveur, de la base de données ou du groupe de charge de travail, sauf s’il est réduit en fonction de la charge de travail système actuelle.
Pour plus d’informations, consultez Configurer des opérations d’index parallèles.
Remarque
Les opérations d’index parallèles ne sont pas disponibles dans toutes les éditions de SQL Server. Pour une liste des fonctionnalités prises en charge par les éditions de SQL Server, voir Éditions et fonctionnalités prises en charge de SQL Server 2022 ou Éditions et fonctionnalités prises en charge par SQL Server 2025.
Mettre à niveau des index vectoriels vers la dernière version
Important
Avis de dépréciation : les index vectoriels créés à l’aide d’une structure de données antérieure sont pris en charge dans la version actuelle, mais seront supprimés dans une version ultérieure. Pour garantir la compatibilité future et l’accès aux dernières fonctionnalités de recherche vectorielle, migrez les index vectoriels existants en suivant les étapes ci-dessous.
Les index vectoriels nouvellement créés utilisent automatiquement la structure de données la plus récente, qui fournit :
- Prise en charge complète de DML : supprime la limitation précédente qui a rendu les tables indexées vectorielles en lecture seule après la création de l’index. Vous pouvez maintenant effectuer des opérations INSERT, UPDATE, DELETE et MERGE tout en conservant la fonctionnalité d’index vectoriel avec la maintenance automatique et en temps réel des index
- Filtrage itératif : les prédicats dans la clause WHERE sont appliqués pendant le processus de recherche vectorielle, et non après la récupération
- Optimisé : l’optimiseur de requête détermine automatiquement s’il faut utiliser l’index DiskANN ou la recherche kNN en fonction des caractéristiques de requête
- Quantisation avancée : les techniques de quantisation vectorielle ont été intégrées pour améliorer l’efficacité du stockage et accélérer les performances des requêtes, ces optimisations étant transparentes pour les utilisateurs
Pour plus d’informations sur les limitations de version antérieures de l’index vectoriel, consultez la section Limitations et considérations.
Migration à partir des versions antérieures de l’index vectoriel
Les index vectoriels créés à l’aide d’une version antérieure doivent être supprimés et recréés pour activer les fonctionnalités les plus récentes. Cette section explique comment identifier, migrer et vérifier les versions d’index vectorielles.
Étape 1 : Identifier les index vectoriels existants
Utilisez la requête suivante pour identifier les index vectoriels qui nécessitent une migration :
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;
Comment interpréter les résultats
Utilise la dernière version
- Prend déjà en charge le filtrage itératif, la prise en charge complète de DML, l’exécution pilotée par optimiseur et la quantisation améliorée
- Aucune migration requise
Créé à l’aide d’une version antérieure
- Utilise le comportement post-filtre hérité
- Ne prend pas en charge les dernières fonctionnalités de recherche vectorielle
- La migration est fortement recommandée pour garantir la compatibilité future
Étape 2 : Supprimer et recréer l’index vectoriel
Les index vectoriels créés à l’aide d’un format antérieur ne peuvent pas être mis à niveau en place. Pour activer les fonctionnalités DiskANN les plus récentes, supprimez et recréez l’index.
Avertissement
Impact du service : la suppression immédiate d’un index vectoriel désactive immédiatement la recherche vectorielle approximative sur la table affectée jusqu’à ce que l’index soit recréé. Planifiez les migrations pendant les fenêtres de maintenance pour les systèmes de production.
Supprimer l’index existant
DROP INDEX vec_idx ON dbo.wikipedia_articles;
Recréer l’index
CREATE VECTOR INDEX vec_idx
ON dbo.wikipedia_articles (title_vector)
WITH (
TYPE = 'DISKANN',
METRIC = 'COSINE'
);
Remarque
Les index vectoriels créés à l’aide de l’instruction actuelle CREATE VECTOR INDEX utilisent automatiquement le dernier format DiskANN. Aucune option ou indicateur supplémentaire n’est nécessaire.
Étape 3 : Vérifier la version de l’index
Après la récréation, vérifiez que l’index utilise la dernière version :
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 colonne doit s’afficher 3 pour la dernière version.
Comportement d’erreur avec incompatibilité de version
Si vous tentez d’utiliser le TOP_N paramètre avec VECTOR_SEARCH un index vectoriel de version le plus récent, SQL Server retourne l’erreur suivante :
Msg 42274, Level 16, State 1
Vector search with version 3 index does not support explicit TOP_N parameter.
Pour résoudre cette erreur, supprimez le TOP_N paramètre et VECTOR_SEARCH utilisez plutôt la SELECT TOP (N) WITH APPROXIMATE syntaxe. Pour plus d’informations, consultez Erreur à l’aide de la syntaxe héritée.
Limitations et considérations
Limitations antérieures de la version de l’index vectoriel
Les versions antérieures de l’index vectoriel ont les limitations supplémentaires suivantes. Pour vérifier votre version d’index, consultez Vérifier la version de l’index.
Post-filtrage uniquement : les prédicats sont appliqués uniquement après la récupération de vecteurs, et non pendant le processus de recherche. Cela peut entraîner moins de lignes retournées que prévu lorsque des filtres sont appliqués.
Tables en lecture seule : les tables avec des index vectoriels sont en lecture seule. Aucune opération DML (INSERT, UPDATE, DELETE, MERGE) n’est autorisée après la création de l’index vectoriel. Utilisez la configuration délimitée à la
ALLOW_STALE_VECTOR_INDEXbase de données pour activer les opérations DML si vous pouvez tolérer des résultats de recherche obsolètes.Réglage manuel TOP_N : vous devez ajuster manuellement le paramètre
TOP_Npour compenser leVECTOR_SEARCHpost-filtrage, nécessitant souvent des valeurs surdimensionnées pour obtenir le nombre de résultats souhaité.
Limitations actuelles (s’applique également à la dernière version)
La préversion actuelle présente les limitations suivantes :
Les index vectoriels ne peuvent pas être partitionnés. Aucune prise en charge de partition.
La table doit avoir un index cluster de clé primaire.
Les index vectoriels ne sont pas répliqués sur les abonnés.
Les tables avec des index vectoriels ne peuvent pas être tronquées à l’aide
TRUNCATE TABLEde . Pour supprimer toutes les données, supprimez d’abord l’index vectoriel, tronquez la table, remplissez à nouveau avec au moins 100 lignes, puis recréez l’index. Pour plus d’informations, consultez les restrictions TRUNCATE TABLE.Les index vectoriels ne peuvent pas être déployés avec DacPac ou BACPAC. Les index vectoriels nécessitent au moins 100 lignes avec des vecteurs non NULL au moment de la création. Lorsque vous importez une base de données à l’aide de DacPac, BACPAC ou du service Import/Export, le processus d’importation crée des objets de schéma (y compris des index vectoriels) avant de charger des données, ce qui entraîne l’échec de l’importation.
Solution de contournement : supprimez les index vectoriels avant d’exporter la base de données, puis recréez les index après l’importation.
Configuration minimale requise pour les données
Les index vectoriels nécessitent un nombre minimal de lignes avec des valeurs vectorielles non NULL avant la création de l’index.
- Nombre de lignes minimal : au moins 100 lignes avec des valeurs vectorielles non NULL doivent exister dans la table.
- Comportement d’erreur : la tentative de création d’un index vectoriel sur une table avec moins de 100 lignes échoue avec l’erreur Msg 42266.
Exemple d’erreur :
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.
Bonne pratique : remplissez la table avec au moins 100 lignes avant de créer l’index vectoriel. Pour les scénarios de développement et de test où moins de lignes sont nécessaires, VECTOR_SEARCH fonctionne sans index à l’aide d’une approche d’analyse par force brute, bien que les performances se dégradent avec des jeux de données plus volumineux.
Prise en charge de DML
Une fois qu’un index vectoriel DiskANN est créé à l’aide de la dernière version, la table n’est plus en lecture seule. Vous pouvez modifier librement des données à l’aide d’opérations DML (Data Manipulation Language) standard, et les modifications sont automatiquement reflétées dans les résultats de recherche vectorielle.
Cette fonctionnalité rend la recherche vectorielle adaptée aux charges de travail transactionnelles actives où les données changent au fil du temps.
Notes de comportement
- Les opérations DML ne nécessitent pas de suppression ou de reconstruction de l’index vectoriel.
- Les modifications sont visibles pour les requêtes de recherche vectorielle après la validation de la transaction.
- Pour le remplacement des données à grande échelle (par exemple, la suppression de la plupart des lignes et l’insertion d’un ensemble entièrement nouveau d’incorporations), envisagez de supprimer et de recréer l’index vectoriel après la charge des données pour garantir une qualité de recherche optimale.
Remarque
La prise en charge de DML est disponible uniquement avec les index vectoriels créés à l’aide de la dernière version. Les versions antérieures nécessitent que les tables soient en lecture seule ou utilisent la configuration délimitée à la ALLOW_STALE_VECTOR_INDEX base de données.
Surveillance de la maintenance de l’index vectoriel
Les index vectoriels effectuent une maintenance en arrière-plan pour incorporer des modifications DML. Utilisez la vue de gestion dynamique sys.dm_db_vector_indexes pour surveiller l’état de la tâche d’intégrité et de maintenance des index.
Combinaison d’index vectoriels avec des index traditionnels
Les index vectoriels fonctionnent en même temps que les index B-tree traditionnels pour fournir des performances de requête optimales. Lors de l’utilisation du filtrage itératif avec VECTOR_SEARCH, envisagez de créer des index traditionnels sur des colonnes utilisées dans les prédicats de filtre.
Pour plus d’informations sur le comportement de filtrage itératif et sur la façon dont il diffère des versions antérieures, consultez le comportement de filtrage itératif.
Conseil / Astuce
L’optimiseur de requête sélectionne automatiquement la meilleure stratégie d’exécution (index voisin le plus proche approximatif et recherche kNN). Pour forcer l’utilisation de l’index voisin le plus proche approximatif, utilisez l’indicateur de FORCE_ANN_ONLY table. Pour plus d’informations, consultez indicateurs de table pour la recherche vectorielle.
Exemple de scénario :
-- 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);
Avantages en matière de performances :
Lors de l’exécution de requêtes avec un filtrage itératif, l’optimiseur de requête SQL Server utilise les deux types d’index :
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;
Dans cette requête :
- L’index vectoriel identifie des incorporations similaires basées sur le vecteur de requête
- Index traditionnel sur
(category)les filtres candidats efficacement pendant le processus de recherche itératif
Cette stratégie composite peut améliorer considérablement les performances des requêtes par rapport à l’utilisation d’un index vectoriel, en particulier lorsque les prédicats de filtre ont une sélectivité élevée.
Conseils de qualité et de maintenance des données pour les index vectoriels
Éviter les jeux de données avec des incorporations en double élevée
L’indexation vectorielle fonctionne mieux lorsque les incorporations représentent un contenu sémantique diversifié. Les jeux de données avec une proportion élevée de vecteurs en double ne sont pas recommandés pour l’indexation vectorielle.
Une duplication élevée peut entraîner :
- Mauvaise qualité des résultats : les vecteurs dupliqués apparaissent à plusieurs reprises dans les résultats, mettant en évidence des correspondances sémantiques plus pertinentes.
- Réduction de l’efficacité : les incorporations en double déplacent de meilleurs voisins, réduisant ainsi l’utilité de la recherche de similarité.
- Utilisation inutile des ressources : les index vectoriels sont coûteux à créer et à gérer, et les doublons ajoutent des coûts sans ajouter de valeur.
Bonne pratique : Dédupliquer les incorporations avant de créer un index vectoriel pour améliorer les performances et la qualité des résultats.
Scénarios de remplacement de données à grande échelle
Les index vectoriels prennent en charge les insertions, les mises à jour et les suppressions. Toutefois, lorsque la plupart ou toutes les incorporations sont remplacées ( par exemple, réinscrire un jeu de données avec un nouveau modèle), l’index existant peut ne plus refléter la nouvelle distribution de données.
Dans les scénarios de remplacement à grande échelle :
- Les requêtes de recherche vectorielle continuent de retourner des résultats valides
- Mais la qualité de rappel et de classement peut se dégrader, car la structure d’index a été créée pour une distribution d’incorporation différente.
Bonne pratique : lors de l’exécution d’un remplacement de données quasi complet (suppression et insertion de nouvelles incorporations), supprimez et recréez l’index vectoriel après le chargement des nouvelles données. La recréation de l’index garantit qu’elle est optimisée pour la nouvelle distribution d’incorporation et restaure le comportement de requête prévisible.
Problèmes connus
Pour plus d’informations, consultez les problèmes connus.
Autorisations
L’utilisateur doit disposer ALTER d’une autorisation sur la table.
Exemples
Téléchargez et importez l’article Wikipédia avec l’exemple d’incorporation de vecteurs .
Les exemples supposent l’existence d’une table nommée wikipedia_articles avec une colonne title_vector de type vector qui stocke les incorporations de titres d’articles Wikipédia.
title_vector est supposé être un incorporation généré avec un modèle d’incorporation tel que l’incorporation de texte-ada-002 ou l’incorporation de texte-3-small, qui retourne des vecteurs avec 1 536 dimensions.
Pour obtenir d’autres exemples, notamment des solutions de bout en bout, accédez au dépôt GitHub d’exemples de recherche vectorielle Azure SQL Database.
Exemple 1
L’exemple suivant crée un index vectoriel sur la colonne à l’aide title_vector de la cosine métrique.
CREATE VECTOR INDEX vec_idx
ON [dbo].[wikipedia_articles] ([title_vector])
WITH (METRIC = 'COSINE', TYPE = 'DISKANN');
Exemple 2
L’exemple suivant crée un index vectoriel sur la title_vector colonne à l’aide de la métrique de produit (négative), dot limitant le parallélisme à 8 et stockant le vecteur dans le SECONDARY groupe de fichiers.
CREATE VECTOR INDEX vec_idx
ON [dbo].[wikipedia_articles] ([title_vector])
WITH (METRIC = 'DOT', TYPE = 'DISKANN', MAXDOP = 8)
ON [SECONDARY];
Exemple 3
Exemple de base de bout en bout utilisant CREATE VECTOR INDEX et de la fonction associée VECTOR_SEARCH . Les incorporations sont simulées. Dans un scénario réel, les incorporations sont générées à l’aide d’un modèle d’incorporation et de AI_GENERATE_EMBEDDINGS, ou d’une bibliothèque externe telle qu’OpenAI SDK.
Remarque
Les derniers index vectoriels de version nécessitent au moins 100 lignes de données avant la création de l’index. Cet exemple insère 100 lignes pour répondre à cette exigence. Pour plus d’informations, consultez Configuration minimale requise pour les données.
Le bloc de code suivant illustre CREATE VECTOR INDEX les incorporations fictives :
- Active la fonctionnalité en préversion (obligatoire pour SQL Server 2025 uniquement ; non nécessaire pour Azure SQL Database ou sql database dans Fabric).
- Créez un exemple de table
dbo.Articlesavec une colonneembeddingavec un vecteur de type de données (5). - Insérez 100 lignes d’exemples de données avec des données incorporées fictifs.
- Créez un index vectoriel sur
dbo.Articles.embedding. - Illustrez la recherche de similarité vectorielle avec la
VECTOR_SEARCHfonction.
-- 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 syntaxe d’interrogation dépend de la version de l’index vectoriel :
| Version de l’index vectoriel | Exemple de syntaxe |
|---|---|
| Version la plus récente | Utiliser SELECT TOP (N) WITH APPROXIMATE sans TOP_N paramètre |
| Versions antérieures (déconseillées) | Utiliser un TOP_N paramètre dans la VECTOR_SEARCH fonction |
Pour les index de version antérieures (syntaxe déconseillée) :
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;
Exemple 4 : Utilisation des opérations DML
Les exemples suivants illustrent les opérations DML sur une table avec un index vectoriel créé à l’aide de la dernière version.
Supprimer des lignes
La suppression de lignes les supprime à la fois de la table et des résultats de recherche vectorielle.
DELETE FROM dbo.wikipedia_articles
WHERE id = 12345;
Une fois la suppression terminée, la ligne supprimée n’apparaît plus dans les requêtes de recherche vectorielle.
Insérer de nouvelles lignes
Vous pouvez insérer de nouvelles lignes avec des incorporations, et elles deviennent immédiatement pouvant faire l’objet d’une recherche sans reconstruire l’index.
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)
);
Les incorporations nouvellement insérées sont automatiquement incorporées dans l’index vectoriel et peuvent être retournées par les requêtes de recherche vectorielle suivantes.
Mettre à jour les lignes existantes
La mise à jour des colonnes vectorielles ou non vectorielles est entièrement prise en charge.
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 une colonne vectorielle est mise à jour, l’index est mis à jour en conséquence afin que les recherches vectorielles futures utilisent la nouvelle incorporation.
Utiliser MERGE pour les opérations complexes
L’instruction MERGE vous permet d’effectuer des opérations d’insertion, de mise à jour et de suppression dans une seule instruction.
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;
L’index vectoriel est automatiquement mis à jour pour refléter toutes les modifications apportées par l’instruction MERGE .