Sicherlich sind Sie in den letzten Monaten bereits mehrmals auf den Begriff „Embeddings“ gestoßen. Und sicherlich wissen Sie, dass das etwas mit Texterkennung, KI und SEO zu tun hat. Da entstehen „irgendwelche“ Zahlenreihen, die dann von Maschinen besser verstanden werden. In diesem Beitrag wollen wir etwas mehr Licht ins Dunkel bringen, für all diejenigen, die technisch und mathematisch nicht so affin sind – aber endlich auch verstehen möchten, was sich hinter diesem Begriff bzw. der Methode verbirgt. Weil das Thema so wichtig ist, haben wir in dieser Ausgabe mehrere Beiträge bis hin zu konkreten Anwendungen für Sie. Hier zu Anfang sollen nun die Grundlagen für ein besseres Verständnis gelegt werden, damit Sie in Ihrem Unternehmen auch davon profitieren können. Alle Expertinnen und Experten auf diesem Gebiet mögen mir die teils stark vereinfachenden Erklärungen und Analogien verzeihen. Hier soll es nicht um mathematische Exaktheit gehen, sondern darum, dass es am Ende auch wirklich jede Leserin und jeder Leser als Einsteiger in das durchaus mächtige Thema verstehen kann.
Was sind Embeddings?
Embeddings (Einbettungen) stammen aus der Mathematik und der Informatik und werden für NLP (Natural Language Processing) eingesetzt. Herkömmliche Computer können bekanntlich nur mit Zahlen wirklich gut und effizient umgehen. Für eine Verarbeitung von Texten, Bildern oder Videos sind sie daher nicht so gut geeignet. Über Embeddings werden die komplexen Sprachkonstrukte in Zahlen transformiert und somit „rechenbar“ und vergleichbar.
Die beiden Sätze „Ein junger Mensch steht im Wald“ und „Ein Kind befindet sich an einem Ort, der von vielen Bäumen gekennzeichnet ist“ sind für uns leicht und intuitiv zu verstehen und wir erkennen sofort, dass beide Sätze die gleiche Aussage beinhalten, obwohl völlig andere Worte benutzt werden. In den Anfängen von Google waren das aus maschineller Sicht zwei unterschiedliche Sätze und eine Suche nach „junger Mensch Wald“ hätte niemals eine Website gezeigt, auf welcher der zweite Satz getextet wurde. Dass „junger Mensch“ und „Kind“ von der Bedeutung eher gesehen identisch sind, wusste Google nicht, weil damals nur reine Wortvergleiche gemacht wurden.
Gelänge es nun zu erkennen, dass beides semantisch gleich bzw. sehr ähnlich ist, wäre man nicht mehr auf die genaue Verwendung von Worten angewiesen, sondern könnte auf inhaltliche Bedeutung abstellen. Genau dies macht man mit Embeddings. Die Bedeutung eines Wortes wird in eine Reihe von Zahlen umgewandelt, sozusagen in eine Art digitalen Fingerabdruck. Dazu verrechnet man Worte und deren Abstand sowie ihre Richtung in einem mehrdimensionalen Raum in Vektoren (= ein Pfeil im Raum mit Richtung und Länge). Durch die Winkel der Vektoren zueinander und deren Richtung lässt sich dann die Ähnlichkeit von Begriffen berechnen. Die Wortpaare „Deutschland“ und „Berlin“ haben einen ähnlichen Vektor wie „Frankreich“ und „Paris“. Auch der Vektor von „Italien“ zu „Rom“ ist ähnlich den beiden anderen. Die Städte Berlin, Paris und Rom haben also in Bezug auf das Land eine besondere, ähnliche Stellung bzw. Bedeutung. Es sind die Hauptstädte der Länder. Legt man nun an das Wort „Finnland“ diesen Vektor an, würde er ziemlich genau auf das Wort „Helsinki“ zeigen, was ja bekanntlich ebenfalls eine Hauptstadt ist. Hat eine Maschine ein solches Muster erst einmal identifiziert, könnten alle anderen Hauptstädte aller anderen Länder so ermittelt werden, ganz ohne Wikipedia oder eine Datenbank mit entsprechenden Einträgen.
Embeddings im Hobbyraum
Die folgende Analogie aus dem Keller hilft, das Prinzip besser zu verstehen: Stellen Sie sich vor, Sie haben eine Kiste mit Werkzeug und Zubehör: Schraubendreher, Zangen, Schrauben, Sägen und mehr, alles durcheinander. Sie möchten die Werkzeugkiste aufräumen, damit Sie künftig schneller finden, was Sie suchen. Eine Möglichkeit wäre, jedes Werkzeug einzeln anzuschauen und in das richtige Fach zu legen: Schraubendreher zu Schraubendreher, Zangen zu Zangen, Sägen zu Sägen usw. Das wäre bei einer großen Kiste eine sehr aufwendige Angelegenheit. Statt jedes Objekt einzeln anzuschauen, gibt man jetzt jedem Objekt einen Aufdruck mit mehreren Ziffern darauf. Diese Ziffern beschreiben, wie das Objekt aussieht bzw. beschaffen ist. An dieser Stelle entschuldige ich mich nochmals für das zugegeben recht grobe Beispiel, aber es erfüllt seinen Erklärungszweck.
Wie in Abbildung 1 zu sehen ist, vergeben wir Kennziffern von 1 bis 10 in vier Kategorien bzw. Spalten:
Ziffer 1: Wie groß ist das Objekt? Eine Säge bekommt eine hohe Zahl, eine Schraube eine sehr niedrige.Ziffer 2: Wie schwer ist das Objekt? Ein Hammer bekommt eine mittlere Zahl, eine Schraube eine niedrige.Ziffer 3: Wie teuer ist das Objekt? Eine Säge bekommt eine hohe Zahl, ein Nagel eine niedrige.Ziffer 4: Wie universell einsetzbar ist das Objekt? Ein Schraubendreher bekommt eine hohe Zahl, ein Inbusschlüssel eine niedrige.
Und so weiter. Man kann sich viele solcher Nummern/Spalten ausdenken, die verschiedene Eigenschaften der einzelnen Objekte beschreiben bzw. bewerten. Die hier gewählten haben – zugegeben – für das Sortieren von Werkzeug wahrscheinlich wenig Sinn und ich empfehle dringend, für den eigenen Hobbyraum eine andere Methode zu verwenden.
Das Wichtige: Ähnliche Objekte bekommen ähnliche Nummern auf ihren Aufklebern. Unsere Säge und das Kreissägeblatt haben beide eine hohe Nummer für „Größe“, auch wenn sie unterschiedliche Farben oder unterschiedliche Sägezähne oder Formen haben. In der Abbildung haben beide die Zahlenfolgen 8, 3, 6, 3 und 7, 3, 6 ,3. Groß (also „8“ bei Ziffer 1 bzw. 7 beim Kreissägeblatt, da es kleiner ist), nicht so schwer (also „3“ bei Ziffer 2), preislich etwas teurer (also „6“ bei Ziffer 3) und nur zum Sägen zu gebrauchen (also eine „3“ bei Ziffer 4).
Kommen wir nun zum Nutzen des Ganzen: Anstatt jedes Objekt genau anzuschauen, verwendet man einfach auf die Ausprägungen der vier Ziffern auf dem Aufkleber: Objekte mit ähnlichen Nummern bezogen auf die Ziffern und Stellen. Wir können jetzt durch die Ziffern jedes Werkzeug durch den Ähnlichkeitsgrad klassifizieren.
8, 3, 6, 3 und 7, 3, 6, 3 (die beiden Sägen) gehören wahrscheinlich zusammen.
8, 3, 6, 3 und 1, 1, 2, 2 (Säge und Nagel) eben nicht. Es sind völlig unterschiedliche Gegenstände.
Es geht also nicht um die Zahl selbst und den numerischen Abstand zu einer anderen Zahl, sondern auf die Übereinstimmung in den jeweils einzelnen Stellen der Ziffern! Das macht man im Kern mit Embeddings: Das sind eine Art Aufkleber mit Ziffern, welche die „Bedeutung“ eines Objekts beschreiben. Statt Werkzeugen können dies eben auch Wörter, Sätze, Bilder oder sogar ganze Filme sein – nur eben viel komplexer und nicht nur mit vier Stellen. Noch ein Hinweis: Bei Embeddings wirken die Zahlen (Dimensionen) nicht isoliert, sondern gemeinsam als Vektor – die Ähnlichkeit ergibt sich daher aus der Gesamtausrichtung, nicht aus einzelnen Stellen wie in dieser stark vereinfachten Analogie.
Worte zu Vektoren: Hex, hex!
Das war ein einfaches Beispiel, das wir jetzt noch erweitern müssen, um das Prinzip der Vektoren besser verstehen zu können. Hierzu müssen wir die Trigonometrie bemühen. Stellt man die Begriffe „Mercedes“, „BMW“, „Audi“, „C-Klasse“, „3er“, „A 3“ und „Baum2 in einem zweidimensionalen Raum vor und zeichnet Pfeile (Vektoren) zwischen dem Ursprung und den Wörtern zueinander (hier vereinfacht), lässt sich mehreres leicht erkennen (). Die Vektoren zu den drei Autoherstellern sind ähnlich lang und zeigen in eine ähnliche Richtung. Die Vektoren eines Herstellers zu einem typischen Fahrzeugmodell (blau) sind ebenfalls von der Richtung her sehr ähnlich und haben wie erwähnt fast exakt dieselbe Richtung. Die Winkel sind sehr klein (grün in der Abbildung). Der Vektor zum Wort „Baum“ unterscheidet sich deutlich von den anderen (violetter Winkel in der Abbildung). Berechnet man jetzt über die Winkelfunktionen den jeweiligen Kosinus, ist der bei den drei Herstellervektoren sehr ähnlich. Der Kosinuswert zwischen dem Vektor zu Mercedes zu dem von Baum ist dagegen deutlich unterschiedlich. Mittels der sogenannten Kosinus-Ähnlichkeit (Cosinus Similarity) lässt sich nun jeder Vektor (Richtung und Winkel) mit jedem vergleichen. Wenn die Vektoren exakt in dieselbe Richtung zeigen, ist der Winkel null Grad und der Kosinuswert 1. Das bedeutet maximale Ähnlichkeit. Zeigen die Vektoren in entgegengesetzte Richtungen, ist der Winkel 180 Grad und der Kosinuswert –1, was das Maximum der Gegensätzlichkeit darstellt. Das kommt aber bei Sprache sehr selten vor. Sind die Vektoren orthogonal zueinander (90-Grad-Winkel), ist der Kosinuswert 0, was keine Ähnlichkeit anzeigt.
Je näher also der Kosinuswert an 1 liegt, desto „ähnlicher“ sind die Vektoren bzw. die Begriffe bzw. von der Bedeutung näher beieinander. Wir haben es also mit einer mathematischen Spreizung von –1 bis +1 zu tun.
Um ganze Texte zu vektorisieren, müssen wir in n-dimensionalen Räumen denken. Ab hier bin ich raus, denn mehr als drei bzw. maximal vier Dimensionen kann meine Vorstellungskraft nicht stemmen. Maschinen haben aber kein Problem damit, in mehreren Hundert oder Tausend Dimensionen zu rechnen. zeigt die Bedeutung der Winkel von Vektoren bei der Bestimmung des Ähnlichkeitsmaßes.
Die Vektoren für Begriffe wie „Hefter“ und „Tacker“ haben eine Kosinusähnlichkeit von 1, beide Begriffe haben exakt die gleiche Bedeutung. „Löffel“ und „Gartentor“ hingegen weisen eine Ähnlichkeit nahe der 0 auf. „Mercedes“, „BMW“ und „Audi“ lägen bei schätzungsweise (natürlich fiktiv) 0,92132, also ziemlich nahe zusammen. Stellt man jetzt einer Maschine, die auf solchen Prinzipien beruht (Google, ChatGPT etc.) die Frage, welches Fahrzeugmodell der Mercedes C-Klasse bei BMW entspricht, wird, vereinfacht erklärt, der blaue Vektor zwischen Mercedes und C-Klasse () bei BMW angelegt und man erhält als Antwort den Typ „3er“. Das funktioniert ebenso für Audi oder auch andere Hersteller, die hier nicht aufgeführt sind. Und da „Kind“ und „junger Mensch“ in so einem Vektorenraum eine sehr hohe Kosinusähnlichkeit haben, kann Google am Ende bei Suchanfragen eben nun auch Texte für beide Begriffe als Ergebnis anzeigen. Damit kommt man, wie oben erwähnt, weg vom reinen Wortvergleich oder manuell angelegten Tabellen mit Synonymen und kann auf die semantische Bedeutung abzielen.
Ebenso lassen sich Homonyme (gleiches Wort, unterschiedliche Bedeutung) wie zum Beispiel „Zug“ jetzt besser auseinanderhalten. Enthält der Text mit dem Wort „Zug“ Worte wie „Verspätung“, „ICE“ oder „Abfahrtszeit“ oder gruppieren sich Worte wie „Fenster“ oder „Luft“ darum, sind die Begleitvektoren völlig andere.
Lässt man sich jetzt Embeddings für BMW und Audi mit (der Übersichtlichkeit halber nur) 15 Dimensionen erzeugen, erhält man die folgenden Werte.
- BMW [0.276, –0.143, 0.891, 0.038, –0.552, 0.721, 0.102, –0.084, 0.431, 0.273, –0.193, 0.764, –0.388, 0.055, –0.221 etc.]
- Audi [0.261, –0.157, 0.902, 0.041, –0.537, 0.734, 0.097, –0.078, 0.439, 0.265, –0.185, 0.759, –0.375, 0.060, –0.214 etc.]
- Mercedes [0.269, –0.149, 0.895, 0.036, –0.544, 0.728, 0.100, –0.081, 0.436, 0.270, –0.188, 0.761, –0.380, 0.058, –0.218 etc.]
Anschließend wird die Differenz jedes Dimensionswerts ermittelt und man erhält die Tabelle in Abbildung 3. Bereits beim Überfliegen erkennt man, dass die Ausprägungen sehr nahe beieinander liegen.
Berechnet man die Kosinusähnlichkeit über alle Dimensionen hinweg, erhält man
- BMW und Audi = 0.999
- BMW und Mercedes = 0.998
- Audi und Mercedes = 0.999
Ein Sprachmodell würde für nur diese drei Wörter also eine sehr hohe Ähnlichkeit ausweisen; sie lägen im selben Themencluster. Das ist auch folgerichtig, da alle in einem semantisch sehr ähnlichen Umfeld (deutsche Hersteller, Premium-Fahrzeuge, ähnliche Technologien, Status etc.) verwendet werden.
Bei Einbezug von mehr Text auf einer Dokumentenebene (was hier fehlt) und eben nicht nur den drei Wörtern würden die Unterschiede natürlich etwas stärker ausfallen, weil die Embeddings dann feingranularer und mit mehr Dimensionen berechnet würden. Für einfache Wörter werden typischerweise 300 Dimensionen verwendet, auf Satz- oder Textebene sind es bis etwa 1.500. Hochleistungsmodelle liegen allerdings bereits beim Zehnfachen davon.
Wozu kann man Embeddings verwenden?
Einige konkrete Anwendungsfälle zur Nutzung von Embeddings finden Sie hier in dieser Ausgabe. Ganz allgemein gibt es tatsächlich vielfältige Möglichkeiten, damit zu arbeiten, wie zum Beispiel:
Relevanzranking: Embeddings helfen Suchmaschinen dabei, die relevantesten Ergebnisse für eine Suchanfrage zu finden, indem sie die semantische Ähnlichkeit zwischen der Suchanfrage und den Dokumenten im Index berechnen.
Synonymerkennung: Synonyme können leichter erkannt werden. So lassen sich Dokumente zu finden, die relevante Informationen enthalten, auch wenn sie nicht die gleichen Wörter wie die Suchanfrage verwenden.
Semantische Suche: Mit Embeddings kann man die Absicht hinter einer Suchanfrage besser verstehen und relevantere Ergebnisse liefern, selbst wenn die Suchanfrage mehrdeutig ist.
Empfehlungssysteme: Embeddings lassen sich hervorragend dafür einsetzen, um verwandte Inhalte oder Produkte zu empfehlen, die für den Benutzer von Interesse sein könnten.
Auch für Ihre eigene Website gibt es mögliche Anwendungsbereiche wie zum Beispiel:
Redirect-Mapping: Vektor-Embeddings können für das Matching von möglichst gleichen Inhalten verwendet werden, um die besten Weiterleitungen per 301 zu erstellen.
Inhaltsanalysen: Sie helfen bei der Analyse von Texten. Durch den Vergleich von Vektoren kann man herausfinden, wie ähnlich sich Seiteninhalte sind bzw. ob sie sich zu ähnlich sind.
Linkoptimierung: Embeddings können durch die möglichen thematischen Ähnlichkeitsvergleiche für die Optimierung einer themenorientierten, internen Verlinkung verwendet werden.
Tipp
Wenn Sie sich für eine Suchphrase und eine aus ihrer Sicht darauf passende Seite zwei Embeddings erzeugen lassen, können Sie die Kosinus-Ähnlichkeit (am besten über ein Tool) dafür berechnen. Dieser Ähnlichkeitswert (je näher an 1, umso besser) sagt aber alleine meist noch nichts aus. Besser ist es, dies gleich für ein ganzes Set von URLs zu machen und ggf. auch URLs von Mitbewerbern mit einzubeziehen. Dann kann man am Ähnlichkeitsmaß ablesen, welche URL tatsächlich semantisch am besten zur Suchphrase passt. Aber Achtung: Wenn Sie nun auf die Idee kommen, die am besten bei Google rankenden URLs mit ihrer eigenen „besten“ URL zu vergleichen, stellen Sie wahrscheinlich fest, dass die Reihenfolge im Ranking bei Google nicht unbedingt exakt diesem Ähnlichkeitsmaß entspricht. Das hat den einfachen Grund, dass Google intern Embeddings sicherlich anders und ausgefeilter berechnet, als wir das mit Bordmitteln tun können. Weitere Gründe sind selbstverständlich, dass beim Ranking nicht nur die Ähnlichkeit zur Suchanfrage zählt, sondern auch andere Kriterien wie Domainstärke, Backlinks und viele andere Signale. Ein „Re-Engineering“ der Trefferreihenfolge ist also auch mittels Embeddings nicht möglich. Aber solche Tests zeigen einem SEO durch den Vergleich von URLs, wo es ggf. noch semantische Lücken geben könnte.
Wie kann man selbst Embeddings erzeugen?
Dazu gibt es aktuell mehrere Möglichkeiten. Das bekannte SEO Tool Screaming Frog kann mittlerweile Vektor-Embeddings bereits beim Crawlen von URLs erstellen. Und das ist für Einsteiger wahrscheinlich eine der besten, weil einfachsten Möglichkeiten. Eine Anleitung dazu finden Sie in der Website Boosting, Ausgabe 87. Dort wird beschrieben, wie man den Frog via API mit KI-Modellen zur Erzeugung von Embeddings konfiguriert. Prinzipiell ist der Rückgriff auf verschiedene KI-Modelle möglich. Wer einen API-Schlüssel von OpenAI (ChatGPT) bzw. einen Account dort hat (zu beziehen unter platform.openai.com/account/api-keys), kann diesen dort direkt nutzen. Es ist aber auch möglich, das kostenlose Modell von Ollama auf dem eigenen Rechner zu installieren und den Frog damit zu verbinden. Ebenso lässt sich Google Gemini über einen API-Key direkt ansprechen. Nach dem Crawl einer Site oder einem Set von Dokumenten findet man die Embeddings für die Texte der Seiten in einer eigenen Spalte im Screaming Frog bzw. kann diese Werte durch einen Datenexport direkt weiter nutzen.
In der neuen Version 22 kann der Frog übrigens nun auch semantische Ähnlichkeitsanalysen mittels Embeddings automatisch durchführen. Damit lassen sich auf einfache Weise ähnliche Seiten finden (Abbildung 5). Aber auch Seiten mit geringer inhaltlicher Relevanz bezogen auf das Kernthema einer Domain kann man damit identifzieren. Die Ergebnisse lassen sich mittels farbiger Punktwolken visualisieren. Besonders nützlich ist die Möglichkeit, sich für einen Suchterm die relevantesten Seiten anzeigen zu lassen (Abbildung 6). In der nächsten Ausgabe finden Sie übrigens eine ausführliche Anleitung, wie man dabei genau vorgeht.
Hinweis
Jedes Modell erzeugt Embeddings auf etwas andere Art und Weise. Achten Sie also darauf, dass Sie nur Embeddings miteinander vergleichen, die vom selben Modell erzeugt wurden. Wenn Sie zum Beispiel eine Suchphrase mit Gemini erzeugt haben, sollten Sie diese nicht mit Embeddings verwenden, die von OpenAI oder Ollama generiert wurden!
Embeddings sind ein sehr mächtiges Werkzeug, um Text automatisiert analysieren und kategorisieren zu können. Zwar arbeiten die „großen“ Systeme bei Google und Co. mit mächtigeren und ausgefeilteren Modellen, aber um wichtige Kenntnisse zur Optimierung der eigenen Website zu gewinnen, reichen mittlerweile Bordmittel durchaus aus. Umso wichtiger ist es, das grundlegende Konzept hinter der Vektorisierung von Texten zur Bedeutungsanalyse zumindest in Grundzügen verstanden zu haben. In dieser Ausgabe und natürlich weiter folgenden finden Sie wie immer wertvolle Tipps, Tricks, Step-by-step-Anleitungen und Neuheiten, wie Sie selbst Embeddings effizient nutzen können.






