~/tools / Embeddings und Suche (RAG) / Embedding Similarity Calculator

Embedding Similarity Calculator — Embedding-Vektoren aus Ollama /api/embed vergleichen: Kosinus-Ähnlichkeit, Skalarprodukt, Abstand

Fügen Sie die Antwort von /api/embed von Ollama oder von einem OpenAI-kompatiblen Endpunkt /v1/embeddings ein und vergleichen Sie die Vektoren: Kosinus-Ähnlichkeit, Skalarprodukt und euklidischer Abstand, geordnet nach dem Vektor, den Sie auswählen, dazu eine Ähnlichkeitsmatrix. Außerdem zeigt das Tool Dimensionen und Länge jedes Vektors, sodass Sie sehen, ob die Vektoren normalisiert sind und ob sie aus demselben Modell stammen. Nichts verlässt Ihren Browser.

Das Beispiel verwendet erfundene Vektoren mit Länge 1 und 4 Dimensionen, damit man sie lesen kann. Echte Embeddings haben Hunderte oder Tausende von Dimensionen.

Gelesen als eine Antwort von Ollama /api/embed: 4 Vektoren mit 4 Dimensionen. Alle Vektoren haben die Länge 1, daher sind Kosinus-Ähnlichkeit und Skalarprodukt gleich.

Rangfolge nach Kosinus-Ähnlichkeit

Verglichen mit #0 How do I keep a model loaded in Ollama?. Höher bedeutet ähnlicher.

RangTextKosinusSkalarproduktAbstand
1#1 keep_alive controls how long the model stays in memory0.99620.99620.0876
2#2 Protect Ollama with nginx and a password0.40370.40371.0921
3#3 Tomorrow's weather forecast0.01000.01001.4071

Matrix der Kosinus-Ähnlichkeit

Jede Zelle vergleicht den Vektor der Zeile mit dem Vektor der Spalte.

#0#1#2#3
#01.0000.9960.4040.010
#10.9961.0000.475-0.005
#20.4040.4751.000-0.377
#30.010-0.005-0.3771.000

Vektoren

TextDimensionenLänge (L2-Norm)Länge 1
#0 How do I keep a model loaded in Ollama?41.000000Ja
#1 keep_alive controls how long the model stays in memory41.000000Ja
#2 Protect Ollama with nginx and a password41.000001Ja
#3 Tomorrow's weather forecast41.000000Ja

Nach der Embeddings-Dokumentation und der API-Referenz von Ollama, geprüft am 2026-11-04. Ollama: Embeddings / Ollama API: Generate embeddings

Alles wird in Ihrem Browser berechnet. Nichts wird irgendwohin gesendet.

Ein Embedding-Modell verwandelt einen Text in eine Liste von Zahlen, einen Vektor. Die Dokumentation von Ollama beschreibt, wie man diese Vektoren für die semantische Suche mit Kosinus-Ähnlichkeit und für RAG verwendet. Bevor Sie den Suchcode schreiben, lohnt es sich, die Zahlen anzusehen: Liegt die Frage wirklich der Textstelle am nächsten, die sie beantwortet? Dieses Tool liest das JSON, das Ollama von /api/embed zurückgibt ({"embeddings": [[…], …]}), die OpenAI-kompatible Form von /v1/embeddings ({"data": [{"embedding": […]}]}) oder ein einfaches Array von Vektoren. Es ordnet jeden Vektor nach der Kosinus-Ähnlichkeit zu dem von Ihnen gewählten Vektor und zeigt außerdem das Skalarprodukt und den euklidischen Abstand. Die Dokumentation von Ollama sagt, dass /api/embed L2-normalisierte Vektoren (Länge 1) zurückgibt; bei solchen Vektoren sind Kosinus-Ähnlichkeit und Skalarprodukt dieselbe Zahl, und das Tool zeigt die Länge jedes Vektors, damit Sie es nachprüfen können. Die Dokumentation sagt auch, dass für die Indexierung und für die Abfrage dasselbe Embedding-Modell verwendet werden soll. Vektoren mit unterschiedlicher Anzahl von Dimensionen lassen sich gar nicht vergleichen, und das Tool bricht mit einer Fehlermeldung ab, wenn es welche findet. Die Berechnungen wurden mit separat in Python berechneten Werten überprüft.

Die Kernlogik dieses Tools ist Open Source unter der MIT-Lizenz. github.com/seigo5555/toolkitbox-lib/src/embedding-similarity.ts

Anwendungsfälle

  • Eine Frage und einige mögliche Textstellen in einer /api/embed-Anfrage einbetten und sehen, welche Textstelle zuerst kommt, bevor Sie eine Suche bauen
  • Zwei Embedding-Modelle an denselben Sätzen vergleichen, jeweils ein Modell nach dem anderen, um zu sehen, welches verwandte und nicht verwandte Texte deutlicher trennt
  • Prüfen, ob gespeicherte Vektoren die Länge 1 und die erwarteten Dimensionen haben, bevor Sie für Ihre Vektordatenbank ein Abstandsmaß wählen

Verwendung

  1. Senden Sie die Texte in einer Anfrage an Ihr Modell, zum Beispiel curl http://localhost:11434/api/embed -d '{"model": "embeddinggemma", "input": ["question", "passage 1", "passage 2"]}', und fügen Sie die gesamte JSON-Antwort ein.
  2. Schreiben Sie optional pro Zeile eine Bezeichnung, in derselben Reihenfolge wie die Eingabe, damit die Ergebnisse die Texte statt Nummern zeigen.
  3. Wählen Sie, mit welchem Vektor verglichen werden soll (standardmäßig #0, die erste Eingabe). Die Tabelle ordnet die übrigen nach Kosinus-Ähnlichkeit; die Matrix zeigt jedes Paar, wenn es höchstens 10 Vektoren sind.

FAQ

Welche Ähnlichkeit sollte ich verwenden?

Die Embeddings-Seite von Ollama sagt, dass für die meisten Anwendungsfälle der semantischen Suche die Kosinus-Ähnlichkeit verwendet werden soll. Die Kosinus-Ähnlichkeit vergleicht die Richtung zweier Vektoren und ignoriert ihre Länge; 1 bedeutet dieselbe Richtung. Das Tool zeigt auch das Skalarprodukt und den euklidischen Abstand, weil Vektordatenbanken oft eine Wahl zwischen diesen zulassen.

Warum sind Kosinus-Ähnlichkeit und Skalarprodukt gleich?

Weil die Vektoren die Länge 1 haben. Die Dokumentation von Ollama sagt, dass /api/embed L2-normalisierte Vektoren mit Länge 1 zurückgibt, und bei Vektoren mit Länge 1 ist die Kosinus-Ähnlichkeit gleich dem Skalarprodukt. Das Tool zeigt die Länge jedes Vektors und sagt, ob alle die Länge 1 haben (innerhalb von 0.001).

Das Tool sagt, die Dimensionen stimmen nicht überein. Was heißt das?

Zwei Vektoren lassen sich nur vergleichen, wenn sie gleich viele Zahlen haben. Die Länge hängt vom Modell ab, die die Dokumentation typischerweise mit 384 bis 1024 Dimensionen angibt, und die /api/embed-Anfrage akzeptiert auch ein Feld dimensions. Unterschiedliche Längen bedeuten meist, dass die Vektoren aus verschiedenen Modellen oder mit anderen Einstellungen stammen. Die Dokumentation sagt, dass für die Indexierung und für die Abfrage dasselbe Embedding-Modell verwendet werden soll.

Kann ich eine Antwort mit Embeddings in base64 einfügen?

Nein. Das Tool liest nur Zahlen. Wenn Sie den OpenAI-kompatiblen Endpunkt /v1/embeddings aufrufen, fordern Sie die Embeddings als Gleitkommazahlen an, nicht als base64.

Ist eine Ähnlichkeit von 0.8 gut?

Es gibt keinen festen Schwellenwert. Die Werte hängen vom Modell und von Ihren Texten ab. Vergleichen Sie deshalb die Werte verwandter und nicht verwandter Textstellen aus demselben Modell, statt eine einzelne Zahl für sich zu beurteilen.

Werden meine Daten irgendwohin gesendet?

Nein. Die Berechnungen laufen in Ihrem Browser. Das Tool ruft weder Ollama noch irgendeinen anderen Server auf; die Anfrage an Ihr Modell senden Sie selbst.

Passende Artikel

Ähnliche Tools