Strukturierte Ausgaben von LLMs mit eingeschränktem Sampling
Large Language Models (LLMs) haben die Art und Weise verändert, wie wir mit unstrukturierten Daten interagieren, und ermöglichen Systeme, die kreative Texte generieren, Erkenntnisse extrahieren und Aufgaben automatisieren. Obwohl diese Modelle frei formulierte Inhalte erzeugen, stoßen sie jedoch häufig an Grenzen, wenn die Ausgabe bestimmten Formaten folgen muss – wie JSON, XML oder vordefinierten Schemata. Diese Einschränkung ist für reale Anwendungsfälle entscheidend, in denen Präzision wichtig ist, etwa bei Coding-Assistenten, Entscheidungsfindungs-Agenten und Systemen zur Extraktion strukturierter Informationen.
Bei einem kürzlich stattgefundenen Unstructured Data Meetup in South Bay stellte Stefan Webb von Zilliz eine praktische Lösung für diese Herausforderung vor: Constrained Sampling. In diesem Artikel betrachten wir zentrale Erkenntnisse aus seinem Vortrag, darunter die Rolle der semantischen Suche bei der Verarbeitung unstrukturierter Daten, wie endliche Automaten eine zuverlässige Generierung ermöglichen, und praktische Implementierungen mit modernen Tools. Außerdem untersuchen wir, wie sich diese Techniken mit Vektordatenbanken integrieren lassen, um robuste KI-Anwendungen zu erstellen, die sowohl die Verarbeitung unstrukturierter Daten als auch die Generierung strukturierter Ausgaben bewältigen.
Was ist semantische Suche und warum ist sie wichtig?
Semantische Suche unterscheidet sich von der traditionellen schlüsselwortbasierten Suche dadurch, dass sie sich auf die Bedeutung und den Kontext hinter Anfragen konzentriert. Anstatt exakte Wörter abzugleichen, verarbeitet die semantische Suche die Beziehungen zwischen Begriffen, um relevantere Ergebnisse zu liefern. Diese Fähigkeit ist in einer Welt unverzichtbar, in der der Großteil der Daten unstrukturiert ist, darunter Text, Bilder, Audio und Videos. So werden unstrukturierte Daten in verwertbare Erkenntnisse umgewandelt.
Abbildung: Pipeline zur Umwandlung unstrukturierter Daten in verwertbare Erkenntnisse
Diese Pipeline beginnt mit der Aufnahme von Rohdaten, darunter Dokumente, Bilder, Audioaufnahmen und Videos. Die Daten werden durch Deep-Learning-Modelle geleitet, die Vektoreinbettungen erzeugen, also hochdimensionale numerische Repräsentationen der semantischen Eigenschaften der Daten. Diese Einbettungen werden in Vektordatenbanken wie Milvus zur effizienten Abfrage gespeichert. Schließlich arbeiten semantische Suchalgorithmen auf diesen Einbettungen, um Ergebnisse anhand ihrer Relevanz zu identifizieren und zu ranken. Sehen wir uns nun an, wie der Vektorraum aussieht.
Abbildung: Visualisierung des Einbettungsraums, in dem ähnliche Konzepte zusammen gruppiert werden
In der Visualisierung von Einbettungsräumen werden ähnliche Konzepte zusammen gruppiert. Beispielsweise werden Ausdrücke wie fröhlicher Hund, der mit dem Schwanz wedelt und ein Hund mit einem Lächeln eng beieinander gruppiert, weil sie ähnliche Bedeutungen vermitteln. Andererseits werden nicht verwandte Themen wie ein großes Gebäude im Raum weit voneinander entfernt positioniert. Diese Gruppierung ermöglicht es Systemen, semantisch relevante Ergebnisse abzurufen, selbst wenn Anfragen andere Formulierungen verwenden.
Semantische Suche wird mit dem Wachstum des Volumens unstrukturierter Daten zunehmend wichtiger. Bis 2025 wird geschätzt, dass über 90 % der erzeugten Daten unstrukturiert sein werden, was den Bedarf an Systemen unterstreicht, die zu semantischem Verständnis fähig sind.
Abbildung: Über 90 % der im Jahr 2025 neu generierten Daten werden unstrukturiert sein.
Multinomiales Sampling: Die Grundlage der Textgenerierung
Die Textgenerierung in LLMs wird durch multinomiales Sampling ermöglicht, einen Prozess, der Sequenzen Token für Token auf Basis von Wahrscheinlichkeiten erzeugt, die aus Trainingsdaten gelernt wurden. Jedes Token kann ein Wort, ein Zeichen oder einen Teil eines Wortes darstellen, und das Modell wählt das nächste Token aus, indem es aus einer Wahrscheinlichkeitsverteilung sampelt.
Abbildung: Grundlegendes multinomiales Sampling aus LLMs
Der Algorithmus beginnt mit einer leeren Sequenz und fügt iterativ Tokens hinzu, bis die Sequenz vollständig ist oder eine Abbruchbedingung erfüllt ist. Bei jedem Schritt berechnet das Modell Wahrscheinlichkeiten für alle möglichen nächsten Tokens und sampelt eines auf Basis dieser Wahrscheinlichkeiten. Obwohl diese Methode hervorragend darin ist, Freiformtext zu erzeugen, fehlen ihr Mechanismen zur Durchsetzung struktureller Regeln. Beispielsweise erfordert die Generierung gültigen JSONs oder wohlgeformten Codes häufig eine Nachbearbeitung, um strukturelle Fehler zu beheben.
Diese Einschränkung verdeutlicht den Bedarf an Guided Sampling, das Einschränkungen in den Generierungsprozess integriert, um sicherzustellen, dass Ausgaben vordefinierten Strukturen entsprechen.
Guided Sampling: Durchsetzung struktureller Regeln während der Generierung
Guided Sampling erweitert den grundlegenden Prozess des multinomialen Samplings, indem es Einschränkungen anwendet, die die Generierung steuern. Diese Einschränkungen werden durch binäre Masken durchgesetzt, die bei jedem Schritt ungültige Tokens herausfiltern. Die Masken passen sich dynamisch auf Grundlage des aktuellen Kontexts der Ausgabe an und stellen sicher, dass die generierte Sequenz gültig bleibt.
Abbildung: Strukturierte Ausgabe durch Guided Sampling
Wenn beispielsweise JSON generiert wird, könnte das System das nächste Token nach einer öffnenden geschweiften Klammer { auf einen Feldnamen beschränken. Ähnlich könnten bei der Codegenerierung die Einschränkungen eine korrekte Syntax erzwingen, indem ungültige Zeichen oder unvollständige Anweisungen blockiert werden. Dieser Ansatz beseitigt die Notwendigkeit umfangreicher Validierung oder Korrekturen nach der Generierung und ist daher besonders nützlich für Anwendungen wie Informationsextraktion und entscheidungsfindende Agenten.
Indem Struktur direkt in den Generierungsprozess eingeführt wird, überbrückt Guided Sampling die Lücke zwischen den kreativen Fähigkeiten von LLMs und der für strukturierte Ausgaben erforderlichen Präzision. Diese Methode bildet die Grundlage für die Implementierung endlicher Automaten (Finite State Machines, FSMs) in der Textgenerierung.
Endliche Automaten: Durchsetzung struktureller Konsistenz
Endliche Automaten (Finite State Machines, FSMs) führen das Konzept des Guided Sampling weiter, indem sie ein formales Framework zur Durchsetzung von Einschränkungen bereitstellen. Ein FSM ist ein Berechnungsmodell mit einer endlichen Anzahl von Zuständen und Übergängen zwischen ihnen. Jeder Zustand stellt einen Punkt im Prozess der Ausgabegenerierung dar, und Übergänge definieren gültige Pfade auf Grundlage des aktuellen Kontexts. Durch die Integration von FSMs in die Generierungspipeline wird es möglich, strenge strukturelle Regeln dynamisch durchzusetzen.
In einem FSM sind Zustände vordefiniert, und jeder repräsentiert eine bestimmte Bedingung oder Phase im Generierungsprozess. Übergänge zwischen Zuständen erfolgen auf Grundlage der Eingabe oder des generierten Tokens. Durch die Definition zulässiger Übergänge führen FSMs das Modell dynamisch dazu, Ausgaben zu erzeugen, die einer vorgegebenen Struktur entsprechen.
Beispielsweise könnte ein FSM, das JSON generiert, Zustände für das Öffnen einer Klammer, das Schreiben eines Schlüssels, das Schreiben eines Werts und das Schließen der Klammer enthalten. Der FSM stellt sicher, dass Übergänge in einer logischen Reihenfolge erfolgen, etwa dass eine Klammer nicht geschlossen wird, bevor ein Wert geschrieben wurde. Dies garantiert die strukturelle Integrität der Ausgabe, ohne dass eine Nachbearbeitung erforderlich ist.
FSMs sind besonders wertvoll in Anwendungen wie strukturierter Datenextraktion, Codegenerierung und Antwortformatierung. Durch das Vorberechnen der gültigen Übergänge für jeden Zustand können FSMs effizient implementiert werden, wodurch der Laufzeit-Overhead minimiert wird. Diese Effizienz, gekoppelt mit der Durchsetzung von Einschränkungen in Echtzeit, ermöglicht es FSMs, Ausgaben zu erzeugen, die sowohl gültig als auch kontextuell korrekt sind.
Beispiel: Generierung gültiger Zahlen
Um die FSM-gestützte Generierung zu veranschaulichen, betrachten wir ein praktisches Beispiel, bei dem die Aufgabe darin besteht, eine gültige Zahl zu generieren. Die Regeln legen fest, dass die Zahl nur Ziffern und optional einen einzelnen Dezimalpunkt enthalten darf.
Abbildung: FSM zur Generierung gültiger Zahlen
Die FSM startet in State 0, wo gültige Tokens jede Ziffer oder ein Dezimalpunkt umfassen. Wenn das System eine Ziffer generiert, etwa 1, wechselt es zu State 1. Von diesem Zustand aus sind zusätzliche Ziffern erlaubt, oder die FSM kann zu State 2 wechseln, wenn ein Dezimalpunkt generiert wird. In State 2 sind nur Ziffern gültig, da mehrere Dezimalpunkte gegen die Regeln verstoßen würden. Die FSM passt ihren Zustand und die gültigen Tokens dynamisch auf Grundlage der generierten Sequenz an und stellt so sicher, dass die Ausgabe dem angegebenen Format entspricht.
Dieses Beispiel verdeutlicht, wie FSMs Einschränkungen in Echtzeit durchsetzen. Durch die Definition der Zustände und Übergänge für eine gegebene Aufgabe können wir robuste Systeme erstellen, die strukturierte Ausgaben erzeugen können, ohne Nachbearbeitung oder manuelle Validierung zu erfordern.
Kombination von Guided Sampling mit Vektordatenbanken
Guided Sampling entfaltet sein volles Potenzial, wenn es mit Vektordatenbanken kombiniert wird. Diese spezialisierten Datenbanken, wie Milvus, sind darauf ausgelegt, hochdimensionale Vektoreinbettungen effizient zu speichern, zu verwalten und abzurufen. Gemeinsam schaffen Guided Sampling und Vektordatenbanken ein leistungsstarkes Framework für den Umgang mit unstrukturierten Daten, während semantisch relevante und strukturell präzise Ausgaben erzeugt werden. Lassen Sie uns erkunden, wie diese beiden Komponenten zusammenarbeiten, um KI-Anwendungen zu verbessern.
Vektordatenbanken als semantisches Rückgrat
Vektordatenbanken dienen als grundlegende Schicht in Anwendungen, die semantische Suchen beinhalten. Von Deep-Learning-Modellen erzeugte Einbettungen werden in einem hochdimensionalen Raum innerhalb der Vektordatenbank gespeichert, wobei die Abstände zwischen Punkten ihre semantischen Beziehungen anzeigen, wie wir zuvor gesehen haben.
Wenn ein Benutzer eine Abfrage stellt, wird sie mit demselben Modell, das die Datenbank-Einbettungen erstellt hat, in eine Einbettung umgewandelt. Die Datenbank führt dann eine Ähnlichkeitssuche durch, um die für die Abfrage relevantesten Einbettungen zu finden. Dieser Abrufprozess ermöglicht es Systemen, kontextuell sinnvolle Ergebnisse bereitzustellen, selbst wenn die Abfrage keine exakten Schlüsselwörter verwendet.
Struktur hinzufügen mit Guided Sampling
Während Vektordatenbanken semantisch relevante Informationen abrufen, stellt Guided Sampling sicher, dass die Ausgabe bestimmten Formaten oder Einschränkungen entspricht. Nach dem Abrufen der relevanten Einbettungen werden sie als Eingabe an ein Large Language Model (LLM) übergeben. Ohne Guided Sampling könnte das LLM Antworten generieren, die von der erforderlichen Struktur abweichen, wie schlecht formatiertes JSON oder ungültiges XML. Guided Sampling behebt dieses Problem, indem es während des Token-Auswahlprozesses dynamisch Regeln durchsetzt.
Praxisanwendungen dieser Integration
Die Kombination aus Vektordatenbanken und Guided Sampling hat breite Anwendungsmöglichkeiten in verschiedenen Branchen:
Coding Assistants: Wenn ein Entwickler eine Abfrage an einen KI-gestützten Coding Assistant stellt, ruft das System relevante Code-Snippets oder Dokumentationseinbettungen ab. Guided Sampling stellt sicher, dass der ausgegebene Code der korrekten Syntax und dem richtigen Format entspricht, wodurch der Bedarf an manueller Korrektur reduziert wird.
Systeme zur Informationsextraktion: Diese Systeme analysieren große Datensätze und extrahieren strukturierte Informationen wie Namen, Daten oder Orte. Vektordatenbanken rufen relevante Datensegmente ab, während Guided Sampling die Ausgabe in vordefinierte Schemata wie JSON formatiert.
Chatbots für spezialisierte Domänen: In Bereichen wie Gesundheitswesen oder Recht rufen Chatbots beispielsweise semantisch ähnliche Fallstudien oder Dokumente ab. Guided Sampling stellt sicher, dass die generierten Antworten strengen rechtlichen oder medizinischen Formatierungsstandards entsprechen.
Tools zur Implementierung von Constrained Sampling: Outlines und BAML
Mehrere Tools vereinfachen die Implementierung von Constrained-Sampling-Techniken. Die Outlines-Bibliothek bietet beispielsweise ein Python-basiertes Framework zum Definieren von Einschränkungen und zum Generieren strukturierter Ausgaben. Sie ermöglicht es Entwicklern, Regeln wie JSON-Schemata oder Regex-Muster direkt während der Textgenerierung durchzusetzen. Ebenso bietet BAML eine domänenspezifische Sprache zum Schreiben und Testen von LLM-basierten Anwendungen, wodurch der Prozess der Definition von Einschränkungen und der Validierung von Ausgaben optimiert wird.
Werfen wir einen Blick darauf, wie wir die Outlines-Bibliothek verwenden können, um Constrained Sampling durchzusetzen:
Beginnen Sie mit der Installation der erforderlichen Bibliotheken:
pip install outlines transformers datasets
Die Bibliothek outlines ermöglicht es uns, strukturierte Ausgaben zu generieren. Die Bibliothek transformers ermöglicht es uns, vortrainierte Modelle zu laden . Die datasets-Bibliothek ist eine Abhängigkeit der outlines-Bibliothek.
Nachdem die Umgebung bereit ist, beginnen wir mit dem Programmieren.
import outlines
import transformers
# Load the model
model = outlines.models.transformers("gpt2-medium")
# For text generation
generator = outlines.generate.text(model)
# Example 1: Basic Continuation
prompt = "Is 1+1=2? "
result = generator(prompt, max_tokens=30)
print("Unguided output:", result)
# Example 2: Structured Generation with Regex
guided_output = outlines.generate.regex(model, r"([Yy]es|[Nn]o|[Nn]ever|[Aa]lways)")(
prompt, max_tokens=30
)
print("Guided output:", guided_output)
# Example 3: Numerical Regex Constraint
prompt = "In what year was Noam Chomsky born?n"
guided_output_year = outlines.generate.regex(model, r"19[0-9]{2}")(
prompt, max_tokens=30
)
print("Guided output (year):", guided_output_year)
Im obigen Code beginnen wir damit, die von uns installierten Bibliotheken zu importieren, und laden dann das GPT-2-Medium-Modell zur Textgenerierung. Zunächst generieren wir eine ungesteuerte Antwort auf den Prompt Is 1+1=2?, um grundlegende Textgenerierung zu demonstrieren. Anschließend verwenden wir eine Regex, um das Modell so zu steuern, dass es nur Antworten wie Yes, No, Never oder Always erzeugt, wodurch sichergestellt wird, dass die Ausgaben bestimmten Antwortformaten entsprechen. Schließlich implementieren wir eine Regex-Einschränkung r"19[0-9]{2}", um ein vierstelliges Jahr zu extrahieren, mit dem Ziel, das Geburtsjahr von Noam Chomsky zu ermitteln. Hier ist eine Beispielausgabe:
Abbildung: Ausgabe von Constrained Sampling mit der Outlines-Bibliothek
Dies demonstriert die Fähigkeit des Modells zur sowohl freien als auch strukturierten Textgenerierung, zugeschnitten auf spezifische Aufgaben der Informationsextraktion.
Fazit
Stefan hat hervorragend gezeigt, wie Constrained Sampling und FSMs bedeutende Fortschritte dabei darstellen, große Sprachmodelle zuverlässiger für reale Anwendungen zu machen. Durch die Durchsetzung struktureller Konsistenz und die Nutzung von Tools wie Outlines und Vektordatenbanken können wir nun Systeme entwickeln, die Flexibilität mit Präzision verbinden. Während sich das Feld weiterentwickelt, werden diese Techniken eine entscheidende Rolle dabei spielen, die Lücke zwischen der Verarbeitung unstrukturierter Daten und der Generierung strukturierter Ausgaben zu schließen und neue Möglichkeiten für KI-gestützte Anwendungen zu erschließen.
Weitere Informationen finden Sie in Stefans Vortrag auf YouTube.
Weiterlesen

How Zilliz Saw the Future of Vector Databases—and Built for Production
An inside look at how Zilliz built vector databases for real-world use, focusing on scalability, stability, and running them reliably at scale.

Optimizing Embedding Model Selection with TDA Clustering: A Strategic Guide for Vector Databases
Discover how Topological Data Analysis (TDA) reveals hidden embedding model weaknesses and helps optimize vector database performance.

Vector Databases vs. Graph Databases
Use a vector database for AI-powered similarity search; use a graph database for complex relationship-based queries and network analysis.


