Ähnlichkeitsmetriken
In Milvus werden Ähnlichkeitsmetriken verwendet, um Ähnlichkeiten zwischen Vektoren zu messen. Die Wahl einer guten Abstandsmetrik hilft, die Klassifizierungs- und Clustering-Leistung erheblich zu verbessern.
Die folgende Tabelle zeigt, wie diese weit verbreiteten Ähnlichkeitsmetriken zu verschiedenen Eingabedatenformen und Milvus-Indizes passen. Derzeit unterstützt Milvus verschiedene Datentypen, darunter Fließkomma-Einbettungen (oft auch als Fließkomma-Vektoren oder dichte Vektoren bezeichnet), binäre Einbettungen (auch als binäre Vektoren bezeichnet) und spärliche Einbettungen (auch als spärliche Vektoren bezeichnet).
Metrische Typen | Index-Typen |
---|---|
|
|
Metrische Typen | Index-Typen |
---|---|
|
|
Metrische Typen | Index-Typen |
---|---|
IP |
|
Euklidischer Abstand (L2)
Im Wesentlichen misst der euklidische Abstand die Länge eines Segments, das 2 Punkte miteinander verbindet.
Die Formel für den euklidischen Abstand lautet wie folgt:
euklidisch
wobei a = (a0, a1,...,an-1) und b = (b0, b0,..., bn-1) zwei Punkte im n-dimensionalen euklidischen Raum sind
Es ist die am häufigsten verwendete Abstandsmetrik und ist sehr nützlich, wenn die Daten kontinuierlich sind.
Inneres Produkt (IP)
Der IP-Abstand zwischen zwei Vektoreinbettungen ist wie folgt definiert:
ip
IP ist nützlicher, wenn Sie nicht-normalisierte Daten vergleichen müssen oder wenn Sie sich für den Betrag und den Winkel interessieren.
Wendet man die IP-Abstandsmetrik auf normalisierte Einbettungen an, entspricht das Ergebnis der Berechnung der Kosinusähnlichkeit zwischen den Einbettungen.
Angenommen, X' ist von der Einbettung X normalisiert:
normalisieren.
Die Korrelation zwischen den beiden Einbettungen ist wie folgt:
Normalisierung
Kosinus-Ähnlichkeit
Bei der Cosinus-Ähnlichkeit wird der Kosinus des Winkels zwischen zwei Vektorsätzen verwendet, um zu messen, wie ähnlich sie sich sind. Man kann sich die beiden Vektorsätze als zwei Liniensegmente vorstellen, die vom gleichen Ursprung ([0,0,...]) ausgehen, aber in unterschiedliche Richtungen zeigen.
Um die Cosinus-Ähnlichkeit zwischen zwei Mengen von Vektoren A = (a0, a1,...,an-1) und B = (b0, b1,..., bn-1) zu berechnen, verwenden Sie die folgende Formel:
Cosinus_Ähnlichkeit
Die Kosinusähnlichkeit liegt immer im Intervall [-1, 1]. Zwei proportionale Vektoren haben beispielsweise eine Cosinus-Ähnlichkeit von 1, zwei orthogonale Vektoren haben eine Ähnlichkeit von 0 und zwei entgegengesetzte Vektoren haben eine Ähnlichkeit von -1. Je größer der Cosinus, desto kleiner der Winkel zwischen zwei Vektoren, was bedeutet, dass diese beiden Vektoren einander ähnlicher sind.
Wenn man die Kosinusähnlichkeit von 1 subtrahiert, erhält man den Kosinusabstand zwischen zwei Vektoren.
Jaccard-Abstand
Der Jaccard-Ähnlichkeitskoeffizient misst die Ähnlichkeit zwischen zwei Stichprobenmengen und ist definiert als die Kardinalität der Schnittmenge der definierten Mengen geteilt durch die Kardinalität der Vereinigung dieser Mengen. Er kann nur auf endliche Stichprobenmengen angewendet werden.
Jaccard-Ähnlichkeitskoeffizient
Die Jaccard-Distanz misst die Unähnlichkeit zwischen Datensätzen und wird ermittelt, indem der Jaccard-Ähnlichkeitskoeffizient von 1 subtrahiert wird. Für binäre Variablen entspricht die Jaccard-Distanz dem Tanimoto-Koeffizienten.
Jaccard-Abstand
Hamming-Abstand
Die Hamming-Distanz misst binäre Datenstrings. Der Abstand zwischen zwei Zeichenfolgen gleicher Länge ist die Anzahl der Bitpositionen, an denen die Bits unterschiedlich sind.
Nehmen wir zum Beispiel an, es gibt zwei Zeichenketten, 1101 1001 und 1001 1101.
11011001 ⊕ 10011101 = 01000100. Da dies zwei 1en enthält, ist der Hamming-Abstand d (11011001, 10011101) = 2.
Strukturelle Ähnlichkeit
Wenn eine chemische Struktur als Teil einer größeren chemischen Struktur auftritt, wird die erste als Substruktur und die zweite als Superstruktur bezeichnet. Zum Beispiel ist Ethanol eine Substruktur von Essigsäure und Essigsäure ist eine Superstruktur von Ethanol.
Die strukturelle Ähnlichkeit wird verwendet, um festzustellen, ob zwei chemische Formeln einander insofern ähnlich sind, als die eine die Über- oder Unterstruktur der anderen ist.
Um festzustellen, ob A ein Überbau von B ist, verwendet man die folgende Formel:
Überbau
Wobei:
- A die binäre Darstellung einer chemischen Formel ist, die abgerufen werden soll
- B ist die binäre Darstellung einer chemischen Formel in der Datenbank
Wenn 0
zurückgegeben wird, ist A keine Überstruktur von B. Andernfalls ist das Ergebnis genau umgekehrt.
Um festzustellen, ob A eine Unterstruktur von B ist, verwenden Sie die folgende Formel:
Unterstruktur
Wobei:
- A die binäre Darstellung einer chemischen Formel ist, die abgerufen werden soll
- B ist die binäre Darstellung einer chemischen Formel in der Datenbank
Wenn 0
zurückgegeben wird, ist A keine Unterstruktur von B. Andernfalls ist das Ergebnis genau andersherum.
FAQ
Warum ist das Top1-Ergebnis einer Vektorsuche nicht der Suchvektor selbst, wenn der Metrik-Typ das innere Produkt ist?
Dies geschieht, wenn Sie die Vektoren nicht normalisiert haben, wenn Sie das innere Produkt als Abstandsmetrik verwenden.Was ist Normalisierung? Warum ist eine Normalisierung erforderlich?
Normalisierung bezieht sich auf den Prozess der Umwandlung einer Einbettung (eines Vektors), so dass seine Norm gleich 1 ist. Wenn Sie das innere Produkt zur Berechnung der Ähnlichkeit von Einbettungen verwenden, müssen Sie Ihre Einbettungen normalisieren. Nach der Normalisierung ist das innere Produkt gleich der Kosinusähnlichkeit.
Siehe Wikipedia für weitere Informationen.
Warum erhalte ich unterschiedliche Ergebnisse, wenn ich den euklidischen Abstand (L2) und das innere Produkt (IP) als Abstandsmetrik verwende?
Prüfen Sie, ob die Vektoren normalisiert sind. Wenn nicht, müssen Sie die Vektoren zunächst normalisieren. Theoretisch unterscheiden sich die mit L2 ermittelten Ähnlichkeiten von den mit IP ermittelten Ähnlichkeiten, wenn die Vektoren nicht normalisiert sind.Der nächste Schritt
- Erfahren Sie mehr über die unterstützten Index-Typen in Milvus.