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.
Conseil
Pour obtenir les derniers exemples de base de données vectorielle et d’application modèle RAG, visitez Azure Cosmos DB Galerie d’exemples.
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 explique les bases de données vectorielles et présente une autre architecture que vous pouvez envisager : 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à, en particulier lors de l’utilisation de 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 les performances des données sont essentielles pour les applications gourmandes en données, c’est pourquoi OpenAI a choisi de créer le service ChatGPT en plus de 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-le 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. Certains algorithmes de recherche vectorielle bien connus incluent l’HNSW (Hierarchical Navigable Small World), le fichier inversé (IVF) et 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 integrated dans une base de données NoSQL ou relationnelle hautement performante offre des fonctionnalités supplémentaires. La base de données vectorielle intégrée dans une base de données NoSQL ou relationnelle peut stocker, indexer et interroger des 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 l’image, le système de recommandation et la recherche. Par exemple, vous pouvez utiliser une base de données vectorielle pour :
- Identifier des images, des documents et des chansons similaires en fonction de leur contenu, thèmes, sentiments et styles
- Identifier des produits similaires en fonction de leurs caractéristiques, fonctionnalités et groupes d’utilisateurs
- Recommander le contenu, les produits ou les services en fonction des préférences des individus
- Recommander le contenu, les produits ou les services en fonction des similitudes des groupes d’utilisateurs
- Identifier les options potentielles les mieux adaptées à partir d’un grand pool de choix pour répondre à des exigences complexes
- Identifier les anomalies de données ou les activités frauduleuses qui ne correspondent pas aux 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é.
Les bases de données vectorielles sont particulièrement populaires pour permettre la génération augmentée par extraction (RAG) qui exploite des modèles de langage de grande taille (LLMs) et des données personnalisées ou des informations spécifiques au 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
- Surmonter 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ée, puis à les intégrer dans la requête de modèle grâce à l'ingénierie des prompts. 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.
Note
Vous êtes intéressé par les fonctionnalités de recherche vectorielle à débit ultra-élevé ? Azure Cosmos DB développe des fonctionnalités de recherche vectorielle améliorées conçues pour les jeux de données vectoriels volumineux couplés avec des insertions et des recherches à débit ultra-élevé. Il peut prendre en charge des millions de requêtes par seconde (QPS) avec une faible latence prévisible et une rentabilité inégalée. Inscrivez-vous pour en savoir plus sur les opportunités d’accès précoce et recevez une notification lorsque ces fonctionnalités deviennent disponibles.
Concepts liés à la base de données vectorielles
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.
Recherche vectorielle
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.
Il fonctionne en prenant les représentations vectorielles (listes de nombres) de vos données que vous avez créées avec un modèle Machine Learning à l’aide d’une API d’incorporations, telle que Azure OpenAI Embeddings ou Hugging Face on 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.
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 :
- Instructions qui fournissent des directives au LLM
- Contenu principal qui fournit des informations au LLM pour le traitement
- Exemples pour aider à conditionner le modèle à une tâche ou un processus particulier
- Signaux : oriente les données de sortie du LLM dans la bonne direction
- Contenu de soutien qui représente des informations supplémentaires que le LLM peut utiliser pour générer le résultat
Le processus de création de bons prompts pour un scénario est appelé ingénierie des prompts. Pour plus d’informations sur les sollicitations et les meilleures pratiques pour l’ingénierie des sollicitations, consultez Conception des messages système.
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.).
Un modèle RAG simple utilisant Azure Cosmos DB pour NoSQL peut :
- Activer Azure Cosmos DB NoSQL l’index vectoriel
- Configurer une base de données et un conteneur avec une stratégie de vecteur de conteneur et un index vectoriel
- Insérer des données dans un Azure Cosmos DB pour NoSQL base de données et conteneur
- Créer des vecteurs d'intégration à partir d’une propriété de données à l’aide des fonctionnalités d’Azure OpenAI Embeddings.
- Connectez la base de données Azure Cosmos DB pour NoSQL.
- Créer un index vectoriel sur les propriétés d’incorporation
- Créer une fonction pour effectuer une recherche de similarité vectorielle à partir d'une demande utilisateur
- Répondre aux questions sur les données à l’aide d’un modèle Azure OpenAI Completions
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, consultez Grounding LLMs.
Comment implémenter les fonctionnalités de la base de données vectorielle intégrée
Vous pouvez implémenter des fonctionnalités de base de données vectorielles intégrées pour Azure Cosmos DB et ses différentes API de compatibilité.
API NoSQL
Azure Cosmos DB pour NoSQL est la première base de données vectorielle NoSQL serverless du monde. Stockez vos vecteurs et données ensemble dans Azure Cosmos DB pour NoSQL avec des fonctionnalités de base de données vectorielles intégrées où vous pouvez créer un index vectoriel basé sur DiskANN, suite d’algorithmes d’indexation vectorielle hautes performances développés par Microsoft Research.
DiskANN vous permet d’effectuer des requêtes à faible latence très précises à toute échelle tout en tirant parti de tous les avantages d'Azure Cosmos DB pour NoSQL tels que 99,999 % d'accord de niveau de service (avec haute disponibilité), la géoréplication, la transition transparente du débit sans serveur au débit provisionné (RU) dans un même magasin de données.
Liens et exemples
- Qu’est-ce que la base de données derrière ChatGPT ? - Microsoft Mécanique
- Indexation de vecteurs dans Azure Cosmos DB pour NoSQL
- Fonction système VectorDistance pour les requêtes NoSQL
- Recherche vectorielle dans Azure Cosmos DB pour NoSQL
- Python - Didacticiel sur les blocs-notes
- C# - Créer votre propre accélérateur de solution complet Copilot avec AKS et Noyau sémantique
- C# - Créez votre propre exemple d'application Copilot et atelier pratique
- Python - Movie Chatbot
Exemples de code
- Python Notebook - Intégration de la base de données Vector via le didacticiel LangChain
- Python Notebook - Intégration de la mise en cache LLM via le didacticiel LangChain
- Python - Intégration LlamaIndex
- Python - Intégration de la mémoire Noyau sémantique
- Notebook Python - Movie Chatbot
API pour PostgreSQL
Utilisez la base de données vectorielle intégrée en mode natif dans Azure Cosmos DB pour PostgreSQL qui offre un moyen efficace de stocker, d’indexer et de rechercher des données vectorielles à haute dimension directement en même temps que 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
- Python : tutoriel Python notebook - Chatbot de critique alimentaire