Erstellung einer multimodalen Produkt-Recommender-Demo mit Milvus und Streamlit
Die Milvus Composed Image Retrieval Demo demonstriert die umgekehrte Bildsuche, während die Milvus Multimodal RAG Demo diese Technik für Produktempfehlungen nutzt. Laden Sie einfach ein Bild hoch und geben Sie Textanweisungen ein; Googles multimodales Einbettungsmodell MagicLens kodiert sowohl das Bild als auch den Text in einen einzigen multimodalen Vektor. Dieser Vektor wird anschließend verwendet, um die am besten passenden Amazon-Produkte aus einer Milvus-Vektordatenbank zu finden.
🎨🔍 Einführung in die Milvus-Magie: Bildsuche & intelligentes Shopping!
Haben Sie sich jemals gewünscht, Produkte einfach dadurch zu finden, dass Sie ein Bild zeigen und beschreiben, was Sie möchten? Nun, jetzt können Sie das! 🛍️✨
So funktionieren unsere coolen Demos:
📸 Machen Sie ein Foto & tippen Sie ein, wonach Sie suchen
🧙♂️ Unsere Milvus-Magie verwandelt Ihre Eingabe in einen speziellen „multimodalen Vektor“ (klingt schick, oder?)
🕵️♀️ Dieser Vektor wird zu einem Superdetektiv für die Suche in unserer Milvus-Vektordatenbank
🎉 Voilà! Er findet Amazon-Produkte, die zu Ihrem Bild und Ihrer Beschreibung passen
In diesem Blog zeigen wir, wie man die Milvus Multimodal RAG Demo ausführt.
Verwendete Technologien für den multimodalen Produktempfehler
Google DeepMinds MagicLens ist ein multimodales Einbettungsmodell, das eine Dual-Encoder-Architektur verwendet, um Text und Bilder entweder auf Basis von CLIP (OpenAI 2021) oder CoCa (Google Research 2022) zu verarbeiten. MagicLens unterstützt verschiedene Retrieval-Aufgaben, darunter Bild-zu-Bild und Text-zu-Bild, indem trainierte Gewichte in einem gemeinsamen Vektorraum zusammengeführt werden. Trainiert auf 36,7 Mio. Triplets kann es Bild-zu-Bild-, Text-zu-Bild- und multimodale Text-Bild-Kombinations-Retrieval-Aufgaben ausführen und übertrifft frühere Modelle bei einer deutlich kleineren Modellgröße.
OpenAIs GPT-4o ist ein generatives multimodales Large Language Model von OpenAI, das Text, Bilder und andere Datentypen in ein einziges Modell integriert und damit traditionelle Sprachmodelle erweitert. Diese fortschrittliche KI bietet ein tieferes Verständnis und eine bessere Verarbeitung komplexer Informationen und verbessert Genauigkeit sowie Kontextbewusstsein. Sie unterstützt vielfältige Anwendungen, von Natural Language Processing bis hin zu Computer Vision.
Milvus ist eine quelloffene, verteilte Vektordatenbank zum Speichern, Indexieren und Durchsuchen von Vektoren für Generative AI-Workloads. Die Fähigkeit, hybride Suche, Metadatenfilterung, Reranking auszuführen und Billionen von Vektoren effizient zu verarbeiten, macht Milvus zu einer bevorzugten Wahl für KI- und Machine-Learning-Workloads. Milvus kann lokal, in einem Cluster oder gehostet in der Zilliz Cloud betrieben werden.
Streamlit ist eine quelloffene Python-Bibliothek, die das Erstellen und Ausführen von Webanwendungen vereinfacht. Sie ermöglicht Entwicklern, Dashboards, Datenberichte und einfache Machine-Learning-Schnittstellen mit unkomplizierten Python-Skripten zu erstellen und bereitzustellen, ohne umfassende Kenntnisse von Webtechnologien wie CSS oder JavaScript-Frameworks wie Node.js zu benötigen.
Daten vorbereiten
Die Daten in dieser Demo stammen aus dem Amazon Reviews 2023 dataset. Die ursprüngliche Datenquelle umfasst 54 Millionen Nutzerbewertungen zu 48 Millionen Artikeln in 33 Kategorien, wie z. B. Haushaltsgeräte, Beauty, Kleidung, Sport, Outdoor sowie eine zusätzliche Kategorie „Unknown“.
Wir verwenden lediglich eine Teilmenge von 5K Artikeln aus den verfügbaren Daten, indem wir gleichmäßig pro Kategorie sampeln. Laden Sie Bilder herunter, indem Sie download_images.py ausführen.
$ python download_images.py
Jede Produktdatenzeile besteht aus Artikelmetadaten (wie Kategoriename und durchschnittliche Nutzerbewertung) sowie Bild-URLs für Thumbnail- und große Bilder des Produkts.
Für Vektordaten verwendet diese Demo pro Produkt einen einzelnen Embedding-Vektor des großen Bildes.
Einrichtungsanleitung für MagicLens
Diese Anleitung führt Sie durch die Einrichtung der Umgebung und das Herunterladen der Modellgewichte für MagicLens, ein leistungsstarkes Bildabrufsystem, das von Google DeepMind entwickelt wurde. Weitere detaillierte Informationen finden Sie im MagicLens GitHub-Repository.
Umgebung einrichten
- Erstellen Sie eine conda-Umgebung:
$ conda create --name magic_lens python=3.9
- Aktivieren Sie die Umgebung:
$ conda activate magic_lens
- Klonen Sie das Scenic-Repository:
$ git clone https://github.com/google-research/scenic.git
- Wechseln Sie in das Scenic-Verzeichnis:
$ cd scenic
- Installieren Sie Scenic:
$ pip install
- Installieren Sie die CLIP-Abhängigkeiten:
$ pip install -r scenic/projects/baselines/clip/requirements.txt
- Installieren Sie Jax:
Wenn Sie eine GPU für die Verarbeitung verwenden, müssen Sie möglicherweise die entsprechende GPU-Version von Jax installieren. Befolgen Sie die Anweisungen auf der Seite der JAX-Dokumentation für detaillierte Schritte.
Hier sind Beispiele für bestimmte CUDA-Versionen (nur Linux):
CUDA 12-Installation:
$ pip install --upgrade "jax[cuda12_pip]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
CUDA 11-Installation:
$ pip install --upgrade "jax[cuda11_pip]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
Modellgewichte lokal herunterladen
- Navigieren Sie zurück zum Hauptordner:
$ cd .. # This will take you back to the main directory where you cloned the demo.
- Laden Sie das Modell herunter (möglicherweise ist Authentifizierung erforderlich):
$ gsutil cp -R gs://gresearch/magiclens/models ./
Milvus-Collection erstellen und Vektoren speichern
Der Milvus-Server in dieser Demo ist Milvus Lite mit schema-losem Milvus Client.
Erstellen Sie eine Collection, kodieren Sie jedes Bild in Vektoren und laden Sie die Vektordaten in Milvus, indem Sie index.py ausführen.
$ python index.py
Dieser Schritt kodiert jedes Bild in einen 768-dimensionalen Vektor. Für jedes Produkt in der Stichprobe wird der Bildvektor zusammen mit den zugehörigen Produktmetadaten in einer Milvus-Collection namens „cir_demo_large“ mit AUTOINDEX (HNSW) gespeichert.
Milvus-Indizierung und Suche
Zur Laufzeit, wenn Sie eine Rückwärtssuche nach einem Bild und Text durchführen, sucht Milvus nach den top_k = 100 nächstgelegenen Bildvektoren unter Verwendung der COSINE-Vektordistanz.
Milvus sortiert die top_k automatisch in absteigender Reihenfolge (da größere Werte der COSINE-Distanz bedeuten, dass sie näher beieinander liegen).
Streamlit-Server-Frontend ausführen
Aktualisieren Sie Ihre lokale Datei
cfg.py, indem Sie Pfadnamen durch Ihre lokalen Pfade für Bilder und Modellgewichte ersetzen.Starten Sie die App, indem Sie in Ihrem Terminal Folgendes ausführen:
$ streamlit run ui.py
- Verwendung der App:
Laden Sie ein Bild hoch, um die Produktsuche zu steuern.
Geben Sie eine Textanweisung ein, um die Suche zu steuern.
Klicken Sie auf „Search“, um ähnliche Produkte aus der Milvus-Vektordatenbank zu finden.
Klicken Sie auf „Ask GPT“ für KI-gestützte Empfehlungen.
Abbildung 1- Die Oberfläche unserer Demo-App
Abbildung 1: Die Oberfläche unserer Demo-App
So funktioniert diese App:
Die Search-Funktion bettet Ihr Bild und Ihren Text mithilfe des multimodalen Embedding-Modells MagicLens in einen Vektor ein, also desselben Modells, das zum Einbetten der in der Milvus-Vektordatenbank gespeicherten Produktbilder verwendet wird. Milvus führt dann eine Approximate-Nearest-Neighbor-(ANN)-Vektorsuche durch, um die nächsten top_k-Produktbilder zu Ihrem Eingabevektor zu finden.
Die Ask GPT-Funktion ruft das multimodale generative Modell GPT-4o mini von OpenAI auf. Sie nimmt die Top 25 Bilder aus den Suchergebnissen, fügt sie in einen Prompt ein und sendet sie an das Modell. GPT-4o mini wählt dann das beste Bild aus und erklärt den Grund für seine Wahl.
Abbildung 2- Die von GPT-4o mini bereitgestellten Antworten
Abbildung 2: Die von GPT-4o mini bereitgestellten Antworten
Referenzen
Multimodal Image Retrieval auf bootcamp: https://github.com/milvus-io/bootcamp/tree/master/bootcamp/tutorials/quickstart/apps/cir_with_milvus
Multimodal RAG with Re-ranking Recommendations auf bootcamp: https://github.com/milvus-io/bootcamp/tree/master/bootcamp/tutorials/quickstart/apps/multimodal_rag_with_milvus
Google MagicLens Model: https://github.com/google-deepmind/magiclens
Video zur Theorie hinter dieser Demo: https://youtu.be/uaqlXRCvjG4?si=e83DnUsLZvVnWt-0&t=51
Weiterlesen

DeepSeek-OCR Explained: Optical Compression for Scalable Long-Context and RAG Systems
Discover how DeepSeek-OCR uses visual tokens and Contexts Optical Compression to boost long-context LLM efficiency and reshape RAG performance.

Announcing VDBBench 1.0: Open-Source VectorDB Benchmarking with Your Real-World Production Workloads
Discover VDBBench 1.0, an open-source tool for benchmarking vector databases with real-world production data, streaming ingestion, and concurrent workloads.

Selecting the Right ETL Tools for Unstructured Data to Prepare for AI
Learn the right ETL tools for unstructured data to power AI. Explore key challenges, tool comparisons, and integrations with Milvus for vector search.




