Créer une démo de recommandation de produits multimodale avec Milvus et Streamlit
La démo Milvus Composed Image Retrieval présente la recherche d’images inversée, tandis que la démo Milvus Multimodal RAG utilise cette technique pour les recommandations de produits. Il suffit de téléverser une image et de saisir des instructions textuelles ; le modèle d’embeddings multimodaux MagicLens de Google encodera à la fois l’image et le texte en un seul vecteur multimodal. Ce vecteur est ensuite utilisé pour trouver les produits Amazon les plus proches correspondants dans une base de données vectorielle Milvus.
🎨🔍 Présentation de la magie Milvus : recherche d’images et shopping intelligent !
Vous avez déjà souhaité pouvoir trouver des produits simplement en montrant une image et en décrivant ce que vous voulez ? Eh bien, maintenant c’est possible ! 🛍️✨
Voici comment fonctionnent nos démos géniales :
📸 Prenez une photo et saisissez ce que vous recherchez
🧙♂️ Notre magie Milvus transforme votre entrée en un « vecteur multimodal » spécial (classe, non ?)
🕵️♀️ Ce vecteur devient un super-détective pour rechercher dans notre base de données vectorielle Milvus
🎉 Et voilà ! Il trouve des produits Amazon qui correspondent à votre image et à votre description
Dans ce blog, nous montrerons comment exécuter la démo Milvus Multimodal RAG.
Technologies utilisées pour le recommandeur de produits multimodal
Google DeepMind MagicLens est un modèle d’embeddings multimodaux utilisant une architecture à double encodeur pour traiter du texte et des images, basée soit sur CLIP (OpenAI 2021), soit sur CoCa (Google Research 2022). MagicLens prend en charge diverses tâches de récupération, notamment image-vers-image et texte-vers-image, en fusionnant les poids entraînés dans un espace vectoriel commun. Entraîné sur 36,7 M de triplets, il peut effectuer des tâches de récupération image-vers-image, texte-vers-image et de combinaison multimodale texte-image, surpassant les modèles précédents avec une taille de modèle nettement plus petite.
OpenAI GPT-4o est un grand modèle de langage multimodal génératif d’OpenAI qui intègre le texte, les images et d’autres types de données dans un seul modèle, améliorant les modèles de langage traditionnels. Cette IA avancée offre une compréhension et un traitement plus approfondis des informations complexes, améliorant la précision et la prise en compte du contexte. Elle prend en charge diverses applications, du traitement du langage naturel à la vision par ordinateur.
Milvus est une base de données vectorielle distribuée et open source pour stocker, indexer et rechercher des vecteurs pour les charges de travail d’IA générative. Sa capacité à effectuer une recherche hybride, un filtrage des métadonnées, un reranking, et à gérer efficacement des billions de vecteurs fait de Milvus un choix incontournable pour les charges de travail d’IA et d’apprentissage automatique. Milvus peut être exécuté localement, sur un cluster ou hébergé dans Zilliz Cloud.
Streamlit est une bibliothèque Python open source qui simplifie la création et l’exécution d’applications web. Elle permet aux développeurs de créer et de déployer des tableaux de bord, des rapports de données et des interfaces simples d’apprentissage automatique à l’aide de scripts Python simples, sans nécessiter de connaissances approfondies des technologies web comme CSS ou des frameworks JavaScript tels que Node.js.
Préparer les données
Les données de cette démo proviennent du jeu de données Amazon Reviews 2023. La source de données originale comprend 54 millions d’avis utilisateurs sur 48 millions d’articles dans 33 catégories, telles que les appareils électroménagers, la beauté, les vêtements, le sport, le plein air, ainsi qu’une catégorie supplémentaire « Unknown ».
Nous utiliserons simplement un sous-ensemble de 5K articles parmi les données disponibles en échantillonnant uniformément par catégorie. Téléchargez les images en exécutant download_images.py.
$ python download_images.py
Chaque ligne de données produit se compose de métadonnées d’article (telles que le nom de la catégorie et la note moyenne des avis utilisateurs) et d’URL d’images pour la vignette et les grandes images du produit.
Pour les données vectorielles, cette démo utilise un seul grand vecteur d’embedding d’image par produit.
Instructions de configuration pour MagicLens
Ce guide vous accompagne dans la configuration de l’environnement et le téléchargement des poids du modèle pour MagicLens, qui est un puissant système de recherche d’images développé par Google DeepMind. Pour plus d’informations détaillées, consultez le dépôt GitHub MagicLens.
Configurer l’environnement
- Créez un environnement conda :
$ conda create --name magic_lens python=3.9
- Activez l’environnement :
$ conda activate magic_lens
- Clonez le dépôt Scenic :
$ git clone https://github.com/google-research/scenic.git
- Accédez au répertoire Scenic :
$ cd scenic
- Installez Scenic :
$ pip install
- Installez les dépendances CLIP :
$ pip install -r scenic/projects/baselines/clip/requirements.txt
- Installez Jax :
Si vous utilisez un GPU pour le traitement, vous devrez peut-être installer la version GPU correspondante de Jax. Suivez les instructions sur la page de la documentation JAX pour connaître les étapes détaillées.
Voici des exemples pour des versions spécifiques de CUDA (Linux uniquement) :
Installation de CUDA 12 :
$ pip install --upgrade "jax[cuda12_pip]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
Installation de CUDA 11 :
$ pip install --upgrade "jax[cuda11_pip]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
Télécharger les poids du modèle localement
- Revenez au dossier principal :
$ cd .. # Cela vous ramènera au répertoire principal où vous avez cloné la démo.
- Téléchargez le modèle (peut nécessiter une authentification) :
$ gsutil cp -R gs://gresearch/magiclens/models ./
Créer la collection Milvus et enregistrer les vecteurs
Le serveur Milvus de cette démo est Milvus Lite avec Milvus Client sans schéma.
Créez une collection, encodez chaque image en vecteurs et chargez les données vectorielles dans Milvus en exécutant index.py.
$ python index.py
Cette étape encodera chaque image en un vecteur de 768 dimensions. Pour chaque produit de l’échantillon, le vecteur d’image, ainsi que les métadonnées produit associées, sont enregistrés dans une collection Milvus appelée « cir_demo_large » avec AUTOINDEX (HNSW).
Indexation et recherche Milvus
À l’exécution, lorsque vous effectuez une recherche inversée avec une image et du texte, Milvus recherchera les top_k = 100 vecteurs d’image les plus proches en utilisant la distance vectorielle COSINE.
Milvus trie automatiquement les top_k par ordre décroissant (puisque des valeurs plus élevées de la distance COSINE signifient qu’ils sont plus proches).
Exécuter l’interface serveur Streamlit
Mettez à jour votre fichier local
cfg.py, en remplaçant les noms de chemins par vos chemins locaux pour les images et les poids du modèle.Lancez l’application en exécutant depuis votre terminal :
$ streamlit run ui.py
- Utilisation de l’application :
Téléversez une image pour guider la recherche de produits.
Saisissez une instruction textuelle pour guider la recherche.
Cliquez sur « Search » pour trouver des produits similaires dans la base de données vectorielle Milvus.
Cliquez sur « Ask GPT » pour obtenir des recommandations alimentées par l’IA.
Figure 1- L’interface de notre application de démonstration
Figure 1 : L’interface de notre application de démonstration
Fonctionnement de cette application :
La fonction Search intégrera votre image et votre texte dans un vecteur à l’aide du modèle d’embedding multimodal, MagicLens, qui est le même modèle que celui utilisé pour intégrer les images de produits stockées dans la base de données vectorielle Milvus. Milvus effectuera ensuite une recherche vectorielle Approximate Nearest Neighbor (ANN) pour trouver les top_k images de produits les plus proches de votre vecteur d’entrée.
La fonction Ask GPT appellera le modèle génératif multimodal GPT-4o mini d’OpenAI. Elle prendra les 25 premières images des résultats de recherche, les intégrera dans un prompt et les enverra au modèle. GPT-4o mini sélectionnera ensuite la meilleure image et expliquera la raison de son choix.
Figure 2- Les réponses fournies par GPT-4o mini
Figure 2 : Les réponses fournies par GPT-4o mini
Références
Recherche d’images multimodale sur bootcamp : https://github.com/milvus-io/bootcamp/tree/master/bootcamp/tutorials/quickstart/apps/cir_with_milvus
RAG multimodal avec recommandations par reclassement sur bootcamp : https://github.com/milvus-io/bootcamp/tree/master/bootcamp/tutorials/quickstart/apps/multimodal_rag_with_milvus
Modèle Google MagicLens : https://github.com/google-deepmind/magiclens
Vidéo sur la théorie derrière cette démonstration : https://youtu.be/uaqlXRCvjG4?si=e83DnUsLZvVnWt-0&t=51
Continuer à lire

Why Teams Are Migrating from Weaviate to Zilliz Cloud — and How to Do It Seamlessly
Explore how Milvus scales for large datasets and complex queries with advanced features, and discover how to migrate from Weaviate to Zilliz Cloud.

Zilliz Named "Highest Performer" and "Easiest to Use" in G2's Summer 2025 Grid® Report for Vector Databases
Zilliz shines in G2's Summer 2025 Grid® Report as both "Highest Performer" and "Easiest to Use," solving the performance-usability dilemma.

AI Agents Are Quietly Transforming E-Commerce — Here’s How
Discover how AI agents transform e-commerce with autonomous decision-making, enhanced product discovery, and vector search capabilities for today's retailers.




