Wählen Sie eine der Vektor-Distanzfunktionen aus, um die Ähnlichkeit von Vektoreinbettungen zu messen

Auf dieser Seite wird beschrieben, wie Sie eine der verfügbaren Vektor-Distanzfunktionen auswählen. in Spanner, um die Ähnlichkeit zwischen Vektoreinbettungen zu messen.

Nachdem Sie Einbettungen generiert haben, aus mithilfe von Vektoren, Entfernungsfunktionen. In der folgenden Tabelle werden die Vektor-Distanzfunktionen beschrieben in Spanner erstellen.

FunktionBeschreibungFormelBeziehung zu zunehmende Ähnlichkeit
Skalarprodukt Berechnet den Kosinus des Winkels \(\theta\) , multipliziert mit dem Produkt der entsprechenden Vektorgrößen. \(a_1b_1+a_2b_2+...+a_nb_n\) \(=|a||b|cos(\theta)\) Steigerungen
Kosinus-Distanz Die Kosinus-Distanzfunktion subtrahiert die Kosinus-Ähnlichkeit von eins (cosine_distance() = 1 - cosine similarity). Die Kosinus-Ähnlichkeit gibt den Kosinus des Winkels \(\theta\) zwischen zwei Vektoren an. 1– \(\frac{a^T b}{|a| \cdot |b|}\) Verringert
Euklidischer Abstand Misst die Entfernung zwischen zwei Vektoren. \(\sqrt{(a_1-b_1)^2+(a_2-b_2)^2+...+(a_N-b_N)^2}\) Verringert

Ähnlichkeitsmesswert auswählen

Je nachdem, ob alle Vektoreinbettungen normalisiert sind, bestimmen, welches Maß für die Ähnlichkeit zum Auffinden der Ähnlichkeit verwendet werden soll. Eine normalisierte die Vektoreinbettung eine Größe (Länge) von genau 1,0 hat.

Wenn Sie wissen, mit welcher Distanzfunktion Ihr Modell trainiert wurde, Verwenden Sie diese Distanzfunktion, um die Ähnlichkeit zwischen Ihrem Vektor zu messen Einbettungen.

Normalisierte Daten

Bei einem Datensatz, in dem alle Vektoreinbettungen normalisiert sind, stellen die gleichen semantischen Suchergebnisse bereit. Obwohl jede einen anderen Wert zurückgibt, werden diese Werte auf die gleiche Weise sortiert. Wann? Einbettungen normalisiert werden, DOT_PRODUCT() ist in der Regel am rechenintensivsten aber der Unterschied ist in den meisten Fällen vernachlässigbar. Wenn Ihre Anwendung sehr leistungsempfindlich ist, kann DOT_PRODUCT() bei der Leistungsoptimierung.

Nicht normalisierte Daten

Bei einem Dataset, in dem Vektoreinbettungen nicht normalisiert sind, ist die Verwendung von DOT_PRODUCT() als Entfernung mathematisch nicht korrekt. da „Punktprodukt“ als Funktion keine Entfernung misst. Je nach wie die Einbettungen generiert wurden und welche Art von Suche bevorzugt wird, wird entweder durch die COSINE_DISTANCE()- oder EUCLIDEAN_DISTANCE()-Funktion die subjektiv besser sind als die andere Funktion. Tests mit COSINE_DISTANCE() oder EUCLIDEAN_DISTANCE() die für Ihren Anwendungsfall am besten geeignet ist.

Nicht sicher, ob die Daten normalisiert oder nicht normalisiert sind

Wenn Sie sich nicht sicher sind, ob Ihre Daten normalisiert wurden oder nicht, DOT_PRODUCT(), wir empfehlen, stattdessen COSINE_DISTANCE() zu verwenden. COSINE_DISTANCE() entspricht DOT_PRODUCT() mit integrierter Normalisierung. Die mit COSINE_DISTANCE() gemessene Ähnlichkeit reicht von -1 bis 1. Ein Ergebnis der nahe bei 0 liegt, bedeutet, dass die Vektoren sehr ähnlich sind.

Nächste Schritte