🔢 · Bedeutung als Vektor

Embeddings: Wie KI Bedeutung in Zahlen speichert

Embeddings sind die stille Technologie hinter Semantic Search, RAG und Empfehlungssystemen. Sie wandeln Text in Vektoren um – so dass ähnliche Bedeutungen nah beieinanderliegen, egal welche Wörter verwendet werden.

VektorenSemantic Searchnomic-embedSentence TransformersCosine Similarity

Was sind Embeddings – und warum sind sie wichtig?

Ein Embedding ist eine Zahl-Darstellung von Text (oder Bild, Audio, ...) in einem hochdimensionalen Raum. Ein modernes Embedding-Modell wandelt „Katze auf der Matte" in einen Vektor aus z.B. 768 Zahlen um – so dass dieser Vektor nah am Vektor für „Tier liegt auf dem Boden" liegt, obwohl die Wörter völlig verschieden sind.

Das ist die Grundlage für:

  • Semantic Search: Suche nach Bedeutung statt nach exakten Wörtern
  • RAG-Systeme: Dokumente finden die zu einer Frage passen
  • Clustering: Ähnliche Texte automatisch gruppieren
  • Duplikaterkennung: Semantisch gleiche Inhalte finden trotz anderer Formulierung

Die Ähnlichkeit zweier Vektoren wird meist mit Cosine Similarity gemessen: 1.0 = identisch, 0.0 = völlig verschieden, –1.0 = gegenteilig.

Embedding-Modelle: Welches für welchen Einsatz?

Für lokale Setups gibt es hervorragende kostenlose Modelle. Meine Empfehlungen:

  • nomic-embed-text (via Ollama): Einfachster Start – ein Befehl, läuft lokal, 768 Dimensionen, sehr gute deutschsprachige Performance. Standard für lokale RAG-Setups.
  • all-MiniLM-L6-v2 (sentence-transformers): Klein (23 MB), schnell, gut für englische Texte. Via Python ohne Ollama nutzbar.
  • multilingual-e5-large: Wenn mehrsprachige Dokumente verarbeitet werden sollen – unterstützt 100+ Sprachen.
  • text-embedding-3-small (OpenAI): Cloud-Option mit ausgezeichneter Qualität, aber Datenweitergabe und Kosten per Token.
# Embeddings mit Ollama import ollama, numpy as np def embed(text): return ollama.embeddings(model="nomic-embed-text", prompt=text)["embedding"] def cosine(a, b): return np.dot(a,b)/(np.linalg.norm(a)*np.linalg.norm(b)) v1 = embed("Katze schläft") v2 = embed("Tier ruht sich aus") v3 = embed("Docker Container starten") # Ergebnis: v1/v2 ~0.85, v1/v3 ~0.12

Embeddings in eigenen Projekten einsetzen

Der häufigste Einsatz ist als Teil eines RAG-Systems. Aber Embeddings haben weitere praktische Anwendungen:

  • Intelligente Suche: Statt Volltextsuche in einer Datenbank – semantische Suche über PostgreSQL mit pgvector-Extension
  • Duplikatfilter: Bevor ein Dokument indexiert wird, prüfen ob ein sehr ähnliches schon existiert (Cosine Similarity > 0.95)
  • Clustering in Automatisierungen: Eingehende Nachrichten nach Bedeutung gruppieren – auch wenn die Wording-Variationen groß sind
  • Empfehlungen: „Ähnliche Artikel" oder „verwandte Notizen" auf Basis von Vektorähnlichkeit

In n8n gibt es Embedding-Nodes die direkt mit Ollama oder OpenAI kommunizieren und das Ergebnis in Vektordatenbanken wie Qdrant oder Pinecone schreiben.

Häufige Fragen zu Embeddings

Ein Embedding-Modell wandelt Text in einen Vektor um – keine Generierung, nur Repräsentation. Ein LLM generiert neuen Text. Für RAG braucht man beides: Embedding-Modell für Indexierung und Suche, LLM für die Antwortgenerierung.

Für die meisten Anwendungen reichen 384–768 Dimensionen. Mehr Dimensionen bedeuten mehr Ausdruckskraft aber auch mehr Speicherbedarf. nomic-embed-text mit 768 Dimensionen ist ein sehr guter Kompromiss für lokale Setups.

nomic-embed-text und multilingual-e5 funktionieren sehr gut auf Deutsch. all-MiniLM ist primär auf Englisch optimiert. Für gemischtsprachige Dokumente: multilingual-e5-large oder nomic-embed-text verwenden.

Ja – Embeddings verschiedener Modelle sind nicht kompatibel, auch wenn beide „768 Dimensionen" haben. Bei einem Modellwechsel müssen alle Dokumente neu indexiert werden. Deshalb Modellwahl früh festlegen und in der Konfiguration dokumentieren.