Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
S’applique à : Base de données SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
SQL dans Microsoft Fabric
Cet article contient des questions fréquemment posées sur les vecteurs et les incorporations dans le moteur de base de données SQL.
Note
Les fonctionnalités vectorielles sont disponibles dans Azure SQL Managed Instance configurée avec la stratégie Always-up-to-date .
Comment maintenir l’incorporation à jour ?
Mettez à jour les embeddings chaque fois que les données sous-jacentes qu’elles représentent changent. Cette pratique est particulièrement importante pour les scénarios où les données sont dynamiques, telles que le contenu généré par l’utilisateur ou les bases de données fréquemment mises à jour. Pour plus d’informations sur plusieurs stratégies de mise à jour des incorporations, consultez Base de données et IA : solutions pour la mise à jour des incorporations.
Quelle est la surcharge de stockage et de traitement pour la recherche vectorielle ?
La surcharge pour la recherche vectorielle implique principalement le stockage du type de données vectorielle et les ressources de calcul requises pour l’indexation et la recherche. Le type de données vectorielles est conçu pour être efficace en termes de stockage, mais la surcharge exacte peut varier en fonction de la taille - le nombre de dimensions - des vecteurs stockés.
Pour plus d’informations sur la façon de choisir la taille de vecteur appropriée, passez en revue les modèles et dimensions incorporés : optimisation du ratio d’utilisation des ressources de performances.
Une page de données SQL Server peut contenir jusqu’à 8 060 octets, de sorte que la taille du vecteur affecte le nombre de vecteurs pouvant être stockés dans une seule page. Par exemple, si vous avez un vecteur avec 1 024 dimensions et que chaque dimension est un float de précision unique (4 octets), la taille totale du vecteur est de 4 104 octets (charge utile de 4 096 octets + 8 octets d’en-tête). Cette taille limite le nombre de vecteurs pouvant s'adapter à une seule page à un.
Quel modèle d’incorporation dois-je utiliser et quand ?
De nombreux modèles d’incorporation sont disponibles. Le choix dépend de votre cas d’usage spécifique et du type de données que vous traitez. Certains modèles prennent en charge plusieurs langues, tandis que d’autres prennent en charge les données modales (texte, images, etc.). Certains modèles sont disponibles uniquement en ligne, tandis que d’autres peuvent s’exécuter localement.
En plus du modèle lui-même, tenez compte de la taille du modèle et du nombre de dimensions qu’il produit. Les modèles plus volumineux peuvent fournir une meilleure précision, mais nécessitent davantage de ressources de calcul et d’espace de stockage. Dans de nombreux cas, avoir plus de dimensions ne change pas considérablement la qualité pour les cas d’usage courants.
Pour plus d’informations sur la façon de choisir le modèle d’incorporation approprié, consultez Modèles et dimensions d’incorporation : optimisation du ratio d’utilisation des ressources de performances.
Comment décider quand utiliser des valeurs en simple précision (4 octets) versus demi-précision (2 octets) à virgule flottante pour les vecteurs ?
Lorsque vous stockez des vecteurs incorporés dans une base de données, vous devez souvent équilibrer l’efficacité du stockage avec une fidélité numérique lors du choix entre des flotteurs à précision unique (float32) et demi-précision (float16).
Heureusement, les incorporations ne sont généralement pas très sensibles aux petites modifications de précision.
Les incorporations sont des représentations vectorielles denses utilisées dans des tâches telles que la recherche sémantique, les systèmes de recommandation et le traitement du langage naturel. Ces vecteurs proviennent souvent de réseaux neuronaux, qui sont intrinsèquement tolérants à de petites variations numériques. Par conséquent, la réduction de la précision jusqu’à float32float16 la plupart du temps a un impact minimal sur la qualité des comparaisons de similarité ou des tâches en aval, en particulier pendant l’inférence.
L’utilisation float16 peut réduire considérablement l’utilisation du stockage et de la mémoire, ce qui est particulièrement utile lors de l’utilisation de jeux de données incorporés à grande échelle.
Qu’en est-il des vecteurs épars ?
Actuellement, le type de données vectorielles dans le moteur de base de données SQL est conçu pour les vecteurs denses. Ces vecteurs sont des tableaux de nombres à virgule flottante où la plupart des éléments ne sont pas zéro. Les vecteurs clairsemés, qui contiennent un nombre significatif d’éléments zéro, ne sont pas pris en charge nativement.
Quels sont les benchmarks de performances pour la recherche vectorielle SQL ?
Les performances peuvent varier considérablement en fonction du cas d’usage spécifique, de la taille du jeu de données et de la complexité des requêtes. Toutefois, les fonctionnalités de recherche vectorielle de SQL Server sont efficaces et évolutives. Ils utilisent des techniques d’indexation pour optimiser les performances de recherche.
Que se passe-t-il si j’ai plusieurs colonnes que je souhaite utiliser pour générer des incorporations ?
Si vous avez plusieurs colonnes que vous souhaitez utiliser pour générer des incorporations, vous avez deux options principales :
- Créer une incorporation pour chaque colonne ou
- Concatène les valeurs de plusieurs colonnes en une seule chaîne, puis génère une incorporation unique pour cette chaîne concaténée.
Pour plus d’informations sur ces deux options et les considérations relatives à la conception de base de données associées, consultez Modélisation des intégrations de manière efficace et élégante.
Qu’en est-il du re-classement ?
Le re-classement améliore la pertinence des résultats de recherche en réévaluant les résultats initiaux en fonction de critères ou de modèles supplémentaires. Dans le moteur de base de données SQL, vous pouvez implémenter un re-classement en combinant la recherche vectorielle avec la recherche en texte intégral (qui fournit le classement BM25), ou en utilisant des requêtes SQL supplémentaires ou des modèles Machine Learning pour affiner les résultats en fonction de la logique métier ou des préférences utilisateur spécifiques.
Pour plus d’informations, consultez Amélioration des fonctionnalités de recherche avec recherche hybride et re-classement RRF.
Une technique de re-classement plus affinée est appelée re-classement sémantique. Le re-classement sémantique s’appuie sur un modèle spécialisé (souvent un encodeur croisé ou une approche d’interaction tardive) pour comparer chaque passage candidat à la requête et attribuer un score de pertinence détaillé. En réévaluant ces passages, les reclasseurs garantissent que les résultats les plus précis, utiles et pertinents montent au sommet.
Pour obtenir un exemple d’utilisation d’un modèle de reclassement, consultez Reranking sémantique avec Azure SQL, SQL Server 2025 et Cohere Rerank models.
Quand dois-je utiliser la recherche IA (maintenant AI Foundry) par rapport à l’utilisation de SQL pour les scénarios de recherche vectorielle ?
Ai Search (maintenant AI Foundry) est un service spécialisé conçu pour les scénarios de recherche avancés, notamment la recherche vectorielle, le traitement du langage naturel et les insights pilotés par l’IA. Il fournit un ensemble complet de fonctionnalités pour la création d’applications de recherche intelligentes, telles que la prise en charge intégrée de différents modèles IA, les algorithmes de classement avancés et l’intégration à d’autres services IA.
Le moteur de base de données SQL permet de stocker n’importe quel type de données et d’exécuter n’importe quel type de requête : structuré et non structuré. Vous pouvez effectuer une recherche vectorielle sur ces données. Il s’agit d’un bon choix pour les scénarios où vous devez effectuer une recherche sur toutes ces données ensemble, et vous ne souhaitez pas utiliser un service distinct pour la recherche qui compliquerait votre architecture. Le moteur de base de données SQL offre des fonctionnalités de sécurité d’entreprise critiques pour s’assurer que les données sont toujours protégées, telles que la sécurité au niveau des lignes (RLS), le masquage dynamique des données (DDM), Always Encrypted, les tables de registre immuables et le chiffrement transparent des données (TDE).
Voici un exemple de requête unique que vous pouvez exécuter dans Azure SQL ou SQL Server qui combine des données vectorielles, géospatiales, structurées et non structurées. L’exemple de requête récupère les 50 meilleurs restaurants les plus pertinents en fonction de la description du restaurant, de l’emplacement du restaurant et des préférences de l’utilisateur. Il utilise la recherche vectorielle pour la description et la recherche géospatiale pour l’emplacement, le filtrage également par nombres d’étoiles, le nombre de révisions, la catégorie et d’autres attributs.
DECLARE @p AS GEOGRAPHY = GEOGRAPHY::Point(47.6694141, -122.1238767, 4326);
DECLARE @e AS VECTOR(1536) = AI_GENERATE_EMBEDDINGS('I want to eat a good focaccia' USE MODEL Text3Embedding);
SELECT TOP (50) b.id AS business_id,
b.name AS business_name,
r.id AS review_id,
r.stars,
r.review,
VECTOR_DISTANCE('cosine', re.embedding, @e) AS semantic_distance,
@p.STDistance(geo_location) AS geo_distance
FROM dbo.reviews AS r
INNER JOIN dbo.reviews_embeddings AS re
ON r.id = re.review_id
INNER JOIN dbo.business AS b
ON r.business_id = b.id
WHERE b.city = 'Redmond'
AND @p.STDistance(b.geo_location) < 5000 -- 5 km
AND r.stars >= 4
AND b.reviews >= 30
AND JSON_VALUE(b.custom_attributes, '$.local_recommended') = 'true'
AND VECTOR_DISTANCE('cosine', re.embedding, @e) < 0.2
ORDER BY semantic_distance DESC;
Dans l’exemple précédent, la recherche Exact Voisin le plus proche (ENN) recherche les révisions les plus pertinentes en fonction de la distance sémantique des incorporations, tout en filtrant également par distance géospatiale et d’autres attributs métier. Cette requête montre la puissance de la combinaison de la recherche vectorielle avec les fonctionnalités SQL traditionnelles pour créer une expérience de recherche riche et efficace.
Si vous souhaitez utiliser la recherche approximative voisin le plus proche (ANN), vous pouvez créer un index vectoriel sur la reviews_embeddings table et utiliser la VECTOR_SEARCH fonction pour effectuer la recherche.
Où puis-je trouver un laboratoire en autonomie pour en savoir plus sur les représentations intégrées et la recherche vectorielle ?
Consultez le labo auto-rythmé Azure SQL Cryptozoology AI Embeddings.
Contenu connexe
- Type de données vectorielles
- Fonctions vecteur
- VECTOR_DISTANCE (Transact-SQL)
- VECTOR_SEARCH (Transact-SQL) (préversion)
- CRÉER UN INDEX VECTORIEL (Transact-SQL)
- Exemples de recherche vectorielle Azure SQL Database
- Applications intelligentes et IA
- Questions fréquentes (FAQ) sur les applications intelligentes et l’IA