Sorgfältiger als ChatGPT: Embeddings mit Azure OpenAI, Qdrant und Rust

Embeddings dienen dazu, die Essenz von Inhalten als Vektoren darzustellen. Vektordatenbanken helfen unter anderem dabei, ähnliche Inhalte effizient zu finden.

In Pocket speichern vorlesen Druckansicht 6 Kommentare lesen

(Bild: Shutterstock.com/calimedia)

Lesezeit: 19 Min.
Von
  • Rainer Stropek
Inhaltsverzeichnis

Wenn Menschen zum ersten Mal mit Large Language Models (kurz LLM) in Kontakt kommen, versteckt meist eine Benutzerschnittstelle die technischen Details der jeweiligen Umsetzung. Jemand gibt eine Frage in natürlicher Sprache ein und erhält als Ergebnis typischerweise eine Antwort in Textform oder ein generiertes Bild. Bei ChatGPT von OpenAI ermöglicht das LLM sogar das Führen eines Dialogs, bei dem der Computer den Chatverlauf kennt und bei Folgefragen berücksichtigt.

Hinter der Fassade repräsentieren bei Sprachmodellen wie denen von OpenAI Zahlen die sprachlichen Zusammenhänge. Dabei spielt das Konzept der Embeddings eine entscheidende Rolle. Embedding-Vektoren stehen im Bereich der Künstlichen Intelligenz für die Zahlen-Repräsentationen des Inhalts wie Text, Bilder oder Musik. Technisch gesehen handelt es sich um Vektoren im n-dimensionalen Raum. Das Geheimnis der Qualität von Systemen wie ChatGPT ist, dass es ihnen äußerst gut gelingt, nicht nur die Wörter eines Textes oder einer Frage, sondern den Sinnzusammenhang in Vektoren umzuwandeln. Texte, deren Sinnzusammenhänge sich ähneln, führen zu Vektoren, die ähnlich sind. Texte, die nichts miteinander zu tun haben, resultieren in deutlich unterschiedlichen Vektoren.

Menschen können sich recht gut Vektoren im dreidimensionalen Raum vorstellen. Wenn die LLMs von OpenAI mit drei Dimensionen auskämen, was bei Weitem nicht der Fall ist, entstünden aus zwei Texten mit ähnlichem Inhalt zwei Vektoren, die in etwa an der gleichen Stelle im Raum enden. Das lässt sich beim Entwickeln von KI-Anwendungen nutzen. Anwendungen können Vektoren vergleichen, gruppieren oder sortieren, um beispielsweise Duplikate, Anomalien oder relevante Texte auf Basis von Fragen zu finden.

Im Folgenden dient eine praxisnahe Problemstellung dazu, das Konzept der Embeddings näher zu erläutern. Der skizzierte Lösungsansatz basiert auf den Sprachmodellen von OpenAI. Die entsprechenden Web-APIs holt sich die Anwendung nicht direkt bei OpenAI, sondern verwendet die im Januar 2023 vorgestellten Azure OpenAI Services, die speziell im Unternehmenseinsatz einige Vorteile haben. Unter anderem können Unternehmen den Ort der Datenverarbeitung auswählen (ein Rechenzentrum in der EU steht zur Verfügung) und die Anwendung in Enterprise-Netzwerkstrukturen einbinden – beispielsweise über Private Endpoints in virtuellen Netzwerken. Außerdem erfolgt die Abrechnung über bestehende Azure-Verträge und -Guthaben. Zum Speichern und Suchen der Embeddings nutzt das Anwendungsbeispiel die Open-Source-Vektordatenbank Qdrant der Berliner Firma Qdrant Solutions.

Modelle wie ChatGPT haben bewiesen, dass sie Texte gut generieren und sogar Fragen beantworten können. Bei den Antworten zeigen sie jedoch Schwächen, da sie von Natur aus Textgeneratoren sind und daher nicht selten Dinge erfinden, die dank ihrer hoch entwickelten Generatorfähigkeiten sogar plausibel klingen. Ihre zweite Schwäche besteht darin, dass sie nicht allwissend sind. Erstens sind in das Training der Sprachmodelle naturgemäß keine Daten eingeflossen, die Firmen geheim halten, und zweitens haben die LLMs sogenannte Cut-off Dates. Darunter versteht man den Zeitpunkt, zu dem das jeweilige Modell trainiert wurde. Informationen, die erst später öffentlich geworden sind, könnte das System nur mit Plug-ins berücksichtigen, die ChatGPT in die Lage versetzen, Internetsuchen durchzuführen oder auf externe Web APIs zuzugreifen.

Zur näheren Untersuchung von Embeddings dient im Folgenden eine fiktive KI-Anwendung, die beide Nachteile weitgehend ausgleichen oder zumindest abmindern soll. Ziel ist es, auf Basis einer Frage in natürlicher Sprache die relevantesten Einträge in einer Wissensdatenbank zu finden. Anschließend dient Prompt Design dazu, die KI über ein LLM dazu zu bringen, die Frage anhand der Wissensdatenbank zu beantworten. Das Konzept, mithilfe eines vortrainierten LLM relevante Dokumente aus einer Datenbasis zu identifizieren und anschließend die Informationen als Kontext zum Beantworten einer Frage zu verwenden, wird oft als Retrieval-Augmented Generation (kurz RAG) bezeichnet. Der technische Aufbau sieht folgendermaßen aus:

Die Anwendung verwendet Azure OpenAI Embeddings und die Vektordatenbank Qdrant (Abb. 1).

Die Anwendung soll Embeddings für Textabschnitte aus einer Wissensdatenbank berechnen und in einer Vektordatenbank speichern. Zu Testzwecken dienen Ausschnitte aus dem Stanford Question Answering Dataset (SQuAD). Die Daten des Datensatzes finden sich bei Hugging Face. SQuAD enthält eine umfangreiche Auswahl an Passagen aus Wikipedia-Artikeln mit jeweils zugehörigen Fragen und Antworten.

Unternehmen können für ihre Anwendung stattdessen eine firmenintern aufgebaute Wissensdatenbank verwenden. Der Autor hat dem SQuAD-Dataset Informationen über ein fiktives, chemisches Element namens Froxium hinzugefügt, weil das ChatGPT-LLM Fragen, die sich auf Wikipedia-Artikel beziehen, von Haus aus gut beantworten kann. Da Froxium frei erfunden ist, kann das LLM keine Informationen dazu haben. Der Testaufbau simuliert ein Szenario mit firmeninternen, nicht im Internet verfügbaren Informationen.

Folgenden Text hat das Sprachmodell dazu beispielhaft erzeugt, wohlgemerkt ohne die Angabe, dass die Eigenschaften sinnvoll sein müssen:

"Froxium is a member of the sideron family, a hypothetical group of super-heavy elements theorized to reside beyond the existing periodic table. Froxium exhibits a vibrant, iridescent hue that changes depending on the observer's emotional state. While it is a solid at room temperature, its melting point lies at a remarkable -42.7°C, which subsequently turns it into a shimmering, pearlescent liquid."

Nach dem Ermitteln der Embeddings für die Wissensdatenbank können User ihre Fragen eingeben. Die Anwendung gibt die Fragen jedoch nicht einfach unverändert an ein LLM wie ChatGPT. Stattdessen ermittelt sie den Embedding-Vektor für die Frage und sucht anhand eines Vektorvergleichs jene Einträge aus der Wissensdatenbank, die der Frage am ähnlichsten sind und daher aller Wahrscheinlichkeit nach die Antwort auf die Frage enthalten.

Den Textabschnitt aus der Wissensdatenbank gibt die Anwendung gemeinsam mit der eingegebenen Frage über Prompt Design an OpenAIs jüngstes, aktuell in der Preview-Phase befindliches Text-Completion-Modell GPT-4 weiter, um eine Antwort zu finden. Falls das LLM die Antwort nicht von den Fakten ableiten kann, soll das Modell keine Antwort geben.

Abbildung 2 zeigt das Prinzip der Abfrage mit Prompt Design im Azure OpenAI Studio. Aus der Abbildung geht hervor, dass das Modell-Deployment in den USA erfolgt. Der Grund dafür ist, dass das GPT-4-Modell in der aktuellen Preview-Phase nur dort zum Testen bereitsteht. Die produktiv verfügbaren Modelle sind dagegen ebenfalls im Azure-Rechenzentrum "West Europe" verwendbar.

Das Prompt Design erfolgt mit dem Azure OpenAI-Modell "gpt-4" (Abb. 2).

Im gegebenen Textabschnitt sind Informationen über Froxium enthalten. Fragt man das LLM nach einem Faktum über das fiktive Element, das nicht im Text enthalten ist, antwortet es korrekt mit "I don't know":

Das LLM antwortet korrekt, wenn es keine Antwort von den Fakten ableiten kann (Abb. 3).

Die Einschränkung auf vorgegebene Informationen sollen das Erfinden vermeintlicher Fakten und den Missbrauch des Abfragesystems verhindern. Das Konzept, LLMs bei der Beantwortung von Fragen auf vorgegebene Informationsquellen zu beschränken, wird oft als Response Grounding bezeichnet. In einem echten Projekt wären umfangreiche Tests erforderlich, um die Abfrageparameter zu optimieren. Um solche Tests zu erleichtern, integriert Microsoft unter anderem strukturierte und automatisierte Prompt-Tests in kommende KI-Produkte wie Prompt Flow.