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

Auf dieser Seite wird beschrieben, wie Sie aus den in Spanner bereitgestellten Vektor-Entfernungsfunktionen auswählen, um die Ähnlichkeit zwischen Vektoreinbettungen zu messen.

Nachdem Sie aus den Spanner-Daten Einbettungen generiert haben, können Sie mithilfe von Vektor-Entfernungsfunktionen eine Ähnlichkeitssuche durchführen. In der folgenden Tabelle werden die Funktionen für die Vektorentfernung in Spanner beschrieben.

FunktionBeschreibungFormelBeziehung zur zunehmenden Ä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 misst den Kosinus des Winkels \(\theta\) zwischen zwei Vektoren. 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 wurden oder nicht, können Sie bestimmen, welches Maß für die Ähnlichkeit zum Ermitteln der Ähnlichkeit verwendet werden soll. Eine normalisierte Vektoreinbettung hat eine Größe (Länge) von genau 1,0.

Wenn Sie wissen, mit welcher Entfernungsfunktion Ihr Modell trainiert wurde, können Sie mit dieser Funktion die Ähnlichkeit zwischen Ihren Vektoreinbettungen messen.

Normalisierte Daten

Wenn Sie einen Datensatz haben, in dem alle Vektoreinbettungen normalisiert sind, liefern alle drei Funktionen dieselben semantischen Suchergebnisse. Obwohl jede Funktion einen anderen Wert zurückgibt, werden diese Werte auf dieselbe Weise sortiert. Wenn Einbettungen normalisiert werden, ist DOT_PRODUCT() in der Regel am recheneffizientsten, der Unterschied ist jedoch in den meisten Fällen vernachlässigbar. Wenn Ihre Anwendung jedoch sehr leistungsempfindlich ist, kann DOT_PRODUCT() bei der Leistungsoptimierung hilfreich sein.

Nicht normalisierte Daten

Wenn Sie einen Datensatz haben, in dem Vektoreinbettungen nicht normalisiert sind, ist die Verwendung von DOT_PRODUCT() als Entfernungsfunktion mathematisch nicht korrekt, da die Funktion „Punktprodukt“ keine Entfernung misst. Je nachdem, wie die Einbettungen generiert wurden und welche Art der Suche bevorzugt wird, liefert die Funktion COSINE_DISTANCE() oder EUCLIDEAN_DISTANCE() Suchergebnisse, die subjektiv besser sind als die andere Funktion. Möglicherweise sind Tests mit COSINE_DISTANCE() oder EUCLIDEAN_DISTANCE() erforderlich, um die beste Lösung für Ihren Anwendungsfall zu ermitteln.

Nicht sicher, ob die Daten normalisiert oder nicht normalisiert sind

Wenn Sie sich nicht sicher sind, ob Ihre Daten normalisiert wurden oder nicht, und Sie DOT_PRODUCT() verwenden möchten, empfehlen wir, 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, das nahe bei 0 liegt, bedeutet, dass die Vektoren sehr ähnlich sind.

Nächste Schritte