RAG von Grund auf – Teil 3: Embeddings und Vektorsuche verstehen

AI EngineeringCost-Aware AI SystemsRetrieval Augmented Generation

In Teil 1 haben wir RAG als Zusammenspiel von Retrieval, Augmentation und Generation betrachtet.

In Teil 2 ging es darum, wie Dokumente durch Parsing, OCR und Chunking überhaupt erst in durchsuchbare Informationseinheiten zerlegt werden.

Jetzt kommt der nächste Schritt:

Wie kann eine Maschine erkennen, dass zwei Texte inhaltlich ähnlich sind, obwohl sie unterschiedliche Wörter verwenden?

Eine Benutzerfrage könnte lauten:

Wann kann ich während der Probezeit kündigen?

Im Dokument steht aber:

Während der Probezeit kann das Arbeitsverhältnis
mit einer Frist von sieben Tagen aufgelöst werden.

Eine reine Wortsuche sieht zwischen beiden Texten nur begrenzte Übereinstimmung.

Semantisch behandeln sie jedoch dasselbe Thema.

Genau hier kommen Embeddings und Vektorsuche ins Spiel.


1. Von Text zu Zahlen

Computer arbeiten nicht direkt mit Bedeutung.

Ein Suchsystem benötigt eine mathematische Repräsentation von Text.

Eine sehr einfache Repräsentation könnte beispielsweise zählen, welche Wörter vorkommen:

Probezeit       1
Kündigung       1
Arbeitsvertrag  0
Ferien          0

Damit entsteht bereits eine numerische Darstellung.

Moderne Embedding-Modelle gehen wesentlich weiter.

Sie bilden Texte auf Vektoren ab, deren Position im Vektorraum semantische Eigenschaften des Textes repräsentiert.

Vereinfacht:

"Wie lange ist die Kündigungsfrist?"
                ↓
        Embedding-Modell
                ↓
[0.12, -0.44, 0.91, 0.03, ...]

Diese Zahlenfolge ist ein Embedding.


2. Was ist ein Vektor?

Mathematisch ist ein Vektor zunächst eine geordnete Liste von Zahlen.

Ein zweidimensionaler Vektor könnte beispielsweise sein:

[3, 5]

Ein dreidimensionaler:

[3, 5, 2]

Embeddings besitzen wesentlich mehr Dimensionen.

Beispielsweise:

[0.021, -0.481, 0.173, ..., 0.044]

mit möglicherweise:

384 Dimensionen
768 Dimensionen
1024 Dimensionen
1536 Dimensionen
...

Die konkrete Dimension hängt vom Embedding-Modell ab.


3. Was bedeutet Dimension?

Eine Dimension entspricht einer Position im Vektor.

Ein Vektor mit vier Dimensionen könnte so aussehen:

[
  0.2,
 -0.7,
  0.4,
  0.1
]

Bei Text-Embeddings darf man diese Dimensionen normalerweise nicht naiv interpretieren als:

Dimension 1 = Kündigung
Dimension 2 = Probezeit
Dimension 3 = Arbeitsrecht

So funktionieren moderne Embeddings nicht.

Bedeutung ist verteilt über viele Dimensionen repräsentiert.

Man spricht deshalb von einer distributed representation.


4. Was ist ein Embedding?

Ein Embedding ist eine gelernte numerische Repräsentation eines Objekts.

Das Objekt kann sein:

  • ein Wort,
  • ein Satz,
  • ein Absatz,
  • ein Chunk,
  • ein Dokument,
  • ein Bild,
  • Audio,
  • Code.

Im RAG-Kontext interessieren uns zunächst Text-Embeddings.

Text
 ↓
Embedding-Modell
 ↓
Dense Vector

Die entscheidende Eigenschaft lautet:

Semantisch ähnliche Texte sollen im Vektorraum nahe beieinander liegen.


5. Der semantische Vektorraum

Stellen wir uns der Einfachheit halber einen zweidimensionalen Raum vor.

                 Ferien
                   •

     Probezeit •       • Kündigung

                              • Vertragsende


        • Datenbank

                    • Netzwerk

Texte über Arbeitsverhältnisse liegen in diesem vereinfachten Beispiel nahe beieinander.

Texte über Datenbanken und Netzwerke liegen an einer anderen Stelle.

Reale Embedding-Räume besitzen nicht zwei, sondern hunderte oder tausende Dimensionen.

Wir können sie nicht direkt visualisieren.

Das Grundprinzip bleibt jedoch dasselbe.


6. Semantische Ähnlichkeit

Betrachten wir zwei Texte:

A:
Wie lange ist die Kündigungsfrist während der Probezeit?
B:
Während der Probezeit kann das Arbeitsverhältnis
mit einer Frist von sieben Tagen beendet werden.

Lexikalisch sind sie nicht identisch.

Semantisch sind sie stark verwandt.

Ein gutes Embedding-Modell erzeugt deshalb Vektoren, die nahe beieinander liegen.

Embedding(A) ≈ Embedding(B)

Ein Text über Ferien sollte weiter entfernt liegen:

Embedding(A) ≠ Embedding(Ferienregelung)

7. Warum Embeddings für RAG interessant sind

Eine klassische Keyword-Suche sucht primär nach Wörtern.

Eine Embedding-Suche sucht nach semantischer Ähnlichkeit.

Beispiel:

Frage:

Wie kann ich meinen Vertrag in der Probezeit beenden?

Dokument:

Während der Probezeit beträgt die Kündigungsfrist sieben Tage.

Es existiert keine perfekte Wortübereinstimmung zwischen:

Vertrag beenden

und:

Kündigungsfrist

Ein semantisches Modell kann die Beziehung trotzdem erkennen.


8. Dense Vector

Text-Embeddings werden häufig als Dense Vectors bezeichnet.

Dense bedeutet, dass die meisten Dimensionen einen Wert besitzen.

Beispiel:

[0.14, -0.22, 0.81, 0.04, -0.37, ...]

Fast jede Position enthält eine Zahl.

Das Gegenstück ist ein Sparse Vector, bei dem die meisten Werte null sind.

Sparse Retrieval behandeln wir ausführlich in Teil 4.


9. Dense Retrieval

Beim Dense Retrieval werden sowohl Dokumente als auch Suchanfragen in Dense Vectors umgewandelt.

Während der Ingestion:

Chunk
 ↓
Embedding-Modell
 ↓
Chunk-Vektor
 ↓
Index

Bei einer Suchanfrage:

Frage
 ↓
dasselbe Embedding-Modell
 ↓
Query-Vektor
 ↓
Ähnlichkeitssuche

Danach sucht das System nach den Chunk-Vektoren, die dem Query-Vektor am ähnlichsten sind.


10. Query Embedding

Das Embedding einer Suchanfrage wird häufig als Query Embedding bezeichnet.

Beispiel:

Query:
"Wie lange ist die Kündigungsfrist?"

        ↓

Embedding Model

        ↓

Query Vector

Dieser Vektor wird mit den bereits indexierten Chunk-Vektoren verglichen.


11. Document Embedding

Analog kann man von Document Embeddings sprechen.

Im RAG-Kontext handelt es sich häufig genauer um:

Chunk Embeddings

weil nicht das gesamte Dokument, sondern einzelne Chunks eingebettet werden.

Aus:

Personalreglement.pdf

entstehen:

Chunk 1 → Vector 1
Chunk 2 → Vector 2
Chunk 3 → Vector 3
...

Damit kann die Suche gezielt einzelne relevante Passagen finden.


12. Bi-Encoder

Die klassische Embedding-Suche basiert typischerweise auf einem Bi-Encoder beziehungsweise Dual Encoder.

Die Grundidee:

Die Frage und der Dokumenttext werden getrennt verarbeitet.

Frage
 ↓
Encoder
 ↓
Query Vector

und:

Chunk
 ↓
Encoder
 ↓
Chunk Vector

Danach werden die beiden Vektoren mathematisch verglichen.

Das ist entscheidend.

Der Encoder sieht beim Erzeugen des Dokumentvektors die spätere Benutzerfrage nicht.


13. Warum getrennte Kodierung wichtig ist

Wenn Dokumente unabhängig von einer späteren Frage eingebettet werden können, müssen ihre Embeddings nur einmal berechnet werden.

Beispiel:

100'000 Chunks
      ↓
einmal Embeddings berechnen
      ↓
Vektoren speichern

Danach kommen beliebig viele Fragen:

Frage A → Query Embedding
Frage B → Query Embedding
Frage C → Query Embedding

Die Dokumentvektoren bleiben bestehen.

Das macht Dense Retrieval skalierbar.


14. Der Preis des Bi-Encoder-Prinzips

Die getrennte Verarbeitung besitzt aber einen Nachteil.

Das Modell bewertet nicht direkt:

Wie relevant ist genau dieser Absatz für genau diese Frage?

Es erzeugt nur zwei unabhängige Repräsentationen.

Danach wird deren mathematische Nähe gemessen.

Deshalb ist ein Bi-Encoder schnell und skalierbar, aber nicht immer maximal präzise.

Später werden wir sehen, warum Cross-Encoder häufig als zweite Ranking-Stufe eingesetzt werden.


15. Ähnlichkeit messen

Wir besitzen nun zwei Vektoren:

Query Vector

und:

Chunk Vector

Jetzt benötigen wir eine mathematische Funktion, um deren Ähnlichkeit oder Distanz zu bestimmen.

Drei wichtige Verfahren sind:

  • Cosine Similarity,
  • Dot Product / Inner Product,
  • Euclidean Distance / L2.

16. Cosine Similarity

Die Cosine Similarity misst den Winkel zwischen zwei Vektoren.

Die Formel lautet:

cos(A,B) = (A · B) / (||A|| ||B||)

Dabei ist:

A · B

das Skalarprodukt und:

||A||

die Länge des Vektors.

Die Intuition:

Zwei Vektoren, die in eine ähnliche Richtung zeigen, sind ähnlich.


17. Cosine Similarity intuitiv

Stellen wir uns zwei Pfeile vor.

A ↗
B ↗

Beide zeigen fast in dieselbe Richtung.

Hohe Cosine Similarity.

Dagegen:

A ↗
B ↙

Sie zeigen in entgegengesetzte Richtungen.

Niedrige beziehungsweise negative Cosine Similarity.

Die Länge der Pfeile spielt bei der Cosine Similarity keine direkte Rolle.

Entscheidend ist der Winkel.


18. Wertebereich der Cosine Similarity

Mathematisch liegt die Cosine Similarity zwischen:

-1 und 1

Vereinfacht:

 1    gleiche Richtung
 0    orthogonal
-1    entgegengesetzte Richtung

Bei realen Embedding-Modellen hängt die praktische Interpretation der Scores stark vom Modell ab.

Ein Wert wie:

0.82

ist deshalb nicht universell gleichbedeutend mit:

82 % relevant.

Das wäre eine falsche Interpretation.


19. Similarity Score ist keine Wahrscheinlichkeit

Das ist eine wichtige Falle.

Ein Similarity Score von:

0.76

bedeutet nicht:

76 % Wahrscheinlichkeit, dass der Chunk relevant ist.

Der Score ist ein mathematisches Ähnlichkeitsmass.

Seine praktische Bedeutung hängt ab von:

  • Embedding-Modell,
  • Korpus,
  • Query-Typ,
  • Normalisierung,
  • Distanzfunktion.

Thresholds müssen deshalb empirisch bestimmt werden.


20. Dot Product

Beim Dot Product beziehungsweise Inner Product werden die entsprechenden Vektorkomponenten multipliziert und addiert.

A · B = Σ AiBi

Beispiel:

A = [1, 2]
B = [3, 4]

A · B = 1×3 + 2×4
      = 11

Bei normalisierten Vektoren hängt Dot Product eng mit Cosine Similarity zusammen.


21. Normalisierte Vektoren

Ein Vektor kann auf Länge 1 normalisiert werden.

Dann gilt:

||A|| = 1

Sind beide Vektoren normalisiert, vereinfacht sich Cosine Similarity zu:

cos(A,B) = A · B

Deshalb können Cosine und Inner Product bei normalisierten Embeddings äquivalent sein.


22. Euclidean Distance

Die Euclidean Distance, häufig L2 Distance, misst den direkten Abstand zwischen zwei Punkten.

In zwei Dimensionen entspricht das dem bekannten geometrischen Abstand.

distance(A,B) = sqrt(Σ(Ai-Bi)²)

Hier gilt:

kleiner Abstand = ähnlicher

Bei Cosine Similarity gilt dagegen normalerweise:

höherer Score = ähnlicher

Diese Richtung sollte man bei Datenbanken und APIs beachten.


23. Cosine versus L2 versus Inner Product

Keine Distanzmetrik ist universell die beste.

Entscheidend ist, womit das Embedding-Modell trainiert wurde und welche Metrik empfohlen wird.

MetrikGrundidee
CosineWinkel zwischen Vektoren
Inner ProductSkalarprodukt
L2geometrischer Abstand

Man sollte die Distanzmetrik nicht beliebig wechseln, nur weil eine Datenbank mehrere Optionen anbietet.


24. Ein einfaches Retrieval-Beispiel

Angenommen, unser Index enthält vier Chunks:

A:
Die Kündigungsfrist während der Probezeit beträgt sieben Tage.

B:
Mitarbeiter haben Anspruch auf 25 Ferientage.

C:
Die Probezeit dauert drei Monate.

D:
Die VPN-Verbindung benötigt eine Zwei-Faktor-Authentifizierung.

Frage:

Wann kann ich während der Probezeit kündigen?

Das Embedding-Modell erzeugt einen Query-Vektor.

Danach könnten die Ähnlichkeiten beispielsweise sein:

A → 0.86
C → 0.71
B → 0.39
D → 0.18

Dann wird sortiert:

1. A
2. C
3. B
4. D

Das ist ein Ranking.


25. Top-k

Mit Top-k bezeichnet man die k bestbewerteten Treffer.

Bei:

k = 3

würde das System zurückgeben:

A
C
B

Der vierte Treffer wird verworfen.

Top-k ist ein zentraler Parameter im Retrieval.


26. Warum Top-k wichtig ist

Ist k zu klein:

k = 1

kann ein relevanter Treffer knapp verloren gehen.

Ist k sehr gross:

k = 100

gelangen viele irrelevante Kandidaten in spätere Stufen.

Das verursacht:

  • mehr Rechenaufwand,
  • mehr Reranking-Kosten,
  • mehr Rauschen,
  • potenziell grössere Prompts.

Top-k ist deshalb ein Recall-gegen-Kosten-Trade-off.


27. Top-k ist nicht Prompt-k

Ein häufiger Denkfehler:

Wenn ich Top 20 retrieve, muss ich 20 Chunks an das LLM schicken.

Nein.

Man kann beispielsweise:

Retrieval Top-k = 50

danach reranken:

50 → 10

und schliesslich nur:

5 Chunks

in den Prompt übernehmen.

Retrieval-Kandidaten und finaler Kontext sind unterschiedliche Dinge.


28. Embedding-Modell und LLM sind unterschiedliche Modelle

Ein RAG-System verwendet häufig mindestens zwei unterschiedliche Modelltypen.

Embedding-Modell

für Retrieval und:

Generatives LLM

für die Antwort.

Das Embedding-Modell erzeugt:

Vector

Das LLM erzeugt:

Text

Ein starkes Chatmodell ist nicht automatisch ein starkes Embedding-Modell.


29. Embedding Dimension

Ein Embedding-Modell definiert normalerweise eine feste Vektordimension.

Beispielsweise hypothetisch:

Model A → 384 Dimensionen
Model B → 768 Dimensionen
Model C → 1024 Dimensionen

Alle Vektoren innerhalb desselben Index müssen zur erwarteten Dimension passen.

Ein 768-dimensionaler Query-Vektor kann nicht sinnvoll direkt mit einem 1024-dimensionalen Dokumentvektor verglichen werden.


30. Embedding-Modelle sind nicht austauschbar

Noch wichtiger:

Zwei Modelle mit derselben Dimension erzeugen nicht automatisch kompatible Vektorräume.

Angenommen:

Model A → 768 Dimensionen
Model B → 768 Dimensionen

Trotzdem gilt nicht:

Embedding_A(Text)
≈
Embedding_B(Text)

Die Dimension sagt nur etwas über die Form des Vektors aus.

Nicht über die Bedeutung der einzelnen Koordinaten.


31. Warum ein Modellwechsel Re-Indexing verlangt

Angenommen, alle Dokumente wurden mit Modell A eingebettet.

Chunks
 ↓
Model A
 ↓
Index

Später erzeugt man Query-Vektoren mit Modell B:

Query
 ↓
Model B
 ↓
Vector

Dann vergleicht man Vektoren aus zwei unterschiedlichen semantischen Räumen.

Das ist normalerweise nicht sinnvoll.

Deshalb gilt:

Ein Wechsel des Embedding-Modells erfordert in der Regel neue Embeddings für den gesamten betroffenen Index.


32. Embedding-Modell wählen

Die Qualität eines Embedding-Modells hängt vom Anwendungsfall ab.

Relevante Kriterien sind:

  • Sprache,
  • Mehrsprachigkeit,
  • Domäne,
  • maximale Eingabelänge,
  • Retrieval-Qualität,
  • Dimension,
  • Geschwindigkeit,
  • Speicherbedarf,
  • Lizenz,
  • Hardwareanforderungen.

Ein englisch optimiertes Modell ist nicht automatisch optimal für deutschsprachige Dokumente.


33. Multilingual Embeddings

Ein multilinguales Embedding-Modell versucht, semantisch ähnliche Texte verschiedener Sprachen nahe beieinander abzubilden.

Beispiel:

DE:
Wie lange ist die Kündigungsfrist?

EN:
What is the notice period?

PT:
Qual é o prazo de aviso prévio?

Idealerweise liegen alle drei Embeddings nahe beieinander.

Das ermöglicht Cross-Lingual Retrieval.


34. Cross-Lingual Retrieval

Bei Cross-Lingual Retrieval kann die Suchsprache von der Dokumentsprache abweichen.

Beispiel:

Frage auf Deutsch
        ↓
Embedding
        ↓
französisches Dokument

Das kann in mehrsprachigen Wissensbeständen sehr wertvoll sein.

Die tatsächliche Qualität hängt stark vom Embedding-Modell ab.


35. Domain-Specific Embeddings

Allgemeine Embedding-Modelle kennen viele Sprachmuster.

Spezialisierte Domänen können jedoch besondere Anforderungen haben.

Beispiele:

  • Medizin,
  • Recht,
  • Finanzwesen,
  • wissenschaftliche Literatur,
  • Source Code.

Ein Begriff kann in einer Fachdomäne eine präzisere Bedeutung besitzen als in Alltagssprache.

Deshalb existieren domänenspezifische Embedding-Modelle.


36. Query und Passage können unterschiedliche Rollen haben

Einige Embedding-Modelle unterscheiden explizit zwischen:

Query

und:

Passage

Das kann durch spezielle Präfixe oder unterschiedliche Encoder geschehen.

Beispielsweise konzeptionell:

query: Kündigungsfrist Probezeit

und:

passage: Während der Probezeit beträgt ...

Man sollte deshalb die Dokumentation des verwendeten Modells beachten.


37. Asymmetric Search

RAG ist häufig eine asymmetrische Suche.

Die Query ist kurz:

Wie lange ist die Probezeit?

Die Passage ist länger:

Das Arbeitsverhältnis beginnt mit einer Probezeit
von drei Monaten. Während dieser Zeit ...

Query und Passage besitzen unterschiedliche sprachliche Formen.

Embedding-Modelle für Retrieval werden häufig genau für diese Art von Aufgabe trainiert.


38. Symmetric Search

Bei symmetrischer Suche besitzen Query und Kandidaten ähnliche Form.

Beispielsweise:

Satz A ↔ Satz B

bei Duplicate Detection.

Das unterscheidet sich von:

Frage ↔ Passage

bei Retrieval.

Nicht jedes Embedding-Modell ist für beide Aufgaben gleich gut.


39. Sentence Embeddings

Sentence Embeddings repräsentieren Sätze oder kurze Textpassagen als einzelne Vektoren.

Der Begriff ist historisch verbreitet, obwohl moderne Modelle häufig auch Absätze oder längere Texte einbetten können.

Die zentrale Idee bleibt:

variable Textlänge
       ↓
fester Vektor

40. Pooling

Transformer erzeugen intern Repräsentationen für einzelne Tokens.

Für Retrieval benötigt man häufig einen einzigen Vektor für den gesamten Text.

Dazu wird Pooling verwendet.

Vereinfacht:

Token 1 Vector
Token 2 Vector
Token 3 Vector
...
      ↓
    Pooling
      ↓
Text Vector

Mögliche Verfahren sind beispielsweise Mean Pooling oder spezielle Repräsentationstokens.

Die konkrete Methode gehört normalerweise zum Embedding-Modell.


41. Mean Pooling

Beim Mean Pooling werden Token-Repräsentationen gemittelt.

Vereinfacht:

Text Vector =
Durchschnitt aller relevanten Token-Vektoren

Das ist nur eine mögliche Strategie.

Moderne Embedding-Modelle werden oft gezielt so trainiert, dass die resultierende gepoolte Repräsentation für semantische Suche geeignet ist.


42. Training von Embedding-Modellen

Embedding-Modelle lernen typischerweise anhand von Beispielen, welche Texte ähnlich oder unähnlich sein sollen.

Beispielsweise:

Query:
Wie lange dauert die Probezeit?

Positive Passage:
Die Probezeit beträgt drei Monate.

Negative Passage:
Der Ferienanspruch beträgt 25 Tage.

Das Training versucht:

distance(Query, Positive) ↓
distance(Query, Negative) ↑

43. Positive und Negative Samples

Ein Positive Sample ist ein relevanter Text.

Ein Negative Sample ist ein nicht relevanter Text.

Besonders wichtig sind Hard Negatives.


44. Hard Negatives

Ein Hard Negative ist ein Text, der der Query ähnlich erscheint, aber nicht die gesuchte Information enthält.

Beispiel:

Query:

Wie lange ist die Kündigungsfrist während der Probezeit?

Positive:

Während der Probezeit beträgt die Kündigungsfrist sieben Tage.

Hard Negative:

Die Probezeit dauert drei Monate.

Der Hard Negative enthält dieselben Themenbegriffe, beantwortet aber die Frage nicht.

Solche Beispiele helfen Modellen, feinere Relevanzunterschiede zu lernen.


45. Semantic Similarity ist nicht Relevanz

Dieser Unterschied ist fundamental.

Ein Chunk kann semantisch ähnlich zur Frage sein, ohne sie zu beantworten.

Frage:

Wie hoch ist der Ferienanspruch?

Chunk:

Ferien müssen mit dem Vorgesetzten abgestimmt werden.

Hohe thematische Ähnlichkeit.

Aber keine Antwort auf die konkrete Frage.

Deshalb gilt:

Similarity ist nicht dasselbe wie Relevance.

Dense Retrieval erzeugt Kandidaten.

Es löst das vollständige Relevanzproblem nicht.


46. Warum Dense Search allein scheitern kann

Dense Search ist stark bei:

  • Paraphrasen,
  • Synonymen,
  • semantischen Beziehungen,
  • natürlicher Sprache.

Sie kann schwächer sein bei:

  • exakten IDs,
  • Artikelnummern,
  • seltenen Namen,
  • Produktcodes,
  • Paragraphennummern,
  • Versionsnummern,
  • exakten Zahlen.

Beispiel:

INC-847291

besitzt kaum „Semantik“.

Hier ist exaktes lexikalisches Matching häufig stärker.


47. Das Exact-Match-Problem

Frage:

Was steht in Ticket INC-847291?

Ein semantisches Embedding kann möglicherweise verschiedene Tickets ähnlich repräsentieren.

Für den Benutzer ist aber genau:

INC-847291

entscheidend.

Eine Keyword- oder Sparse-Suche kann diesen exakten Token sehr stark gewichten.

Genau deshalb kombinieren moderne RAG-Systeme häufig Dense und Sparse Retrieval.

Das ist Thema von Teil 4.


48. Vector Store

Ein Vector Store ist ein System, das Vektoren zusammen mit zugehörigen Daten speichert und Ähnlichkeitssuche ermöglicht.

Konzeptionell:

Vector
+
Chunk Text
+
Metadata

Beispiel:

ID: 42
Vector: [0.12, -0.41, ...]
Text: "Die Kündigungsfrist beträgt sieben Tage."
Document: Personalreglement
Page: 7

49. Vector Database

Der Begriff Vector Database wird häufig für Datenbanksysteme verwendet, die speziell für:

  • Vektorspeicherung,
  • Similarity Search,
  • Indexierung,
  • Metadatenfilter,
  • Skalierung

optimiert sind.

Nicht jeder Vector Store muss eine eigenständige Datenbank sein.

Auch bestehende Datenbanksysteme können Vektorsuche unterstützen.


50. Was wird im Vector Store gespeichert?

Typischerweise mindestens:

ID
Vector

Häufig zusätzlich:

Chunk Text
Document ID
Page
Heading
Language
Date
Source
Permissions
weitere Metadata

Der Vektor allein wäre für eine spätere Antwort nicht ausreichend.

Nach dem Treffer muss das System den ursprünglichen Text wieder abrufen können.


51. Point, Record oder Object

Vektordatenbanken verwenden unterschiedliche Begriffe für eine gespeicherte Einheit.

Beispiele:

Point
Record
Object
Node
Entity

Konzeptionell ist häufig gemeint:

ID
+
Vector
+
Payload / Metadata

Die konkrete Terminologie hängt vom Produkt ab.


52. Payload

Als Payload bezeichnet man häufig die nicht-vektoriellen Daten eines gespeicherten Vektorobjekts.

Beispiel:

vector:
[0.12, ...]

payload:
{
  document_id: "123",
  page: 7,
  text: "...",
  language: "de"
}

Die Payload ermöglicht später:

  • Quellenanzeige,
  • Filterung,
  • Kontextrekonstruktion.

53. Metadata Filtering

Vektorsuche kann mit strukturierten Filtern kombiniert werden.

Beispiel:

Similarity Search
AND
year = 2026
AND
language = "de"

Damit muss das Embedding nicht jede Einschränkung semantisch lösen.

Das ist besonders nützlich für:

  • Datum,
  • Dokumenttyp,
  • Mandant,
  • Benutzerrechte,
  • Kategorie,
  • Sprache.

54. Pre-Filtering und Post-Filtering

Bei Pre-Filtering wird der Suchraum vor oder während der Vektorsuche eingeschränkt.

nur Dokumente aus 2026
        ↓
Vektorsuche

Bei Post-Filtering wird zuerst gesucht und danach gefiltert.

Vektorsuche
        ↓
Treffer
        ↓
nur 2026 behalten

Pre-Filtering kann effizienter und für Recall sicherer sein, wenn der Filter zwingend ist.

Post-Filtering kann dazu führen, dass nach dem Filter zu wenige Treffer übrig bleiben.


55. Brute-Force Vector Search

Die einfachste Vektorsuche wäre:

Query Vector
    ↓
mit jedem gespeicherten Vektor vergleichen
    ↓
sortieren

Bei 1’000 Vektoren ist das möglicherweise problemlos.

Bei:

100 Millionen Vektoren

wird es teuer.

Deshalb verwendet man spezielle Indexstrukturen.


56. Exact Nearest Neighbor

Wenn jeder Kandidat exakt verglichen wird, spricht man von Exact Nearest Neighbor Search.

Das liefert mathematisch die exakten nächsten Nachbarn.

Der Nachteil ist der Rechenaufwand.

Mit wachsendem Index wird eine vollständige Suche zunehmend teuer.


57. Approximate Nearest Neighbor

Deshalb verwendet man häufig Approximate Nearest Neighbor, kurz ANN.

Die Idee:

Nicht garantiert den mathematisch absolut nächsten Vektor finden, sondern sehr schnell einen sehr guten Kandidaten.

Das klingt zunächst nach einem Qualitätsverlust.

In der Praxis ermöglicht ANN aber Vektorsuche über sehr grosse Datenmengen.


58. ANN als Trade-off

ANN optimiert den Trade-off zwischen:

Geschwindigkeit
Speicher
Recall

Mehr Suchaufwand kann höheren Recall liefern.

Weniger Suchaufwand kann schnellere Antworten liefern.

Vektordatenbanken bieten dafür unterschiedliche Indexparameter.


59. Was bedeutet Nearest Neighbor?

Angenommen, der Query-Vektor liegt hier:

              A •

        Q •

              B •

                         C •

Die nächsten Nachbarn zu Q sind A und B.

C liegt weiter entfernt.

Das System sucht also geometrisch nach nahegelegenen Punkten im hochdimensionalen Vektorraum.


60. HNSW

Eine der wichtigsten ANN-Strukturen ist HNSW:

Hierarchical Navigable Small World

HNSW organisiert Vektoren als Graph.

Jeder Punkt ist mit bestimmten anderen Punkten verbunden.

Die Suche muss dadurch nicht jeden Vektor prüfen.


61. HNSW intuitiv

Stellen wir uns Städte vor.

Eine naive Suche würde die Entfernung zu jeder Stadt berechnen.

HNSW funktioniert eher wie ein Strassennetz mit verschiedenen Ebenen.

Oben existieren wenige grosse Verbindungen:

Zürich ───────── Bern ───────── Genf

Auf tieferen Ebenen werden die Verbindungen feiner:

Olten ─ Aarau ─ Zürich

Die Suche springt zunächst grob durch den Raum und wird danach immer präziser.


62. Hierarchie bei HNSW

Das „Hierarchical“ in HNSW bedeutet, dass der Graph mehrere Ebenen besitzt.

Vereinfacht:

Level 2:
A -------- F -------- K

Level 1:
A --- C --- F --- H --- K

Level 0:
A-B-C-D-E-F-G-H-I-J-K

Die Suche beginnt auf einer höheren Ebene und bewegt sich schrittweise in Richtung des Query-Vektors.

Danach steigt sie in feinere Ebenen hinab.


63. Small World

Der Begriff Small World stammt aus Graphstrukturen, bei denen weit entfernte Regionen durch wenige Verbindungen erreichbar sind.

Dadurch kann die Suche schnell grosse Bereiche des Vektorraums überspringen.

Das macht HNSW für hochdimensionale Vektorsuche sehr leistungsfähig.


64. HNSW ist approximativ

HNSW durchsucht nicht zwingend jeden möglichen Kandidaten.

Deshalb kann der mathematisch exakte nächste Nachbar theoretisch verpasst werden.

Die Suchparameter beeinflussen, wie gründlich gesucht wird.

Mehr Gründlichkeit:

höherer Recall
aber
mehr Latenz

Weniger Gründlichkeit:

schneller
aber
potenziell weniger Recall

65. efSearch

Ein häufiger HNSW-Parameter ist konzeptionell efSearch.

Er beeinflusst, wie viele Kandidaten während der Suche berücksichtigt werden.

Vereinfacht:

kleines efSearch
→ schneller
→ möglicherweise weniger Recall
grosses efSearch
→ gründlicher
→ langsamer

Die genaue Bezeichnung und Implementierung kann je nach System variieren.


66. HNSW-Build-Parameter

Auch beim Aufbau des Graphen existieren Parameter.

Sie beeinflussen beispielsweise:

  • Anzahl der Verbindungen,
  • Indexbauzeit,
  • Speicherbedarf,
  • spätere Suchqualität.

Ein besser vernetzter Graph kann die Suche verbessern, benötigt aber mehr Ressourcen.


67. HNSW-Speicherbedarf

HNSW speichert nicht nur Vektoren.

Zusätzlich benötigt der Graph Verbindungen zwischen Punkten.

Bei Millionen Vektoren kann dieser Overhead erheblich sein.

Deshalb ist Vektorsuche nicht nur eine Frage der Embedding-Grösse.

Auch die Indexstruktur benötigt Speicher.


68. IVF

Eine weitere ANN-Familie ist IVF:

Inverted File Index.

Die Grundidee ist Clustering.

Vektoren werden zunächst grob in Regionen gruppiert.

Cluster A
Cluster B
Cluster C
Cluster D

Bei einer Query werden nur die wahrscheinlich relevanten Cluster durchsucht.


69. IVF intuitiv

Statt jedes Haus in der Schweiz zu prüfen, entscheidet man zunächst:

Die gesuchte Adresse liegt wahrscheinlich im Kanton Solothurn.

Danach sucht man nur dort.

Das reduziert den Suchraum.

Je mehr Cluster untersucht werden, desto höher typischerweise der Recall und desto höher die Kosten.


70. Product Quantization

Product Quantization, kurz PQ, ist eine Technik zur Kompression von Vektoren.

Ein hochdimensionaler Float-Vektor benötigt relativ viel Speicher.

PQ approximiert Vektoren mit kompakteren Codes.

Dadurch sinken:

  • Speicherbedarf,
  • Speicherbandbreite.

Der Preis ist potenzieller Genauigkeitsverlust.


71. Vector Quantization

Allgemeiner bezeichnet Vector Quantization Verfahren, die Vektoren kompakter repräsentieren.

Dabei entsteht ein Trade-off:

weniger Speicher
      ↕
weniger Präzision

Bei sehr grossen Indizes kann dieser Trade-off notwendig sein.


72. Index-Quantisierung versus LLM-Quantisierung

Diese beiden Dinge dürfen nicht verwechselt werden.

LLM-Quantisierung

Modellgewichte
FP16 → INT8 → 4 Bit

reduziert den Speicherbedarf eines Modells.

Vector-Index-Quantisierung

Embedding-Vektoren
→ kompaktere Repräsentation

reduziert den Speicherbedarf des Suchindexes.

Beides verwendet den Begriff Quantisierung, betrifft aber unterschiedliche Daten.


73. Float32

Embedding-Vektoren werden häufig als Gleitkommazahlen gespeichert.

Beispielsweise:

float32

Eine einzelne Dimension benötigt dann typischerweise 4 Byte.

Ein Vektor mit 768 Dimensionen benötigt grob:

768 × 4 Byte
= 3072 Byte
≈ 3 KB

nur für die Rohwerte.


74. Speicher grob abschätzen

Bei einer Million Vektoren mit 768 Float32-Dimensionen:

1'000'000 × 768 × 4 Byte
≈ 3.07 GB

Das berücksichtigt noch nicht:

  • IDs,
  • Payloads,
  • Indexstrukturen,
  • Graphkanten,
  • Datenbank-Overhead.

Der tatsächliche Speicherbedarf liegt deshalb höher.


75. Dimension und Speicher

Höhere Dimension bedeutet tendenziell:

mehr Speicher pro Vektor
mehr Speicherbandbreite
mehr Rechenaufwand

Eine höhere Dimension bedeutet aber nicht automatisch bessere Retrieval-Qualität.

Die Qualität hängt vom trainierten Modell ab.


76. Matryoshka Embeddings

Manche modernen Embedding-Modelle unterstützen Matryoshka Representation Learning.

Die Idee:

Ein grosser Embedding-Vektor kann auf weniger Dimensionen gekürzt werden, während möglichst viel Retrieval-Qualität erhalten bleibt.

Beispielsweise:

1024 Dimensionen
↓
512
↓
256

Damit kann man Speicher und Suchkosten reduzieren.

Das funktioniert aber nur sinnvoll bei Modellen, die entsprechend trainiert wurden.


77. Vector Normalization

Bei manchen Modellen werden Embeddings vor dem Speichern normalisiert.

Vector
 ↓
L2 Normalize
 ↓
Vector mit Länge 1

Das kann Vergleiche vereinfachen und ist insbesondere bei Cosine- beziehungsweise Dot-Product-Suche relevant.

Ob normalisiert werden soll, hängt vom Modell ab.


78. Batch Embedding

Während der Ingestion werden häufig viele Chunks gleichzeitig eingebettet.

Statt:

Chunk 1 → Modell
Chunk 2 → Modell
Chunk 3 → Modell

verwendet man Batches:

Chunk 1
Chunk 2
Chunk 3
...
Chunk 64
     ↓
Embedding Model
     ↓
64 Vektoren

Das kann Hardware wesentlich effizienter nutzen.


79. Embedding Throughput

Für grosse Korpora ist nicht nur die Qualität des Embedding-Modells relevant.

Auch der Throughput zählt.

Beispielsweise:

Chunks pro Sekunde
Tokens pro Sekunde

Bei hundert Chunks spielt das kaum eine Rolle.

Bei Millionen Chunks bestimmt es die Dauer eines Re-Indexings.


80. Embedding Latency

Bei Queries wird normalerweise nur eine kleine Anzahl Texte eingebettet.

Hier interessiert eher die Latenz:

Query
 ↓
Embedding
 ↓
10 ms / 30 ms / 100 ms / ...

Die Query-Embedding-Latenz ist Teil der gesamten RAG-Antwortzeit.


81. Caching

Embeddings können gecacht werden.

Wenn derselbe Text bereits eingebettet wurde, muss die Berechnung nicht zwingend wiederholt werden.

Ein möglicher Schlüssel ist beispielsweise ein Hash aus:

Text
+
Embedding Model
+
Model Version

Damit wird verhindert, dass ein Cache-Eintrag eines anderen Modells verwendet wird.


82. Content Hash

Ein Content Hash ist ein Fingerabdruck des Inhalts.

Beispielsweise:

SHA-256(Text)

Ändert sich der Text nicht, bleibt der Hash gleich.

Damit können Systeme erkennen:

Dieser Chunk wurde bereits verarbeitet.

Das kann Reprocessing effizienter machen.


83. Embedding Drift

Wenn ein Modell oder seine Version verändert wird, können sich Embeddings ändern.

Dann kann ein gemischter Index entstehen:

alte Vektoren → Modell A
neue Vektoren → Modell B

Das ist problematisch.

Deshalb gehört die Embedding-Version zur Identität eines Indexes.


84. Vector Index Lifecycle

Ein Vektorindex besitzt einen Lebenszyklus:

Dokument
 ↓
Chunk
 ↓
Embedding
 ↓
Upsert
 ↓
Search
 ↓
Update / Delete
 ↓
Re-Index

RAG-Systeme müssen deshalb nicht nur suchen können.

Sie müssen auch mit verändertem Wissen umgehen.


85. Upsert

Upsert bedeutet:

Update + Insert

Existiert eine ID bereits, wird sie aktualisiert.

Existiert sie nicht, wird sie eingefügt.

Bei Vektorindizes ist das praktisch für wiederholbare Ingestion.


86. Idempotenz

Ein Ingestion-Vorgang sollte möglichst idempotent sein.

Das bedeutet:

Wird derselbe Vorgang mehrfach ausgeführt, sollte nicht jedes Mal ein weiterer identischer Chunk entstehen.

Beispiel:

Ingest document A
Ingest document A erneut

sollte nicht automatisch ergeben:

A
A

im Index.

Stabile IDs und Content Hashes helfen dabei.


87. Delete ist genauso wichtig wie Insert

Wird ein Dokument gelöscht oder ersetzt, müssen seine alten Vektoren ebenfalls entfernt werden.

Sonst entstehen Ghost Chunks.

Das Originaldokument existiert nicht mehr, aber die alte Information wird weiterhin gefunden.

Das kann besonders gefährlich bei geänderten Richtlinien sein.


88. Stale Embeddings

Stale Embeddings sind Vektoren, die nicht mehr zum aktuellen Dokumentbestand passen.

Beispiel:

Dokument 2025 gelöscht
aber
Chunks 2025 noch im Vector Store

Dann kann das RAG-System veraltete Informationen liefern.

Indexpflege ist deshalb Teil der Wissensqualität.


89. Vector Search und Filter

Eine typische Suche besteht nicht zwingend nur aus:

nearest(query_vector)

sondern beispielsweise:

nearest(query_vector)
WHERE
language = "de"
AND year = 2026

Semantische und strukturierte Suche ergänzen sich.


90. Tenant Filtering

In Mehrbenutzersystemen können Filter auch Sicherheitsgrenzen darstellen.

Konzeptionell:

Similarity Search
WHERE user_has_access = true

Ein semantisch perfekter Treffer darf nicht zurückgegeben werden, wenn der Benutzer ihn nicht sehen darf.

Retrieval-Sicherheit ist deshalb nicht nachgelagerte UI-Logik.


91. Recall

Bei ANN-Suche taucht der Begriff Recall auf.

Vereinfacht fragt Recall:

Wie viele der tatsächlich relevanten beziehungsweise richtigen Treffer wurden gefunden?

Angenommen, die exakte Suche kennt zehn relevante Nachbarn.

ANN findet neun davon.

Dann ist der Recall sehr hoch, aber nicht perfekt.

Retrieval-Metriken behandeln wir ausführlich in Teil 8.


92. ANN Recall versus RAG Recall

Hier sollte man zwei Ebenen unterscheiden.

ANN Recall

Hat die ANN-Indexstruktur die Nachbarn gefunden, die eine exakte Vektorsuche gefunden hätte?

RAG Retrieval Recall

Hat das gesamte Retrieval die tatsächlich für die Benutzerfrage relevanten Informationen gefunden?

Ein ANN-Index kann technisch nahezu perfekten Recall besitzen und trotzdem fachlich schlechte Treffer liefern, wenn das Embedding-Modell ungeeignet ist.


93. Der Index kann nicht besser sein als das Embedding

HNSW kann extrem schnell und präzise die nächsten Vektoren finden.

Wenn das Embedding-Modell aber:

"Kündigungsfrist"

und:

"Ferienanspruch"

schlecht repräsentiert, löst HNSW dieses Problem nicht.

ANN beantwortet:

Welche Vektoren liegen nahe?

Das Embedding-Modell bestimmt:

Was bedeutet „nahe“ semantisch?

Diese Ebenen müssen getrennt werden.


94. Der Embedding-Test

Eine sinnvolle Evaluation beginnt deshalb nicht erst beim vollständigen Chatbot.

Man kann direkt testen:

Query
 ↓
Embedding Search
 ↓
Top 10 Chunks

und prüfen:

Ist die relevante Passage enthalten?

Wenn nicht, braucht man das Antwort-LLM noch gar nicht zu untersuchen.


95. Semantic Search

Semantic Search bezeichnet allgemein Suche anhand von Bedeutung statt nur exakter Wortübereinstimmung.

Dense Embeddings sind eine verbreitete Umsetzung davon.

Semantic Search ist aber nicht exakt synonym mit Vector Search.

Vector Search ist ein technisches Verfahren.

Semantic Search beschreibt das Ziel beziehungsweise Suchverhalten.


96. Vector Search ist nicht automatisch semantisch

Man kann beliebige numerische Vektoren durchsuchen.

Beispielsweise:

  • Bildmerkmale,
  • Audiofeatures,
  • Sensordaten,
  • geografische Eigenschaften.

Erst ein semantisch trainiertes Text-Embedding macht Text-Vektorsuche zu semantischer Textsuche.


97. Embeddings sind keine Zusammenfassungen

Ein Embedding enthält nicht einfach einen komprimierten Text, den man später wieder dekodieren kann.

Aus:

[0.12, -0.44, ...]

kann man nicht einfach den ursprünglichen Absatz rekonstruieren.

Das Embedding ist eine Repräsentation für mathematische Aufgaben wie Ähnlichkeitsvergleich.

Der Originaltext muss separat gespeichert werden.


98. Embeddings sind keine Verschlüsselung

Auch das wird gelegentlich verwechselt.

Ein Embedding ist keine verschlüsselte Version eines Dokuments.

Es besitzt andere Eigenschaften und andere Sicherheitsrisiken.

Sensible Informationen werden nicht automatisch sicher, nur weil man ihre Embeddings speichert.

Vector Stores gehören deshalb genauso in das Sicherheitsmodell wie andere Datenspeicher.


99. Embeddings sind keine eindeutigen IDs

Ähnliche Texte erzeugen ähnliche Vektoren.

Das ist gerade der Zweck.

Ein Embedding eignet sich deshalb nicht als eindeutiger Identifikator eines Dokuments.

Dafür verwendet man IDs oder Hashes.


100. Semantische Nähe kann unerwartet sein

Embedding-Modelle bilden statistisch gelernte Bedeutungsräume.

Dadurch können Texte nahe beieinander liegen, die aus menschlicher Sicht nur indirekt verwandt sind.

Beispielsweise:

Probezeit
Kündigung
Arbeitsvertrag
Personalreglement

Das kann hilfreich sein.

Es kann aber auch zu False Positives führen.

Deshalb braucht Retrieval zusätzliche Ranking-Stufen.


101. False Positive

Ein False Positive ist ein Treffer, der vom System als relevant angesehen wird, tatsächlich aber nicht relevant ist.

Frage:

Wie lange ist die Kündigungsfrist?

Treffer:

Die Probezeit dauert drei Monate.

Thematisch nah, aber keine Antwort.


102. False Negative

Ein False Negative ist eine relevante Passage, die nicht gefunden wird.

Frage:

Wie kann ich während der Probezeit kündigen?

Relevante Passage:

Das Arbeitsverhältnis kann während der ersten drei Monate
mit einer Frist von sieben Tagen aufgelöst werden.

Wenn diese Passage nicht in den Kandidaten auftaucht, haben wir einen Retrieval-Fehler.


103. Dense Retrieval optimiert nicht automatisch Answerability

Dense Search beantwortet im Kern:

Welche Passagen sind semantisch ähnlich?

Nicht:

Welche Passage enthält garantiert die vollständige Antwort?

Diese Differenz erklärt, warum moderne RAG-Pipelines häufig mehrere Stufen besitzen:

Dense Retrieval
      ↓
Kandidaten
      ↓
Reranking
      ↓
Context Selection
      ↓
Answerability

104. Warum mehrere Retrieval-Stufen sinnvoll sind

Die erste Suchstufe muss schnell über sehr viele Chunks suchen.

Sie optimiert deshalb eher:

Recall

Eine spätere Stufe kann auf wenigen Kandidaten teurere Modelle einsetzen und stärker auf:

Precision

optimieren.

Das führt zu einer klassischen Sucharchitektur:

Candidate Retrieval
        ↓
Reranking

Diese Idee stammt ebenfalls aus Information Retrieval und nicht erst aus RAG.


105. Dense Retrieval als Candidate Generator

Eine gute mentale Einordnung lautet deshalb:

Dense Retrieval ist häufig ein Candidate Generator.

Es muss nicht allein die endgültige Wahrheit über Relevanz bestimmen.

Seine Aufgabe kann sein:

Millionen Chunks
      ↓
50 plausible Kandidaten

Danach entscheidet ein genaueres Verfahren:

50
 ↓
5 wirklich relevante Chunks

106. Warum ein Cross-Encoder genauer sein kann

Beim Bi-Encoder:

Query → Vector A
Chunk → Vector B
      ↓
Similarity

Beim Cross-Encoder:

Query + Chunk
      ↓
gemeinsam durch Modell
      ↓
Relevance Score

Der Cross-Encoder sieht die konkrete Beziehung zwischen Frage und Passage.

Dadurch kann er beispielsweise besser unterscheiden:

Frage:
Wie lange ist die Kündigungsfrist?

Passage A:
Die Kündigungsfrist beträgt sieben Tage.

Passage B:
Die Probezeit dauert drei Monate.

Beide sind thematisch ähnlich.

Nur A beantwortet die Frage.

Cross-Encoder behandeln wir ausführlich in Teil 5.


107. Warum nicht alles mit Cross-Encoder suchen?

Weil ein Cross-Encoder jedes Paar einzeln bewerten muss.

Bei:

1 Query
×
1'000'000 Chunks

wären:

1'000'000 Modellbewertungen

nötig.

Das ist teuer.

Bi-Encoder erlauben dagegen vorab berechnete Dokumentvektoren und schnelle ANN-Suche.

Deshalb:

Bi-Encoder
→ schnell Kandidaten finden

Cross-Encoder
→ wenige Kandidaten genauer bewerten

108. Embedding Search als zweistufiges System

Ein typischer Ablauf lautet deshalb:

Dokumente
   ↓
Embeddings
   ↓
Vector Index

Query
   ↓
Query Embedding
   ↓
ANN Search
   ↓
Top 50
   ↓
Reranker
   ↓
Top 5

Das ist bereits wesentlich robuster als:

Top 5 Vector Search
→ direkt in Prompt

109. Aber Dense Search ist nur die halbe Geschichte

Wir haben bisher semantische Suche betrachtet.

Nun kommt das Problem:

Ein Benutzer fragt:

Was steht zu CVE-2026-12345?

oder:

Was bedeutet Artikel 17.4?

oder:

Wie ist der Status von AB-84921?

Hier sind exakte Tokens extrem wichtig.

Dense Search kann sie berücksichtigen, aber klassische lexikalische Retrieval-Verfahren besitzen hier einen strukturellen Vorteil.

Deshalb benötigt man den zweiten grossen Suchraum:

Sparse Retrieval.


110. Dense und Sparse als unterschiedliche Stärken

Vereinfacht:

Dense
→ Bedeutung

Sparse
→ Wörter

Dense findet:

Vertrag beenden
≈
kündigen

Sparse findet:

INC-847291
=
INC-847291

Die stärkste Retrieval-Pipeline muss sich häufig nicht zwischen beiden entscheiden.

Sie kombiniert beide.


111. Warum Vector Search RAG nicht definiert

Nach diesem Teil sollte eine wichtige Abgrenzung klar sein.

RAG bedeutet nicht:

Embedding
+
Vector Database
+
LLM

Das ist lediglich eine verbreitete RAG-Implementierung.

RAG verlangt konzeptionell:

Retrieval
+
Augmentation
+
Generation

Das Retrieval könnte:

Dense
Sparse
SQL
Graph
Web Search
Hybrid

sein.

Embeddings sind ein Werkzeug innerhalb dieser grösseren Idee.


112. Begriffspaare, die man nicht verwechseln sollte

BegriffeUnterschied
Embedding vs. VectorEmbedding ist eine gelernte Repräsentation; technisch wird sie als Vektor dargestellt
Embedding-Modell vs. LLMEmbedding-Modell erzeugt Repräsentationen; LLM erzeugt Sprache
Dense vs. Sparsedichte semantische Repräsentation vs. dünn besetzte lexikalische Repräsentation
Similarity vs. Relevancemathematische Nähe vs. tatsächliche Relevanz zur Frage
Cosine vs. L2Winkelähnlichkeit vs. geometrischer Abstand
Vector Store vs. RAGSpeicher-/Suchkomponente vs. vollständiges Retrieval-Generation-Verfahren
Semantic Search vs. Vector SearchSuchziel nach Bedeutung vs. technisches Suchen in Vektoren
Bi-Encoder vs. Cross-Encodergetrennte vs. gemeinsame Verarbeitung von Query und Passage
ANN vs. HNSWProblemklasse/Verfahren vs. konkrete ANN-Indexfamilie
Top-k vs. Prompt-kRetrieval-Kandidaten vs. tatsächlich an das LLM gegebene Chunks
Index-Quantisierung vs. LLM-QuantisierungKompression von Suchvektoren vs. Kompression von Modellgewichten
Embedding Dimension vs. QualitätVektorgrösse vs. Retrieval-Leistung
Document Embedding vs. Chunk Embeddingganzes Dokument vs. kleinere Retrieval-Einheit
Embedding vs. Hashsemantische Repräsentation vs. Identitätsfingerabdruck
Embedding vs. VerschlüsselungÄhnlichkeitsrepräsentation vs. Schutz vertraulicher Daten

113. Die vollständige Dense-Retrieval-Pipeline

Wir können Teil 2 und Teil 3 jetzt zusammenführen.

Ingestion

Dokument
   ↓
Parsing
   ↓
Struktur
   ↓
Chunking
   ↓
Chunk
   ↓
Embedding Model
   ↓
Dense Vector
   ↓
Vector Index

Query

Benutzerfrage
      ↓
Embedding Model
      ↓
Query Vector
      ↓
ANN Search
      ↓
Similarity Ranking
      ↓
Top-k Chunks

Zusammen:

                 INGESTION

Dokumente
    ↓
Parsing
    ↓
Chunking
    ↓
Chunks
    ↓
Embedding
    ↓
Vektoren
    ↓
Vector Index
      ▲
      │
      │ ANN / Similarity Search
      │
Query Vector
      ▲
      │
Embedding
      ▲
      │
Benutzerfrage

114. Was diese Pipeline gut kann

Dense Retrieval ist besonders stark, wenn:

  • Benutzer natürlich formulieren,
  • Dokument und Frage unterschiedliche Wörter verwenden,
  • Synonyme auftreten,
  • Paraphrasen erkannt werden müssen,
  • semantische Nähe wichtiger ist als exakte Wortgleichheit.

Beispiel:

Query:
Wie verlasse ich die Firma während der Probezeit?

Passage:
Das Arbeitsverhältnis kann während der Probezeit
mit einer Frist von sieben Tagen gekündigt werden.

Das ist genau die Art von Problem, bei der Embeddings ihre Stärke zeigen.


115. Was diese Pipeline nicht zuverlässig löst

Dense Retrieval allein löst nicht automatisch:

  • exakte Identifier,
  • seltene Eigennamen,
  • Versionsnummern,
  • Paragraphennummern,
  • präzise Zahlen,
  • semantisch sehr ähnliche, aber fachlich unterschiedliche Dokumente,
  • vollständige Answerability,
  • Quellenwidersprüche,
  • Halluzinationen.

Dafür benötigt man weitere Retrieval- und Generationstechniken.


116. Die wichtigste Erkenntnis aus Teil 3

Embeddings lösen ein fundamentales Problem:

Sie ermöglichen, Bedeutung mathematisch vergleichbar zu machen.

Dadurch wird aus:

Text

eine numerische Repräsentation:

Vector

und aus einer semantischen Suche ein mathematisches Nachbarschaftsproblem:

Query
 ↓
Embedding
 ↓
Query Vector
 ↓
Nearest Neighbors
 ↓
semantisch ähnliche Chunks

Aber genau hier liegt auch die Grenze.

Semantisch ähnlich bedeutet nicht automatisch relevant.

Relevant bedeutet nicht automatisch beantwortbar.

Und Vektorsuche bedeutet nicht automatisch gutes RAG.

Dense Retrieval ist deshalb eine starke erste Suchstufe, aber nicht die gesamte Retrieval-Lösung.

Die nächste Frage lautet:

Was passiert, wenn nicht die Bedeutung, sondern ein exaktes Wort, eine ID, ein Paragraph oder eine seltene Bezeichnung entscheidend ist?

Dann betreten wir die klassische Welt des Information Retrieval:

Term Frequency, Inverse Document Frequency, TF-IDF, BM25 und Sparse Retrieval.

Und danach können beide Welten zusammengeführt werden:

Dense Retrieval
       +
Sparse Retrieval
       ↓
 Hybrid Search
       ↓
      RRF

Genau darum geht es in Teil 4.

RAG von Grund auf

Teil 1 – RAG verstehen
LLM, parametrisches Wissen, Kontext, Retrieval, Augmentation, Generation und Grounding.

Teil 2 – Dokumente, Parsing und Chunking
Ingestion, Parser, OCR, Dokumentstruktur, Chunks, Overlap, Structured Chunking, Parent-Child und Small-to-Big.

Teil 3 – Embeddings und Vektorsuche
Embeddings, Dense Vectors, Bi-Encoder, Cosine Similarity, Vector Stores, ANN, HNSW, IVF, Quantisierung und die Grenzen semantischer Suche.

Teil 4 – Information Retrieval und Hybrid Search
Term Frequency, IDF, TF-IDF, BM25, Sparse Retrieval, Dense vs. Sparse, Hybrid Search und Reciprocal Rank Fusion.

Teil 5 – Reranking und Retrieval-Strategien
Top-k, Cross-Encoder, MMR, Query Rewrite, Multi-Query, HyDE und Context Selection.

Teil 6 – Kontext, Grounding und Antworten
Kontextfenster, Token-Budget, Lost in the Middle, Answerability, Faithfulness, Citations und Grounding.

Teil 7 – Advanced RAG
Naive RAG, Advanced und Modular RAG, Multi-Hop, Self-RAG, CRAG, RAPTOR, GraphRAG, ColBERT und Agentic RAG.

Teil 8 – Evaluation, Sicherheit und Abgrenzung
Recall, Precision, Hit@k, MRR, nDCG, RAG-Evaluation, Prompt Injection, RAG Poisoning, Fine-Tuning und Tool Calling.