Du besitzt 20.000 Dokumente.

Ein Nutzer fragt:

Wie kann ich mein Passwort zurücksetzen?

In keinem Dokument steht exakt dieser Satz.

Die passende Anleitung trägt vielleicht die Überschrift:

Zugangsdaten ändern und neues Kennwort vergeben

Eine klassische Suche nach dem Wort:

Passwort

könnte diesen Treffer übersehen.

Für einen Menschen ist trotzdem sofort klar:

Passwort zurücksetzen

und:

Kennwort neu vergeben

behandeln nahezu dasselbe Problem.

Genau hier werden Embeddings interessant.

Ein Embedding übersetzt Inhalte in eine numerische Repräsentation – einen Vektor –, sodass mathematisch mit Bedeutungsbeziehungen gearbeitet werden kann. Moderne Embeddingmodelle werden unter anderem für semantische Suche, Ähnlichkeitsvergleiche, Clustering und Klassifikation eingesetzt. (OpenAI)

Vereinfacht:

"Passwort zurücksetzen"
↓
Embedding-Modell
↓
[0.17, -0.82, 0.04, 0.61, ...]

Ein anderer Text:

"Kennwort neu vergeben"
↓
Embedding-Modell
↓
[0.16, -0.79, 0.07, 0.58, ...]

Die tatsächlichen Vektoren wären wesentlich länger.

Entscheidend ist die Idee:

Texte mit ähnlicher Bedeutung können ähnliche numerische Repräsentationen erhalten.

Damit wird aus einem sprachlichen Problem ein mathematisches Suchproblem.

Ein Embedding ist ein Vektor

Der Begriff Vektor klingt komplizierter, als er für das Grundverständnis sein muss.

Ein Vektor ist zunächst einfach eine geordnete Reihe von Zahlen.

Zum Beispiel:

[0.4, -0.2, 0.8]

Dieser Vektor besitzt drei Dimensionen.

Man könnte ihn deshalb theoretisch als Punkt in einem dreidimensionalen Raum darstellen.

          y
          |
          |       ●
          |
          |
----------+------------ x
         /
        /
       z

Moderne Text-Embeddings besitzen wesentlich mehr Dimensionen.

Dann können wir diesen Raum nicht mehr anschaulich zeichnen.

Mathematisch funktioniert das Prinzip trotzdem.

Jede Eingabe bekommt eine Position im Vektorraum

Beispielsweise:

Hund
↓
Embedding
↓
Vektor A

Katze
↓
Embedding
↓
Vektor B

Steuererklärung
↓
Embedding
↓
Vektor C

Wenn das Embeddingmodell seine Aufgabe gut erfüllt, können A und B im mathematischen Raum ähnlicher sein als A und C.

Schon frühe Verfahren wie Word2Vec zeigten, dass trainierte Vektorrepräsentationen syntaktische und semantische Beziehungen zwischen Wörtern abbilden können. (research.google)

Die Zahlen selbst sind für Menschen kaum interessant

Nehmen wir:

Hund =
[0.137, -0.744, 0.219, 0.881, ...]

Man sollte die erste Zahl nicht interpretieren als:

0.137 = Tierhaftigkeit

und die zweite als:

-0.744 = Fellmenge

So einfach sind moderne Embeddingräume nicht aufgebaut.

Die Bedeutung ist über viele Dimensionen und deren Zusammenspiel verteilt.

Für uns ist deshalb normalerweise nicht wichtig, was eine einzelne Zahl bedeutet.

Interessant ist:

Wie verhält sich der gesamte Vektor zu anderen Vektoren?

Ähnlichkeit entsteht über Abstände beziehungsweise Richtungen

Angenommen, wir haben drei Texte:

A:
Wie ändere ich mein Passwort?

B:
Ich möchte ein neues Kennwort festlegen.

C:
Wie optimiere ich Bilder für WordPress?

Nach der Embeddingberechnung erhalten wir:

A → Vektor A
B → Vektor B
C → Vektor C

Dann können wir mathematisch messen:

Wie ähnlich sind A und B?

Wie ähnlich sind A und C?

Das Modell sollte idealerweise erkennen:

Ähnlichkeit(A,B)
>
Ähnlichkeit(A,C)

Obwohl A und B nicht dieselben Wörter verwenden.

Genau das ist der Kern semantischer Suche.

Semantisch bedeutet: nach Bedeutung statt nur nach Zeichenfolge

Eine klassische Keyword-Suche arbeitet stark mit konkreten Begriffen.

Anfrage:

Auto reparieren

Dokument:

Fahrzeug instand setzen

Die Wortüberschneidung ist gering.

Semantisch liegen beide Aussagen jedoch nahe.

Ein Embeddingsystem kann diese Beziehung möglicherweise erkennen.

Synonyme sind ein einfaches Beispiel

Zum Beispiel:

Passwort
Kennwort

oder:

Auto
Fahrzeug

oder:

Kündigung
Vertrag beenden

Doch moderne Embeddings können weit über einfache Synonymtabellen hinausgehen.

Sie können ganze Sätze oder Abschnitte so repräsentieren, dass Bedeutungsähnlichkeit mathematisch vergleichbar wird. Sentence-BERT wurde beispielsweise gerade dafür entwickelt, semantisch sinnvolle Satzrepräsentationen zu erzeugen, die effizient über Kosinusähnlichkeit miteinander verglichen werden können. (arXiv)

Semantische Ähnlichkeit ist mehr als Wortähnlichkeit

Vergleiche:

Mein Hund braucht Futter.

und:

Was kann ich meinem Labrador zu fressen geben?

Viele Wörter unterscheiden sich.

Die Themen liegen trotzdem nah beieinander.

Dagegen:

Die Aktie des Unternehmens ist auf den Hund gekommen.

enthält das Wort:

Hund

hat semantisch aber wenig mit Tierfutter zu tun.

Eine reine Keywordlogik sieht das Wort.

Eine gute semantische Repräsentation berücksichtigt stärker den Kontext.

Embeddings können ganze Sätze repräsentieren

Frühere populäre Verfahren konzentrierten sich stark auf einzelne Wörter.

Moderne Systeme können Embeddings erzeugen für:

Wörter,

Sätze,

Absätze,

Dokumentteile,

Dokumente,

Code.

Die Entwicklung von Satz-Embeddings war insbesondere für Anwendungen wie semantische Suche wichtig, weil nicht jedes Dokumentpaar gemeinsam durch ein großes Modell geschickt werden muss: Vektoren können vorab berechnet und anschließend effizient verglichen werden. (arXiv)

Warum ist das Vorabberechnen so wichtig?

Stell dir vor, deine Wissensbasis besitzt:

1.000.000 Textabschnitte

Ein Nutzer stellt eine Frage.

Extrem ineffizient wäre:

Frage
+
Abschnitt 1
→ großes Sprachmodell

Frage
+
Abschnitt 2
→ großes Sprachmodell

...

Frage
+
Abschnitt 1.000.000
→ großes Sprachmodell

Das wären eine Million aufwendige Vergleiche.

Embeddings ändern die Architektur.

Dokument-Embeddings werden einmal berechnet

Zunächst:

Dokument 1
↓
Embedding-Modell
↓
Vektor 1
Dokument 2
↓
Embedding-Modell
↓
Vektor 2

und so weiter.

Diese Vektoren werden gespeichert.

Bei einer neuen Frage muss nur noch für die Frage ein neues Embedding erzeugt werden.

Nutzerfrage
↓
Embedding
↓
Query-Vektor

Danach sucht das System mathematisch nach ähnlichen vorhandenen Vektoren.

Damit wird Bedeutung durch Geometrie suchbar

Das ist die entscheidende Idee.

Sprache
↓
Embedding
↓
Vektorraum
↓
Ähnlichkeit berechnen

Wir machen aus:

Welche Texte behandeln ungefähr dasselbe Thema?

eine mathematisch berechenbare Aufgabe.

Was bedeutet Cosine Similarity?

Eine häufig verwendete Methode zum Vergleich von Embeddings ist die Kosinusähnlichkeit, meist englisch Cosine Similarity.

Dabei wird vereinfacht stärker die Richtung zweier Vektoren als ihre absolute Länge betrachtet.

Man kann sich zwei Pfeile vorstellen.

         B
        ↗

      ↗ A


------------------

Zeigen A und B ungefähr in dieselbe Richtung, ist ihre Kosinusähnlichkeit hoch.

Zeigen sie stark unterschiedlich:

       ↑ A

       |
-------+------→ B

ist sie geringer.

Sentence-BERT verwendet beispielsweise Kosinusähnlichkeit zum Vergleich semantischer Satz-Embeddings. (arXiv)

Warum heißt das Kosinus?

Aus der Geometrie kennen wir den Winkel zwischen Vektoren.

Für zwei Vektoren kann mathematisch berechnet werden:

cos(θ)

wobei θ der Winkel zwischen ihnen ist.

Gleiche Richtung:

θ = 0°
cos(0°) = 1

Bei orthogonalen Richtungen:

θ = 90°
cos(90°) = 0

In realen Embeddingsystemen interessiert meist weniger die Schulgeometrie selbst als:

Welcher Vektor ist dem Query-Vektor am ähnlichsten?

Auch der Dot Product kann verwendet werden

Eine weitere wichtige Operation ist das Skalarprodukt, englisch Dot Product.

Je nach Embeddingmodell und Normalisierung können unterschiedliche Ähnlichkeits- beziehungsweise Distanzmaße sinnvoll sein.

Bei auf Länge 1 normalisierten Embeddings kann die Kosinusähnlichkeit über das Skalarprodukt besonders effizient berechnet werden. OpenAI weist beispielsweise für seine normalisierten Embeddings darauf hin, dass Kosinusähnlichkeit und euklidische Distanz dadurch dasselbe Ranking erzeugen. (OpenAI Help Center)

Für das Grundverständnis genügt:

Embedding A
+
Embedding B
↓
Ähnlichkeitsfunktion
↓
Score

Ein Similarity Score ist keine Wahrscheinlichkeit

Das ist wichtig.

Angenommen:

Ähnlichkeit = 0,84

Das bedeutet nicht automatisch:

84 % Wahrscheinlichkeit,
dass beide Texte dasselbe bedeuten

Es ist ein mathematischer Ähnlichkeitswert innerhalb des verwendeten Embeddingraums und der verwendeten Vergleichsmethode.

Wie ein Wert interpretiert werden sollte, hängt ab von:

Embeddingmodell,

Daten,

Aufgabe,

Schwellenwerten.

Deshalb gibt es keinen universellen perfekten Grenzwert

Man kann nicht allgemein sagen:

ab 0,80 = relevant

unter 0,80 = irrelevant

Für eine Anwendung könnte:

0,73

ein hervorragender Treffer sein.

Für eine andere möglicherweise nicht.

Schwellenwerte sollten anhand echter Beispieldaten getestet werden.

Ähnlichkeit bedeutet außerdem nicht Identität

Zwei Texte können semantisch sehr ähnlich sein und sich trotzdem in einer entscheidenden Information widersprechen.

Zum Beispiel:

Das Gerät unterstützt maximal 16 GB RAM.

und:

Das Gerät unterstützt maximal 32 GB RAM.

Nahezu alle Wörter und die gesamte Satzstruktur sind ähnlich.

Die entscheidende Zahl ist jedoch unterschiedlich.

Ein Embeddingsystem kann beide Texte deshalb sehr ähnlich einordnen.

Das ist vollkommen logisch.

Embeddings beantworten primär:

Welche Inhalte sind semantisch verwandt?

Nicht:

Sind alle Tatsachen darin identisch?

Noch deutlicher wird es bei Verneinungen

Das Medikament darf gemeinsam mit X verwendet werden.

und:

Das Medikament darf nicht gemeinsam mit X verwendet werden.

Die Texte besitzen enorme sprachliche Ähnlichkeit.

Inhaltlich ist ihr Unterschied entscheidend.

Das zeigt eine fundamentale Grenze:

Semantische Nähe ersetzt keine fachliche Prüfung.

Embeddings sind keine Wahrheitsmaschine

Das passt direkt zu unserem Artikel über KI-Halluzinationen.

Ein Embedding kann hervorragend erkennen:

Dieses Dokument behandelt dieselbe Frage.

Es kann daraus nicht automatisch ableiten:

Dieses Dokument enthält die richtige Antwort.

RAG kann relevante Quellen finden.

Die Qualität dieser Quellen bleibt eine eigene Frage.

Was ist semantische Suche?

Eine semantische Suche arbeitet vereinfacht so:

Dokumente
↓
Embeddings berechnen
↓
Vektoren speichern

Nutzerfrage
↓
Embedding berechnen
↓
ähnlichste Dokumentvektoren suchen
↓
passende Dokumente

OpenAI nennt semantische Suche ausdrücklich als einen typischen Anwendungsfall von Text-Embeddings. (OpenAI)

Das unterscheidet sich grundlegend von ausschließlich zeichenbasierter Suche.

Keyword-Suche und semantische Suche lösen unterschiedliche Probleme

Keyword-Suche ist hervorragend, wenn man exakt weiß, wonach man sucht.

Beispielsweise:

ERR_SSL_PROTOCOL_ERROR

Da möchte ich wahrscheinlich Dokumente mit genau dieser Fehlermeldung.

Semantische Suche ist besonders stark bei:

Warum funktioniert meine verschlüsselte
Website-Verbindung nicht mehr?

Obwohl die Dokumentation vielleicht nie exakt diese Formulierung verwendet.

Keyword-Suche besitzt also weiterhin große Vorteile

Embeddings machen klassische Suche nicht überflüssig.

Bei:

Produktnummern,

Fehlercodes,

Personennamen,

URLs,

Artikelnummern,

exakten Zitaten

ist lexikalische Suche häufig hervorragend.

Wenn jemand sucht:

KB-97281

möchte ich wahrscheinlich exakt:

KB-97281

finden.

Ein semantisch ähnlicher anderer Produktcode hilft wenig.

Deshalb ist Hybrid Search besonders interessant

Eine moderne Suche kann beide Ansätze kombinieren:

Nutzerfrage
↓
├── Keyword-Suche
│
└── semantische Vektorsuche
↓
Ergebnisse kombinieren
↓
Ranking

Dann erhält man:

exakte Begriffstreffer

und:

Bedeutungsähnlichkeit.

Das kann besonders bei technischen Wissenssystemen sehr leistungsfähig sein.

Wie entsteht ein Embedding technisch?

Vereinfacht erhält ein spezielles Modell einen Text.

"Wie ändere ich mein Passwort?"

Der Text wird zunächst – ähnlich wie bei Sprachmodellen – in Tokens zerlegt.

Text
↓
Tokenizer
↓
Tokens

Danach verarbeitet das Embeddingmodell die Tokenfolge und erzeugt daraus einen Vektor fester Dimension.

Tokens
↓
Embedding-Modell
↓
[0.021, -0.517, 0.882, ...]

Der genaue interne Prozess hängt von der Modellarchitektur ab.

Ein Embeddingmodell und ein generatives Sprachmodell haben unterschiedliche Aufgaben

Ein Sprachmodell soll typischerweise:

Text
↓
neuen Text erzeugen

Ein Embeddingmodell soll dagegen:

Text
↓
Vektor erzeugen

Es beantwortet deine Frage also normalerweise nicht.

Du gibst ein:

Wie funktioniert DNS?

und bekommst nicht:

DNS ist das Domain Name System …

sondern sinngemäß:

[0.017, 0.462, -0.291, ...]

Diese Zahlen sind für andere Software bestimmt.

Embeddings sind damit eher Infrastruktur als Benutzeroberfläche

Ein Endnutzer sieht die Vektoren meistens nie.

Er sieht nur:

Frage
↓
passende Antwort

Im Hintergrund kann jedoch passieren:

Frage
↓
Embedding
↓
Vektorsuche
↓
relevante Dokumente
↓
Sprachmodell
↓
Antwort

Embeddings sind damit ein typisches Beispiel für KI-Technik, die sehr wichtig ist, obwohl sie im fertigen Produkt nahezu unsichtbar bleibt.

Ein Embeddingmodell muss nicht dasselbe Modell wie das Sprachmodell sein

Das ist ebenfalls wichtig.

Eine Architektur kann verwenden:

Embedding-Modell A
→ Dokumentensuche

und:

Sprachmodell B
→ Antwort generieren

Beide erfüllen unterschiedliche Aufgaben.

Man sollte deshalb nicht fragen:

Welches LLM verwenden wir für unsere Embeddings?

Die Komponenten können völlig getrennt sein.

Dokumente und Suchanfrage sollten kompatibel eingebettet werden

Wenn Dokumente mit einem bestimmten Embeddingmodell verarbeitet wurden, sollte die spätere Suchanfrage in denselben kompatiblen Vektorraum übersetzt werden.

Sonst sind die Koordinaten nicht sinnvoll miteinander vergleichbar.

Man kann sich vorstellen:

Modell A:
eigene Landkarte

Modell B:
andere Landkarte

Die Koordinate:

[17, 24]

hat ohne gemeinsame Karte keine gemeinsame Bedeutung.

Ein Modellwechsel kann deshalb Neuindexierung bedeuten

Du hast:

5 Millionen Dokument-Chunks

mit Embeddingmodell A verarbeitet.

Nun wechselst du zu Modell B.

Die neuen Query-Vektoren sollten nicht einfach gegen alte, inkompatible Dokumentvektoren verglichen werden.

In vielen Architekturen bedeutet ein Modellwechsel deshalb:

Dokumente
↓
mit neuem Embeddingmodell erneut verarbeiten
↓
neuen Index aufbauen

Das sollte bei großen Wissenssystemen bereits bei der Planung berücksichtigt werden.

Embeddings sollten deshalb versioniert werden

Eine Datenbank könnte beispielsweise speichern:

chunk_id
embedding
embedding_model
embedding_version
created_at

Dann lässt sich später nachvollziehen:

Mit welchem Modell wurde dieser Vektor erzeugt?

Das klingt zunächst nach Verwaltungsdetail.

Bei Millionen gespeicherten Vektoren wird es sehr wichtig.

Was ist eine Dimension?

Ein Embedding kann beispielsweise besitzen:

Dimension 1
Dimension 2
Dimension 3
...
Dimension n

Je mehr Dimensionen vorhanden sind, desto mehr numerische Werte enthält jeder Vektor.

Ein vereinfachtes dreidimensionales Embedding wäre:

[0.2, -0.7, 0.4]

Ein reales modernes Embedding kann sehr viel länger sein.

Mehr Dimensionen bedeuten auch mehr Speicher

Angenommen, ein Vektor besitzt:

1.000 Werte

und du speicherst:

10 Millionen Vektoren

Dann müssen bereits:

10 Milliarden Zahlenwerte

gespeichert werden.

Zusätzlich kommen:

IDs,

Metadaten,

Suchindex

hinzu.

Die Größe eines Embeddings ist deshalb eine reale Infrastrukturentscheidung.

Größer ist auch hier nicht automatisch besser

Ein höherdimensionaler Vektor kann mehr Repräsentationskapazität besitzen.

Aber:

mehr Dimensionen

bedeuten auch:

mehr Speicher,

mehr Netzwerkverkehr,

größere Indizes.

Entscheidend ist die tatsächliche Suchqualität für die Aufgabe.

Wie bei Sprachmodellen sollte man nicht ausschließlich eine einzelne Größenkennzahl optimieren.

Was ist eine Vektordatenbank?

Nun haben wir vielleicht Millionen Embeddings.

Wir brauchen ein System, das sehr schnell beantworten kann:

Welche 10 gespeicherten Vektoren sind diesem Query-Vektor am ähnlichsten?

Eine dafür optimierte Datenhaltung wird häufig als Vektordatenbank beziehungsweise Vector Store bezeichnet.

Für große Mengen Embeddings empfehlen auch aktuelle Embedding-Dokumentationen spezialisierte Vektorsuche, um die nächstgelegenen Vektoren effizient abzurufen. (OpenAI Help Center)

Eine Vektordatenbank speichert mehr als Zahlen

Typischerweise brauchen wir mindestens:

ID
Embedding-Vektor
Originaltext oder Referenz
Metadaten

Beispiel:

ID:
4711

Text:
"Um Ihr Kennwort zurückzusetzen ..."

Embedding:
[0.18, -0.44, ...]

Quelle:
handbuch.pdf

Kapitel:
Accountverwaltung

Version:
3.2

Sprache:
de

Damit kann ein Treffer später wieder mit dem tatsächlichen Inhalt verbunden werden.

Der Vektor allein reicht nicht

Die Suche findet:

Vektor 4711

Aber ein Sprachmodell braucht letztlich den dazugehörigen Text.

Deshalb wird meist gespeichert:

Vektor
↔
Chunk-ID
↔
Originalinhalt

Die Vektorsuche findet die ID.

Das System lädt den Text.

Dann gelangt dieser Text in das Kontextfenster des Sprachmodells.

Was bedeutet Nearest Neighbor Search?

Der Query-Vektor befindet sich irgendwo im Embeddingraum.

Nun wollen wir die nächsten Nachbarn finden.

                ● Dokument D

      ● A

         ★ Query
      ● B

                         ● C

A und B liegen nahe.

C und D weiter entfernt.

Die Suche liefert beispielsweise:

1. B
2. A
3. D

Das nennt man vereinfacht Nearest Neighbor Search.

Was bedeutet Top-K?

Häufig fordert ein System nicht nur den einen besten Treffer an.

Sondern beispielsweise:

Top-K = 5

Dann werden die fünf ähnlichsten Treffer zurückgegeben.

Treffer 1
Treffer 2
Treffer 3
Treffer 4
Treffer 5

Das K steht einfach für die gewünschte Anzahl.

Warum nicht nur Top-1?

Der mathematisch ähnlichste Treffer muss nicht zwingend die beste Informationsquelle sein.

Vielleicht liefert:

Treffer 1:

Definition.

Treffer 2:

wichtige Ausnahme.

Treffer 3:

konkrete Anleitung.

Für eine gute Antwort können mehrere Abschnitte nötig sein.

Deshalb erhält ein RAG-System häufig mehrere Kandidaten.

Zu großes K kann wiederum schaden

Wenn du statt fünf Treffern:

100

lädst, entstehen:

mehr Tokens,

mehr irrelevanter Kontext,

mehr mögliche Widersprüche.

Das passende K sollte daher getestet werden.

Wieder gilt:

mehr
≠
automatisch besser

Exakte Suche kann bei riesigen Datenmengen teuer werden

Bei wenigen hundert Vektoren kann man theoretisch jeden Query-Vektor mit jedem gespeicherten Vektor vergleichen.

Bei:

100 Millionen Vektoren

wird das aufwendig.

Deshalb verwenden große Vektorsuchsysteme häufig Verfahren für Approximate Nearest Neighbor Search.

Dabei wird nicht zwangsläufig jeder einzelne Vektor vollständig geprüft.

Das System versucht sehr schnell sehr gute nahe Kandidaten zu finden.

„Approximate“ bedeutet bewussten Kompromiss

Man tauscht teilweise:

absolut exakte Suche

gegen:

sehr schnelle Suche
mit hoher Trefferwahrscheinlichkeit

Bei großen Suchsystemen kann das ein sinnvoller Trade-off sein.

Welche Indexstruktur geeignet ist, hängt unter anderem ab von:

Datenmenge,

Dimensionen,

Latenz,

Updatehäufigkeit,

gewünschter Genauigkeit.

Metadatenfilter sind mindestens so wichtig wie Vektorähnlichkeit

Angenommen, dein Wissenssystem besitzt Dokumente in:

Deutsch,

Englisch,

Französisch.

Der Nutzer möchte nur deutsche Dokumente.

Dann könnte man filtern:

language = de

Oder:

product = wordpress

Oder:

version = 6

Oder:

customer_id = 172

Metadaten begrenzen den Suchraum.

Besonders wichtig sind Berechtigungsfilter

Angenommen, ein Mitarbeiter darf nur Dokumente aus Abteilung A lesen.

In der gemeinsamen Vektordatenbank liegen aber auch:

Gehaltslisten,

Geschäftsführungsprotokolle,

vertrauliche Kundendaten.

Dann darf die Architektur nicht lauten:

semantisch suchen
↓
geheime Dokumente finden
↓
LLM bekommt alles
↓
Prompt sagt:
"Bitte nicht verraten."

Sondern:

Benutzer
↓
Berechtigung bestimmen
↓
nur erlaubten Datenraum durchsuchen
↓
Treffer
↓
LLM

Die Zugriffskontrolle muss vor beziehungsweise bei der Retrievalauswahl wirken.

Vektorsuche ersetzt keine Rechteverwaltung

Die Datenbank weiß:

Dokument A ist semantisch passend.

Das bedeutet nicht:

Nutzer darf Dokument A lesen.

Relevanz und Berechtigung sind zwei getrennte Dimensionen.

relevant?
+
erlaubt?

Nur wenn beides erfüllt ist, sollte der Inhalt in den Kontext gelangen.

Embeddings sind auch kein Datenschutzzauber

Man könnte denken:

Ich speichere nicht den Klartext, sondern nur Embeddings. Also sind die Daten anonym.

Diese Schlussfolgerung ist zu riskant.

Embeddings sind abgeleitete Repräsentationen der ursprünglichen Information und sollten bei sensiblen Inhalten ebenfalls als schützenswerte Daten behandelt werden.

Besonders in einem realen System existieren häufig ohnehin zusätzliche Verknüpfungen zu:

Dokument-ID,

Nutzer-ID,

Metadaten,

Originalinhalt.

Die Sicherheitsarchitektur sollte deshalb nicht davon ausgehen, dass ein Zahlenvektor automatisch harmlos ist.

Wie kommen Dokumente in eine Vektordatenbank?

Der Prozess wird häufig als Ingestion bezeichnet.

Zum Beispiel:

PDF
↓
Text extrahieren
↓
bereinigen
↓
in Chunks teilen
↓
Embedding für jeden Chunk erzeugen
↓
Vektor + Text + Metadaten speichern

Damit ist die Wissensbasis vorbereitet.

Warum werden Dokumente in Chunks geteilt?

Nehmen wir ein Handbuch mit:

300 Seiten

Ein einziges Embedding für das komplette Dokument wäre häufig zu grob.

Das Dokument behandelt:

Installation.

Konfiguration.

Backup.

Benutzerrechte.

Fehlerbehebung.

Eine Frage nach Passwortänderung würde gegen eine Repräsentation des gesamten Handbuchs verglichen.

Der relevante kleine Abschnitt könnte in der Gesamtbedeutung untergehen.

Kleinere Abschnitte erzeugen präzisere Suchziele

Statt:

1 Handbuch
→ 1 Embedding

kann man erzeugen:

Handbuch
↓
Chunk 1 → Embedding
Chunk 2 → Embedding
Chunk 3 → Embedding
...
Chunk 200 → Embedding

Nun kann die Suche exakt den Abschnitt finden, der die Frage behandelt.

Chunkgröße ist deshalb entscheidend

Zu großer Chunk:

viel Kontext
aber
unscharfe thematische Mischung

Zu kleiner Chunk:

präzise
aber
Zusammenhang kann fehlen

Die richtige Größe hängt ab von:

Dokumentstruktur,

Fragetyp,

Embeddingmodell,

späterem Sprachmodell.

Ein Absatz ist nicht automatisch ein perfekter Chunk

Manchmal besteht ein sinnvoller Abschnitt aus:

Überschrift

plus:

zwei Absätzen.

Oder:

einer Tabelle.

Oder:

einer Liste mit Erklärung.

Reines Schneiden nach exakt:

500 Tokens

kann Zusammenhänge zerstören.

Semantische beziehungsweise strukturelle Grenzen sind häufig wertvoll.

Überschriften sollten im Chunk erhalten bleiben

Stell dir vor, im Handbuch steht:

## Passwort zurücksetzen

1. Öffnen Sie ...
2. Wählen Sie ...

Wenn der Chunk nur enthält:

1. Öffnen Sie ...
2. Wählen Sie ...

fehlt dem Embedding ein wichtiger Bedeutungsanker.

Besser kann sein:

Titel:
Passwort zurücksetzen

Inhalt:
1. Öffnen Sie ...

Das erhöht die semantische Information des Abschnitts.

Metadaten sollten nicht mit Embeddinginhalt verwechselt werden

Ein Dokument besitzt:

Produkt: WordPress
Version: 6
Sprache: Deutsch

Man kann diese Informationen teilweise in den Text für das Embedding aufnehmen.

Oder separat als Metadaten speichern.

Beides erfüllt unterschiedliche Aufgaben.

Metadata Filter:

Version = 6

ist exakt.

Semantische Ähnlichkeit:

ungefähr dasselbe Thema

ist probabilistisch.

Wo möglich, sollten exakte Bedingungen auch exakt behandelt werden.

Das ist wieder dieselbe Architekturregel wie bei LLMs

eindeutige Regel
→ klassische Software

unscharfe Bedeutung
→ KI

Embeddings sind hervorragend für:

Welche Texte passen thematisch?

Eine SQL-Datenbank ist besser für:

Welche Dokumente haben version = 6?

Zusammen sind beide stärker.

Was geschieht bei der Nutzeranfrage?

Nachdem alle Dokumente vorbereitet sind:

Nutzer:
"Wie ändere ich mein Passwort?"

Schritt 1:

Frage
↓
Embeddingmodell
↓
Query-Vektor

Schritt 2:

Query-Vektor
↓
Vektordatenbank
↓
ähnlichste Chunks

Schritt 3:

Treffer
↓
Originaltexte laden

Nun besitzt das System vielleicht:

Chunk A:
"Kennwort zurücksetzen ..."

Chunk B:
"Zugangsdaten ändern ..."

Chunk C:
"Account-Wiederherstellung ..."

Damit ist noch keine Antwort generiert

Bis hierhin haben wir nur gesucht.

Das ist wichtig.

Embeddings beantworten die Frage nicht.

Sie helfen zunächst:

relevante Information zu finden.

Nun kann ein Sprachmodell eingeschaltet werden:

Frage
+
gefundene Chunks
↓
LLM
↓
Antwort

Und genau diese Kombination führt uns zum nächsten Thema:

RAG.

Embeddings sind nicht dasselbe wie RAG

Diese Begriffe werden häufig vermischt.

Embedding:

Information
→ Vektor

Vektorsuche:

Query-Vektor
→ ähnliche Vektoren finden

RAG:

Frage
↓
Informationen abrufen
↓
in Modellkontext geben
↓
Antwort generieren

Embeddings können ein zentraler Bestandteil von RAG sein.

RAG ist aber der größere Prozess.

RAG braucht nicht zwingend ausschließlich Embeddings

Ein Retrievalsystem kann auch verwenden:

Keyword-Suche,

Datenbankfilter,

Knowledge Graphs,

Suchmaschinen,

APIs.

Ein leistungsfähiges RAG-System kann mehrere Verfahren kombinieren.

Zum Beispiel:

Frage
↓
├── semantische Suche
├── Keyword-Suche
└── Metadatenfilter
↓
Kandidaten
↓
Ranking
↓
LLM

Embeddings sind ein Werkzeug innerhalb dieser Architektur.

Was bedeutet Reranking?

Angenommen, die Vektorsuche findet:

50 Kandidaten

Diese sind grundsätzlich ähnlich.

Nun kann ein zweiter Schritt genauer prüfen:

Welche fünf beantworten die Frage am besten?

50 Kandidaten
↓
Reranker
↓
Top 5

Dieser zweite Schritt darf aufwendiger sein, weil nicht mehr die gesamte Datenbank betrachtet wird.

Warum nicht gleich den aufwendigsten Vergleich für alles verwenden?

Weil:

1.000.000 Dokumente
×
teurer Modellvergleich

aufwendig wäre.

Besser:

schnelle Embeddingsuche
↓
kleine Kandidatenmenge
↓
präziseres Reranking

Das ist ein häufiges allgemeines Suchprinzip:

erst grob reduzieren
↓
dann fein beurteilen

Embeddings können auch für Clustering verwendet werden

Nehmen wir:

100.000 Kundenanfragen

Wir wissen noch nicht, welche Themen darin vorkommen.

Für jede Nachricht wird ein Embedding erzeugt.

Dann können ähnliche Vektoren gruppiert werden.

Vielleicht entstehen Cluster rund um:

Rechnung
Login
Versand
Passwort
Kündigung
Fehler

Embeddings wurden schon früh ausdrücklich als nützliche Repräsentationen für Clustering und Klassifikation beschrieben. (OpenAI)

Clustering braucht nicht zwingend vorher definierte Kategorien

Das ist interessant.

Bei Klassifikation sagen wir:

Kategorie A
Kategorie B
Kategorie C

Beim Clustering können wir zunächst fragen:

Welche natürlichen Gruppen befinden sich überhaupt in meinen Daten?

Danach kann ein Mensch oder ein Sprachmodell die Cluster interpretieren.

Embeddings können Duplicate Content finden

Angenommen, eine Website besitzt:

10.000 Artikel.

Ein neuer Text soll veröffentlicht werden.

Man könnte sein Embedding berechnen.

Dann sucht man die ähnlichsten bestehenden Artikel.

neuer Artikel
↓
Embedding
↓
bestehender Artikelindex
↓
Top 10 ähnliche Artikel

Danach kann geprüft werden:

Ist das wirklich ein neues Thema?

Oder existiert bereits ein nahezu identischer Beitrag?

Das ist für große Contentprojekte besonders interessant

Bei wenigen Artikeln kennt der Redakteur den Bestand.

Bei:

100.000 Seiten

nicht mehr.

Embeddings können helfen:

Themendopplungen zu finden,

ähnliche Beiträge zu erkennen,

interne Linkkandidaten zu bestimmen,

Themencluster zu bilden.

Sie ersetzen nicht die redaktionelle Entscheidung.

Sie reduzieren den Suchraum.

Embeddings eignen sich hervorragend für interne Verlinkung

Neuer Artikel:

Wie funktionieren Passkeys?

Man berechnet das Embedding.

Dann findet das System ähnliche vorhandene Seiten:

Passwortmanager

Zwei-Faktor-Authentifizierung

Sichere Passwörter

Account-Sicherheit

Phishing

Das sind potenzielle interne Linkziele.

Nun kann ein zweiter Schritt prüfen:

Welche Verbindung ist inhaltlich tatsächlich sinnvoll?

Semantische Nähe bedeutet aber nicht automatisch einen guten Link

Artikel A:

Was ist ein Passwort?

Artikel B:

Die Geschichte des Passworts.

Sehr ähnlich.

Aber möglicherweise hilft B dem Leser des aktuellen Absatzes nicht.

Interne Links brauchen zusätzlich:

Kontext,

Nutzerwert,

redaktionelle Absicht.

Embeddings liefern Kandidaten.

Nicht die endgültige Entscheidung.

Embeddings können Suchintentionen gruppieren

Nehmen wir Keywords:

wordpress schneller machen

wordpress performance verbessern

wordpress seite lädt langsam

wordpress geschwindigkeit erhöhen

Diese Begriffe unterscheiden sich.

Semantisch liegen sie nahe.

Embeddings können helfen, solche Suchanfragen thematisch zu clustern.

Damit könnten Contentteams erkennen:

Diese Keywords gehören wahrscheinlich zu demselben Artikel.

Aber SEO-Intent ist komplexer als Vektorähnlichkeit

Zum Beispiel:

wordpress hosting

und:

bestes wordpress hosting

liegen semantisch eng zusammen.

Die Suchintention kann dennoch unterschiedlich sein.

Ersteres:

Informationssuche.

Zweites:

stärker kommerzieller Vergleich.

Daher sollte Embeddingähnlichkeit nicht automatisch die gesamte Suchintention bestimmen.

Embeddings können Empfehlungen ermöglichen

Ein Nutzer liest Artikel A.

Das System sucht:

Embedding von Artikel A
↓
ähnlichste Artikel

und erhält:

Artikel B
Artikel C
Artikel D

Damit können thematisch verwandte Inhalte vorgeschlagen werden.

Das funktioniert auch bei:

Produkten,

Supportfällen,

Dokumenten,

Stellenanzeigen.

Empfehlungen brauchen zusätzliche Geschäftslogik

Der ähnlichste Artikel könnte:

bereits gelesen worden sein.

Oder:

veraltet.

Oder:

für eine andere Zielgruppe gedacht.

Deshalb kann die endgültige Auswahl verwenden:

semantische Ähnlichkeit
+
Aktualität
+
Nutzerstatus
+
Qualität
+
Geschäftsregeln

Embeddings liefern wieder nur ein Signal.

Embeddings können Klassifikation vereinfachen

Angenommen, wir haben Beispieltexte für:

Support
Verkauf
Rechnung

Eine neue Nachricht wird eingebettet.

Dann kann untersucht werden, welchen bekannten Beispielen sie am ähnlichsten ist.

Das kann bereits als einfacher Klassifikationsansatz funktionieren.

Je nach Aufgabe kann ein spezialisiertes Modell oder LLM aber geeigneter sein.

Embeddings können Anomalien sichtbar machen

Wenn die meisten Datenpunkte in bestimmten Bereichen des Vektorraums liegen und ein neuer Punkt extrem weit entfernt ist, kann das auf:

ungewöhnlichen Inhalt

hinweisen.

Auch Anomalieerkennung gehört zu den Anwendungen, für die Embeddingrepräsentationen genutzt werden können. (OpenAI)

Das bedeutet nicht automatisch:

Dieser Datensatz ist fehlerhaft.

Nur:

Er unterscheidet sich stark von den üblichen Mustern.

Embeddings können Code repräsentieren

Nicht nur natürliche Sprache lässt sich einbetten.

Auch Programmcode kann in Vektoren übersetzt werden.

Dann kann eine Anfrage lauten:

Funktion zum Prüfen einer E-Mail-Adresse

und das System sucht passende Codeabschnitte, obwohl der exakte Wortlaut in der Funktion nicht vorkommt.

Text- und Code-Embeddings wurden gezielt für solche Such- und Ähnlichkeitsaufgaben entwickelt. (OpenAI)

Das macht semantische Codesuche möglich

Klassische Suche:

validate_email

findet Funktionen, die exakt so heißen.

Semantische Suche könnte auch finden:

check_mail_address()

oder:

is_valid_recipient()

wenn der Code tatsächlich eine ähnliche Aufgabe erfüllt.

Für große Codebasen kann das enorm nützlich sein.

Mehrsprachige Embeddings können Sprachgrenzen überwinden

Ein geeignetes mehrsprachiges Embeddingmodell kann Texte unterschiedlicher Sprachen in einen vergleichbaren semantischen Raum einordnen.

Dann könnte eine deutsche Anfrage:

Wie ändere ich mein Passwort?

möglicherweise eine passende englische Dokumentation finden:

Resetting your account password

Die Qualität hängt stark vom konkreten Embeddingmodell und den unterstützten Sprachen ab.

Das sollte deshalb mit den tatsächlich benötigten Sprachen getestet werden.

Übersetzen vor der Suche ist damit nicht immer notwendig

Eine Alternative wäre:

deutsche Frage
↓
ins Englische übersetzen
↓
englische Suche

Multilinguale Embeddings können den Zwischenschritt teilweise vermeiden.

Ob das für die jeweilige Anwendung besser funktioniert, ist eine Evaluationsfrage.

Eigennamen können semantische Suche schwierig machen

Anfrage:

Casiopeya

Hier geht es vielleicht nicht um allgemeine Bedeutung.

Der genaue Name selbst ist wichtig.

Keyword-Search kann hier sehr stark sein.

Deshalb ist wieder die Kombination interessant:

lexikalische Suche
+
semantische Suche

Dasselbe gilt für Modellnummern

RTX 4060 Ti

ist keine beliebige semantische Beschreibung.

Die exakte Zeichenfolge ist wichtig.

Vektorsuche allein könnte ähnliche Grafikkartenmodelle finden.

Das ist vielleicht hilfreich.

Vielleicht aber gerade unerwünscht.

Gute Suchsysteme verstehen unterschiedliche Querytypen

Eine Anfrage:

ERR_CONNECTION_RESET

→ eher exakter Suchbegriff.

Eine Anfrage:

Warum bricht meine Browser-Verbindung
zum Server ständig ab?

→ semantische Suche sinnvoll.

Ein fortgeschrittenes System kann Suchstrategien abhängig von der Anfrage kombinieren.

Wie beurteilt man ein Embeddingmodell?

Nicht anhand eines einzigen schönen Beispiels.

Man braucht ein Testset.

Zum Beispiel:

100 reale Nutzerfragen

Für jede ist bekannt:

Welche Dokumente sollten gefunden werden?

Nun wird gemessen:

Findet Modell A die relevanten Dokumente?

Wie hoch im Ranking?

Wie oft fehlen wichtige Treffer?

Retrieval braucht eigene Kennzahlen

Ein RAG-System kann falsch antworten, weil das Sprachmodell schlecht war.

Oder weil Retrieval das richtige Dokument nie gefunden hat.

Deshalb sollte die Suchqualität separat bewertet werden.

Zum Beispiel sinngemäß:

War das relevante Dokument
unter den Top 5?

Wenn nicht, kann das Sprachmodell wenig dafür.

Recall ist bei Retrieval besonders wichtig

Vereinfacht gefragt:

Wie viele der relevanten Dokumente haben wir überhaupt gefunden?

Wenn von zehn relevanten Dokumenten nur zwei im Kandidatenset auftauchen, fehlt dem späteren System viel Information.

Ein breiter Retrievalschritt kann deshalb hohen Recall priorisieren.

Danach reduziert ein Reranker die Kandidaten.

Precision beantwortet eine andere Frage

Wie viele unserer gefundenen Treffer waren tatsächlich relevant?

Top 10:

7 relevant
3 irrelevant

ist anders als:

1 relevant
9 irrelevant

Je nach Anwendung braucht man einen guten Kompromiss zwischen:

Recall

und:

Precision.

RAG-Evaluation muss Retrieval und Generation trennen

Eine sinnvolle Diagnose lautet:

1. Wurde die richtige Information gefunden?

2. Wurde sie in den Kontext gegeben?

3. Hat das Sprachmodell sie korrekt verwendet?

Wenn Schritt 1 scheitert, bringt Promptoptimierung bei Schritt 3 möglicherweise überhaupt nichts.

Embeddings können veralten, obwohl der Vektor selbst nicht „alt“ wird

Das Dokument verändert sich.

Der gespeicherte Vektor repräsentiert aber weiterhin die alte Textversion.

Beispiel:

alte Seite:
maximal 10 Benutzer

neue Seite:
maximal 50 Benutzer

Wenn der Text aktualisiert wird, sollte auch das Embedding aktualisiert werden.

Sonst sucht die Datenbank weiterhin anhand des alten Inhalts.

Dokumentänderungen brauchen deshalb Re-Embedding

Pipeline:

Dokument geändert
↓
betroffene Chunks bestimmen
↓
neue Embeddings erzeugen
↓
alte Vektoren ersetzen

Nicht zwingend die gesamte Wissensbasis muss neu berechnet werden.

Nur die veränderten Teile.

Gelöschte Dokumente müssen auch aus dem Index verschwinden

Sonst kann passieren:

Die Datei wurde aus dem Wissenssystem gelöscht.

Der Vektor existiert aber weiterhin.

Retrieval findet ihn noch.

Das kann:

veraltete Antworten

oder sogar:

Berechtigungsprobleme

verursachen.

Datenlebenszyklus und Vektorindex müssen synchron bleiben.

Jede Chunk-ID sollte daher auf einen realen Datensatz zeigen

Beispielsweise:

chunk_id: 4711
document_id: 83
revision: 17

Dann kann das System prüfen:

Existiert die Quelle noch?

Ist die Revision aktuell?

Darf der Nutzer sie sehen?

Erst danach wird sie verwendet.

Embeddings eignen sich nicht als Ersatz für den Originaltext

Ein wichtiger Fehler wäre:

Original löschen
↓
nur Embedding behalten

und später erwarten:

Rekonstruiere mir exakt den ursprünglichen Absatz.

Das Embedding ist nicht als verlustfreie Textkompression gedacht.

Es ist eine Repräsentation für maschinelle Aufgaben wie Ähnlichkeitsvergleich.

Der Originalinhalt sollte separat gespeichert werden, wenn er später benötigt wird.

Ein Embedding ist also kein ZIP-Archiv

Bei ZIP:

Datei
↓
komprimieren
↓
ZIP
↓
entpacken
↓
identische Datei

Bei Embedding:

Text
↓
Embedding
↓
semantische Repräsentation

Eine verlustfreie Rückübersetzung ist nicht der Zweck.

Embeddings sind ebenfalls keine Hashwerte

Ein kryptografischer Hash soll kleine Änderungen stark sichtbar machen.

Beispiel:

Dokument A
→ Hash X

ein Zeichen verändert
→ völlig anderer Hash Y

Ein Embedding verfolgt nahezu das gegenteilige Ziel.

Kleine beziehungsweise bedeutungserhaltende Textänderungen sollen häufig zu ähnlichen Repräsentationen führen.

Passwort ändern

und:

Kennwort ändern

sollen semantisch nahe bleiben.

Hashing beantwortet:

Sind diese Daten exakt dieselben?

Embedding beantwortet eher:

Sind diese Inhalte ähnlich?

Das sind völlig unterschiedliche Aufgaben.

Embeddings sind auch keine Verschlüsselung

Verschlüsselung soll Daten unter Verwendung eines Schlüssels vor unberechtigtem Lesen schützen.

Embeddings sollen semantische Repräsentationen erzeugen.

Daraus folgt:

Embedding
≠
Verschlüsselung

Sensible Vektordaten brauchen weiterhin geeigneten Zugriffsschutz.

Ein schönes Beispiel: Supportsystem

Angenommen, ein Unternehmen besitzt:

50.000 gelöste Supporttickets

Neues Ticket:

Seit dem Pluginupdate ist nur noch eine weiße Seite sichtbar.

Embedding:

neues Ticket
↓
Vektor

Dann Suche:

ähnliche alte Tickets

Ergebnisse vielleicht:

Ticket 812:
White Screen nach Pluginupdate

Ticket 1733:
PHP Fatal Error nach Pluginupdate

Ticket 9144:
Theme-Konflikt nach Update

Nun kann ein Mitarbeiter oder Sprachmodell sehen:

Wie wurden ähnliche Probleme gelöst?

Das ist etwas anderes als ein Sprachmodell nach der Lösung zu fragen

Ohne Retrieval:

LLM
→ allgemeines WordPress-Wissen

Mit Embeddings:

LLM
+
ähnliche reale Fälle aus diesem Unternehmen

Damit entsteht firmenspezifisches Wissen zur Laufzeit.

Genau das macht RAG so interessant.

Ein weiteres Beispiel: eigene Wissenswebsite

Stell dir Casiopeya später mit tausenden Wissensartikeln vor.

Nutzer fragt:

Warum zeigt Google meine neue Seite nicht an?

Semantische Suche könnte finden:

Google indexiert meine Seite nicht

robots.txt verstehen

noindex verstehen

XML-Sitemap

Canonical-Tag

Obwohl die Frage keinen dieser exakten Titel nennt.

Das System besitzt damit eine eigene semantische Wissensnavigation.

Embeddings können auch die normale Website-Suche verbessern

Statt nur:

Suche nach exakt enthaltenen Wörtern

könnte eine Suche thematisch passende Artikel finden.

Frage:

Meine Seite taucht nicht bei Google auf.

Treffer:

Google indexiert meine Seite nicht

Das wäre für den Leser deutlich natürlicher.

Trotzdem sollte die Suchoberfläche verständlich bleiben

Der Nutzer muss nicht wissen:

Wir erzeugen gerade einen 1.536-dimensionalen Vektor und führen ANN Retrieval durch.

Er tippt einfach seine Frage.

Gute Technologie verschwindet hinter einer einfachen Nutzung.

Embeddings können ein Wissensnetz automatisch unterstützen

Wir haben bei Casiopeya bewusst Themen-Hubs.

Ein automatisches System könnte jeden neuen Artikel einbetten und fragen:

Welche bestehenden Artikel liegen
semantisch besonders nahe?

Daraus entstehen Kandidaten für:

interne Links,

„Weiterlesen“-Elemente,

Clusterzuordnung,

Duplicate-Prüfung.

Das wäre langfristig ein sehr brauchbarer Baustein einer automatisierten Redaktion.

Embeddings können auch thematisch überraschende Verbindungen zeigen

Zum Beispiel könnte ein Artikel über:

KI-Agenten

starke Nähe zu:

API-Sicherheit

zeigen.

Obwohl beide in unterschiedlichen Navigationsbereichen liegen.

Das kann wertvolle Querverlinkungen sichtbar machen.

Eine starre Kategoriehierarchie würde solche Beziehungen möglicherweise weniger deutlich zeigen.

Genau deshalb sind Wissensnetze nicht dasselbe wie Ordnerbäume

Ordnerstruktur:

Artikel gehört genau hierher.

Embeddingraum:

Artikel besitzt gleichzeitig
Ähnlichkeiten zu vielen Themen.

Beide Modelle ergänzen sich hervorragend.

Navigation gibt klare Orientierung.

Semantische Ähnlichkeit zeigt Querbeziehungen.

Embeddings können dabei helfen, neue Themencluster zu entdecken

Wenn über Jahre hunderte Artikel entstehen, kann man ihre Vektoren analysieren.

Vielleicht bilden sich Gruppen rund um:

WordPress-Sicherheit

Performance

Hosting

KI-Automatisierung

Fotografie

Das kann zeigen:

Wo besteht bereits viel Content?

Wo fehlen Verbindungen?

Wo behandeln mehrere Artikel nahezu dasselbe Thema?

Visualisierung ist möglich – aber nur nach Dimensionsreduktion

Ein Embedding besitzt vielleicht sehr viele Dimensionen.

Unser Bildschirm nur zwei.

Um den Vektorraum grafisch darzustellen, müssen die Daten deshalb auf zwei oder drei Dimensionen reduziert werden.

Dann erhält man beispielsweise eine Punktwolke.

  ● ● ●
 ●● ●

             ▲ ▲
            ▲ ▲ ▲

                         ■ ■
                        ■ ■

Die Gruppen können thematische Cluster repräsentieren.

Die Visualisierung ist jedoch eine vereinfachte Projektion.

Nicht der vollständige ursprüngliche Raum.

Nähe in der Grafik ist deshalb nicht exakt dieselbe wie Nähe im Originalraum

Bei der Dimensionsreduktion gehen zwangsläufig Informationen verloren.

Eine hübsche zweidimensionale Karte sollte deshalb eher als Analysehilfe verstanden werden.

Nicht als perfekte Darstellung sämtlicher Embeddingbeziehungen.

Embeddings können auch für personalisierte Empfehlungen genutzt werden

Man könnte beispielsweise ein Profil aus mehreren gelesenen Artikeln ableiten und verwandte Inhalte suchen.

Dabei entstehen allerdings zusätzliche Datenschutzfragen.

Denn aus Nutzungsverhalten werden nun möglicherweise semantische Interessenprofile.

Technisch interessant bedeutet nicht automatisch datenschutzrechtlich oder redaktionell sinnvoll.

Datenminimierung bleibt wichtig

Wenn für eine Suchfunktion reicht:

Dokumentinhalt
+
technische Dokument-ID

muss man nicht automatisch zusätzlich speichern:

Name,

E-Mail,

private Nutzerinformationen.

Dasselbe Prinzip aus Sicherheit & Datenschutz gilt auch bei Vektorsystemen:

Nur Daten speichern und verarbeiten, die für die Aufgabe tatsächlich notwendig sind.

Embeddings können lokal erzeugt werden

Wie Sprachmodelle können auch Embeddingmodelle lokal betrieben werden.

Eine mögliche Architektur:

Dokument
↓
lokales Embeddingmodell
↓
lokale Vektordatenbank
↓
lokales LLM

Damit kann eine vollständige RAG-Pipeline auf eigener Infrastruktur laufen.

Das kann für vertrauliche Wissensbestände interessant sein.

Embeddingmodelle sind oft erheblich kleiner als große generative Modelle

Ihre Aufgabe ist enger:

Input
→ Vektor

statt:

komplexe generative Antwort

Deshalb können spezialisierte Embeddingmodelle in vielen Fällen ressourcenschonender betrieben werden als große Chatmodelle.

Welche Hardware tatsächlich notwendig ist, hängt vom konkreten Modell, Datenvolumen und gewünschten Durchsatz ab.

Bei vielen Dokumenten zählt Durchsatz

Wenn einmalig:

1.000.000 Chunks

eingebettet werden müssen, interessiert:

Wie viele Texte kann das System pro Sekunde verarbeiten?

Das ist eine andere Leistungsanforderung als:

ein einzelner Chat.

Nach der ersten Indexierung müssen häufig nur noch:

neue

oder:

veränderte

Dokumente eingebettet werden.

Embeddings lassen sich gut vorberechnen

Das ist einer ihrer großen praktischen Vorteile.

Dokumenttext ändert sich nicht?

Dann muss sein Vektor nicht bei jeder Suchanfrage neu berechnet werden.

Dokument
↓
einmal Embedding
↓
speichern
↓
tausende Suchanfragen

Nur die jeweilige Query wird neu eingebettet.

Genau diese Vorberechenbarkeit macht semantische Suche skalierbar.

Caching kann zusätzlich helfen

Wiederholt sich dieselbe oder nahezu dieselbe technische Anfrage häufig, können weitere Optimierungen möglich sein.

Aber die größte Einsparung entsteht bereits dadurch:

Dokument-Embeddings werden nicht ständig neu erzeugt.

Wie viele Embeddings benötigt ein Dokument?

Das hängt vom Chunking ab.

Ein Artikel mit:

5.000 Wörtern

könnte beispielsweise in:

10 Chunks

geteilt werden.

Dann entstehen:

10 Embeddings

Ein anderes Chunking könnte:

20

erzeugen.

Das beeinflusst:

Indexgröße,

Retrievalpräzision,

Speicherkosten.

Kleine Chunks erhöhen die Zahl der Vektoren

Angenommen:

100.000 Dokumente.

Durchschnittlich:

10 Chunks.

Dann:

1.000.000 Vektoren

Bei 20 Chunks:

2.000.000 Vektoren

Chunkgröße ist deshalb nicht nur Qualitätsfrage.

Sie ist auch Infrastrukturfrage.

Overlap erhöht die Datenmenge zusätzlich

Wenn benachbarte Chunks sich überlappen:

Chunk 1:
A B C

Chunk 2:
C D E

wird C zweimal eingebettet.

Das hilft möglicherweise, Kontext über Grenzen hinweg zu erhalten.

Es erhöht aber:

Tokenverbrauch bei der Indexierung,

Vektoranzahl beziehungsweise Textmenge,

Redundanz.

Auch dieser Parameter sollte getestet statt dogmatisch festgelegt werden.

Überschriftenbasierte Chunks können bei Wissensartikeln besonders sinnvoll sein

Casiopeya-Artikel besitzen klare H2-Abschnitte.

Ein möglicher Chunk könnte bestehen aus:

H2-Überschrift
+
zugehöriger Text

Damit hat jeder Abschnitt bereits eine semantische Einheit.

Bei sehr langen H2-Abschnitten müsste weiter unterteilt werden.

Die vorhandene Inhaltsstruktur kann also direkt für RAG genutzt werden.

Ein Chunk sollte alleine genügend Sinn ergeben

Schlechter Chunk:

Dies gilt jedoch nur in diesem Fall.

Welcher Fall?

Die notwendige Information befindet sich im vorherigen Chunk.

Besser wäre, Kontext so zu gestalten, dass der Abschnitt möglichst selbstständig interpretierbar bleibt.

Das verbessert sowohl Embeddings als auch spätere LLM-Verarbeitung.

Dokumenttitel können zusätzlich eingebunden werden

Chunk:

"TTL beschreibt die Lebensdauer ..."

Mit Dokumenttitel:

Dokument:
Was ist DNS?

Abschnitt:
TTL

Text:
TTL beschreibt die Lebensdauer ...

Nun besitzt das Embedding mehr Kontext darüber, worum es geht.

Das kann die Retrievalqualität verbessern.

Aber Metadaten dürfen das Embedding nicht dominieren

Wenn in jedem Chunk hundertmal steht:

CASIOPEYA KI Wissen WordPress ...

wird die Repräsentation unnötig verzerrt.

Auch bei Embeddings gilt:

relevante Kontextinformation ja,

Keyword-Stuffing nein.

Embeddings müssen mit realen Fragen getestet werden

Ein theoretisch starkes Modell kann für deine Fachsprache schwächer sein.

Zum Beispiel:

deutsche Steuerbegriffe,

österreichisches Recht,

WordPress-Fachbegriffe,

medizinische Terminologie.

Deshalb sollte ein Testset aus wirklichen späteren Nutzerfragen bestehen.

Nicht nur aus generischen Benchmarkfragen.

Die richtige Evaluation könnte so aussehen

Frage 1
→ erwartete Dokumente A, C

Frage 2
→ erwartetes Dokument F

Frage 3
→ erwartete Dokumente B, D

Dann:

Embeddingmodell A
↓
Top 5

Embeddingmodell B
↓
Top 5

Vergleichen.

Erst dann weißt du, welches Modell für dein System besser funktioniert.

Der billigste Embeddingdienst kann wirtschaftlich trotzdem der beste sein

Wenn Modell A:

minimal bessere Benchmarkwerte

aber:

vierfach höhere Kosten

besitzt, kann Modell B für Millionen Dokumente vernünftiger sein.

Umgekehrt können schlechte Retrievalergebnisse anschließend teure große LLM-Aufrufe verursachen.

Man sollte deshalb die gesamte Pipeline betrachten.

Retrievalqualität beeinflusst LLM-Kosten

Schlechtes Retrieval:

20 Chunks laden
↓
großer Kontext
↓
teure Antwort

Gutes Retrieval:

5 relevante Chunks
↓
kleinerer Kontext
↓
bessere Informationsdichte

Embeddings beeinflussen damit indirekt:

Tokenverbrauch,

Latenz,

Halluzinationsrisiko.

Ein gutes Retrieval kann ein kleineres LLM leistungsfähiger machen

Großes Modell ohne passende Informationen:

muss raten

Kleineres Modell mit:

exakten relevanten Dokumenten

kann bei einer konkreten Wissensaufgabe hervorragend funktionieren.

Das zeigt erneut:

Modellgröße ist nur ein Teil der KI-Architektur.

Die Wissensbasis kann wichtiger sein als das Chatmodell

Für einen Firmenassistenten interessiert den Mitarbeiter vielleicht:

Wie lautet unsere interne Reisekostenregel?

Das größte allgemeine Modell der Welt hilft wenig, wenn es diese interne Richtlinie nicht kennt.

Ein gutes Embedding- und Retrievalsystem liefert:

die richtige Richtlinie.

Dann braucht das Sprachmodell hauptsächlich noch:

lesen,

zusammenfassen,

erklären.

Embeddings verschieben KI vom Modellwissen zu eigenem Wissen

Ohne Retrieval:

Was weiß das Modell?

Mit Retrieval:

Was steht in meinen Daten?

Das ist ein fundamentaler Unterschied.

Gerade für Unternehmen und Wissensportale ist das häufig wichtiger als die nächste kleine Verbesserung eines allgemeinen Sprachmodells.

Embeddings und Fine-Tuning werden häufig verwechselt

Du möchtest ein LLM mit deiner Unternehmensdokumentation verbinden.

Idee:

Dann trainiere ich das Modell mit allen PDFs.

Das ist häufig nicht die passende erste Lösung.

Wenn sich Wissen regelmäßig ändert, ist Retrieval meist wesentlich flexibler.

Dokument ändern
↓
Embedding aktualisieren

statt:

Dokument ändern
↓
Modell erneut trainieren

Fine-Tuning verändert eher das Modellverhalten

Vereinfacht:

RAG / Retrieval
→ Welche Information bekommt das Modell?
Fine-Tuning
→ Wie verhält sich das Modell?

Das ist keine absolute Trennung für jeden denkbaren Anwendungsfall.

Als praktisches Grundmodell ist sie sehr hilfreich.

Embeddings und Kontextfenster ergänzen sich

Ein riesiger Dokumentbestand:

10 Millionen Tokens

passt vielleicht nicht sinnvoll gleichzeitig in den Modellkontext.

Embeddings suchen:

die relevanten 5.000 Tokens

Diese gelangen dann ins Kontextfenster.

Damit löst Retrieval ein fundamentales Kontextproblem.

Man kann sich Embeddings als Bibliothekar vorstellen

Das Sprachmodell ist der Fachautor.

Der Embeddingindex ist der Bibliothekar.

Frage:

Was sagen unsere Unterlagen über Backups?

Der Bibliothekar sucht:

Regal 4
Ordner 7
Seiten 23–27

Der Autor liest diese Unterlagen und formuliert die Antwort.

Ohne Bibliothekar müsste der Autor:

die gesamte Bibliothek gleichzeitig lesen.

Oder:

aus dem Gedächtnis raten.

Eine gute Bibliothek braucht trotzdem Ordnung

Der beste semantische Suchalgorithmus hilft wenig, wenn:

Dokumente doppelt,

veraltet,

falsch,

schlecht benannt,

ohne Version

vorliegen.

RAG und Embeddings machen gutes Informationsmanagement nicht überflüssig.

Sie machen dessen Qualität sogar besonders sichtbar.

Garbage in, garbage out gilt auch hier

Wissensbasis:

falsche Anleitung
↓
perfektes Embedding
↓
perfektes Retrieval
↓
LLM
↓
perfekt formulierte falsche Antwort

Die Technik hat exakt funktioniert.

Die Ausgangsdaten waren schlecht.

Retrievalqualität und Wissensqualität müssen deshalb getrennt betrachtet werden.

Ein sinnvoller Produktionsprozess besitzt mehrere Qualitätsebenen

Dokumentqualität
↓
Chunkqualität
↓
Embeddingqualität
↓
Retrievalqualität
↓
Reranking
↓
Kontextqualität
↓
LLM-Antwort
↓
Verifikation

Jede Ebene beeinflusst die nächste.

Das erklärt auch, warum RAG-Projekte manchmal trotz eines sehr guten Sprachmodells enttäuschen.

Embeddings sind nicht „kleine LLM-Gedanken“

Ein weiterer falscher Eindruck wäre:

Das Embedding enthält die Zusammenfassung dessen, was das Sprachmodell über den Text denkt.

Ein Embedding ist eine numerische Repräsentation, die für bestimmte Ähnlichkeits- und Machine-Learning-Aufgaben optimiert wurde.

Es ist keine versteckte kleine Prosazusammenfassung.

Man kann Embeddings deshalb nicht sinnvoll lesen

[0.81, -0.27, 0.14, ...]

sagt einem Redakteur nichts.

Das ist völlig in Ordnung.

Embeddings sind eine Maschinenschnittstelle.

Menschen arbeiten weiterhin mit:

Text,

Titeln,

Dokumenten.

Was du dir über Embeddings merken solltest

Embeddings übersetzen Inhalte in numerische Vektorrepräsentationen.

Text
↓
Embedding-Modell
↓
Vektor

Semantisch ähnliche Inhalte können dadurch ähnliche Positionen beziehungsweise Richtungen in einem hochdimensionalen Vektorraum erhalten. Solche Repräsentationen werden unter anderem für semantische Suche, Ähnlichkeitsvergleich, Clustering und Klassifikation verwendet. (OpenAI)

Ein Embedding ist:

keine Datenbankantwort.

keine Verschlüsselung.

kein Hash.

keine verlustfreie Kompression.

keine Garantie für Wahrheit.

Es ist eine mathematische Repräsentation, mit der andere Systeme arbeiten können.

Der wichtigste Anwendungsfall für unser weiteres KI-Verständnis lautet:

Dokumente
↓
Embeddings
↓
Vektordatenbank

Frage
↓
Embedding
↓
ähnliche Dokumente finden

Die Ähnlichkeit kann beispielsweise über Cosine Similarity beziehungsweise verwandte Vektoroperationen bestimmt werden. Satz-Embedding-Verfahren wie Sentence-BERT wurden ausdrücklich dafür entwickelt, semantische Repräsentationen effizient über solche Ähnlichkeitsmaße vergleichen zu können. (arXiv)

Für große Datenbestände werden die Vektoren häufig in darauf optimierten Suchsystemen beziehungsweise Vektordatenbanken gespeichert. (OpenAI Help Center)

Dokumente werden dabei meist nicht als ein riesiger Block behandelt.

Sie werden in Chunks zerlegt:

Dokument
↓
Chunk 1
Chunk 2
Chunk 3
↓
je ein Embedding

Bei einer Anfrage werden anschließend passende Chunks gefunden.

Frage
↓
Embedding
↓
Top-K ähnliche Chunks

Diese Chunks können danach einem Sprachmodell als Kontext gegeben werden.

Damit entsteht der Kern unseres nächsten Themas:

Retrieval
+
Generation
=
RAG

Besonders wichtig ist aber:

semantisch ähnlich
≠
faktisch identisch

Die Sätze:

Maximal 16 GB RAM.

und:

Maximal 32 GB RAM.

können semantisch extrem ähnlich sein.

Trotzdem widersprechen sie sich an der entscheidenden Stelle.

Embeddings helfen deshalb beim Finden.

Sie übernehmen nicht automatisch die Faktenprüfung.

Ebenso sollte semantische Suche klassische Methoden nicht unnötig verdrängen.

Für:

Produktnummern
Fehlercodes
exakte Namen
URLs

kann Keyword-Suche hervorragend sein.

Eine starke Architektur kombiniert deshalb häufig:

Keyword Search
+
Vector Search
+
Metadatenfilter
+
Reranking

Und gerade für eigene KI-Wissenssysteme ist noch ein Prinzip entscheidend:

Nicht alles Wissen
in das Sprachmodell trainieren.

Sondern relevantes Wissen
im richtigen Moment finden
und in den Kontext geben.

Embeddings liefern dafür eines der wichtigsten Werkzeuge.