Partager via


Choisissez un service Azure pour la recherche vectorielle

La recherche vectorielle est une méthode permettant de trouver des informations stockées dans une base de données sous forme de vecteurs. Les vecteurs sont des groupes de nombres qui représentent des fonctionnalités ou des caractéristiques de médias, tels que du texte ou des images. Les vecteurs représentent une avancée significative par rapport aux méthodes de recherche traditionnelles basées sur des mots-clés. Ils offrent des résultats plus rapides et plus précis en comprenant les relations sémantiques au sein de l'information.

Azure offre plusieurs façons de stocker et de rechercher des données vectorisées. Cet article aide les architectes et les développeurs à comprendre et à choisir le bon service Azure de recherche vectorielle pour leur application.

Cet article compare les services suivants en fonction de leurs capacités de recherche vectorielle :

Les architectes et les développeurs doivent comparer les services disponibles du point de vue des exigences du système dans Choisir un service candidat et dans la matrice des capacités.

Choisir un service candidat

Cette section vous aide à sélectionner les services les mieux adaptés à vos besoins. Pour limiter les choix, commencez par prendre en compte les exigences du système.

Conditions clés

Un organigramme qui vous aide à choisir le bon service Azure pour la recherche vectorielle.

Lorsque vous décidez d'utiliser une solution de base de données traditionnelle ou la Recherche Azure AI, tenez compte de vos besoins et de la possibilité d'effectuer des recherches vectorielles en direct ou en temps réel sur vos données. Une base de données relationnelle ou NoSQL traditionnelle est la mieux adaptée à votre scénario si vous modifiez fréquemment les valeurs dans les champs vectorisés et que les modifications doivent pouvoir être recherchées en temps réel ou quasi-temps réel. De même, l'utilisation de votre base de données existante peut être la meilleure solution pour atteindre vos objectifs de performance. En revanche, si votre charge de travail ne nécessite pas de pouvoir effectuer des recherches vectorielles en temps réel ou quasi-temps réel, et que vous acceptez de gérer un index de vecteurs, AI Search peut être un choix intéressant.

Si vous optez pour une solution de base de données traditionnelle, le type spécifique de service de base de données que vous décidez d'utiliser dépend principalement des compétences de votre équipe et des bases de données que vous exploitez actuellement. Si vous utilisez déjà un type de base de données spécifique, comme Mongo DB par exemple, l'utilisation de ce même type de base de données pourrait être la solution la plus simple pour votre scénario. Comme le montre la matrice des capacités, chaque service de base de données possède des capacités et des limites qui lui sont propres en matière de recherche vectorielle. Examinez ces informations pour vous assurer que le type de base de données que vous préférez prend en charge les fonctionnalités dont vous avez besoin.

Si les coûts sont un facteur déterminant, le maintien de votre conception existante est probablement la meilleure solution pour votre scénario, car l'introduction de nouveaux services ou d'autres instances d'un service de base de données peut entraîner de nouveaux coûts nets et une plus grande complexité. L'utilisation de vos bases de données actuelles pour la recherche vectorielle aura probablement une incidence moindre sur vos coûts que l'utilisation d'un service spécialisé.

Si vous choisissez d'utiliser une base de données traditionnelle au lieu d'AI Search, certaines fonctionnalités de recherche avancée ne sont pas disponibles par défaut. Par exemple, si vous souhaitez effectuer un reclassement ou une recherche hybride, vous devez activer cette fonctionnalité par le biais de Transact-SQL (T-SQL) ou d'autres codes.

Matrice des fonctionnalités

Les tableaux de cette section résument les principales différences de capacités.

Fonctionnalités de base

La prise en charge native des types de données vectorielles, des index de vecteurs basés sur la méthode de plus proche voisin approximatif (ANN), des limites de dimension des vecteurs, des champs vectoriels multiples et des index de vecteurs multiples varie parfois entre les services. Les exigences de votre charge de travail peuvent nécessiter certaines de ces fonctionnalités spécifiques. Comprenez les fonctionnalités vectorielles de base de chaque service Azure, comme indiqué dans le tableau suivant :

Fonctionnalité Azure Cosmos DB pour PostgreSQL Azure Cosmos DB pour NoSQL Azure Cosmos DB for MongoDB (vCore) Base de données Azure pour PostgreSQL (Flex) Recherche Azure AI Azure SQL Database
Recherche vectorielle intégrée Oui 1 Oui Oui 2 Oui 1 Oui 3 Oui 4
Type de données vectorielles Oui Oui Oui Oui Oui Non
Limites dimensionnelles 6 16 000 7 ou 2000 5058 ou 4096 2 000 16 000 7 ou 2000 3 072 1998 (préversion)5
Champs de vecteurs multiples Oui Oui No Oui Oui Oui
Index vectoriels multiples Oui Oui No Oui Oui Oui
  1. « pgvector » prend en charge la recherche vectorielle, qui est l'extension de PostgreSQL.
  2. Utilisez la recherche vectorielle sur les encastrements dans Azure Cosmos DB pour MongoDB vCore
  3. Vecteurs dans Recherche Azure AI
  4. La recherche vectorielle native est disponible avec la préversion Utilisateurs précoces d’Azure SQL Database
  5. Les vecteurs peuvent être stockés dans une colonne ou une variable VARBINARY(8000).
  6. Modèles d'intégration d'OpenAI, 1536 pour text-embedding-ada-002 et text-embedding-3-small, et 3072 pour text-embedding-3-large. Pour les modèles d'intégration multimodale d'Azure AI Vision, 1024 pour les images et le texte.
  7. Les vecteurs peuvent avoir jusqu'à 16 000 dimensions. Mais l’index utilisant « IVFFlat » et « HNSW » prend en charge les vecteurs comportant jusqu’à 2 000 dimensions.
  8. Les vecteurs indexés avec le type d’index plat peuvent avoir au maximum 505 dimensions. Les vecteurs indexés avec le type d’index quantizedFlat ou DiskANN peuvent avoir au maximum 4 096 dimensions.

Méthodes de recherche

Les charges de travail doivent souvent combiner la recherche vectorielle avec la recherche en texte intégral, voire une recherche hybride (recherche en texte intégral ou recherche sémantique + recherche vectorielle). La combinaison de la recherche hybride et du reclassement permet d'obtenir une grande précision pour les charges de travail. Vous pouvez mettre en œuvre manuellement la recherche hybride et le repositionnement avec votre propre code, ou vous pouvez examiner comment votre magasin de vecteurs prend en charge cette charge de travail.

Méthode de recherche Azure Cosmos DB pour PostgreSQL Azure Cosmos DB pour NoSQL Azure Cosmos DB for MongoDB (vCore) Base de données Azure pour PostgreSQL (Flex) Recherche Azure AI Azure SQL Database
Recherche en texte intégral Oui 1 Non Oui 2 Oui 1 Oui 3 Oui 4
Recherche hybride Oui 5 Non Non Oui 5 Oui 6 Oui 7
Remaniement intégré Non Non Non Non Oui 8 Non
  1. Recherche en texte intégral PostgreSQL
  2. Recherche et interrogation avec des index de texte dans Azure Cosmos DB pour MongoDB vCore
  3. Commencer à utiliser la recherche en texte intégral
  4. Données vectorielles sur SQL Server
  5. Il ne s'agit pas d'une fonctionnalité de premier ordre, mais des exemples de codes sont fournis.
  6. La recherche hybride (combinaison de la recherche en texte intégral, de la recherche vectorielle et du classement sémantique) est une fonctionnalité de premier ordre.
  7. Exemple de recherche hybride pour Azure SQL database et SQL Server.
  8. Le reclassement, appelé classement sémantique, est une fonctionnalité de premier ordre pour le reclassement des résultats de la recherche en texte intégral et/ou de la recherche vectorielle.

Algorithmes d'indexation des données vectorielles

L'indexation des données vectorielles est la capacité de stocker et d'extraire efficacement des vecteurs. Cette capacité est importante, car l'indexation influence la vitesse et la précision des recherches de similarité et des requêtes sur le plus proche voisin dans les sources de données.

Les indices sont généralement basés sur un algorithme exhaustif de k-voisins les plus proches (Ek-NN) ou un algorithme ANN. Ek-NN effectue une recherche exhaustive sur tous les points de données un par un et renvoie les K plus proches voisins exacts. L'Ek-NN fonctionne en quelques millisecondes avec une petite quantité de données, mais peut entraîner un temps de latence pour de grandes quantités de données.

DiskANN, HNSW et IVFFlat sont les index de l'algorithme ANN. Le choix de la stratégie d'indexation appropriée implique un examen minutieux de divers facteurs tels que la nature de l'ensemble de données, les exigences spécifiques des requêtes et les ressources disponibles. DiskANN peut s’adapter aux modifications du jeu de données et enregistrer des ressources de calcul. HNSW excelle dans les systèmes qui exigent des réponses rapides aux requêtes et qui peuvent s'adapter aux changements dans le jeu de données. IVFFlat est efficace dans les environnements où les ressources matérielles sont limitées ou les volumes de requêtes ne sont pas élevés.

Comprenez quels types d'indexation de données vectorielles sont proposés dans le tableau suivant.

Approche d'indexation Azure Cosmos DB pour PostgreSQL Azure Cosmos DB pour NoSQL Azure Cosmos DB for MongoDB (vCore) Base de données Azure pour PostgreSQL (Flex) Recherche Azure AI Azure SQL Database
DiskANN Non Oui No Non Non Non
K-voisins les plus proches exhaustifs (EKNN) Oui Oui Oui Oui Oui Oui
Hierarchical Navigable Small Worlds (HNSW) Oui Non Oui (préversion)1 Oui Oui Non
IVFflat Oui No Oui Oui No Non
Other - flat, quantizedFlat2 Limitation du champ vectoriel 3
Limitation de l'indice vectoriel 4
- - Les bibliothèques externes sont disponibles5
  1. Azure Cosmos DB for MongoDB - Aperçu de la recherche vectorielle
  2. Stratégies d’indexation vectorielle
  3. Un seul champ vectoriel est disponible par conteneur.
  4. Un seul indice vectoriel est disponible par conteneur.
  5. L’index peut être créé à l’aide de bibliothèques externes telles que Scikit Learn ou FAISS

Capacités de calcul de la similarité et de la distance

Il existe des méthodes de calcul de la similarité cosinusienne, du produit des points et de la distance euclidienne pour la recherche vectorielle. Ces méthodes sont utilisées pour calculer la similarité entre deux vecteurs ou la distance entre deux vecteurs.

L'analyse préliminaire des données bénéficie à la fois des mesures et des distances euclidiennes, qui permettent d'extraire différents aperçus sur la structure des données, tandis que la classification des textes donne généralement de meilleurs résultats avec les distances euclidiennes. L'extraction des textes les plus similaires à un texte donné fonctionne généralement mieux avec la similarité cosinusoïdale.

Les intégrations du service Azure OpenAI s'appuient sur la similarité cosinusoïdale pour calculer la similarité entre les documents et une requête.

Calcul intégré de la comparaison de vecteurs Azure Cosmos DB pour PostgreSQL Azure Cosmos DB pour NoSQL Azure Cosmos DB for MongoDB (vCore) Base de données Azure pour PostgreSQL (Flex) Recherche Azure AI Azure SQL Database
Similarité cosinus Oui Oui1 Oui Oui Oui Oui 2
Distance euclidienne (distance L2) Oui Oui1 Oui Oui Oui Oui 2
Produit de points Oui Oui1 Oui Oui Oui Oui 2
  1. Calcul de distance vectorielle pour Azure Cosmos DB for NoSQL.
  2. Exemples de calcul de distance pour Azure SQL database et SQL Server.

Intégration avec Azure OpenAI et d'autres composants

Lorsque vous mettez en œuvre la recherche vectorielle, vous pouvez également envisager de la lier à d'autres composants Microsoft. Par exemple, Azure OpenAI Service vous aide à créer des vecteurs pour vos données et à saisir des requêtes pour la recherche de similarités vectorielles.

Fonctionnalité Azure Cosmos DB pour PostgreSQL Azure Cosmos DB pour NoSQL Azure Cosmos DB for MongoDB (vCore) Base de données Azure pour PostgreSQL (Flex) Recherche Azure AI Azure SQL Database
Azure OpenAI Service - ajoutez vos propres données Non Non Oui 1 Non Oui 2 Non
Intégration de vecteurs avec Azure OpenAI Non Non Non Oui 3 Oui 4 Oui 5
Intégration avec le flux d'invite Non Non Non Non Oui 6 Non
Intégration avec Semantic Kernel Oui 7 Oui8 Oui9 Oui 7 Oui 10 Oui 11
  1. Azure Cosmos DB for MongoDB (vCore) est pris en charge en tant que source de données pour Azure OpenAI sur vos données.
  2. Recherche Azure AI est pris en charge en tant que source de données pour Azure OpenAI sur vos données.
  3. Azure AI Extension (préversion) est disponible.
  4. Recherche Azure AI fournit une compétence pour vectoriser le texte fragmenté.
  5. Vous pouvez créer une procédure stockée pour le déploiement de votre modèle d'intégration.
  6. Pris en charge en tant que base de données vectorielles dans l'outil Vector DB Lookup.
  7. Pris en charge en tant que connecteur de mémoire et connecteur de base de données vectorielles (C#).
  8. Pris en charge en tant que connecteur de mémoire et connecteur de base de données vectorielle (C#, Python).
  9. Pris en charge en tant que connecteur de base de données vectorielle (C#, Python).
  10. Pris en charge en tant que connecteur de mémoire et connecteur de base de données vectorielle (C#, Python).
  11. Pris en charge en tant que connecteur de mémoire.

Contributeurs

Cet article est géré par Microsoft. Il a été écrit à l’origine par les contributeurs suivants.

Principaux auteurs :

Autres contributeurs :

Pour afficher les profils LinkedIn non publics, connectez-vous à LinkedIn.

Étape suivante

Mettre en œuvre l'exploration des connaissances avec Recherche Azure AI . Ce parcours d'apprentissage explore la manière d'utiliser Recherche Azure AI .