Multimodal RAG - Chat with Text, Images and Tables

LARRUZ shows how to build systems that search images, text, and tables together. The demo converts PDFs to images, embeds them with Cohere's EmbedV, retrieves matches by similarity, then feeds them to Gemini to answer questions like Nike's net profit or Tesla calculations. Local alternatives using ColPoly models are also covered.
Questions this video answers
Drei Größen: 512 bis 1536 (dimensionen).
8 Milliarden (Netto, bis Februar 2025).
32 Milliarden; Motorola Mobility: 12,5 Milliarden; Bandant: 5,4 Milliarden.
0,3 Milliarden (Nettogewinn inklusive Zinsen, laut Modellantwort).
Chapters
Heutzutage sind die meisten Systeme zur erweiterten Datenabfrage nur textbasiert. In der Praxis haben Sie jedoch Multimodell Daten in Ihren Dokumenten, einschließlich Bildern und Tabellen. In diesem Video zeige ich Ihnen, wie Sie ein Multimodell RAC System erstellen, das Bilder, Text und Tabellen verarbeiten kann. Wir werden uns sowohl eine proprietäre API-basierte Lösung als auch eine lokale Lösung ansehen, die Sie privat betreiben können. So sieht ein normales Setup für ein textbasiertes RAC System aus. Blöcke bilden, Einbettungen erstellen. Was ist mit Bildern und Tabellen in den Dokumenten? Der herkömmliche Ansatz sieht in etwa so Wir analysieren diese Bilder und Tabellen aus den Dokumenten und verwenden dann ein Vision Language Model, um Bildunterschriften zu generieren, die wir dann als Teil der eingebetteten Blöcke einbetten. Im Wesentlichen wandeln wir also Bilder in textbasiertes Markdown um. Wie Sie sehen, gibt es bei diesem Ansatz ein potenziell großes Sie verlieren viele Kontextinformationen und die Beschreibung basiert auf dem LLM oder dem Vision Language Model, das Sie zusammen mit der Eingabeaufforderung verwenden. Sie müssen bei Ihren Eingabeaufforderungen also sehr gründlich sein. Was wäre, wenn Sie dieses Bild direkt als Teil Ihres Indexierungsprozesses verarbeiten könnten? In einigen meiner vorherigen Videos haben wir uns einen Ansatz namens POLLY angesehen, mit dem Sie genau das tun können. Seitenbilder werden mit einem Vision Encoder codiert und zu Einbettungen verarbeitet. Das Problem bei diesem Ansatz ist nun, dass die erstellten Einbettungen auf späten Interaktionen basieren. Sie erhalten also für jeden der Patches mehrstufige Einbettungen. Der Speicherbedarf ist also ziemlich hoch und die meisten der vorhandenen Vektorspeicher unterstützen diese mehrstufige Darstellung nicht. Vor kurzem hat Coher, ein Modellunternehmen der Frontier Foundation, jedoch Embed eingeführt, seine Multimodell Einbettungen für die Multimodell Suche. Ihre Benchmarks zeigen, dass dieser neue Einbettungsansatz in der Lage ist, bei der visuellen Abfrage hochmoderne Ergebnisse zu erzielen, und zwar sogar besser als beispielsweise Colquin, das auf Colpali aufbaut. Das ist also äußerst vielversprechend und das Gute daran ist, dass Sie Einbettungen mit fester Größe generieren. Sie können diese Einbettungen also direkt mit einem Vektorspeicher Ihrer Wahl verwenden. So wird der Workflow aussehen. Wir werden, also Einbettungen der Bilder aller Seiten innerhalb eines Dokuments oder einer Reihe von Dokumenten erstellen, dann legen wir diese in einem Vektorspeicher ab. Bei jeder Benutzerabfrage generieren wir mit dem gleichen EmbedV Modell eine Einbettung. Wir führen den Abruf durch und leiten die Abfrage dann zusammen mit den abgerufenen Bildern an ein Multimodellmodell wie Gemini weiter, das in der Lage sein sollte, Antworten zu generieren. Der Code, den ich Ihnen gleich zeigen werde, basiert auf einem Beitrag von Neil Riemers, dem VP für KI Suche bei Coher. Bevor wir uns die Implementierung ansehen, sprechen wir auch über die Kosten der Verwendung der Multivektordarstellung oder sogar dieser multimodalen Vektordarstellung von Bildern. Das Gute daran ist, dass sie dynamisch in der Größe sind. Sie können also drei verschiedene Größen Ihrer Einbettungsvektoren auswählen, beginnend bei 512 bis hin zu 1536. Sie können diese Einbettungsvektoren jedoch auch quantisieren, wodurch sie sowohl bei den Rechen als auch bei den Speicherkosten viel sparen. Wie bei der Quantisierung von LLM-Gewichten lassen sich auch die von einem Einbettungsmodell erzeugten Vektoren quantisieren. Wenn Sie sich dieses Diagramm ansehen, können Sie feststellen, dass bei Verwendung der Bit oder Bit-Quantisierung im Vergleich zur Verwendung von 32 Bit tatsächlich viel Leistung. Erhalten bleibt. Sie erhalten ein sehr ähnliches Leistungsniveau zu deutlich geringeren Kosten. Ich habe die Einbettungsquantisierung und ihre Auswirkungen auf die Abrufleistung in einem meiner vorherigen Videos behandelt. Wenn Sie sich dafür interessieren, finden Sie den Link in der Videobeschreibung. Wenn Sie sich außerdem für Rack Techniken interessieren, die über die Grundlagen hinausgehen, habe ich gerade meinen Rack fortgeschrittenen Kurs aktualisiert. Er enthält Themen zu Multimodell Vision basierten Rack Systemen und kontextbezogenem Abruf. Sehen Sie ihn sich also unbedingt an. Der Link befindet sich in der Videobeschreibung. OK, schauen wir uns also die Code Implementierung an. Diese basiert auf einem Beispiel, das vom Coherent Team geteilt wurde. Im ersten Teil verwenden wir ihre proprietäre API für die Verwendung des Multimodell Einbettungsmodells. Später zeige ich dir jedoch, wie du diese proprietäre API durch ein lokales Modell ersetzen kannst und sehr ähnliche Ergebnisse erhältst. Wir werden zunächst unsere Bilder in diese proprietäre API mit einem lokalen Modell einbetten und du erhältst sehr ähnliche Ergebnisse. Zurück zu diesem Thema. Wir werden zunächst unsere Bilder oder Dokumente mit Hilfe des Embed Modells einbetten. Wir führen den Abruf auf der Grundlage dieser Einbettungen durch und müssen diese dann an ein Vision Language Modell wie Gemini oder GPD 4.1 weitergeben, um die endgültigen Antworten zu generieren. OK, wir installieren also das COHAIR Python Paket. Dann benötigen wir zunächst einen API Schlüssel. Gehe also zu coher, erstelle ein Konto und klicke dann auf API Schlüssel. Sie geben Ihnen die Möglichkeit, die Dienste mit Hilfe von Testschlüsseln auszuprobieren. Wie Sie sehen, habe ich eine ganze Reihe davon. Wenn Sie es also in Produktion nehmen möchten, erstellen Sie einen neuen Produktionsschlüssel oder erstellen Sie einfach einen neuen Testschlüssel, um loszulegen. Sie können dies dann kostenlos testen. Als nächstes erstellen wir den Client. Wir benötigen außerdem den Gemini API Schlüssel. Diesen erhalten Sie von iStudio, da wir die Gemini Modelle für den Generierungsstyle verwenden werden. OK, Hier ist eine einfache Hilfsfunktion, die die langen Texte umschließt. Bilder müssen in Dokumente eingebettet werden zu suchen. Wenn Sie also eine PDF Datei haben, möchten Sie diese zuerst in Bilder konvertieren und dann diese Bilder einbetten. In diesem Fall werden wir nun die Größe der Bilder ändern. Sie können die Auflösung ändern. Dies ist die maximale Auflösung. Ich denke, Sie können sie verarbeiten. Abhängig von der gewählten Auflösung kann die Qualität jedoch möglicherweise nachlassen, wenn Sie ein Bild mit niedriger Auflösung verwenden. OK. Im Grunde genommen werden hier die Bilder skaliert und dann in Base 64 konvertiert. So erhalten Sie ein Bild, das Sie anzeigen können. OK. Zuerst benötigen wir einige Daten. In diesem Beispiel verwenden wir einige Bilder direkt von dieser Website, auf der sich einige wirklich schöne Infografiken für verschiedene Unternehmen befinden. So etwas ist für textbasiertes LLM äußerst schwer zu verarbeiten, selbst wenn Sie vor dem Einbetten eine detaillierte Textbeschreibung generieren. Ein Vision Language Model kann dies jedoch direkt verarbeiten und Fragen basierend auf dem Inhalt beantworten. Genau das werden Sie hier sehen. OK, hier sind mehrere Bilder von dieser Website. Dann nehmen wir jedes einzelne Bild. Wir lesen also im Grunde genommen die Bilddateien. Wir übergeben diese an EmbedV von Coherence. Wir erhalten die entsprechenden Einbettungen. Im Moment erstellen wir nur ein NumPy Array. Da es jedoch eine feste Größe von 1536 hat, können Sie dies theoretisch in einen beliebigen Vektorspeicher Ihrer Wahl einfügen. In diesem kurzen Beispiel gibt es nur sechs verschiedene Bilder für verschiedene Unternehmen und die entsprechenden Vektoren. Hier ist also eine Hilfsfunktion, die die Benutzerfrage abruft. Dann verwendet sie dasselbe Embed V Modell. Um das einzubetten, erhalten wir die API Antwort, die im Wesentlichen diese multimodale Einbettungsvektordarstellung ist. OK, Sobald wir den Einbettungsvektor für unsere Abfrage erhalten, müssen wir nur noch ein Skalarprodukt bilden und das Bild mit der höchsten Ähnlichkeit auswählen. Im Wesentlichen berechnen wir also nur die Cosinusähnlichkeit. Okay, Wir berechnen das Skalarprodukt, erhalten den Index des Top Bildes und leiten es an das Vision Language Model weiter. In diesem Beispiel ist dies also das Bild, das zurückgegeben wird und jetzt müssen wir es zusammen mit der ursprünglichen Benutzerabfrage an ein Vision Language Model weitergeben. Dies ist unserem textbasierten Retrieval Augmented Generation System sehr ähnlich. Sie können auch einen Reanker hinzufügen. Nehmen wir also An, sie geben 5 oder die 5 oder 10 besten Bilder zurück. Dann können Sie einen auf Bildverarbeitung basierenden Retriever oder einen auf Bildverarbeitung basierenden Re Anker einrichten, der diese zurückgegebenen Bilder bewertet und an das Vision Language Model weiterleitet, ganz ähnlich wie das System zur erweiterten Generierung von Textabfragen. Alle Prinzipien gelten. Der einzige Unterschied besteht darin, dass Sie Ihr Dokument nicht in einen Trunk umwandeln, sondern direkt ein Bild Ihres Dokuments einbetten können. Als Nächstes erhalten wir die Frage zusammen mit dem Bild oder dem Pfad des Bildes, das im vorherigen Schritt zurückgegeben wurde. Wir leiten sie an die Gemini 2.5 Flash Vorschau weiter und erhalten eine Antwort. Nehmen wir also an, Sie stellen eine Frage Wie hoch ist der Nettogewinn von Nike? Hier ist der Pfad zum Bild, der zurückgegeben wurde. Diesen leiten wir nun an unsere Hilfsfunktion weiter, die die Gemini API aufruft. Hier ist also das abgerufene Bild. Dies ist für Nike am relevantesten. Die Antwort basiert auf der bereitgestellten Visualisierung der Gewinn und Verlustrechnung von Nike für das dritte Quartal des Geschäftsjahres 2025. Der Nettogewinn von Nike bis Februar 2025 beträgt 8 Milliarden und sie sehen, dass hier der Nettogewinn genannt wird. Es wird für jedes textbasierte System extrem schwierig sein, diese Infografik zunächst in Textinformationen umzuwandeln und dann zu versuchen, die Antwort herauszufinden. Hier ist also noch eine weitere Was waren die drei größten Akquisitionen von Google? Diese Infografik listet Sie alle auf und im Grunde kann ein Vision Language Model Sie einfach nur ansehen und Ihnen die Antwort geben. In diesem Fall lautet Die Antwort beispielsweise 32 Milliarden. Motorola Mobility hatte 12,5 Milliarden und Bandant 5,4 Milliarden. Okay, Sie können komplexere Fragen stellen, zum Beispiel so etwas wie Wie hoch wäre der Nettogewinn von Tesla ohne Zinsen? In diesem Fall muss es also Berechnungen anstellen. Hier ist also der Nettogewinn, der auch Zinsen enthält. OK. Wenn Sie sich also hier die Antwort ansehen, die das Gemini Modell generiert, sagt es, dass der Nettogewinn mit Zinsen 0,3 Milliarden beträgt. Um also den Nettogewinn ohne Zinsen zu berechnen, muss, muss es eine Subtraktion durchführen und dann eine Antwort generieren. Richtig. Das Modell kann also nicht nur Informationen extrahieren, sondern auch die visuellen Daten, die es sieht, beurteilen. Der erste Schritt ist die Datenabfrage. Mit einem guten Vision Language Model erhalten Sie eine sehr gute Datenabfrage und damit generierte Antworten. Hier noch ein paar Beispiele. In jedem dieser Fälle liefert das Modell wirklich gute Antworten. Da es sich nur um ein Beispiel mit etwa sieben bis acht verschiedenen Infografiken handelt, sollte es Ihnen eine gute Vorstellung davon vermitteln, was genau möglich ist, wenn Sie eine auf Datenabfrage basierende Datenabfrage mit einem Vision Language Model für die Datengenerierung kombinieren. Ich persönlich sehe hier ein großes Potenzial und habe bei der Arbeit mit verschiedenen Kunden bereits einige Anwendungen gesehen, da dies die Argumentation zu viel komplexeren Fragen ermöglicht. Sie brauchen keine der üblichen Vorverarbeitungsschritte für Ihr textbasiertes Dokumentgenerierungssystem. Wir haben uns hier hauptsächlich mit Bildern befasst. Sie können Bilder von Tabellen erstellen und diese dann auf sehr ähnliche Weise verarbeiten. Mit dem Embedded View Model können Sie Textdaten zusammen mit visuellen Daten verarbeiten. Nehmen wir also an, Sie hätten ein eine Bildunterschrift für dieses Bild. Sie würden diese zusammen mit den Bilddaten einbetten. Dadurch könnten Sie die Genauigkeit beim Abruf möglicherweise noch weiter verbessern. Was aber, wenn Sie alles lokal halten und keine Daten an einen proprietären API Endpunkt senden möchten. Nun, Sie können einen Ansatz wie Colpony verwenden, mit dem Sie ein auf Vision basierendes Abrufsystem vollständig lokal in Ihrem eigenen Setup ausführen können. In diesem Fall zeige ich Ihnen nun ein Beispiel für die Verwendung von Colpony. Für das Vision Sprachmodell verwende ich jedoch weiterhin Gemini, da es am einfachsten einzurichten ist. Wenn Sie jedoch eine vollständig lokale Lösung suchen, empfehle ich Ihnen dringend, sich mein Open Source Projekt namens Local GPT anzusehen. Im Grunde ist das, was ich Ihnen gleich zeigen werde, als Teil von Local GPT implementiert. Sie können aus vielen Modellen wählen, komplett lokalen für Abruf und Generierung oder einer Kombination aus offenen Gewichtsmodellen und proprietärer API. Und wenn euch das Projekt gefällt, startet es doch unbedingt. OK. Um Colpoly zu verwenden, verwenden wir das Paket BLD, mit dem ihr ColPoly oder ColQuin ähnliche Modelle für die bildbasierte Abfrage ausführen könnt. Das müssen wir also zuerst installieren. Wir benötigen außerdem das beliebte Paket, um unsere PDF Dateien in Bilder zu konvertieren. Ihr benötigt außerdem euren Hugging Face AP Token. Ich werde diese nach der Aufnahme des Videos entfernen. Dann verwenden wir das Paket BL, um das Col Poly Modell zu laden. Wie gesagt, ihr könnt die Gwen Polymath Modelle verwenden. Sie bieten eine ähnliche Leistung. Dann verweisen wir auf den Ordner, in dem wir alle Bilder gespeichert haben und das wird einen Index für uns erstellen. Die Einrichtung ist jetzt ganz einfach. Dies wird ein lokaler Index sein. Ihr müsst lediglich die Suchfunktion zusammen mit eurer Frage aufrufen. Dann berechnet sie Einbettungen für diese Frage basierend auf dem Col Poly Modell und wir möchten nur, dass sie das oberste Bild zurückgibt, das sie für das relevanteste hält. So erhaltet ihr die Ergebnisse. Da es sich hierbei um einzelne Bilder handelt, Haben Sie unterschiedliche Dokument IDs. Nun wandeln wir den Bildstrom in Bildbytes um und können die Ergebnisse anzeigen. Nehmen wir beispielsweise die erste Wie hoch ist der Nettogewinn von Nike? Hier sehen Sie das Ergebnis des Abrufschritts. Wir können sehen, dass das System korrekt erkannt hat, dass wir dieses bestimmte Bild oder Dokument verwenden müssen. Die nächste Frage betrifft die größte Akquisition von Google. Auch hier können Sie sehen, dass der Abruf korrekt durchgeführt wird. Hier ist die von Tesla und genau wie im vorherigen Fall leiten Sie dieses zurückgegebene Bild zusammen mit der Nutzerabfrage an ein Tool wie Gemini weiter. OK, dies war also ein kurzes Beispiel für eine auf Vision basierende Abfrage. Ich glaube, dass die Suche oder der Abruf in Unternehmen eines der größten Probleme darstellt, das noch gelöst werden muss und dass darin viele Möglichkeiten stecken. Wenn Sie ein Abrufsystem erstellen, sollten Sie sich unbedingt meinen Kurs Fortgeschrittene Rack Techniken ansehen. Wenn Sie professionelle Hilfe oder Beratung benötigen, biete ich diese App sofort an. Einzelheiten finden Sie in der Videobeschreibung. Wie auch immer, ich hoffe, Sie fanden dieses Video nützlich.










