Ziehen Sie den Abfragepunkt und wechseln Sie die Metriken, um zu sehen, wie sich die nächsten Nachbarn ändern.
Misst die geradlinige Entfernung zwischen zwei Punkten. Die konzentrischen Kreise zeigen äquidistante Zonen an – alle Punkte auf demselben Kreis sind gleich „weit“ von der Abfrage entfernt.
Eine Metrik ist lediglich eine Funktion, die zwei Vektoren als Eingabe nimmt und eine einzige Zahl zurückgibt, die angibt, wie ähnlich (oder unterschiedlich) diese sind. Bei der Vektorsuche geht es im Kern darum, „die K Vektoren mit dem besten Metrikwert für meine Abfrage zu finden“. Alles andere – Indizes, Cluster, Graphen – dient lediglich der Verwaltung, um zu vermeiden, dass dieser Wert für jeden einzelnen Vektor in der Datenbank berechnet werden muss.
Die von Ihnen gewählte Metrik definiert, was „ähnlich“ für Ihre Daten bedeutet. Zwei Einbettungen können unter einer Metrik „nahe“ und unter einer anderen „weit“ sein – gleiche Daten, unterschiedliches Ergebnis. Deshalb erfolgt diese Auswahl, bevor Sie überhaupt einen Index erstellen.
Probieren Sie Folgendes aus: Ziehen Sie den Abfragepunkt in die Nähe des Ursprungs und wechseln Sie zwischen „Cosine“ und „ L2 “. Beobachten Sie, wie „Cosine“ nur darauf achtet, in welche „Richtung“ die Abfrage zeigt – Punkte auf der gegenüberliegenden Seite des Ursprungs können bei „ L2 “ „nah“ sein, bei „Cosine“ jedoch „weit“. Diese visuelle Darstellung verdeutlicht das gesamte Konzept.
In „ Milvus “ wird die Metrik pro Index über „ metric_type “ festgelegt — L2, IPoder COSINE für dichte Vektoren — festgelegt, wenn Sie den Index erstellen. Jede Suche in dieser Sammlung verwendet dann dieselbe Funktion, mit der Sie oben experimentiert haben. Die zuverlässigste Regel überhaupt: Verwenden Sie die Metrik, mit der Ihr Einbettungsmodell trainiert wurde; diese ist auf praktisch jeder Modellkarte aufgeführt.
Zwei nützliche Abkürzungen. Die meisten modernen Text-Embedding-APIs (OpenAI, Cohere, Voyage und die meisten „Sentence Transformers“) erzeugen Vektoren, die für die Kosinusähnlichkeit ausgelegt sind. Und wenn Ihre Vektoren auf Einheitslänge normiert sind, liefern Kosinus und Skalarprodukt identische Ranglisten – daher IP die Verwendung normalisierter Vektoren ist ein gängiger, etwas ressourcenschonenderer Ersatz für COSINE.
Verwende die Kosinusähnlichkeit (metric_type „ COSINE “ in Milvus). Fast alle modernen Text-Embedding-Modelle – einschließlich der „text-embedding-3“-Familie von OpenAI – sind auf die Kosinusähnlichkeit trainiert. Da OpenAI -Embeddings auf die Einheitslänge normiert sind, liefert das Skalarprodukt (IP) identische Rangfolgen und ist eine gute Alternative.
Die Kosinusähnlichkeit misst nur den Winkel zwischen zwei Vektoren und ignoriert deren Längen. Das Skalarprodukt (Inneres Produkt) berücksichtigt sowohl die Ausrichtung als auch die Größe, sodass ein längerer Vektor, der in dieselbe Richtung zeigt, eine höhere Punktzahl erhält. Bei einheitsnormierten Vektoren sind die beiden mathematisch äquivalent.
Nein. Die Metrik wird beim Erstellen des Indexes fest eingebettet. Um die Metrik zu wechseln, müssen Sie den Index löschen und mit einem neuen `metric_type` neu erstellen. Die Bewertungen verschiedener Metriken sind zudem nicht miteinander vergleichbar; mischen Sie sie daher bei der Nachbearbeitung der Ergebnisse nicht.
Die Geschwindigkeit ist im Wesentlichen identisch – „ L2 “, „ IP “ und „cosine“ erfordern jeweils einen Durchlauf über den Vektor. Der Recall ist entscheidend: Die Suche mit einer anderen Metrik als der, für die Ihr Einbettungsmodell trainiert wurde, verschlechtert stillschweigend die Ergebnisqualität, oft dramatisch.
Mehr dazu: Lesen Sie die Dokumentation zu Ähnlichkeitsmetriken, um die vollständige Liste der von „ Milvus “ unterstützten Metriken zu erhalten, darunter Hamming und Jaccard für binäre Vektoren sowie BM25 für die Volltextsuche.
Nebeneinander-Vergleich von Brute-Force- und Cluster-Suche. Optimieren Sie „ nprobe “ in Echtzeit.
Verfolgen Sie die mehrschichtige Graphensuche Schritt für Schritt – von „Highway Jumps“ bis hin zu „Local Walks“.
Sehen Sie selbst, wie Sie mit PQ-in-RAM +full-vectors-on-SSD Datensätze im Milliardenbereich auf einem Laptop durchsuchen können.