Ein Embedding ist eine Liste von Zahlen (ein Vektor), die beschreibt, was ein Text bedeutet. Inhalte mit ähnlicher Bedeutung bekommen ähnliche Zahlen, Inhalte mit anderer Bedeutung weit entfernte. So kann ein Computer Bedeutung vergleichen, obwohl er nur rechnen kann.
Stell dir eine Landkarte vor, auf der jeder Satz einen Standort hat. Sätze über Rückgabe und Umtausch stehen im selben Viertel, ein Satz über Katzen liegt am anderen Ende der Stadt. Die Suche nach einer Antwort wird zur Frage, welche Orte am nächsten liegen. Ein Embedding ist die Adresse, die Vektordatenbank das Verzeichnis, in dem du die nächsten Nachbarn nachschlägst.
1. Wie aus Text Zahlen werden
Ein Embedding-Modell liest einen Text und gibt eine feste Anzahl Zahlen zurück, etwa 1.536 Stück. Diese Länge nennt man Dimensionen. Beim Training lernt das Modell, Texte mit verwandtem Inhalt nah beieinander abzulegen. Aus sehr vielen Texten entsteht so eine Bedeutungskarte.
Die Wurzel dieser Idee liegt in word2vec. Ein Team um Tomas Mikolov zeigte 2013, dass sich aus Wortvektoren Bedeutungsbeziehungen ablesen lassen. Berühmt ist das Beispiel aus dem Paper. Rechnet man vector(„King“) minus vector(„Man“) plus vector(„Woman“), landet man beim Vektor, der „Queen“ am nächsten liegt. Heutige Embedding-Modelle verarbeiten ganze Sätze und Absätze statt einzelner Wörter, das Prinzip ist geblieben.
1.1 Wie „nah“ gemessen wird
Den Abstand zweier Vektoren misst man meist mit der Kosinus-Ähnlichkeit. Sie vergleicht die Richtung der beiden Vektoren und nicht ihre Länge. Zeigen sie in dieselbe Richtung, liegt der Wert nahe 1. Stehen sie senkrecht zueinander, ist er 0. OpenAI empfiehlt in seiner Dokumentation diese Kennzahl, auch wenn die Wahl der Abstandsfunktion meist wenig ausmacht.
1.2 Ein Rechenbeispiel im Kleinen
Echte Embeddings haben Hunderte bis Tausende Dimensionen. Zum Nachrechnen reichen drei. Die Werte in der Tabelle sind ausgedacht und zeigen nur das Prinzip.
- Mini-Vektor (ausgedacht)
- (0,60; 0,90; 0,30)
- Kosinus-Ähnlichkeit zu „Rückgabe“
- 0,95
- Mini-Vektor (ausgedacht)
- (0,10; 0,90; 0,40)
- Kosinus-Ähnlichkeit zu „Rückgabe“
- 0,71
- Mini-Vektor (ausgedacht)
- (0,10; 0,10; 0,95)
- Kosinus-Ähnlichkeit zu „Rückgabe“
- 0,23
„Umtausch“ liegt fast in derselben Richtung wie „Rückgabe“, „Rechnungsadresse“ ein Stück daneben, „Katze“ weit weg. Genau diese Rangfolge nutzt eine Suche. Beachte, dass in echten Modellen keine einzelne Dimension eine lesbare Bedeutung hat. Es gibt keine Spalte „Tier“ oder „Reklamation“. Erst das Zusammenspiel aller Zahlen trägt die Bedeutung.
2. Die Vektordatenbank
Eine Vektordatenbank speichert Embeddings zusammen mit dem Text oder einer Kennung, aus der sie berechnet wurden. Ihre Hauptaufgabe ist die Ähnlichkeitssuche. Du gibst den Vektor einer Frage hinein und bekommst die gespeicherten Einträge zurück, die ihm am nächsten liegen.
Das exakte Durchrechnen aller Einträge wird bei Millionen Vektoren langsam. Deshalb nutzen Vektordatenbanken meist die ungefähre Suche nach nächsten Nachbarn (Approximate Nearest Neighbor). Ein verbreitetes Verfahren ist HNSW, das Yury Malkov und Dmitry Yashunin 2016 vorgestellt haben. Es legt die Vektoren in einem mehrschichtigen Graphen ab und springt von groben zu feinen Schichten zum Ziel. Das Ergebnis ist sehr schnell, liefert aber nicht garantiert den allerbesten Treffer.
Du brauchst dafür nicht zwingend ein eigenes Produkt. pgvector zum Beispiel ist eine Erweiterung für PostgreSQL. Sie speichert Vektoren neben den übrigen Daten in derselben Tabelle und unterstützt exakte sowie ungefähre Suche, darunter HNSW und die Kosinus-Distanz. Daneben gibt es eigenständige Vektordatenbanken. Welche passt, hängt von Datenmenge, Betrieb und vorhandener Technik ab.
3. Wofür man Embeddings nutzt
- Semantische Suche: Die Suche findet „Umtausch“, auch wenn du „Rückgabe“ eintippst.
- RAG: Das System sucht die passenden Abschnitte aus deinen Dokumenten und gibt sie dem Sprachmodell mit.
- Empfehlungen: Produkte oder Artikel mit verwandter Beschreibung werden vorgeschlagen.
- Gruppieren: Texte mit ähnlichem Inhalt lassen sich zu Themen bündeln.
- Dubletten finden: Fast gleiche Einträge liegen im Vektorraum dicht beisammen.
OpenAI nennt in seiner Dokumentation außerdem Ausreißererkennung und Klassifikation als typische Einsatzzwecke.
3.1 Embedding-Modell oder LLM?
Beides sind meist neuronale Netze, aber mit verschiedener Aufgabe. Ein LLM erzeugt Text. Ein Embedding-Modell erzeugt Vektoren und schreibt nichts. Auch im Inneren eines LLM kommen Embeddings vor. Das Transformer-Paper von 2017 beschreibt, wie gelernte Embeddings die Eingabe-Token in Vektoren verwandeln, mit denen das Netz weiterrechnet.
4. Rechenbeispiel: Speicher für 3.000 Seiten
Wir greifen die Wissensbasis aus dem Eintrag zu RAG auf. Sie umfasst 3.000 Seiten, geteilt in Abschnitte von etwa 300 Wörtern. Das ergibt rund 4.500 Abschnitte, und jeder bekommt einen Vektor. Gespeichert werden 4 Byte je Dimension (eine 32-Bit-Zahl). Wie viel das ausmacht, hängt von der Länge der Vektoren ab. OpenAIs Modelle liefern standardmäßig 1.536 Dimensionen bei text-embedding-3-small und 3.072 bei text-embedding-3-large.
- Speicher je Vektor
- 3 KB
- Speicher für 4.500 Abschnitte
- 13,8 MB
- Speicher je Vektor
- 6 KB
- Speicher für 4.500 Abschnitte
- 27,6 MB
- Speicher je Vektor
- 12 KB
- Speicher für 4.500 Abschnitte
- 55,3 MB
Selbst mit 3.072 Dimensionen bleibt die Wissensbasis klein. Zum Problem wird der Speicher erst bei Millionen Abschnitten. Kürzere Vektoren sparen Speicher und kosten etwas Genauigkeit. Bei den OpenAI-Modellen lässt sich die Länge über den Parameter „dimensions“ verkürzen.
5. Grenzen und Missverständnisse
- Ähnlich heißt nicht richtig. Die Suche findet Texte, die zur Frage passen, nicht solche, die stimmen. Ein veralteter Absatz kann der beste Treffer sein.
- Sprache und Fachjargon. Ein Modell kennt nur, was es im Training gesehen hat. Interne Abkürzungen oder seltene Fachbegriffe liegen im Vektorraum oft falsch.
- Zahlen und Eigennamen. Zwei Produktnummern, die sich nur in einer Ziffer unterscheiden, können im Vektorraum nah beieinander liegen. Ein Embedding erfasst Bedeutung, keine exakten Zeichenfolgen. Deshalb kombinieren viele Systeme Vektor- und Stichwortsuche (hybride Suche).
- Modellwechsel heißt neu rechnen. Vektoren verschiedener Modelle sind nicht vergleichbar. Wechselst du das Embedding-Modell, musst du alle gespeicherten Texte neu einbetten.
- Der Vektor ersetzt den Text nicht. Du speicherst den Originaltext zusätzlich, um ihn anzuzeigen und später neu einzubetten.
- Ungefähre Suche ist ungefähr. Verfahren wie HNSW tauschen ein wenig Genauigkeit gegen Tempo.
6. Was heißt das für dich?
- Prüfe, ob du eine Vektordatenbank brauchst. Für kleine Bestände genügt oft eine Erweiterung deiner bestehenden Datenbank oder die Datei-Suche eines Anbieters.
- Teste das Modell an deinen Daten. Sammle 20 bis 50 echte Fragen mit bekannter Fundstelle. Ein Leaderboard wie MTEB zeigt eine Richtung, ersetzt aber den eigenen Test nicht.
- Kombiniere Vektor- und Stichwortsuche, wenn deine Texte Produktnummern, Namen oder Paragrafen enthalten.
- Plane den Modellwechsel ein. Speichere den Originaltext und den Namen des Modells mit, damit du später neu einbetten kannst.
- Kläre den Datenschutz vorab. Zum Berechnen gehen deine Texte an das Embedding-Modell, bei einem Cloud-Anbieter also an dessen Server.
