Erfahren Sie, wie Sie die Vektorsuche von Databricks mit multimodalen Einbettungen verwenden, um Ihre RAG-Anwendungen mit multimodalen Funktionen zu erweitern
von Austin Choi und Jordan Soldo
Multimodale Suche stellt eine bedeutende Herausforderung in modernen KI-Systemen dar. Traditionelle Suchsysteme haben Schwierigkeiten, effektiv über verschiedene Datentypen hinweg zu suchen, ohne umfangreiche Metadaten oder Tags. Dies ist besonders problematisch für Unternehmen im Gesundheitswesen, die große Mengen vielfältiger Inhalte verwalten, darunter Text, Bilder, Audio und mehr, was oft zu unstrukturierten Datenquellen führt.
Jeder, der im Gesundheitswesen tätig ist, versteht die Schwierigkeit, unstrukturierte Daten mit strukturierten Daten zu verschmelzen. Ein gängiges Beispiel hierfür ist die klinische Dokumentation, bei der handschriftliche klinische Notizen oder Entlassungsberichte von Patienten oft in PDFs, Bildern und ähnlichen Formaten eingereicht werden. Diese müssen entweder manuell konvertiert oder mittels Optical Character Recognition (OCR) verarbeitet werden, um die notwendigen Informationen zu finden. Selbst nach diesem Schritt müssen Sie die Daten mit Ihren vorhandenen strukturierten Daten abgleichen, um sie effektiv nutzen zu können.
In diesem Blogbeitrag werden wir Folgendes untersuchen:
Am Ende dieses Blogbeitrags werden Sie sehen, wie multimodale Embeddings im Gesundheitswesen Folgendes ermöglichen:
Ein Embedding-Raum (AWS | Azure | GCP) ist eine n-dimensionale mathematische Darstellung von Datensätzen, die es ermöglicht, eine oder mehrere Datenmodalitäten als Vektoren von Gleitkommazahlen zu speichern. Das Nützliche daran ist, dass in einem gut konstruierten Embedding-Raum Datensätze mit ähnlicher Bedeutung einen ähnlichen Raum einnehmen. Stellen Sie sich zum Beispiel vor, wir hätten ein Bild eines Pferdes, das Wort „LKW“ und eine Audioaufnahme eines bellenden Hundes. Wir geben diese drei völlig unterschiedlichen Datenpunkte in unser multimodales Embedding-Modell ein und erhalten Folgendes zurück:
Hier ist eine visuelle Darstellung, wo die Zahlen in einem Embedding-Raum liegen würden:

In der Praxis sind die Dimensionen des Embedding-Raums Hunderte oder Tausende, aber zur Veranschaulichung verwenden wir 3-Raum. Wir können uns vorstellen, dass die erste Position in diesen Vektoren „Tierhaftigkeit“, die zweite „Transportmittelhaftigkeit“ und die dritte „Lautstärke“ darstellt. Das wäre angesichts der Embeddings sinnvoll, aber typischerweise wissen wir nicht, was jede Dimension darstellt. Wichtig ist, dass sie die semantische Bedeutung der Datensätze darstellen.
Es gibt mehrere Möglichkeiten, einen multimodalen Embedding-Raum zu erstellen, darunter das gleichzeitige Training mehrerer Encoder (wie CLIP), die Verwendung von Cross-Attention-Mechanismen (wie DALL-E) oder die Verwendung verschiedener Post-Training-Alignment-Methoden. Diese Methoden ermöglichen es der Bedeutung des Datensatzes, die ursprüngliche Modalität zu überschreiten und einen gemeinsamen Raum mit anderen unterschiedlichen Datensätzen oder Formaten einzunehmen.
Dieser gemeinsame semantische Raum ermöglicht leistungsstarke cross-modale Suchfunktionen. Wenn eine Textabfrage und ein Bild ähnliche Vektordarstellungen teilen, teilen sie wahrscheinlich ähnliche semantische Bedeutungen, was es uns ermöglicht, relevante Bilder anhand von Textbeschreibungen ohne explizite Tags oder Metadaten zu finden.
Um multimodale Suche effektiv zu implementieren, benötigen wir Modelle, die Embeddings für verschiedene Datentypen in einem gemeinsamen Vektorraum generieren können. Diese Modelle sind speziell dafür konzipiert, die Beziehungen zwischen verschiedenen Modalitäten zu verstehen und sie in einem einheitlichen mathematischen Raum darzustellen.
Mehrere leistungsstarke multimodale Embedding-Modelle sind ab Juni 2025 verfügbar:
Bei Databricks stellen wir die Infrastruktur und die Werkzeuge zur Verfügung, um eine End-to-End-Lösung zu hosten, zu bewerten und zu entwickeln, die an Ihren Anwendungsfall angepasst werden kann. Berücksichtigen Sie die folgenden Szenarien, wenn Sie mit der Bereitstellung dieses Anwendungsfalls beginnen:
Für die vollständige Implementierung dieser Lösung besuchen Sie bitte dieses Repository hier: Github Link
Dieses Beispiel verwendet synthetische Patienteninformationen als strukturierte Daten und Beispiel-Leistungsbeschreibungen im PDF-Format als unstrukturierte Daten. Zuerst werden synthetische Daten generiert, die mit einem Genie Space verwendet werden können. Dann wird das Nomic Multi-Modal Embedding-Modell, ein hochmodernes Open-Source-Modell für multimodale Embeddings, auf Databricks Model Serving geladen, um Embeddings auf Beispiel-Leistungsbeschreibungen zu generieren, die online gefunden wurden.
Dieser Prozess klingt kompliziert, aber Databricks bietet integrierte Tools, die eine vollständige End-to-End-Lösung ermöglichen. Im Großen und Ganzen sieht der Prozess wie folgt aus:
Dieser Genie Space wird als Werkzeug verwendet, um natürliche Sprache in eine SQL-Abfrage umzuwandeln, mit der unsere strukturierten Daten abgefragt werden können.
In diesem Beispiel wird die Faker-Bibliothek verwendet, um zufällige Patienteninformationen zu generieren. Wir erstellen zwei Tabellen zur Diversifizierung unserer Daten: Patient Visits und Practice Locations, mit Spalten wie Gründen für den Besuch, Versicherungsanbietern und Versicherungsarten.
Um Daten mit natürlicher Sprache abzufragen, können wir einen Databricks Genie Space (AWS | Azure | GCP) verwenden, um unsere Abfrage in natürliche Sprache umzuwandeln und relevante Patientendaten abzurufen. Klicken Sie in der Databricks-Benutzeroberfläche einfach auf die Registerkarte „Genie“ in der linken Leiste → Neu → wählen Sie die Tabellen „patient_visits“ und „practice_locations“ aus.

Wir benötigen die Genie Space ID, um die Zahl nach „rooms“ zu erfassen. Unten sehen Sie ein Beispiel:
Da wir DSPy verwenden, müssen wir nur eine Python-Funktion definieren.
Das ist alles! Lassen Sie uns jetzt den Multi-Modal Generation Workflow einrichten.
Für diesen Schritt verwenden wir das vollständig Open-Source-Modell colNomic-embed-multimodal-7b auf HuggingFace, um Embeddings für unsere unstrukturierten Daten, in diesem Fall PDFs, zu generieren. Wir haben Nomic's Modell aufgrund seiner Apache 2.0-Lizenz und seiner hohen Leistung in Benchmarks ausgewählt.
Die Methode zur Generierung Ihrer Embeddings hängt von Ihrem Anwendungsfall und Ihrer Modalität ab. Überprüfen Sie die Databricks AI Search Best Practices (AWS | Azure | GCP), um zu verstehen, was für Ihren Anwendungsfall am besten geeignet ist.
Wir benötigen dieses Modell, damit es innerhalb von Databricks Unity Catalog (UC) verfügbar ist. Daher werden wir MLflow verwenden, um es von Huggingface zu laden und zu registrieren. Anschließend können wir das Modell an einem Model-Serving-Endpunkt bereitstellen.
Das Python-Modell enthält zusätzliche Logik zur Verarbeitung von Bildeingaben, die im vollständigen Repository zu finden ist.
UC Volumes sind wie Dateisysteme konzipiert, um beliebige Dateien zu hosten, und hier speichern wir unsere unstrukturierten Daten. Sie können sie in Zukunft verwenden, um andere Dateien wie Bilder zu speichern und den Prozess nach Bedarf zu wiederholen. Dies schließt das obige Modell ein. Im Repository sehen Sie, dass der Cache auf ein Volume verweist.
Sie haben einen Ordner namens „sample_pdf_sbc“, der einige Beispielzusammenfassungen von Leistungen und Deckungen enthält. Wir müssen diese PDFs vorbereiten, um sie einzubetten.
Das colNomic-embed-multimodal-7b-Modell ist speziell darauf trainiert, Text und Bilder innerhalb eines Bildes zu erkennen, was eine gängige Eingabe von PDFs ist. Dies ermöglicht es dem Modell, diese Seiten außergewöhnlich gut abzurufen.
Diese Methode ermöglicht es Ihnen, den gesamten Inhalt eines PDFs zu nutzen, ohne eine Text-Chunking-Strategie zu benötigen, um sicherzustellen, dass die Abfrage effektiv funktioniert. Das Modell selbst kann diese Bilder gut in seinem eigenen Embedding-Raum einbetten.
Wir werden pdf2image verwenden, um jede Seite des PDFs in ein Bild zu konvertieren und es für die Einbettung vorzubereiten.
Jetzt, da wir die PDF-Bilder haben, können wir die Embeddings generieren. Gleichzeitig können wir die Embeddings in einer Delta-Tabelle speichern, zusammen mit zusätzlichen Spalten, die wir zusammen mit unserer Vektorsuche abrufen werden, wie z. B. der Dateipfad zum Speicherort des Volumes.
Das Erstellen eines Vektorsuchindexes kann über die Benutzeroberfläche oder die API erfolgen. Die API-Methode ist unten gezeigt.
Jetzt müssen wir nur noch alles mit einem Agenten zusammenfügen.
Wir verwenden DSPy dafür wegen seines deklarativen, reinen Python-Designs. Es ermöglicht uns, schnell zu iterieren und zu entwickeln und verschiedene Modelle zu testen, um zu sehen, welche für unseren Anwendungsfall am besten geeignet sind. Am wichtigsten ist, dass die deklarative Natur es uns ermöglicht, unseren Agenten zu modularisieren, damit wir die Logik des Agenten von den Werkzeugen isolieren und uns auf die Definition konzentrieren können, WIE der Agent seine Aufgabe erfüllen soll.
Und das Beste daran? Kein manuelles Prompt-Engineering!
Diese Signatur gibt die Ein- und Ausgaben an und erzwingt sie, während sie auch erklärt, wie die Signatur funktionieren soll.
Das Modul nimmt die Anweisungen aus der Signatur und erstellt einen optimalen Prompt, der an die LLM gesendet wird. Für diesen speziellen Anwendungsfall bauen wir ein benutzerdefiniertes Modul namens `MultiModalPatientInsuranceAnalyzer()`.
Dieses benutzerdefinierte Modul zerlegt die Signaturen in Schritte, fast wie das „Verketten“ von Aufrufen, in der Forward-Methode. Wir folgen diesem Prozess:
Überprüfen Sie, welche Werkzeuge der Agent verwendet hat und welche Überlegungen der Agent angestellt hat, um die Frage zu beantworten.
Sobald Sie einen funktionierenden Agenten haben, empfehlen wir Folgendes:
Das Evaluationsframework ist entscheidend, um zu verstehen, wie effektiv der AI Search Index relevante Informationen für Ihren RAG-Agenten abruft. Anhand dieser Metriken wissen Sie, wo Sie Anpassungen vornehmen müssen, von der Änderung des Embedding-Modells bis zur Anpassung der Prompts, die mit dem LLM interagieren.
Sie sollten auch überwachen, ob die Foundation Model API (AWS | Azure | GCP) für Ihren Anwendungsfall ausreicht. An einem bestimmten Punkt erreichen Sie die API-Limits für die Foundation Model APIs, sodass Sie auf Provisioned Throughput (AWS | Azure | GCP) umsteigen müssen, um einen zuverlässigeren Endpunkt für Ihr LLM zu haben.
Behalten Sie außerdem Ihre Kosten im Verhältnis zum Serverless Model Serving (AWS | Azure | GCP) genau im Auge. Die meisten dieser Kosten entstehen durch das Serverless Model Serving der Databricks SKU und können mit zunehmender Skalierung steigen.
Lesen Sie diese Blogs, um zu verstehen, wie Sie dies auf Databricks tun können.
Darüber hinaus helfen Databricks Delivery Solutions Architects (DSAs) bei der Beschleunigung von Daten- und KI-Initiativen in Organisationen. DSAs bieten architektonische Führung, optimieren Plattformen für Kosten und Leistung, verbessern die Entwicklererfahrung und treiben die erfolgreiche Projektausführung voran. Sie schließen die Lücke zwischen der anfänglichen Bereitstellung und produktionsreifen Lösungen und arbeiten eng mit verschiedenen Teams zusammen, darunter Data Engineering, technische Leiter, Führungskräfte und andere Stakeholder, um maßgeschneiderte Lösungen und eine schnellere Wertschöpfung zu gewährleisten. Kontaktieren Sie Ihr Databricks Account Team, um mehr zu erfahren.
Beginnen Sie mit dem Erstellen Ihrer eigenen GenAI-App! Schauen Sie sich die Dokumentation an, um loszulegen.
Bei Databricks haben Sie alle Werkzeuge, die Sie benötigen, um diese End-to-End-Lösung zu entwickeln. Schauen Sie sich die folgenden Blogs an, um mehr über die Verwaltung und Arbeit mit Ihrem neuen Agenten mit den Agent Bricks Custom Agents zu erfahren.
(Dieser Blogbeitrag wurde mit KI-gestützten Tools übersetzt.) Originalbeitrag
Abonnieren Sie unseren Blog und erhalten Sie die neuesten Beiträge direkt in Ihren Posteingang.