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 à : 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. Cela est particulièrement important 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 en savoir plus sur plusieurs stratégies de mise à jour des incorporations, consultez Base de données et IA : solutions pour maintenir les incorporations mises à jour.
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). Cela limite le nombre de vecteurs pouvant s’adapter à une seule page.
Quel modèle d’incorporation dois-je utiliser et quand ?
Il existe de nombreux modèles d’incorporation disponibles et le choix de celui à utiliser dépend du cas d’usage spécifique et du type de données en cours de traitement. Certains modèles prennent en charge plusieurs langues, tandis que d’autres prennent en charge les données modales (texte, images, etc.). Certains sont disponibles uniquement en ligne, d’autres peuvent être exécutés 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, mais, dans de nombreux cas, avoir plus de dimension ne change pas vraiment la qualité que beaucoup, 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 une seule précision (4 octets) et des valeurs à virgule flottante de demi-précision (2 octets) pour les vecteurs ?
Lorsque vous stockez des vecteurs incorporés dans une base de données, le choix entre les flotteurs à précision unique (float32) et demi-précision (float16) est souvent lié à l’équilibrage de l’efficacité du stockage avec une fidélité numérique.
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 sont souvent la sortie des réseaux neuronaux, qui sont intrinsèquement tolérants à de petites variations numériques. Par conséquent, la réduction de la précision de float32 à float16 a généralement un impact minimal sur la qualité des comparaisons de similitude 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 ?
À ce stade, le type de données vectorielles dans le moteur de base de données SQL est conçu pour les vecteurs denses, qui 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 conçues pour être efficaces et évolutives, en tirant parti des techniques d’indexation pour optimiser les performances de recherche.
Que se passe-t-il si j’ai plusieurs colonnes que j’aimerais 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 les deux options et les considérations relatives à la conception de base de données associées, consultez Modéliser efficacement et élégamment les vecteurs d'embeddings.
Qu’en est-il du re-classement ?
Le re-classement est une technique utilisée pour améliorer 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 le texte intégral (qui fournit un classement BM25) ou 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.
Quand utiliser la recherche IA (maintenant AI Foundry) ou sql pour les scénarios de recherche de vecteurs ?
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é, et d’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 qui peut être exécutée dans Azure SQL ou SQL Server qui combine des données vectorielles, géospatiales, structurées et non structurées en même temps. L’exemple de requête récupère les 50 restaurants les plus pertinents les plus pertinents en fonction de la description du restaurant, de l’emplacement du restaurant et des préférences de l’utilisateur, à l’aide de la recherche vectorielle pour la description et la recherche géospatiale de l’emplacement, en filtrant également par numéros d’étoile, nombre de révisions, catégorie, et ainsi de suite :
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 Nearest Neighbor (ENN) est utilisée pour rechercher 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