Allgemeine Einführung
Vision-is-all-you-need ist ein innovatives Demonstrationsprojekt für ein visuelles RAG-System (Retrieval Augmented Generation), das neue Wege bei der Anwendung von Visual Language Modelling (VLM) in der Dokumentenverarbeitung beschreitet. Im Gegensatz zu herkömmlichen Text-Chunking-Methoden verwendet das System direkt das visuelle Sprachmodell, um die Seitenbilder von PDF-Dateien zu verarbeiten und sie für die Speicherung in eine Vektorform zu konvertieren. Das System verwendet ColPali als zentrales visuelles Sprachmodell zusammen mit der QDrant-Vektordatenbank, um eine effiziente Suche zu ermöglichen, und integriert das GPT4- oder GPT4-mini-Modell für intelligente Fragen und Antworten. Das Projekt realisiert den gesamten Prozess vom PDF-Dokumentenimport, der Bildkonvertierung, der Vektorspeicherung bis hin zum intelligenten Abruf und bietet eine bequeme API-Schnittstelle und eine benutzerfreundliche Front-End-Schnittstelle, die eine völlig neue Lösung für den Bereich der intelligenten Dokumentenverarbeitung darstellt.
Funktionsliste
- PDF-Seite einbettenKonvertiert Seiten einer PDF-Datei in Bilder und bettet sie als Vektoren unter Verwendung eines visuellen Sprachmodells ein.
- Vektordatenbank-SpeicherungQdrant: Verwenden Sie Qdrant als Vektordatenbank, um eingebettete Bildvektoren zu speichern.
- Suche nach AnfragenDer Benutzer kann nach Vektoren suchen, die dem eingebetteten Bild ähnlich sind, und eine Antwort erzeugen.
- API-SchnittstelleRESTful API-Schnittstelle zur Erleichterung des Hochladens, Abfragens und Abrufens von Dateien.
- Front-End-Interaktion: durch Reagieren Sie Die Front-End-Schnittstelle interagiert mit der API, um eine benutzerfreundliche Erfahrung zu bieten.
Hilfe verwenden
Ablauf der Installation
- Installation von Python 3.11 oder höher::
pip install modal
modale Einrichtung
- Umgebungsvariablen konfigurieren: Erstellen einer
.env
Datei und fügen Sie Folgendes hinzu:
OPENAI_API_KEY=Ihr_openai_api_key
HF_TOKEN=Ihr_Huggingface_Token
- laufendes Beispiel::
modal serve main.py
Anwendungsbeispiel
- Hochladen von PDF-DateienÖffnen Sie Ihren Browser, rufen Sie die von Modal bereitgestellte URL auf und fügen Sie Folgendes zur URL hinzu
/docs
. Klicken Sie aufPOST /sammlungen
Endpunkt, wählen SieProbieren Sie es aus
klicken, um die PDF-Datei hochzuladen und auszuführen. - Abfrage ähnlicher Seiten: Verwendung
POST /Suche
Endpunkt, sendet Seitenbilder und Abfragen an die OpenAI-API und gibt eine Antwort zurück.
Frontend-Entwicklung
- Installation von Node.js::
cd frontend
npm installieren
npm ausführen dev
- Konfigurieren der Front-End-UmgebungModifikation
.env.development
fügen Sie die Backend-URL hinzu:
VITE_BACKEND_URL=Ihre_backend_url
- Launch Front End::
npm run dev
Detaillierte Vorgehensweise
- PDF-Seite einbetten::
- ausnutzen
pypdfium
PDF-Seiten in Bilder umwandeln. - Übergeben Sie das Bild an ein visuelles Sprachmodell (z. B. ColPali), um den Einbettungsvektor zu erhalten.
- Speichert Einbettungsvektoren in der Qdrant-Vektordatenbank.
- ausnutzen
- Suche nach Anfragen::
- Der Benutzer gibt eine Anfrage ein und der Einbettungsvektor der Anfrage wird durch ein visuelles Sprachmodell ermittelt.
- Suche nach ähnlichen Einbettungsvektoren in der Vektordatenbank.
- Die Anfrage und das am besten passende Bild werden an ein Modell (z. B. GPT4o) weitergeleitet, um eine Antwort zu generieren.
- API-Verwendung::
- Hochladen von PDF-Dateien: über
POST /sammlungen
Endpunkte laden Dateien hoch. - Ähnliche Seiten abfragen: von
POST /Suche
Der Endpunkt sendet eine Anfrage und erhält eine Antwort.
- Hochladen von PDF-Dateien: über
- Front-End-Interaktion::
- Verwenden Sie die React-Front-End-Schnittstelle zur Interaktion mit der API.
- Bietet Funktionen zum Hochladen von Dateien, zur Eingabe von Abfragen und zur Anzeige von Ergebnissen.
Referenzartikel: Aufbau einer RAG? Haben Sie genug von Chunking? Vielleicht ist eine Vision alles, was Sie brauchen!
Das Herzstück der meisten modernen generativen KI-Lösungen (GenAI) ist die sogenannte RAG Die Methode der Retrieval-Augmented Generation (RAG) wird von Software-Ingenieuren aus dem Bereich der angewandten KI oft als "RAG" bezeichnet. Die Methode der Retrieval-Augmented Generation (RAG) wird von Software-Ingenieuren im Bereich der angewandten KI oft als "RAG" bezeichnet. Mit RAG können Sprachmodelle Fragen auf der Grundlage der eigenen Daten eines Unternehmens beantworten.
Der erste Buchstabe R in RAG steht für Retrieval, was sich auf den Suchprozess bezieht. Wenn ein Benutzer einem GenAI-Roboter eine Frage stellt, sollte die Suchmaschine im Hintergrund genau das Material finden, das für die Frage relevant ist, um eine perfekte, halluzinationsfreie Antwort zu generieren. a und g beziehen sich auf die Eingabe der abgerufenen Daten in das Sprachmodell bzw. die Generierung der endgültigen Antwort.
In diesem Beitrag konzentrieren wir uns auf den Abrufprozess, da er der kritischste, zeitaufwändigste und schwierigste Teil der Implementierung einer RAG-Architektur ist. Wir werden zunächst das allgemeine Konzept des Retrievals untersuchen und dann den traditionellen Chunk-basierten RAG-Retrievalmechanismus vorstellen. Die zweite Hälfte des Papiers konzentriert sich dann auf einen neuen RAG-Ansatz, der sich auf Bilddaten für die Suche und Generierung stützt.
Eine kurze Geschichte des Information Retrieval
Google und andere große Suchmaschinenunternehmen versuchen seit Jahrzehnten, das Problem der Informationsbeschaffung zu lösen - "versuchen" ist das Schlüsselwort. Das Auffinden von Informationen ist immer noch nicht so einfach wie erwartet. Ein Grund dafür ist, dass Menschen Informationen anders verarbeiten als Maschinen. Es ist nicht einfach, natürliche Sprache in sinnvolle Suchanfragen für unterschiedliche Datensätze zu übersetzen. Fortgeschrittene Nutzer von Google sind vielleicht mit allen möglichen Techniken zur Manipulation der Suchmaschine vertraut. Aber der Prozess ist immer noch mühsam, und die Suchergebnisse können recht unbefriedigend sein.
Mit den Fortschritten bei den Sprachmodellen verfügt die Informationsbeschaffung plötzlich über eine natürlichsprachliche Schnittstelle. Sprachmodelle können jedoch nur schlecht faktenbasierte Informationen liefern, da ihre Trainingsdaten eine Momentaufnahme der Welt zum Zeitpunkt des Trainings darstellen. Außerdem wird das Wissen im Modell komprimiert und das bekannte Problem der Illusion ist unvermeidlich. Schließlich handelt es sich bei Sprachmodellen nicht um Suchmaschinen, sondern um denkende Maschinen.
Der Vorteil eines Sprachmodells besteht darin, dass es mit Datenbeispielen und Anweisungen versorgt und aufgefordert werden kann, auf der Grundlage dieser Eingaben zu reagieren. Dies ist ChatGPT und typische Anwendungsfälle für ähnliche dialogorientierte KI-Schnittstellen. Aber Menschen sind faul, und mit dem gleichen Aufwand hätte man die Aufgabe auch selbst erledigen können. Deshalb brauchen wir RAG: Wir können einfach Fragen an eine angewandte KI-Lösung stellen und erhalten Antworten auf der Grundlage präziser Informationen. Zumindest in einer Welt, in der die Suche perfekt ist, ist dies der Idealfall.
Wie funktioniert der Abruf in der traditionellen RAG?
Die RAG-Suchmethoden sind so vielfältig wie die RAG-Implementierungen selbst. Die Suche ist immer ein Optimierungsproblem, und es gibt keine generische Lösung, die auf alle Szenarien angewandt werden kann: Die KI-Architektur muss auf jede spezifische Lösung zugeschnitten sein, sei es die Suche oder andere Funktionen.
Die typische Basislösung ist jedoch die so genannte Chunking-Technik. Bei diesem Ansatz werden die in der Datenbank gespeicherten Informationen (in der Regel Dokumente) in kleine Abschnitte (Chunks) aufgeteilt, die etwa die Größe eines Absatzes haben. Jeder Chunk wird dann mit Hilfe eines Einbettungsmodells, das mit einem Sprachmodell verbunden ist, in einen numerischen Vektor umgewandelt. Die erzeugten numerischen Vektoren werden in einer speziellen Vektordatenbank gespeichert.
Eine einfache Vektordatenbank-Suche wird wie folgt implementiert:
- Der Benutzer stellt eine Frage.
- Erzeugen Sie einen Einbettungsvektor aus dem Problem.
- Durchführung einer semantischen Suche in einer Vektordatenbank.
- Bei der semantischen Suche wird die Nähe zwischen Fragevektoren und Vektoren in der Datenbank mathematisch gemessen, wobei der Kontext und die Bedeutung des Textblocks berücksichtigt werden.
- Die Vektorsuche liefert z. B. die 10 am besten übereinstimmenden Textblöcke.
Der abgerufene Textblock wird dann in den Kontext (Cue) des Sprachmodells eingefügt und das Modell wird aufgefordert, die Antwort auf die ursprüngliche Frage zu generieren. Diese beiden Schritte nach dem Abruf sind die A- und G-Phasen von RAG.
Chunking-Techniken und andere Vorverarbeitungen vor der Indexierung können sich erheblich auf die Suchqualität auswirken. Es gibt Dutzende solcher Vorverarbeitungsmethoden, und die Informationen können auch nach der Suche geordnet oder gefiltert werden (so genannte Neuordnung). Neben der Vektorsuche können auch herkömmliche Schlüsselwortsuchen oder jede andere Programmierschnittstelle zum Abruf strukturierter Informationen verwendet werden. Beispiele hierfür sind Text-to-SQL- oder Text-to-API-Techniken zur Generierung neuer SQL- oder API-Abfragen auf der Grundlage von Benutzerfragen. Bei unstrukturierten Daten sind Chunking und Vektorsuche die am häufigsten verwendeten Abfragetechniken.
Chunking ist nicht unproblematisch. Der Umgang mit verschiedenen Datei- und Datenformaten ist mühsam, und für jedes Format muss ein eigener Chunking-Code geschrieben werden. Es gibt zwar fertige Softwarebibliotheken, aber sie sind nicht perfekt. Außerdem müssen die Größe der Chunks und sich überschneidende Bereiche berücksichtigt werden. Als Nächstes stoßen Sie auf die Herausforderung von Bildern, Diagrammen, Tabellen und anderen Daten, bei denen das Verständnis der visuellen Informationen und des sie umgebenden Kontexts (wie Überschriften, Schriftgrößen und andere subtile visuelle Hinweise) entscheidend ist. Und diese Hinweise gehen bei Chunking-Techniken völlig verloren.
Was ist, wenn diese Unterteilung völlig unnötig ist und die Suche wie ein Mensch eine ganze Seite eines Dokuments durchblättert?
Bilder halten visuelle Informationen fest
Bildbasierte Suchmethoden sind durch die Entwicklung fortschrittlicher multimodaler Modelle möglich geworden. Eine beispielhafte KI-Lösung, die auf Bilddaten basiert, ist die selbstfahrende Lösung von Tesla, die sich ausschließlich auf Kameras stützt. Die Idee hinter diesem Ansatz ist, dass der Mensch seine Umgebung in erster Linie über das Sehen wahrnimmt.
Das gleiche Konzept gilt für die RAG-Implementierung. Anders als beim Chunking werden ganze Seiten direkt als Bilder indiziert, d.h. in dem Format, in dem sie von einem Menschen betrachtet werden würden. Zum Beispiel wird jede Seite eines PDF-Dokuments als Bild in ein spezielles KI-Modell eingespeist (z.B. ColPali), erstellt das Modell Vektordarstellungen auf der Grundlage von visuellen Inhalten und Text. Diese Vektoren werden dann der Vektordatenbank hinzugefügt. Wir können diese neue RAG-Architektur als die Visual Retrieval Enhancement Generation(Vision Retrieval-Augmented Generation, oder V-RAG).
Der Vorteil dieses Ansatzes kann eine höhere Abrufgenauigkeit als bei herkömmlichen Methoden sein, da das multimodale Modell eine Vektordarstellung erzeugt, die sowohl textuelle als auch visuelle Elemente berücksichtigt. Das Suchergebnis sind die gesamten Seiten des Dokuments, die dann als Bilder in ein leistungsstarkes multimodales Modell wie GPT-4 eingespeist werden. Das Modell kann direkt auf Informationen in Diagrammen oder Tabellen verweisen.
Mit V-RAG entfällt die Notwendigkeit, zunächst komplexe Strukturen (wie Diagramme oder Tabellen) in Text zu extrahieren, dann diesen Text in ein neues Format zu rekonstruieren, ihn in einer Vektordatenbank zu speichern, ihn abzurufen, neu zu ordnen, um kohärente Hinweise zu bilden, und schließlich Antworten zu generieren. Dies ist ein erheblicher Vorteil bei alten Handbüchern, Dokumenten mit vielen Tabellen und jedem menschenorientierten Dokumentenformat, dessen Inhalt mehr als nur reiner Text ist. Die Indizierung ist auch viel schneller als herkömmliche Layout-Erkennung und OCR-Verfahren.
Nichtsdestotrotz ist die Extraktion von Text aus Dokumenten nach wie vor wertvoll und kann neben der Bildsuche hilfreich sein. Chunking wird jedoch bald eine der vielen Optionen sein, die für die Implementierung eines KI-Suchsystems zur Verfügung stehen.
Vision-RAG in der Praxis: Paligemma, ColPali und Vektordatenbanken
Im Gegensatz zur traditionellen textbasierten RAG erfordern V-RAG-Implementierungen immer noch den Zugang zu speziellen Modellen und GPU-Berechnungen. Die beste Implementierung von V-RAG ist die Verwendung von Modellen, die speziell für diesen Zweck entwickelt wurden ColPali.
ColPali basiert auf dem Multi-Vektor-Suchansatz, der durch das ColBERT-Modell und Googles multimodales Sprachmodell Paligemma eingeführt wurde. ColPali ist ein multimodales Suchmodell, was bedeutet, dass es nicht nur den textuellen Inhalt, sondern auch die visuellen Elemente eines Dokuments versteht. Die Entwickler von ColPali haben den textbasierten Suchansatz von ColBERT mit Hilfe von Paligemma auf den visuellen Bereich erweitert.
Bei der Erstellung der Einbettung unterteilt ColPali jedes Bild in ein 32 x 32-Gitter, wobei jedes Bild etwa 1024 Chunks hat, die jeweils durch einen 128-dimensionalen Vektor dargestellt werden. Die Gesamtzahl der Chunks beträgt 1030, da jedes Bild auch mit einem "describe image"-Befehlstoken verbunden ist.
Die textbasierte Anfrage des Nutzers wird in denselben Einbettungsraum konvertiert, um die Chunks im Suchprozess mit dem Anfrageteil vergleichen zu können. Der Suchprozess selbst basiert auf der sogenannten MaxSim-Methode im dieser Artikel Sie ist ausführlich beschrieben in. Diese Suchmethode wurde in vielen Vektordatenbanken implementiert, die die Suche in mehreren Vektoren unterstützen.
Vision ist alles was Sie brauchen - V-RAG Demo und Code
Wir haben eine V-RAG-Demo erstellt und der Code ist im GitHub-Repository von Softlandia verfügbar! vision-is-all-you-need Finden Sie es in. Sie können auch andere Demos von Applied AI unter unserem Konto finden!
Für die Ausführung von ColPali ist ein Grafikprozessor mit viel Speicher erforderlich. Daher ist es am einfachsten, es auf einer Cloud-Plattform auszuführen, die die Verwendung von Grafikprozessoren ermöglicht. Aus diesem Grund haben wir uns für die hervorragende Modal-Plattform entschieden, die die serverlose Nutzung von GPUs einfach und kostengünstig macht.
Im Gegensatz zu den meisten akademischen Jupyter-Notebook-Präsentationen im Internet sind unsere Vision ist alles, was Sie brauchen Die Demo bietet ein einzigartiges praktisches Erlebnis. Sie können das Repository klonen, es selbst bereitstellen und die gesamte Pipeline in wenigen Minuten kostenlos auf Cloud-GPUs ausführen. Dieses Beispiel für End-to-End-Anwendungs-KI-Engineering zeichnet sich dadurch aus, dass es eine reale Erfahrung bietet, mit der die meisten anderen Demos nicht mithalten können.
In dieser Demo haben wir auch die Qdrant Die In-Memory-Version von Qdrant. Bitte beachten Sie, dass bei der Ausführung der Demo die indizierten Daten verschwinden, wenn der zugrunde liegende Container nicht mehr existiert. Qdrant unterstützt die Multivektorsuche seit Version 1.10.0. Die Demo unterstützt nur PDF-Dateien, deren Seiten mit der Bibliothek pypdfium2 in Bilder umgewandelt werden. Außerdem haben wir die transformers-Bibliothek und die von den ColPali-Entwicklern erstellte colpali-engine verwendet, um das ColPali-Modell auszuführen. Andere Bibliotheken wie opencv-python-headless (die übrigens von mir stammt) sind ebenfalls im Einsatz.
Die Demo bietet eine HTTP-Schnittstelle für die Indizierung und das Stellen von Fragen. Darüber hinaus haben wir eine einfache Benutzeroberfläche mit React erstellt. Die Benutzeroberfläche visualisiert auch jede Token der Aufmerksamkeitskarte, so dass Sie die Teile des Bildes, die das ColPali-Modell für wichtig hält, leicht erkennen können.
Brauchen Sie wirklich eine Vision?
Trotz des Titels der Demo sind Suchmodelle wie ColPali noch nicht gut genug, insbesondere für mehrsprachige Daten. Diese Modelle werden in der Regel mit einer begrenzten Anzahl von Beispielen trainiert, bei denen es sich fast immer um PDF-Dateien eines bestimmten Typs handelt. Infolgedessen unterstützt die Demo nur PDF-Dateien.
Ein weiteres Problem ist die Größe der Bilddaten und der daraus berechneten Einbettungen. Diese Daten nehmen viel Platz ein, und die Suche in großen Datensätzen verbraucht weit mehr Rechenleistung als die herkömmliche eindimensionale Vektorsuche. Dieses Problem kann teilweise durch Quantisierung der Einbettungen in kleinere Formen (sogar bis hin zu binären) gelöst werden. Dies führt jedoch zu einem Informationsverlust und einer geringfügigen Verschlechterung der Suchgenauigkeit. In unserer Demo wurde die Quantisierung noch nicht implementiert, da die Optimierung für die Demo nicht wichtig ist. Außerdem ist es wichtig zu beachten, dass Qdrant unterstützt noch nicht direkt binäre Vektoren.Aber es kann Ermöglichung der Quantifizierung in Qdrantwird Qdrant die Vektoren intern optimieren. MaxSim auf der Grundlage der Hamming-Distanz wird jedoch noch nicht unterstützt.
Aus diesem Grund wird nach wie vor empfohlen, eine erste Filterung in Verbindung mit einer herkömmlichen schlagwortbasierten Suche vorzunehmen, bevor ColPali für den endgültigen Seitenabruf verwendet wird.
Multimodale Suchmodelle werden sich weiterentwickeln, ebenso wie Einbettungsmodelle, die traditionell Texteinbettungen erzeugen. Ich bin sicher, dass OpenAI oder eine ähnliche Organisation bald ein ColPali-ähnliches Einbettungsmodell herausbringen wird, das die Suchgenauigkeit auf die nächste Stufe heben wird. Dies wird jedoch alle derzeitigen Systeme, die auf Chunking und traditionellen Vektorsuchmethoden basieren, in Frage stellen.
Ohne eine flexible KI-Architektur werden Sie ins Hintertreffen geraten
Sprachmodelle, Suchmethoden und andere Innovationen werden in rasantem Tempo im Bereich der KI veröffentlicht. Wichtiger als diese Innovationen selbst ist die Fähigkeit, sie schnell zu übernehmen, was den Unternehmen, die schneller als ihre Konkurrenten sind, einen erheblichen Wettbewerbsvorteil verschafft.
Die KI-Architektur Ihrer Software, einschließlich der Suchfunktion, muss daher flexibel und skalierbar sein, damit sie sich schnell an die neuesten technologischen Innovationen anpassen kann. Da die Entwicklung immer schneller voranschreitet, ist es von entscheidender Bedeutung, dass die Kernarchitektur Ihres Systems nicht auf eine einzige Lösung beschränkt ist, sondern eine Vielzahl von Suchmethoden unterstützt - sei es die traditionelle Textsuche, die multimodale Bildsuche oder sogar völlig neue Suchmodelle.
ColPali ist nur die Spitze des Eisbergs für die Zukunft. Die RAG-Lösungen der Zukunft werden mehrere Datenquellen und Suchtechnologien kombinieren, und nur eine agile und anpassbare Architektur wird deren nahtlose Integration ermöglichen.
Um dieses Problem zu lösen, bieten wir die folgenden Dienstleistungen an:
- Bewertung des Zustands Ihrer bestehenden AI-Architektur
- Tiefes Eintauchen in KI-Technologien mit Ihren technischen Leitern und Entwicklern, einschließlich Details auf Code-Ebene
- Wir untersuchen die Suchmethoden, die Skalierbarkeit, die Flexibilität der Architektur, die Sicherheit und die Frage, ob die (generative) KI nach den besten Praktiken eingesetzt wird.
- Verbesserungsvorschläge und Auflistung konkreter nächster Schritte für die Entwicklung
- Implementierung einer KI-Fähigkeit oder KI-Plattform als Teil Ihres Teams
- Engagierte KI-Ingenieure für Anwendungen sorgen dafür, dass Ihre KI-Projekte nicht hinter anderen Entwicklungsaufgaben zurückbleiben
- Entwicklung von KI-Produkten in einem ausgelagerten Produktentwicklungsteam
- Wir liefern komplette KI-basierte Lösungen von Anfang bis Ende
Wir verhelfen unseren Kunden zu einem erheblichen Wettbewerbsvorteil, indem wir die Einführung von KI beschleunigen und ihre nahtlose Integration sicherstellen. Wenn Sie mehr erfahren möchten, nehmen Sie bitte Kontakt mit uns auf, um zu besprechen, wie wir Ihrem Unternehmen helfen können, an der Spitze der KI-Entwicklung zu bleiben.