Reranking
Milvus ermöglicht hybride Suchfunktionen unter Verwendung der hybrid_search()-API, die ausgeklügelte Reranking-Strategien zur Verfeinerung von Suchergebnissen aus mehreren AnnSearchRequest
-Instanzen beinhaltet. Dieses Thema behandelt den Reranking-Prozess, erklärt seine Bedeutung und die Implementierung verschiedener Reranking-Strategien in Milvus.
Überblick
Die folgende Abbildung veranschaulicht die Ausführung einer hybriden Suche in Milvus und verdeutlicht die Rolle des Rerankings in diesem Prozess.
Das Reranking in der hybriden Suche ist ein entscheidender Schritt, der die Ergebnisse aus mehreren Vektorfeldern konsolidiert und damit sicherstellt, dass die endgültige Ausgabe relevant und genau priorisiert ist. Gegenwärtig bietet Milvus die folgenden Strategien für das Reranking:
WeightedRanker
: Bei diesem Ansatz werden die Ergebnisse zusammengeführt, indem ein gewichteter Durchschnitt der Punktzahlen (oder Vektorabstände) aus verschiedenen Vektorsuchen berechnet wird. Die Gewichtung erfolgt auf der Grundlage der Bedeutung der einzelnen Vektorfelder.RRFRanker
: Bei dieser Strategie werden die Ergebnisse auf der Grundlage ihrer Ränge in den verschiedenen Vektorsäulen kombiniert.
Gewichtete Wertung (WeightedRanker)
Die Strategie WeightedRanker
gewichtet die Ergebnisse der einzelnen Vektorabrufe je nach Bedeutung der einzelnen Vektorfelder unterschiedlich. Diese Reranking-Strategie wird angewendet, wenn die Signifikanz der einzelnen Vektorfelder variiert, so dass Sie bestimmte Vektorfelder gegenüber anderen hervorheben können, indem Sie ihnen eine höhere Gewichtung zuweisen. Zum Beispiel könnte bei einer multimodalen Suche die Textbeschreibung als wichtiger angesehen werden als die Farbverteilung in Bildern.
Der grundlegende Prozess von WeightedRanker ist wie folgt:
Sammeln von Bewertungen während des Retrievals: Sammeln von Ergebnissen und deren Punktzahlen aus verschiedenen Vektorabfragen.
Normalisierung der Punktzahl: Normalisierung der Punktzahlen von jeder Route auf einen Bereich von [0,1], wobei Werte, die näher an 1 liegen, eine höhere Relevanz anzeigen. Diese Normalisierung ist von entscheidender Bedeutung, da die Punkteverteilungen je nach Art der Metrik variieren. Zum Beispiel reicht der Abstand für IP von [-∞,+∞], während der Abstand für L2 von [0,+∞] reicht. Milvus verwendet die Funktion
arctan
, die Werte in den Bereich [0,1] transformiert, um eine standardisierte Basis für verschiedene Metrik-Typen zu schaffen.Gewichtszuweisung: Weisen Sie jedem Vektorabrufweg ein Gewicht
w𝑖
zu. Die Benutzer legen die Gewichte fest, die die Zuverlässigkeit, Genauigkeit oder andere relevante Metriken der Datenquelle widerspiegeln. Jede Gewichtung reicht von [0,1].Punkte-Fusion: Berechnet einen gewichteten Durchschnitt der normalisierten Ergebnisse, um das endgültige Ergebnis zu ermitteln. Die Ergebnisse werden dann auf der Grundlage dieser höchsten bis niedrigsten Punktzahl geordnet, um die endgültigen sortierten Ergebnisse zu erhalten.
gewichteter-Reranker
Um diese Strategie zu verwenden, wenden Sie eine Instanz von WeightedRanker
an und legen die Gewichtungswerte fest, indem Sie eine variable Anzahl von numerischen Argumenten übergeben.
from pymilvus import WeightedRanker
# Use WeightedRanker to combine results with specified weights
rerank = WeightedRanker(0.8, 0.8, 0.7)
Beachten Sie dies:
Jeder Gewichtungswert reicht von 0 (am wenigsten wichtig) bis 1 (am wichtigsten) und beeinflusst die endgültige aggregierte Punktzahl.
Die Gesamtzahl der in
WeightedRanker
angegebenen Gewichtungswerte sollte der Anzahl derAnnSearchRequest
Instanzen entsprechen, die Sie zuvor erstellt haben.Es ist erwähnenswert, dass wir aufgrund der unterschiedlichen Messungen der verschiedenen Metrik-Typen die Abstände der Recall-Ergebnisse so normalisieren, dass sie im Intervall [0,1] liegen, wobei 0 für unterschiedlich und 1 für ähnlich steht. Die endgültige Punktzahl ergibt sich aus der Summe der Gewichtungswerte und Abstände.
Reciprocal Rank Fusion (RRFRanker)
RRF ist eine Datenfusionsmethode, die Ranglisten auf der Grundlage des Kehrwerts ihrer Ränge kombiniert. Es ist eine wirksame Methode, um den Einfluss der einzelnen Vektorfelder auszugleichen, insbesondere wenn es keine eindeutige Rangfolge der Wichtigkeit gibt. Diese Strategie wird in der Regel angewandt, wenn alle Vektorfelder gleichwertig berücksichtigt werden sollen oder wenn Unsicherheit über die relative Bedeutung der einzelnen Felder besteht.
Der grundlegende Prozess der RRF ist wie folgt:
Sammeln von Rankings während des Retrievals: Abrufer über mehrere Vektorfelder hinweg rufen die Ergebnisse ab und sortieren sie.
Rangfusion: Der RRF-Algorithmus gewichtet und kombiniert die Ränge der einzelnen Abrufer. Die Formel lautet wie folgt:
rrf-ranker
Dabei steht 𝑁 für die Anzahl der verschiedenen Abrufwege, rank𝑖(𝑑) ist die Rangposition des abgerufenen Dokuments 𝑑 durch den 𝑖-ten Retriever und 𝑘 ist ein Glättungsparameter, der normalerweise auf 60 gesetzt wird.
Umfassendes Ranking: Neueinstufung der abgerufenen Ergebnisse auf der Grundlage der kombinierten Punktzahlen, um die endgültigen Ergebnisse zu erhalten.
Um diese Strategie zu verwenden, wenden Sie eine RRFRanker
Instanz an.
from pymilvus import RRFRanker
# Default k value is 60
ranker = RRFRanker()
# Or specify k value
ranker = RRFRanker(k=100)
RRF ermöglicht den Ausgleich des Einflusses zwischen den Feldern, ohne dass explizite Gewichtungen angegeben werden müssen. Die besten Übereinstimmungen, auf die sich mehrere Bereiche geeinigt haben, werden in der endgültigen Rangliste priorisiert.