Embeddings: Text als Vektor

Recap: Wir haben gesehen, wie wir dem Modell über Prompts Eingaben geben – aber das Modell hat keinen Zugriff auf unsere Dokumente oder Datenbanken. Warum dieses Kapitel: Damit wir „ähnliche“ Texte finden können (z. B. welche Dokumentenabschnitte zu einer Frage passen), brauchen wir eine Darstellung von Text, die Bedeutung vergleichbar macht. Dafür wird Text in Zahlenvektoren übersetzt – solche Vektoren heißen Embeddings. Dieses Kapitel erklärt die Idee und den Nutzen.

Intuition

Stellen wir uns vor: Jeder Satz oder jeder Absatz wird durch einen Punkt in einem hochdimensionalen Raum dargestellt. Zwei Texte mit ähnlicher Bedeutung liegen nah beieinander; unterschiedliche Themen liegen weiter auseinander. Ein Embedding-Modell erzeugt aus Text genau solche Punkte (Vektoren).

"Maschinelles Lernen ist ein Teil der KI."
"KI umfasst unter anderem maschinelles Lernen."
→ Beide erhalten ähnliche Vektoren (nahe im Vektorraum).

Wofür braucht man Embeddings?

  • Semantische Suche: Dokumente finden, die inhaltlich zu einer Frage passen – auch ohne exakte Wortübereinstimmung.

  • RAG: Relevante Textstellen aus einem Korpus holen und dem LLM als Kontext mitgeben.

  • Klassifikation, Clustering: Texte nach Thema gruppieren oder kategorisieren.

Technisch: Ein Modell, eine Funktion

Ein Embedding-Modell ist eine Funktion (oft ein kleines neuronales Netz), die einen Text (oder eine Liste von Tokens) auf einen Vektor fester Länge abbildet, z. B. 384 oder 768 Dimensionen. Diese Modelle sind oft speziell trainiert, sodass semantisch ähnliche Texte ähnliche Vektoren bekommen.

Lokale Embedding-Modelle

Um ohne externe API zu arbeiten, eignen sich lokale Modelle, z. B. über die Bibliothek sentence-transformers:

  • Kleine, schnelle Modelle (z. B. all-MiniLM-L6-v2) laufen auf CPU.

  • Man gibt Text ein und erhält einen Vektor zurück – ideal für semantische Suche und RAG-Übungen.

Embeddings in der Praxis: Anbieter und Modelle

Für semantische Suche und RAG werden in der Praxis oft folgende Embedding-Lösungen genutzt (Auswahl, Stand grob 2024/2025):

  • OpenAI: text-embedding-3-small / text-embedding-3-large – über die API; hohe Qualität, Abrechnung pro Token.

  • Cohere: „embed“-Modelle – häufig für RAG und Suche in Produkten integriert.

  • Google: Vertex AI Embedding API, z. B. „text-embedding-004“ – in Google-Cloud-Projekten für semantische Suche und RAG.

  • Open Source (lokal): sentence-transformers (z. B. all-MiniLM-L6-v2, paraphrase-multilingual) – keine API nötig, gut für Schulungen und datensensible Umgebungen.

  • Weitere Anbieter: z. B. Mistral Embeddings, Voyage AI – zeigen, dass Embeddings ein zentraler Baustein vieler KI-Stacks sind.

Je nach Anforderung (Kosten, Latenz, Datenschutz, Mehrsprachigkeit) wählt man API oder lokales Modell.

Beispiel (konzeptionell)

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("all-MiniLM-L6-v2")
vec = model.encode("Einführung in Embeddings.")
# vec ist ein Array mit z. B. 384 Zahlen
print(vec.shape)  # (384,)

Mehrere Sätze auf einmal zu embedden ist effizienter (Batch). Die konkrete Nutzung für Suche folgt in den Kapiteln Semantische Ähnlichkeit: Vektoren vergleichen (Wie messen wir Ähnlichkeit?) und Semantische Suche (Retrieval im Korpus).

Wichtig

  • Embeddings erfassen semantische Ähnlichkeit, nicht nur Wortgleichheit.

  • Die Dimension (z. B. 384) ist fest; alle Texte werden in denselben Raum abgebildet.

  • Für RAG verwenden wir dieselben Embeddings für Fragen und für Dokumenten-Chunks – dann können wir die „nächsten“ Chunks zur Frage finden.

Nächster Schritt

Embeddings liefern Vektoren – aber wann sind zwei Vektoren „ähnlich“? Dafür brauchen wir ein klares Maß (z. B. Kosinusähnlichkeit). Im Kapitel Semantische Ähnlichkeit (Semantische Ähnlichkeit: Vektoren vergleichen) wird erklärt, wie wir Vektorähnlichkeit messen und warum genau das die Brücke zu semantischer Suche und RAG schlägt. Danach folgt Semantische Suche (Semantische Suche) – die konkrete Anwendung: die relevantesten Chunks im Korpus finden.