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.

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. Insérer des données dans une base de données et une collection Azure Cosmos DB for NoSQL
  2. Créer des incorporations à partir d’une propriété de données avec Incorporations Azure OpenAI
  3. La liaison d’Azure Cosmos DB for NoSQL à la Recherche cognitive Azure (pour l’indexation/recherche vectorielle)
  4. Créer un index vectoriel sur les propriétés d’incorporation
  5. Créer une fonction pour effectuer une recherche de similarité vectorielle basée sur une invite d’utilisateur
  6. 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 pour 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.

Exemples de code

API NoSQL

Remarque

Pour notre API NoSQL, l'intégration native d'un algorithme d'indexation vectorielle de pointe sera annoncée lors de la Build en mai 2024. Restez à l'écoute.

La base de données vectorielle intégrée en mode natif dans l'API NoSQL est en cours de développement. Entre temps, vous pouvez implémenter des modèles RAG avec Azure Cosmos DB for NoSQL et Recherche Azure AI. Cette approche permet une intégration puissante de vos données résidant dans l’API NoSQL dans vos applications orientées IA.

Exemples 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.