Créez de meilleurs pipelines RAG multimodaux avec FiftyOne, LlamaIndex et Milvus
Introduction
Lors du récent Unstructured Data Meetup organisé par Zilliz, Jacob Marks, ingénieur en machine learning et évangéliste développeur chez Voxel51, a abordé les subtilités de la création de pipelines RAG multimodaux robustes à l’aide de FiftyOne, LlamaIndex et Milvus.
Regardez le replay de la présentation de Jacob au meetup
Cette présentation s’est concentrée sur la manière dont nous pouvons utiliser nos données pour construire un meilleur pipeline RAG multimodal. Elle a mis l’accent sur l’utilisation d’outils gratuits et open source, en s’appuyant notamment sur FiftyOne pour la gestion et la visualisation des données, Milvus comme magasin de vecteurs, et LlamaIndex pour orchestrer de grands modèles de langage (LLMs).
Avant d’examiner le RAG multimodal, voyons un aperçu du RAG en général.
Aperçu du RAG dans un contexte basé sur le texte
Jacob commence par expliquer la génération augmentée par récupération (RAG) basée sur le texte et son fonctionnement. Nous resterons brefs, car nous avons déjà traité en détail les systèmes RAG basés sur le texte dans ce manuel RAG en quatre parties.
Le RAG renforce les capacités des grands modèles de langage (LLMs) en augmentant leurs connaissances avec des données externes pertinentes. Les LLMs, bien qu’entraînés sur d’immenses jeux de données, présentent souvent des limites comme des dates limites de connaissances et des hallucinations. Le RAG atténue ces problèmes en récupérant et en incorporant des documents pertinents depuis une base de données vectorielle externe comme Milvus ou Zilliz Cloud afin de fournir aux utilisateurs des réponses plus précises et contextuellement pertinentes.
L’architecture d’un système RAG basé sur le texte est simple. Examinons le processus RAG.
Génération augmentée par récupération (RAG)
Fig 1 : Processus RAG d’intégration des LLMs avec des bases de données vectorielles
Dans le diagramme ci-dessus, les documents sont découpés en segments de texte plus petits, puis transformés en représentations numériques appelées vector embeddings. Ces embeddings sont stockés dans une base de données vectorielle comme Milvus.
Lorsqu’un utilisateur fournit un prompt, celui-ci est également converti en vector embedding et utilisé pour interroger la base de données vectorielle afin de trouver les passages de texte les plus pertinents. Combinés au prompt original, ces passages pertinents forment une entrée riche en contexte pour le LLM. Enfin, le LLM traite cette entrée pour générer une réponse plus précise et contextuellement pertinente.
Cette approche est très efficace pour les systèmes qui dépendent uniquement du texte. Cependant, un système RAG basé sur le texte est insuffisant pour les systèmes qui ont besoin de plusieurs types de données afin de prendre des décisions éclairées. Prenons par exemple une boutique e-commerce. Nous ne pouvons pas nous appuyer uniquement sur le texte pour présenter le produit le plus pertinent à un utilisateur ; nous avons besoin d’images de produits, de descriptions, et plus encore. C’est là que le RAG multimodal se révèle précieux, en exploitant des LLMs multimodaux modernes pour intégrer diverses modalités de données.
Que sont les LLMs multimodaux et leurs applications
Les LLMs multimodaux tels que GPT-4o et Qwen-VL sont des systèmes d’intelligence artificielle capables de traiter et de comprendre plusieurs types de données, comme le texte, les images, l’audio et la vidéo. Ils intègrent et interprètent des informations provenant de diverses modalités, ce qui leur permet de générer des légendes descriptives pour les images, de répondre à des questions sur des vidéos et de créer du contenu combinant texte et éléments visuels. Cette capacité leur permet de mieux comprendre et de générer des réponses enrichies contextuellement grâce aux divers types de données d’entrée.
Ils sont appliqués dans divers domaines, notamment les services médicaux, le commerce de détail, et bien plus encore.
Dans les secteurs des services médicaux, il existe des images médicales visuelles, des notes cliniques textuelles et des rapports médicaux dans le domaine médical. Les LLM multimodaux synthétisent ces informations multimodales et aident les médecins dans leur travail. Un exemple est le LLM Med-PaLM, qui exploite à la fois des données textuelles et visuelles pour améliorer la prise de décision médicale et les résultats des soins aux patients.
Dans le commerce de détail, les LLM multimodaux créent des publicités personnalisées et améliorent les capacités de recherche de produits. Ils traitent et intègrent divers types de données, telles que des descriptions textuelles, des images de produits et des données d’interaction client (p. ex., avis et requêtes de recherche). En analysant ces informations multimodales, ces LLM peuvent générer des publicités personnalisées adaptées aux préférences individuelles et à l’historique de navigation.
Même avec ces fonctionnalités avancées, les LLM multimodaux ont les mêmes limites que ceux fondés sur le texte. Ils souffrent de limites de connaissances et d’hallucinations. Pour atténuer ces problèmes, nous aurons besoin d’un RAG multimodal.
Comprendre le RAG multimodal
Le RAG multimodal est une technique d’IA avancée qui combine la recherche d’informations et la modélisation générative pour améliorer les capacités des LLM multimodaux. Pour comprendre le fonctionnement du RAG multimodal, examinons le pipeline de récupération RAG multimodal suivant.
Fig 2- Pipeline de récupération RAG multimodal
Fig 2 : Pipeline de récupération RAG multimodal
Lorsque les utilisateurs posent une question, un modèle d’embedding convertit d’abord la requête en embedding. Cet embedding est ensuite utilisé pour interroger une base de données vectorielle multimodale comme Milvus, qui stocke les embeddings de documents associés, notamment du texte et des images. La base de données vectorielle récupère les plus proches voisins de la question, c’est-à-dire essentiellement les documents les plus pertinents. Les documents récupérés se combinent avec la question originale pour former un prompt multimodal, incorporant à la fois un contexte textuel et visuel. Un LLM multimodal traite ensuite ce prompt enrichi, en intégrant les divers types de données afin de générer une réponse plus précise et contextuellement pertinente.
Dans la section suivante, passons à la pratique et voyons comment mettre en œuvre un pipeline RAG multimodal à l’aide de FiftyOne, LLamaIndex et Milvus.
Mettre en œuvre un pipeline RAG multimodal à l’aide de FiftyOne, LLamaIndex et Milvus
Il existe deux façons de mettre en œuvre un pipeline RAG multimodal à l’aide de FiftyOne, LLamaIndex et Milvus. L’une consiste à écrire votre propre code, ce qui vous donne plus de contrôle mais prend plus de temps, et l’autre consiste à utiliser des plugins qui vous permettent d’ajouter des fonctionnalités à l’application FiftyOne.
Cette section explorera la mise en œuvre du pipeline RAG multimodal à l’aide du fiftyone-multimodal-rag-plugin alimenté par la base de données vectorielle Milvus. Si vous souhaitez coder à partir de zéro, voici un guide pour débutants sur la génération d’embeddings vectoriels multimodaux avec Milvus et FiftyOne.
Configurer votre environnement
Jacob se lance dans une démonstration avec le plugin multimodal installé dans l’exposé. Ralentissons un peu, car une étape d’installation cruciale n’est pas explicitement mentionnée ni dans la démo ni dans le guide d’installation du plugin sur GitHub. Il s’agit de l’étape d’installation de Milvus.
Pour utiliser le plugin, vous devez déjà avoir une instance Milvus en cours d’exécution sur votre ordinateur. Le plugin Fiftyone s’appuie sur Milvus pour stocker et récupérer les embeddings multimodaux. Le plugin suppose que Milvus fonctionne sur http://localhost:19530. Si Milvus n’est pas installé, suivez la documentation de Milvus pour l’installer et l’exécuter.
Après avoir installé et exécuté Milvus, suivez ces consignes d’installation pour installer et configurer le fiftyone-multimodal-rag-plugin. Une fois la configuration terminée, lancez l’application FiftyOne et parcourez les opérations disponibles pour voir les fonctionnalités fournies par le plugin.
Fig 3- Page de sélection des opérations disponibles dans FiftyOne
Fig 3 : Page de sélection des opérations disponibles dans FiftyOne
Créons maintenant le pipeline RAG.
Étape 1 : Créer un jeu de données à partir de documents LLamaIndex
Cette étape consiste à sélectionner, sur votre ordinateur, un dossier contenant vos images et fichiers texte. Vous allez intégrer ces données multimodales et stocker les embeddings multimodaux dans Milvus. Pour charger le dossier de votre jeu de données, sélectionnez l’opération Create a Dataset from the LLamaIndex Documents. Ensuite, nommez votre jeu de données et choisissez son répertoire.
Fig 4- Création d’un jeu de données à partir de documents LLamaIndex
Fig 4 : Création d’un jeu de données à partir de documents LLamaIndex
Cliquez sur Execute pour charger et visualiser votre jeu de données.
Fig 5- Visualisation d’un jeu de données multimodal dans FiftyOne
Fig 5 : Visualisation d’un jeu de données multimodal dans FiftyOne
Dans la visualisation, vous pouvez voir que le jeu de données est composé d’images et de texte, ce qui le rend multimodal. L’étape suivante consiste à créer un index RAG multimodal du jeu de données ci-dessus.
Étape 2 : Intégrer LlamaIndex à Milvus pour créer un index RAG multimodal
Pour créer un index RAG multimodal à l’aide de LlamaIndex et de Milvus, vous devez intégrer les deux bibliothèques afin de gérer et de récupérer efficacement des données multimodales. LlamaIndex gère l’ingestion et l’intégration des données multimodales sous forme de représentations vectorielles. Ces embeddings sont ensuite stockés dans Milvus pour une récupération ultérieure lors des requêtes.
Sur la page de sélection des opérations de FiftyOne, sélectionnez l’opération Create Multimodal RAG Index. Ensuite, nommez votre index et cliquez sur execute.
Fig 6- Création d’un index RAG multimodal à l’aide de LLamaIndex et Milvus
Fig 6 : Création d’un index RAG multimodal à l’aide de LLamaIndex et Milvus
L’exécution prendra un certain temps, selon la taille de votre jeu de données, alors soyez patient. Pendant ce processus, votre jeu de données sera converti en embeddings vectoriels et stocké dans Milvus. Plus votre jeu de données est volumineux, plus la création de l’index prend du temps. Une fois l’index RAG créé, vous pouvez passer à son interrogation.
Étape 3 : Interroger l’index RAG multimodal
Cette étape d’interrogation est celle qui prend le plus de temps à s’exécuter dans le pipeline RAG. Comme nous le savons tous, personne n’aime les applications lentes. C’est pourquoi la base de données vectorielle à interroger doit être rapide pendant le processus de récupération, tout en étant précise. C’est là que Milvus, la base de données vectorielle open source la plus largement adoptée, l’emporte.
Jacobs parle de Milvus dans la présentation, mais comme le plugin abstrait la majeure partie de ce qui se passe sous le capot, nous ne voyons peut-être pas pleinement les avantages de Milvus dans les pipelines RAG multimodaux. Mais voyons pourquoi la plupart des développeurs de RAG multimodal, y compris le développeur du fiftyone-multimodal-rag-plugin, ont choisi d’utiliser Milvus :
Stockage et récupération de vecteurs à l’échelle du milliard : Milvus gère efficacement les données vectorielles à l’échelle du milliard, garantissant un accès rapide avec une latence de l’ordre de la milliseconde.
Scalabilité horizontale : Milvus est hautement scalable et s’adapte à l’évolution de vos besoins à mesure que votre entreprise se développe.
Idéal pour RAG : Milvus est une infrastructure indispensable pour créer diverses applications GenAI, en particulier la génération augmentée par récupération (RAG).
Récupération à grande vitesse : Grâce à des algorithmes de recherche optimisés, Milvus permet une récupération rapide et précise des vecteurs pertinents, ce qui est essentiel pour les applications en temps réel comme les systèmes d’IA interactifs et les moteurs de recommandation.
Gestion des données multimodales : Milvus prend en charge différents types de données et peut effectuer des recherches hybrides. Cette capacité permet de combiner la recherche multimodale, la recherche hybride clairsemée et dense, ainsi que la recherche hybride dense et en texte intégral, offrant une fonctionnalité de recherche polyvalente et flexible.
Pour interroger votre index RAG multimodal, accédez à la page de sélection Operations et sélectionnez l’opération Query Multimodal RAG Index. Ensuite, saisissez votre requête, sélectionnez l’index à utiliser, le LLM pour générer une réponse, le nombre de résultats textuels, puis enfin, le nombre de résultats d’images à inclure.
Fig 7- Interrogation d’un index RAG multimodal propulsé par Milvus
Fig 7 : Interrogation d’un index RAG multimodal propulsé par Milvus
Le plugin utilise ensuite Milvus pour effectuer une recherche de similarité vectorielle afin de récupérer les embeddings les plus pertinents en fonction de votre requête. Les embeddings récupérés fournissent le contexte nécessaire pour générer une réponse à l’aide du grand modèle de langage sélectionné. Voici les résultats pour la requête ci-dessus :
Fig 8- Résultats de l’interrogation d’un index RAG multimodal
Fig 8 : Résultats de l’interrogation d’un index RAG multimodal
Les résultats affichent l’index et le modèle que vous avez utilisés lors de l’exécution de la requête, ainsi que la réponse générée par le grand modèle de langage.
Vous avez maintenant terminé toutes les étapes de création d’un pipeline RAG multimodal à l’aide de FiftyOne, LLamaIndex et Milvus.
Conclusion
La présentation de Jacob a mis en évidence le potentiel de l’intégration de FiftyOne, LlamaIndex et Milvus pour créer de puissants pipelines RAG multimodaux. Ces outils renforcent les capacités des systèmes multimodaux en exploitant efficacement les données textuelles et visuelles afin d’améliorer la récupération des données et de fournir des réponses riches en contexte. En suivant les étapes décrites, vous pouvez tirer parti des atouts de ces outils open source, Milvus fournissant un stockage vectoriel robuste et une récupération à grande vitesse, portant vos projets vers de nouveaux sommets.
Ressources supplémentaires
Continuer à lire

VDBBench Adds Cost-Aware Benchmarking for Vector Databases
Compare Zilliz Cloud, Pinecone, and turbopuffer with VDBBench cost-aware vector database benchmarks across latency, freshness, multitenancy, and cold starts.

We spent 8 years making vector databases faster. Then we stopped.
Rarely queried embeddings still need to stay searchable. See how Vector Lakebase enables on-demand vector search without always-on compute costs.

Zilliz Cloud Now Available in AWS Asia Pacific (Seoul)
Zilliz Cloud is now available in AWS Seoul — low-latency vector search, in-country data residency, and one-step migration for Korean AI teams. 31 regions across 5 clouds.


