Partager via


Base de données vectorielles

S’APPLIQUE À : NoSQL MongoDB vCore PostgreSQL

Les bases de données vectorielles sont utilisées dans de nombreux domaines et situations de l'IA analytique et générative. Il s'agit notamment du traitement du langage naturel, de la reconnaissance de vidéos et d'images, des systèmes de suggestions et de la recherche, pour n'en citer que quelques-uns.

En 2023, l’intégration des améliorations de l’IA, souvent obtenues en intégrant des bases de données vectorielles autonomes spécialisées dans des piles technologiques existantes, a représenté une tendance notable dans le domaine des logiciels. Cet article décrit les bases de données vectorielles et présente une architecture alternative que vous pourriez envisager : l'utilisation d'une base de données vectorielle intégrée dans la base de données NoSQL ou relationnelle que vous utilisez déjà, notamment lorsque vous travaillez avec des données multimodales. Cette approche vous permet non seulement de réduire les coûts, mais également d’accroître la cohérence, la scalabilité et le niveau de performance des données.

Conseil

La cohérence, la scalabilité et le niveau de performance des données sont essentielles pour les applications nécessitant beaucoup de données, c’est pourquoi OpenAI a choisi de créer le service ChatGPT sur Azure Cosmos DB. Vous aussi, vous pouvez tirer parti de sa base de données vectorielle intégrée, ainsi que de ses temps de réponse en millisecondes à un chiffre, sa scalabilité automatique et instantanée et sa vitesse garantie à n’importe quelle échelle. Consultez les exemples d’implémentation et essayez-les gratuitement.

Qu’est-ce qu’une base de données vectorielle ?

Une base de données vectorielle est une base de données conçue pour stocker et gérer des incorporations vectorielles, qui sont des représentations mathématiques des données dans un espace de grande dimension. Dans cet espace, chaque dimension correspond à une caractéristique des données, et des dizaines de milliers de dimensions peuvent être utilisées pour représenter des données sophistiquées. La position d’un vecteur dans cet espace représente ses caractéristiques. Les mots, expressions ou documents entiers, ainsi que les images, l’audio et d’autres types de données peuvent tous être vectorisés. Ces incorporations vectorielles sont utilisées dans la recherche de similarité, la recherche multimodèle, les moteurs de recommandations, les modèles LLM, etc.

Dans une base de données vectorielle, les incorporations sont indexées et interrogées via des algorithmes de recherche vectorielle en fonction de leur distance ou de leur similitude vectorielle. Un mécanisme robuste est nécessaire pour identifier les données les plus pertinentes. Parmi les algorithmes de recherche vectorielle connus figurent entre autres HNSW (Hierarchical Navigable Small World), IVF (Inverted File), DiskANN.

Base de données vectorielle intégrée comparée à base de données vectorielle pure

Il existe deux types courants d’implémentations de base de données vectorielles : une base de données vectorielle pure et une base de données vectorielle intégrée dans une base de données NoSQL ou relationnelle.

Une base de données vectorielle pure est conçue pour stocker et gérer efficacement les incorporations vectorielles, ainsi qu’une petite quantité de métadonnées. Elle est distincte de la source de données à partir de laquelle les incorporations sont dérivées.

Une base de données vectorielle intégrée à une base de données NoSQL ou relationnelle hautement performante fournit des capacités supplémentaires. La base de données vectorielles intégrée dans une base de données NoSQL ou relationnelle permet de stocker, d’indexer et d’interroger les incorporations en même temps que les données d’origine correspondantes. Cette approche élimine le coût supplémentaire dû à la réplication des données dans une base de données vectorielle pure distincte. De plus, le regroupement des incorporations vectorielles et des données d’origine facilite les opérations sur les données multimodales et permet d’améliorer la cohérence, la mise à l’échelle et les performances des données. Une base de données hautement performante avec une flexibilité de schéma et une base de données vectorielle intégrée est particulièrement optimale pour agents IA.

Cas d'usage de la base de données vectorielle

Les bases de données vectorielles sont utilisées dans de nombreux domaines et situations dans l’IA analytique et générative, notamment le traitement du langage naturel, la reconnaissance vidéo et d’image, le système de recommandation, la recherche, etc. Par exemple, vous pouvez utiliser une base de données vectorielle pour :

  • identifier des images, des documents et des chansons similaires en fonction de leurs contenus, thèmes, sentiments et styles
  • identifier des produits similaires en fonction de leurs caractéristiques, fonctionnalités et groupes d’utilisateurs
  • recommander des contenus, des produits ou des services en fonction des préférences de chacun
  • recommander des contenus, des produits ou des services en fonction des similitudes des groupes d’utilisateurs
  • identifier les options potentielles les mieux adaptées parmi un large pool de choix afin de répondre à des exigences complexes
  • identifier des anomalies de données ou des activités frauduleuses qui diffèrent des modèles prédominants ou normaux
  • implémenter une mémoire persistante pour les agents IA

Conseil

Outre ces cas d’usage classiques des bases de données vectorielles, notre base de données vectorielle intégrée constitue également une solution idéale pour la mise en cache LLM au niveau de la production grâce à sa faible latence, sa grande scalabilité et sa haute disponibilité.

Il est notamment courant d’utiliser des bases de données vectorielle pour activer la génération augmentée de récupération (RAG) qui utilise des LLM et données personnalisées ou des informations spécifiques à un domaine. Cette approche vous permet de :

  • Générer des réponses contextuellement pertinentes et précises aux invites des utilisateurs depuis des modèles d’IA
  • Dépasser les limites des jetons des LLM
  • Réduire les coûts du réglage fréquent des données mises à jour

Ce processus consiste à extraire des informations pertinentes depuis une source de données personnalisées, puis de les intégrer dans la requête de modèle par le biais de l’ingénierie d’invite. Avant l’envoi d’une requête aux LLM, l’entrée/requête/demande de l’utilisateur est également transformée en une incorporation, et des techniques de recherche vectorielle sont utilisées pour localiser les incorporations les plus similaires dans la base de données. Cette technique permet d’identifier les enregistrements de données les plus pertinents dans la base de données. Ces enregistrements récupérés sont ensuite fournis en tant qu’entrée de la requête LLM à l’aide de l’ingénierie d’invite.

Incorporations

Une incorporation est un format spécial de représentation des données que les modèles et algorithmes Machine Learning peuvent facilement utiliser. L’incorporation est une représentation dense d’informations de la signification sémantique d’un morceau de texte. Chaque incorporation est un vecteur de nombres à virgule flottante, de sorte que la distance entre deux incorporations dans l’espace vectoriel est corrélée avec la similitude sémantique entre deux entrées au format d’origine. Par exemple, si deux textes sont similaires, leurs représentations vectorielles doivent également être similaires. Une extension de base de données vectorielle qui vous permet de stocker vos incorporations avec vos données d’origine garantit la cohérence, la scalabilité et les performances des données. [Revenir en arrière]

La recherche vectorielle est une méthode qui vous aide à trouver des éléments similaires en fonction de leurs caractéristiques de données, plutôt que des correspondances exactes sur un champ de propriété. Cette technique est utile dans des applications comme la recherche de texte similaire, la recherche d’images associées, la création de recommandations ou même la détection d’anomalies. Elle fonctionne en prenant les représentations vectorielles (listes de nombres) de vos données que vous avez créées en utilisant un modèle Machine Learning à l’aide d’une API d’incorporation comme Incorporations Azure OpenAI ou Hugging Face sur Azure. Elle mesure ensuite la distance entre les vecteurs de données et votre vecteur de requête. Les vecteurs de données les plus proches de votre vecteur de requête sont ceux qui se révèlent les plus similaires sémantiquement. L’utilisation d’une fonctionnalité de recherche vectorielle native offre un moyen efficace de stocker, d’indexer et de rechercher des données vectorielles de grande dimension directement avec d’autres données d’application. Cette approche supprime la nécessité de migrer vos données vers des bases de données vectorielles alternatives coûteuses et fournit une intégration transparente de vos applications basées sur l’IA. [Revenir en arrière]

Invites et ingénierie d’invite

Une invite fait référence à un texte ou à des informations spécifiques qui peuvent servir d’instruction à un LLM, ou de données contextuelles sur lesquelles le LLM peut s’appuyer. Une invite peut prendre différentes formes, telles qu’une question, une instruction ou même un extrait de code. Les invites peuvent servir comme suit :

  • Les instructions fournissent des directives au LLM
  • Contenu principal : fournit des informations au LLM pour le traitement
  • Exemples : aide à conditionner le modèle à une tâche ou à un processus en particulier
  • Signaux : oriente les données de sortie du LLM dans la bonne direction
  • Contenu de prise en charge : représente des informations supplémentaires que le LLM peut utiliser pour générer des données de sortie

Le processus de création de bons messages pour un scénario est appelé ingénierie d’invite. Pour plus d’informations sur les invites et les meilleures pratiques relatives à l’ingénierie d’invite, consultez les techniques d’ingénierie d’invite d’Azure OpenAI Service. [Revenir en arrière]

Jetons

Les jetons sont de petits blocs de texte générés en fractionnant le texte d’entrée en segments plus petits. Ces segments peuvent être des mots ou des groupes de caractères, dont la longueur peut varier d’un caractère unique à un mot entier. Par exemple, le mot « hamburger » est divisé en jetons tels que « ham », « bur » et « ger » alors qu’un mot court et commun comme « pois » est considéré comme un jeton unique. Les LLM comme ChatGPT, GPT-3.5 ou GPT-4 divisent les mots en jetons à des fins de traitement. [Revenir en arrière]

Génération augmentée de récupération

La génération augmentée de récupération (RAG) est une architecture qui augmente les capacités des LLM comme ChatGPT, GPT-3.5 ou GPT-4 en ajoutant un système de récupération d’informations comme la recherche vectorielle qui fournit des données d’ancrage, telles que celles stockées dans une base de données vectorielle. Cette approche permet à votre LLM de générer des réponses pertinentes et précises du point de vue contextuel en fonction de vos données personnalisées provenant de contenus vectorisés (documents, images, audio, vidéo, etc.).

Voici un exemple de modèle RAG simple utilisant Azure Cosmos DB for NoSQL :

  1. Inscrivez-vous à la préversion de l’Index vectoriel NoSQL d’Azure Cosmos DB
  2. Configurez une base de données et un conteneur avec une stratégie de vecteur de conteneur et un index vectoriel.
  3. Insérer des données dans une base de données et un conteneur Azure Cosmos DB for NoSQL
  4. Créer des incorporations à partir d’une propriété de données avec Incorporations Azure OpenAI
  5. Liez Azure Cosmos DB for NoSQL.
  6. Créer un index vectoriel sur les propriétés d’incorporation
  7. Créer une fonction pour effectuer une recherche de similarité vectorielle basée sur une invite d’utilisateur
  8. La réponse aux questions sur les données à l’aide d’un modèle d’achèvement Azure OpenAI

Le modèle RAG, avec l’ingénierie d’invite, a pour but d’améliorer la qualité de la réponse en offrant des informations plus contextuelles au modèle. RAG permet au modèle d’appliquer une base de connaissances plus large en incorporant des sources externes pertinentes dans le processus de génération, ce qui aboutit à des réponses plus complètes et mieux fondées. Pour plus d’informations sur l’ancrage des LLM, consultez Utilisation de modèles LLM avec des informations spécifiques au cas d’usage. [Revenir en arrière]

Voici plusieurs façons d’implémenter une RAG sur vos données à l’aide des fonctionnalités de notre base de données vectorielle intégrée :

Comment implémenter les fonctionnalités de la base de données vectorielle intégrée

Vous pouvez implémenter les fonctionnalités de la base de données vectorielle intégrée sur les API Azure Cosmos DB suivantes :

API NoSQL

Azure Cosmos DB for NoSQL est la première base de données vectorielle serverless NoSQL du monde. Stockez vos vecteurs et données ensemble dans Azure Cosmos DB for NoSQL avec des fonctionnalités intégrées de base de données vectorielle où vous pouvez créer un index vectoriel sur DiskANN, une suite d’algorithmes d’indexation vectorielle haute performance développée par Microsoft Research.

DiskANN vous permet d’effectuer des requêtes à faible latence et extrêmement précises à n’importe quelle échelle en tirant parti de tous les avantages d’Azure Cosmos DB for NoSQL, tels qu’un Contrat de niveau de service de 99,999 % (avec la haute disponibilité activée), un transition transparente du serverless au débit approvisionné (RU), le tout dans un seul magasin de données.

Azure Cosmos DB for MongoDB

Utilisez la base de données vectorielle intégrée en mode natif dans Azure Cosmos DB for MongoDB (architecture vCore). Elle offre un moyen efficace de stocker, d'indexer et de rechercher des données vectorielles construites directement avec les autres données de l'application dans un espace à haute dimension. Cette approche supprime la nécessité de migrer vos données vers des bases de données vectorielles alternatives coûteuses et fournit une intégration transparente de vos applications basées sur l’IA.

Exemples de code

API PostgreSQL

Utilisez la base de données vectorielle intégrée dans Azure Cosmos DB for PostgreSQL en mode natif, qui offre un moyen efficace de stocker, d’indexer, puis de rechercher des données vectorielles à haute dimension directement avec d’autres données d’application. Cette approche supprime la nécessité de migrer vos données vers des bases de données vectorielles alternatives coûteuses et fournit une intégration transparente de vos applications basées sur l’IA.

Exemple de code

Étape suivante

Essai gratuit de 30 jours sans abonnement Azure

Essai gratuit de 90 jours et jusqu’à 6 000 $ de crédits de débit avec Azure AI Advantage

Autres solutions de base de données vectorielles

Diagramme de services d’indexation de vecteurs.