Sofortantwort
Cosine Similarity einfach erklärt
Maß zur Bestimmung der Ähnlichkeit zwischen Vektoren.
- Kurz gesagt
- Misst den Winkel zwischen zwei Vektoren (Wert zwischen -1 und 1)
- Typischer Einsatz
- Semantische Suche, Duplikaterkennung, Empfehlungssysteme
- Wichtig zu wissen
- Standard-Metrik für Embedding-Vergleiche in Vektordatenbanken und RAG
Cosine Similarity im Überblick
Cosine Similarity misst, wie ähnlich zwei Vektoren (Embeddings) sind. Es ist die Standard-Metrik für semantische Suche und RAG-Systeme.
Wie funktioniert es?
Statt die Entfernung zwischen zwei Punkten zu messen, misst Cosine Similarity den Winkel zwischen ihnen. Zeigen zwei Vektoren in dieselbe Richtung (Winkel = 0°), sind sie identisch (Similarity = 1).
Beispiel:
"Hund" → [0.8, 0.3, 0.5]
"Katze" → [0.7, 0.4, 0.6] → Similarity: 0.98 (sehr ähnlich)
"Auto" → [0.1, 0.9, 0.2] → Similarity: 0.45 (wenig ähnlich)
Warum nicht einfach Entfernung messen?
Cosine Similarity ignoriert die Länge der Vektoren – nur die Richtung zählt. Das ist wichtig, weil zwei Texte unterschiedlich lang sein können, aber dieselbe Bedeutung haben.
Technisch betrachtet
Berechnung
import numpy as np
def cosine_similarity(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
Alternativen
| Metrik | Misst | Ideal für |
|---|---|---|
| Cosine Similarity | Winkel (Richtung) | Text-Embeddings |
| Euclidean Distance | Abstand | Bild-Embeddings |
| Dot Product | Richtung + Magnitude | Normalisierte Embeddings |
| Manhattan Distance | L1-Abstand | Sparse Vectors |
Performance-Optimierung
Für Millionen von Vektoren ist naive Berechnung zu langsam:
- ANN (Approximate Nearest Neighbors): HNSW, IVF für schnelle Suche
- Quantisierung: Vektoren komprimieren für weniger Speicher
- Batching: Viele Vergleiche parallel auf GPU
Schritt für Schritt
So entsteht ein Ähnlichkeitsscore
Cosine Similarity vergleicht nicht die Textlänge, sondern die Richtung zweier Embeddings im Vektorraum.
Texte einbetten
Vektoren
Ein Embedding-Modell erzeugt für Anfrage und Dokument je einen Vektor mit vielen Zahlenwerten.
Anfrage → q · Dokument → dLängen ausgleichen
Normalisierung
Die Berechnung berücksichtigt die Länge beider Vektoren, damit vor allem ihre Richtung zählt.
q · d / (|q| × |d|)Score berechnen
Ähnlichkeit
Ein hoher Wert bedeutet, dass beide Vektoren in eine ähnliche Richtung zeigen.
nahe 1 → ähnlich · nahe 0 → unähnlichTreffer ordnen
Ranking
Die Suche sortiert Dokumente nach ihrem Score und gibt die besten Kandidaten zur weiteren Prüfung weiter.
Scores → Top-k Treffer
Konkretes Beispiel
Beispiel: Zwei ähnliche Fragen
Eine Suche soll passende Hilfeseiten für die Frage nach dem Zurücksetzen eines Passworts finden.
Anfrage
Wie ändere ich mein Passwort?
Sortierte Treffer
Die Seite Passwort zurücksetzen erhält einen hohen Score. Eine Seite zur Rechnungsadresse liegt weit darunter.
Der Score sagt, was im Embedding-Raum ähnlich ist. Ob ein Treffer fachlich genügt, entscheiden Quellenqualität, Filter und Evaluation.
Einordnung
Vorteile und Grenzen
Das spricht dafür
- Vergleicht hochdimensionale Embeddings mit einer klaren Kennzahl.
- Ist weit verbreitet und in vielen Vektordatenbanken direkt verfügbar.
- Reduziert den Einfluss unterschiedlicher Vektorlängen.
- Eignet sich gut zum Sortieren einer großen Menge von Kandidaten.
Das solltest du beachten
- Der Wert ist nur so aussagekräftig wie das Embedding-Modell.
- Ein hoher Score garantiert keine korrekte oder vollständige Antwort.
- Passende Schwellenwerte unterscheiden sich je Datenbestand.
- Metadaten, Rechte und Aktualität werden dadurch nicht geprüft.
Vertiefung · für FortgeschritteneVom Vektor zum Ranking
Der Ähnlichkeitsscore ist eine Komponente der Suche, nicht deren vollständige Entscheidungslogik.
Winkel statt Textlänge