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 :
- Azure AI Search
- Azure Cosmos DB pour NoSQL
- Azure Cosmos DB for MongoDB (vCore)
- Azure Cosmos DB pour PostgreSQL
- Base de données Azure pour PostgreSQL
- Azure SQL Database
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
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 |
- « pgvector » prend en charge la recherche vectorielle, qui est l'extension de PostgreSQL.
- Utilisez la recherche vectorielle sur les encastrements dans Azure Cosmos DB pour MongoDB vCore
- Vecteurs dans Recherche Azure AI
- La recherche vectorielle native est disponible avec la préversion Utilisateurs précoces d’Azure SQL Database
- Les vecteurs peuvent être stockés dans une colonne ou une variable VARBINARY(8000).
- 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.
- 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.
- 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 |
- Recherche en texte intégral PostgreSQL
- Recherche et interrogation avec des index de texte dans Azure Cosmos DB pour MongoDB vCore
- Commencer à utiliser la recherche en texte intégral
- Données vectorielles sur SQL Server
- Il ne s'agit pas d'une fonctionnalité de premier ordre, mais des exemples de codes sont fournis.
- 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.
- Exemple de recherche hybride pour Azure SQL database et SQL Server.
- 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 |
- Azure Cosmos DB for MongoDB - Aperçu de la recherche vectorielle
- Stratégies d’indexation vectorielle
- Un seul champ vectoriel est disponible par conteneur.
- Un seul indice vectoriel est disponible par conteneur.
- 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 |
- Calcul de distance vectorielle pour Azure Cosmos DB for NoSQL.
- 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 |
- Azure Cosmos DB for MongoDB (vCore) est pris en charge en tant que source de données pour Azure OpenAI sur vos données.
- Recherche Azure AI est pris en charge en tant que source de données pour Azure OpenAI sur vos données.
- Azure AI Extension (préversion) est disponible.
- Recherche Azure AI fournit une compétence pour vectoriser le texte fragmenté.
- Vous pouvez créer une procédure stockée pour le déploiement de votre modèle d'intégration.
- Pris en charge en tant que base de données vectorielles dans l'outil Vector DB Lookup.
- Pris en charge en tant que connecteur de mémoire et connecteur de base de données vectorielles (C#).
- Pris en charge en tant que connecteur de mémoire et connecteur de base de données vectorielle (C#, Python).
- Pris en charge en tant que connecteur de base de données vectorielle (C#, Python).
- Pris en charge en tant que connecteur de mémoire et connecteur de base de données vectorielle (C#, Python).
- 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 :
- Keita Onabuta | Ingénieur client senior
- Gary Lee | Ingénieur client Senior
Autres contributeurs :
- Kruti Mehta | Ingénieur client
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 .
Ressources associées
- Comprendre les modèles de magasin de données
- Choix technologiques pour les solutions Azure
- Annonce d’EAP pour la prise en charge des vecteurs dans Azure SQL Database
- Prise en charge des vecteurs natifs dans Azure SQL et SQL Server
- Base de données vectorielle dans Azure Cosmos DB
- Présentation des fonctionnalités de la base de données vectorielle dans Azure Cosmos DB for NoSQL
- Recherche vectorielle dans Azure Cosmos DB for NoSQL
- Exemples de base de données vectorielle Azure