HyperAI

Reziproke Rangfusion (RRF)

Reciprocal Rank Fusion (RRF) ist ein Algorithmus, der die Suchergebnisse mehrerer zuvor bewerteter Ergebnisse auswertet, um einen einheitlichen Ergebnissatz zu erstellen.Dabei handelt es sich um eine Methode, mehrere Ergebnismengen mit unterschiedlichen Relevanzindikatoren in einer einzigen Ergebnismenge zu kombinieren. Eine Anpassung der RRF und eine Korrelation verschiedener Relevanzmetriken untereinander ist nicht erforderlich, um qualitativ hochwertige Ergebnisse zu erzielen. Die in Zusammenarbeit zwischen der University of Waterloo (Kanada) und Google entwickelte Technik „erzielt bessere Ergebnisse als jedes einzelne System allein und bessere als herkömmliche Methoden zur Neubewertung“, so die Autoren.

RRF-Prozess

Das Grundprinzip von RRF besteht darin, dass Dokumente, die bei unterschiedlichen Suchstrategien durchgängig in den oberen Positionen erscheinen, wahrscheinlich relevanter sind und daher in den zusammengeführten Ergebnissen ein höheres Ranking erhalten sollten.

Hier ist eine vereinfachte Aufschlüsselung des RRF-Prozesses:

  1. Sammeln Sie sortierte Suchergebnisse aus mehreren gleichzeitigen Abfragen.
  2. Weisen Sie jedem Ergebnis in der Rangliste eine reziproke Rangfolgepunktzahl zu. Der RRF-Prozess generiert für jede Übereinstimmung in jedem Ergebnissatz einen neuen Suchergebniswert. Für jedes Dokument in den Suchergebnissen weist der Algorithmus basierend auf seiner Position in der Liste einen entsprechenden Rangwert zu. Die Punktzahl wird als 1/(Rang + k) berechnet, wobei „Rang“ die Position des Dokuments in der Liste und „k“ eine Konstante ist. Empirische Beobachtungen zeigen, dass k die beste Leistung erbringt, wenn es auf einen kleinen Wert wie 60 eingestellt wird. Beachten Sie, dass dieser „k“-Wert im RRF-Algorithmus eine Konstante ist und sich völlig von dem „k“ unterscheidet, das die Anzahl der nächsten Nachbarn anpasst.
  3. Punkte kombinieren. Der Algorithmus addiert die aus jeder Suchstrategie für jedes Dokument erhaltenen gegenseitigen Rangfolgewerte und generiert so einen kombinierten Wert für jedes Dokument.
  4. Der Algorithmus bewertet die Dokumente anhand der kombinierten Punktzahlen und ordnet sie entsprechend an. Die resultierende Liste stellt das Ensemble-Ranking dar.

Der Reciprocal Rank Fusion (RRF)-Prozess kann anhand eines Flussdiagramms beschrieben werden:

Abbildung 1:Flussdiagramm der Reciprocal Rank Fusion (RRF). Die Abbildung veranschaulicht die Schritte des RRF-Rankingprozesses.

Implementierung der RRF

RRF verwendet die folgende Formel, um den Ranking-Score für jedes Dokument zu bestimmen:

score = 0.0
for q in queries:
    if d in result(q):
        score += 1.0 / ( k + rank( result(q), d ) )
return score

# where
# k is a ranking constant
# q is a query in the set of queries
# d is a document in the result set of q
# result(q) is the result set of q
# rank( result(q), d ) is d's rank within the result(q) starting from 1

(Code von Elasticsearch-Dokumentation

Verweise

【1】https://safjan.com/implementing-rank-fusion-in-python/

【2】https://www.elastic.co/guide/en/elasticsearch/reference/current/rrf.html