Erstellen Sie bessere multimodale RAG-Pipelines mit FiftyOne, LlamaIndex und Milvus
Einführung
Beim kürzlich von Zilliz veranstalteten Unstructured Data Meetup erläuterte Jacob Marks, Machine-Learning-Ingenieur und Developer Evangelist bei Voxel51, die Feinheiten beim Aufbau robuster multimodaler RAG-Pipelines mit FiftyOne, LlamaIndex und Milvus.
Sehen Sie sich die Aufzeichnung von Jacobs Meetup-Vortrag an
Dieser Vortrag konzentrierte sich darauf, wie wir unsere Daten nutzen können, um eine bessere multimodale RAG-Pipeline aufzubauen. Er betonte den Einsatz kostenloser und quelloffener Tools, insbesondere die Nutzung von FiftyOne für Datenmanagement und Visualisierung, Milvus als Vektorspeicher und LlamaIndex zur Orchestrierung großer Sprachmodelle (LLMs).
Bevor wir uns multimodales RAG ansehen, betrachten wir zunächst einen allgemeinen Überblick über RAG.
Überblick über RAG in einem textbasierten Kontext
Jacob beginnt mit einer Erklärung von textbasierter Retrieval Augmented Generation (RAG) und ihrer Funktionsweise. Wir halten uns hier kurz, da wir textbasierte RAG-Systeme bereits ausführlich in diesem vierteiligen RAG-Handbuch behandelt haben.
RAG erweitert die Fähigkeiten großer Sprachmodelle (LLMs), indem es ihr Wissen mit relevanten externen Daten anreichert. Obwohl LLMs auf riesigen Datensätzen trainiert werden, haben sie oft Einschränkungen wie Wissensstichtage und Halluzinationen. RAG mindert diese Probleme, indem es relevante Dokumente aus einer externen Vektordatenbank wie Milvus oder Zilliz Cloud abruft und einbezieht, um Nutzern genauere und kontextuell relevantere Antworten zu liefern.
Die Architektur eines textbasierten RAG-Systems ist einfach. Sehen wir uns den RAG-Prozess an.
Retrieval Augmented Generation (RAG)
Abb. 1: RAG-Prozess zur Integration von LLMs mit Vektordatenbanken
Im obigen Diagramm werden die Dokumente in kleinere Textsegmente aufgeteilt und anschließend in numerische Darstellungen umgewandelt, die als Vektoreinbettungen bekannt sind. Diese Einbettungen werden in einer Vektordatenbank wie Milvus gespeichert.
Wenn ein Nutzer einen Prompt eingibt, wird dieser ebenfalls in eine Vektoreinbettung umgewandelt und verwendet, um die Vektordatenbank abzufragen, um die relevantesten Textpassagen zu finden. Zusammen mit dem ursprünglichen Prompt bilden diese relevanten Passagen eine kontextreiche Eingabe für das LLM. Schließlich verarbeitet das LLM diese Eingabe, um eine genauere und kontextuell relevantere Antwort zu generieren.
Dieser Ansatz ist äußerst effektiv für Systeme, die ausschließlich auf Text angewiesen sind. Ein textbasiertes RAG-System reicht jedoch nicht für Systeme aus, die mehrere Datentypen benötigen, um fundierte Entscheidungen zu treffen. Nehmen wir zum Beispiel einen E-Commerce-Shop. Wir können uns nicht nur auf Text verlassen, um einem Nutzer das relevanteste Produkt zu präsentieren; wir benötigen Produktbilder, Beschreibungen und mehr. Hier erweist sich Multimodal RAG als unschätzbar wertvoll, indem es moderne multimodale LLMs nutzt, um verschiedene Datenmodalitäten zu integrieren.
Was sind multimodale LLMs und ihre Anwendungen
Multimodale LLMs wie GPT-4o und Qwen-VL sind Systeme der künstlichen Intelligenz, die mehrere Datentypen wie Text, Bilder, Audio und Video verarbeiten und verstehen können. Sie integrieren und interpretieren Informationen aus verschiedenen Modalitäten und ermöglichen es ihnen, beschreibende Bildunterschriften für Bilder zu generieren, Fragen zu Videos zu beantworten und Inhalte zu erstellen, die Text mit visuellen Elementen kombinieren. Diese Fähigkeit ermöglicht es ihnen, durch die vielfältigen Eingabedatentypen kontextuell angereicherte Antworten besser zu verstehen und zu generieren.
Sie werden in verschiedenen Bereichen eingesetzt, darunter medizinische Dienstleistungen, Einzelhandel und mehr.
In der medizinischen Dienstleistungsbranche gibt es im medizinischen Bereich visuelle medizinische Bilder, textbasierte klinische Notizen und medizinische Berichte. Multimodale LLMs synthetisieren diese multimodalen Informationen und unterstützen Ärzte bei ihrer Arbeit. Ein Beispiel ist Med-PaLM LLM, das sowohl Text- als auch Bilddaten nutzt, um die medizinische Entscheidungsfindung zu verbessern und die Behandlungsergebnisse für Patienten zu optimieren.
Im Einzelhandel erstellen multimodale LLMs maßgeschneiderte Anzeigen und verbessern die Produktsuchfunktionen. Sie verarbeiten und integrieren verschiedene Arten von Daten, wie Textbeschreibungen, Produktbilder und Daten zu Kundeninteraktionen (z. B. Bewertungen und Suchanfragen). Durch die Analyse dieser multimodalen Informationen können diese LLMs personalisierte Anzeigen generieren, die auf individuelle Präferenzen und den Browserverlauf zugeschnitten sind.
Selbst mit diesen fortschrittlichen Funktionen haben multimodale LLMs dieselben Einschränkungen wie textbasierte. Sie leiden unter Knowledge Cutoffs und Halluzinationen. Um diese Probleme zu mindern, benötigen wir ein multimodales RAG.
Multimodales RAG verstehen
Multimodales RAG ist eine fortschrittliche KI-Technik, die Informationsabruf und generative Modellierung kombiniert, um die Fähigkeiten multimodaler LLMs zu verbessern. Um zu verstehen, wie multimodales RAG funktioniert, werfen wir einen Blick auf die folgende multimodale RAG-Abrufpipeline.
Abb. 2 – Multimodale RAG-Abrufpipeline
Abb. 2: Multimodale RAG-Abrufpipeline
Wenn Nutzer eine Frage stellen, wandelt ein Embedding-Modell die Anfrage zunächst in ein Embedding um. Dieses Embedding wird dann verwendet, um eine multimodale Vektordatenbank wie Milvus abzufragen, die Embeddings verwandter Dokumente speichert, einschließlich Text und Bilder. Die Vektordatenbank ruft die nächsten Nachbarn ab zur Frage, im Wesentlichen die relevantesten Dokumente. Die abgerufenen Dokumente werden mit der ursprünglichen Frage kombiniert, um einen multimodalen Prompt zu bilden, der sowohl textuellen als auch visuellen Kontext einbezieht. Ein multimodales LLM verarbeitet anschließend diesen angereicherten Prompt und integriert die verschiedenen Datentypen, um eine genauere und kontextuell relevantere Antwort zu generieren.
Im nächsten Abschnitt werden wir praktisch und sehen, wie man eine multimodale RAG-Pipeline mit FiftyOne, LLamaIndex und Milvus implementiert.
Implementierung einer multimodalen RAG-Pipeline mit FiftyOne, LLamaIndex und Milvus
Es gibt zwei Möglichkeiten, eine multimodale RAG-Pipeline mit FiftyOne, LLamaIndex und Milvus zu implementieren. Eine besteht darin, eigenen Code zu schreiben, was Ihnen mehr Kontrolle gibt, aber mehr Zeit in Anspruch nimmt, und die andere darin, Plugins zu verwenden, mit denen Sie der FiftyOne App Funktionalität hinzufügen können.
In diesem Abschnitt wird die Implementierung der multimodalen RAG-Pipeline mit dem fiftyone-multimodal-rag-plugin untersucht, das von der Milvus-Vektordatenbank unterstützt wird. Wenn Sie von Grund auf programmieren möchten, finden Sie hier einen Leitfaden für Einsteiger zum Generieren von multimodalen Vektor-Embeddings mit Milvus und FiftyOne.
Einrichten Ihrer Umgebung
Jacob zeigt in dem Vortrag eine Demo mit dem installierten multimodalen Plugin. Lassen Sie uns das etwas verlangsamen, da ein entscheidender Installationsschritt weder in der Demo noch in der Plugin-Installationsanleitung auf GitHub ausdrücklich erwähnt wird. Es handelt sich um den Milvus-Installationsschritt.
Um das Plugin zu verwenden, muss bereits eine Milvus-Instanz auf Ihrem Computer laufen. Das FiftyOne-Plugin nutzt Milvus, um multimodale Embeddings zu speichern und abzurufen. Das Plugin geht davon aus, dass Milvus unter http://localhost:19530 läuft. Wenn Sie Milvus nicht installiert haben, folgen Sie der Milvus-Dokumentation, um es zu installieren und auszuführen.
Nach der Installation und Ausführung von Milvus befolgen Sie diese Installationsrichtlinien, um das fiftyone-multimodal-rag-plugin zu installieren und zu konfigurieren. Sobald die Einrichtung abgeschlossen ist, starten Sie die FiftyOne-App und durchsuchen Sie die verfügbaren Operationen, um die vom Plugin bereitgestellten Funktionalitäten zu sehen.
Abb. 3- FiftyOne-Seite zur Auswahl verfügbarer Operationen
Abb. 3: FiftyOne-Seite zur Auswahl verfügbarer Operationen
Erstellen wir nun die RAG-Pipeline.
Schritt 1: Erstellen eines Datensatzes aus LLamaIndex-Dokumenten
Dieser Schritt umfasst die Auswahl eines Ordners auf Ihrem Computer, der Ihre Bilder und Textdateien enthält. Sie werden diese multimodalen Daten einbetten und die multimodalen Embeddings in Milvus speichern. Um den Ordner Ihres Datensatzes zu laden, wählen Sie die Operation Create a Dataset from the LLamaIndex Documents aus. Benennen Sie anschließend Ihren Datensatz und wählen Sie dessen Verzeichnis.
Abb. 4- Erstellen eines Datensatzes aus LLamaIndex-Dokumenten
Abb. 4: Erstellen eines Datensatzes aus LLamaIndex-Dokumenten
Klicken Sie auf Execute, um Ihren Datensatz zu laden und zu visualisieren.
Abb. 5- Visualisierung eines multimodalen Datensatzes in FiftyOne
Abb. 5: Visualisierung eines multimodalen Datensatzes in FiftyOne
In der Visualisierung können Sie sehen, dass der Datensatz aus Bildern und Text besteht, wodurch er multimodal ist. Der nächste Schritt besteht darin, einen multimodalen RAG-Index des obigen Datensatzes zu erstellen.
Schritt 2: Integration von LlamaIndex mit Milvus zur Erstellung eines multimodalen RAG-Index
Um einen multimodalen RAG-Index mit LlamaIndex und Milvus zu erstellen, müssen Sie die beiden Bibliotheken integrieren, um multimodale Daten effizient zu verwalten und abzurufen. LlamaIndex übernimmt die Aufnahme und Einbettung multimodaler Daten in Vektorrepräsentationen. Diese Embeddings werden anschließend in Milvus für den späteren Abruf während der Abfrage gespeichert.
Wählen Sie auf der FiftyOne-Seite zur Auswahl von Operationen die Operation Create Multimodal RAG Index aus. Benennen Sie anschließend Ihren Index und klicken Sie auf „Ausführen“.
Abb. 6- Erstellung eines multimodalen RAG-Index mit LLamaIndex und Milvus
Abb. 6: Erstellung eines multimodalen RAG-Index mit LLamaIndex und Milvus
Die Ausführung wird je nach Größe Ihres Datensatzes einige Zeit in Anspruch nehmen, haben Sie also Geduld. Während dieses Prozesses wird Ihr Datensatz in Vektor-Embeddings umgewandelt und in Milvus gespeichert. Je größer Ihr Datensatz ist, desto mehr Zeit benötigt die Erstellung des Index. Nachdem der RAG-Index erstellt wurde, können Sie fortfahren und ihn abfragen.
Schritt 3: Abfrage des multimodalen RAG-Index
Dieser Abfrageschritt benötigt in der RAG-Pipeline die meiste Zeit zur Ausführung. Wie wir alle wissen, mag niemand eine langsame Anwendung. Deshalb sollte die abzufragende Vektordatenbank während des Abrufprozesses schnell und zugleich genau sein. Hier punktet Milvus, die am weitesten verbreitete Open-Source-Vektordatenbank.
Jacobs spricht in dem Vortrag über Milvus, aber da das Plugin den Großteil dessen abstrahiert, was unter der Haube passiert, sehen wir die Vorteile von Milvus in multimodalen RAG-Pipelines möglicherweise nicht vollständig. Doch schauen wir uns an, warum die meisten Entwickler multimodaler RAG-Anwendungen, einschließlich des Entwicklers des fiftyone-multimodal-rag-plugin, sich für Milvus entschieden haben:
Vektorspeicherung und -abruf im Milliardenmaßstab: Milvus verwaltet Vektordaten im Milliardenmaßstab effizient und gewährleistet schnellen Zugriff mit Latenzen im Millisekundenbereich.
Horizontale Skalierbarkeit: Milvus ist hochgradig skalierbar und passt sich an Ihre sich entwickelnden Anforderungen an, während Ihr Unternehmen wächst.
Ideal für RAG: Milvus ist eine unverzichtbare Infrastruktur für den Aufbau verschiedener GenAI-Anwendungen, insbesondere für Retrieval-Augmented Generation (RAG).
Hochgeschwindigkeits-Abruf: Mit optimierten Suchalgorithmen ermöglicht Milvus einen schnellen und präzisen Abruf relevanter Vektoren, was für Echtzeitanwendungen wie interaktive KI-Systeme und Empfehlungssysteme unerlässlich ist.
Verarbeitung multimodaler Daten: Milvus unterstützt verschiedene Datentypen und kann hybride Suchen durchführen. Diese Fähigkeit ermöglicht die Kombination von multimodaler Suche, hybrider Sparse- und Dense-Suche sowie hybrider Dense- und Volltextsuche und bietet dadurch vielseitige und flexible Suchfunktionen.
Um Ihren multimodalen RAG-Index abzufragen, gehen Sie zur Auswahlseite Operations und wählen Sie die Operation Query Multimodal RAG Index aus. Geben Sie dann Ihre Abfrage ein, wählen Sie den zu verwendenden Index, das LLM zur Generierung einer Antwort, die Anzahl der Textergebnisse und schließlich die Anzahl der einzubeziehenden Bildergebnisse aus.
Abb. 7- Abfrage eines von Milvus unterstützten multimodalen RAG-Index
Abb. 7: Abfrage eines von Milvus unterstützten multimodalen RAG-Index
Das Plugin verwendet dann Milvus, um eine Vektorähnlichkeitssuche durchzuführen und die relevantesten Einbettungen basierend auf Ihrer Abfrage abzurufen. Die abgerufenen Einbettungen liefern den Kontext für die Generierung einer Antwort mithilfe des ausgewählten großen Sprachmodells. Hier sind die Ergebnisse für die obige Abfrage:
Abb. 8- Ergebnisse der Abfrage eines multimodalen RAG-Index
Abb. 8: Ergebnisse der Abfrage eines multimodalen RAG-Index
Die Ergebnisse zeigen den Index und das Modell, die Sie bei der Ausführung der Abfrage verwendet haben, sowie die vom großen Sprachmodell generierte Antwort.
Sie haben bisher alle Schritte zur Erstellung einer multimodalen RAG-Pipeline mit FiftyOne, LLamaIndex und Milvus abgeschlossen.
Fazit
Jacobs Präsentation verdeutlichte das Potenzial der Integration von FiftyOne, LlamaIndex und Milvus zum Aufbau leistungsstarker multimodaler RAG-Pipelines. Diese Tools erweitern die Fähigkeiten multimodaler Systeme, indem sie Text- und visuelle Daten effizient nutzen, um den Datenabruf und kontextreiche Antworten zu verbessern. Wenn Sie die beschriebenen Schritte befolgen, können Sie die Stärken dieser Open-Source-Tools nutzen, wobei Milvus robuste Vektorspeicherung und Hochgeschwindigkeits-Abruf bereitstellt und Ihre Projekte auf ein neues Niveau hebt.
Weitere Ressourcen
Weiterlesen

Notion's Vector Search Is Excellent. Their Next Problem Is Harder.
Notion solved vector search scaling in two years. The next bottleneck — offline context engineering, unified data, and the real-time/offline gap — is harder.

Introducing Functions and Model Inference on Zilliz Cloud: Automatic Embedding and Reranking with Hosted Models
Zilliz Cloud Functions auto-generate embeddings via OpenAI, Voyage AI, Cohere, or Zilliz Hosted Models. Built-in reranking — just insert text and search.

Balancing Precision and Performance: How Zilliz Cloud's New Parameters Help You Optimize Vector Search
Optimize vector search with Zilliz Cloud’s level and recall features to tune accuracy, balance performance, and power AI applications.


