Cosine Similarity
Erfahre, wie die Kosinusähnlichkeit die Ähnlichkeit von Vektoren in der KI misst. Berechne visuelle Einbettungen mit Ultralytics YOLO26 und skaliere sie mit der Ultralytics Platform.
Die Kosinusähnlichkeit ist eine grundlegende mathematische Kennzahl aus dem Bereich des maschinellen Lernens (ML) und der künstlichen Intelligenz (AI). Sie misst, wie ähnlich sich zwei mehrdimensionale Arrays oder Vektoren sind – unabhängig von ihrer Größe oder ihrem Betrag. Dazu wird der Winkel zwischen zwei Punkten in einem Vektorraum berechnet, um festzustellen, ob sie ungefähr in dieselbe Richtung zeigen. Dieser winkelbasierte Ansatz ist besonders wichtig, wenn die Ausrichtung der Daten mehr zählt als ihre Gesamtlänge. Dadurch eignet er sich hervorragend zum Vergleichen abstrakter Datendarstellungen wie Embeddings.
Die Mathematik hinter der Kennzahl verstehen#
Zur Berechnung dieser Kennzahl wird das Skalarprodukt zweier Vektoren durch das Produkt ihrer jeweiligen Beträge (Längen) geteilt. Der resultierende Wert liegt immer in einem festen Bereich von -1 bis 1:
- Ein Wert von 1 bedeutet, dass die Vektoren exakt in dieselbe Richtung zeigen und somit maximale Ähnlichkeit aufweisen.
- Ein Wert von 0 bedeutet, dass die Vektoren vollständig orthogonal sind (einen Winkel von 90 Grad bilden), also keine Richtungsähnlichkeit aufweisen.
- Ein Wert von -1 bedeutet, dass sie exakt in entgegengesetzte Richtungen zeigen.
In vielen modernen Deep-Learning-Frameworks für Computer Vision (CV) stehen optimierte Funktionen für diese mathematische Operation zur Verfügung, etwa das Funktionsmodul von PyTorch oder die TensorFlow-Metriken.
Verwandte Konzepte voneinander abgrenzen#
Um zu verstehen, wann sich die Kosinusähnlichkeit eignet, ist es hilfreich, sie von anderen häufig verwendeten Kennzahlen der Datenanalyse abzugrenzen:
- Kosinusdistanz: Diese Begriffe hängen zwar eng zusammen, verhalten sich aber umgekehrt proportional. Die Kosinusdistanz wird einfach als 1 minus Kosinusähnlichkeit berechnet. Eine kleinere Distanz bedeutet daher eine größere Ähnlichkeit zwischen den Vektoren.
- Euklidische Distanz: Diese Kennzahl misst die geradlinige physische Entfernung zwischen zwei Punkten und reagiert daher sehr empfindlich auf die Gesamtgröße beziehungsweise den Betrag der Vektoren. Die Kosinusähnlichkeit berücksichtigt dagegen nur den Winkel. Bei der Textanalyse können beispielsweise ein langes Dokument und ein kurzer Satz eine große euklidische Distanz aufweisen. Wenn sie dasselbe Thema behandeln, bleibt ihre Kosinusähnlichkeit dennoch hoch.
Anwendungen in der Praxis#
Die Kosinusähnlichkeit bildet die Grundlage zahlreicher moderner Softwareprodukte und schlägt eine Brücke zwischen Rohdaten und menschlichen Absichten.
- Vektorsuche und RAG: Bei Anwendungen der natürlichen Sprachverarbeitung (NLP), etwa Chatbots, werden Benutzeranfragen und interne Dokumente in dichte Embeddings umgewandelt. Das System berechnet rasch die Kosinusähnlichkeit, um die kontextuell relevantesten Dokumente aus einer Vektordatenbank abzurufen – ein entscheidender Schritt bei der Retrieval-Augmented Generation (RAG).
- Empfehlungssysteme: E-Commerce- und Streamingdienste verwenden Werkzeuge wie Scikit-learn und SciPy, um Nutzerpräferenzen und Katalogelemente als Vektoren darzustellen. Indem sie die Ähnlichkeit zwischen dem Profil eines Käufers und verschiedenen Produkten messen, können Systeme visuell oder thematisch ähnliche Produkte zuverlässig empfehlen.
Visuelle Ähnlichkeit mit Ultralytics messen#
Mit modernen Bildverarbeitungsmodellen kannst du hochdimensionale Merkmalsvektoren direkt aus visuellen Daten extrahieren. Der folgende Python-Code zeigt, wie du ein Ultralytics YOLO26-Modell zur Bildklassifizierung lädst, Embeddings für zwei Bilder erzeugst und ihre visuelle Ähnlichkeit mithilfe der Kosinusähnlichkeit berechnest.
import torch
import torch.nn.functional as F
from ultralytics import YOLO
# Load a pre-trained YOLO26 classification model
model = YOLO("yolo26n-cls.pt")
# Generate embedding vectors for two separate images
results = model.embed(["bus.jpg", "car.jpg"])
# Calculate the cosine similarity between the two visual embeddings
similarity = F.cosine_similarity(torch.tensor(results[0]), torch.tensor(results[1]), dim=0)
print(f"Visual Similarity Score: {similarity.item():.4f}")Für Entwickler, die diese Funktionen der semantischen Suche skalieren möchten, ist das Training hochpräziser Basismodelle entscheidend. Die Ultralytics-Plattform vereinfacht diesen Ablauf mit leistungsstarken Werkzeugen für die Datenannotation, skalierbares Cloud-Training und eine nahtlose Modellbereitstellung. So stellst du sicher, dass die zugrunde liegenden Embeddings möglichst präzise und aussagekräftig sind.









