Share via


Relevanzbewertung in der Hybridsuche mithilfe der Reciprocal Rank Fusion (RRF)

Reciprocal Rank Fusion (RRF) ist ein Algorithmus, der die Suchergebnisse aus mehreren, zuvor bewerteten Ergebnissen auswertet, um ein einheitliches Resultset zu erzeugen. In Azure AI Search wird RRF verwendet, wenn zwei oder mehr Abfragen parallel ausgeführt werden. Jede Abfrage erzeugt ein bewertetes Resultset, und RRF wird verwendet, um die Rangfolgen in einem einzelnen Resultset zusammenzuführen und zu homogenisieren, das in der Abfrageantwort zurückgegeben wird. Beispiele für Szenarien, in denen RRF immer verwendet wird, umfassen die Hybridsuche und mehrere Vektorabfragen, die gleichzeitig ausgeführt werden.

RRF basiert auf dem Konzept der gegenseitigen Rangfolge, was die Umkehrung des Rangs des ersten relevanten Dokuments in einer Liste der Suchergebnisse darstellt. Das Ziel der Technik ist es, die Position der Elemente in den ursprünglichen Rangfolgen zu berücksichtigen und den Elementen, die in mehreren Listen höher eingestuft werden, höhere Bedeutung zu geben. Dies kann dazu beitragen, die Gesamtqualität und Zuverlässigkeit der endgültigen Rangfolge zu verbessern, sodass es für die Aufgabe nützlicher ist, mehrere sortierte Suchergebnisse zu fusionieren.

Funktionsweise der RRF-Bewertung

RRF funktioniert, indem die Suchergebnisse aus mehreren Methoden verwendet werden, jedem Dokument in den Ergebnissen ein gegenseitiger Bewertungswert zugewiesen wird und dann die Bewertungen kombiniert werden, um eine neue Bewertung zu erstellen. Das Konzept besteht darin, dass Dokumente, die in den obersten Positionen in mehreren Suchmethoden angezeigt werden, wahrscheinlich relevanter sind und im kombinierten Ergebnis höher eingestuft werden sollten.

Hier ist eine einfache Erläuterung des RRF-Prozesses:

  1. Abrufen von bewerteten Suchergebnissen aus mehreren Abfragen, die parallel ausgeführt werden.

  2. Weisen Sie in jeder der Ranglisten die rangfolgenseitigen Bewertungsergebnisse zu. RRF generiert für jede Übereinstimmung in jedem Resultset eine neue @search.score. Für jedes Dokument in den Suchergebnissen weist das Modul basierend auf seiner Position in der Liste eine Kehrbewertung zu. Die Bewertung wird berechnet als 1/(rank + k), wobei rank die Position des Dokuments in der Liste und k eine Konstante ist, die experimentell beobachtet wurde, um am besten zu funktionieren, wenn sie auf einen kleinen Wert wie 60 festgelegt ist. Beachten Sie, dass dieser k-Wert eine Konstante im RRF-Algorithmus ist und vollständig von k, das die Anzahl der Nearest-Neighbors steuert, getrennt ist.

  3. Kombinieren Sie Bewertungen. Für jedes Dokument summiert das Modul die von jedem Suchsystem erhaltenen gegenseitigen Bewertungsergebnisse und erzeugt für jedes Dokument eine kombinierte Bewertung. 

  4. Das Modul bewertet Dokumente basierend auf kombinierten Bewertungen und sortiert sie. Die resultierende Liste ist die Fused-Rangfolge.

Für die Bewertung werden nur Felder verwendet, die im Index als searchable oder in der Abfrage als searchFields markiert sind. Es werden nur Felder zurückgegeben, die in der Abfrage als retrievable markiert oder als select angegeben sind, zusammen mit ihrer Suchbewertung.

Ausführung paralleler Abfragen

RRF wird immer verwendet, wenn mehr als eine Abfrageausführung ausgeführt wird. Die folgenden Beispiele veranschaulichen Abfragemuster, bei denen die parallele Abfrageausführung auftritt:

  • Eine Volltextabfrage plus eine Vektorabfrage (einfaches Hybridszenario) entspricht zwei Abfrageausführungen.
  • Eine Volltextabfrage sowie eine Vektorabfrage, die auf zwei Vektorfelder ausgerichtet ist, entspricht drei Abfrageausführungen.
  • Eine Volltextabfrage sowie zwei Vektorabfragen, die auf fünf Vektorfelder ausgerichtet sind, entsprechen 11 Abfrageausführungen.

Bewertungen in hybriden Suchergebnissen

Wenn Ergebnisse bewertet werden, enthält die Eigenschaft den Wert @search.score, der zum Sortieren der Ergebnisse verwendet wird. Bewertungen werden durch Bewertungsalgorithmen generiert, die je nach Methode variieren. Jeder Algorithmus hat einen eigenen Bereich und eine eigene Größe.

Das folgende Diagramm identifiziert die Bewertungseigenschaft, die für jede Übereinstimmung, jeden Algorithmus und den Bereich der Bewertungen für jeden Relevanzbewertungsalgorithmus zurückgegeben wird.

Suche Parameter Bewertungsalgorithmus Bereich
Volltextsuche @search.score BM25-Algorithmus Keine Obergrenze.
Vektorsuche @search.score HNSW-Algorithmus unter Verwendung der in der HNSW-Konfiguration angegebenen Ähnlichkeitsmetrik. 0,333 - 1,00 (Kosinus), 0 bis 1 für Euklidan und DotProduct.
Hybridsuche @search.score RRF-Algorithmus Die obere Grenze wird an die Anzahl der zusammengeführten Abfragen gebunden, wobei jede Abfrage maximal 1 zum RRF-Score beiträgt. Beispielsweise würde das Zusammenführen von drei Abfragen höhere RRF-Ergebnisse erzeugen, als wenn nur zwei Suchergebnisse zusammengeführt werden.
Semantische Rangfolge @search.rerankerScore Semantische Rangfolge 0,00 - 4,00

Die semantische Rangfolge trägt nicht zu RRF bei. Die Bewertung (@search.rerankerScore) wird immer separat in der Abfrageantwort gemeldet. Die semantische Rangfolge kann Volltext- und Hybridsuchergebnisse neu ranken, vorausgesetzt, diese Ergebnisse enthalten Felder mit semantisch reichhaltigem Inhalt.

Anzahl der bewerteten Ergebnisse in einer Hybridabfrageantwort

Wenn Sie die Paginierung nicht verwenden, gibt die Suchmaschine standardmäßig die höchsten 50 Bewertungsübereinstimmungen für die Volltextsuche und die ähnlichsten k Übereinstimmungen für die Vektorsuche zurück. In einer Hybridabfrage bestimmt top die Anzahl der Ergebnisse in der Antwort. Basierend auf den Standardwerten werden die höchsten 50 Übereinstimmungen des einheitlichen Resultsets zurückgegeben.

Häufig findet die Suchmaschine mehr Ergebnisse als top und k. Um weitere Ergebnisse zurückzugeben, verwenden Sie die Paginierungsparameter top, skip und next. Das Paginieren bestimmt die Anzahl der Ergebnisse auf jeder logischen Seite und navigiert durch die vollständige Nutzlast.

Die Volltextsuche unterliegt einem maximalen Grenzwert von 1.000 Übereinstimmungen (siehe API-Antwortgrenzwerte). Sobald 1.000 Übereinstimmungen gefunden wurden, sucht die Suchmaschine nicht mehr nach weiteren.

Weitere Informationen finden Sie unter Arbeiten mit Suchergebnissen.

Diagramm eines Suchbewertungsworkflows

Das folgende Diagramm veranschaulicht eine Hybridabfrage, welche die Schlüsselwort- und Vektorsuche aufruft, wobei die Bewertungsprofile und die semantische Rangfolge erhöht werden.

Diagram of prefilters.

Eine Abfrage, die den vorherigen Workflow generiert, sieht möglicherweise wie folgt aus:

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2023-11-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
   "queryType":"semantic",
   "search":"hello world",
   "searchFields":"field_a, field_b",
   "vectorQueries": [
       {
           "kind":"vector",
           "vector": [1.0, 2.0, 3.0],
           "fields": "field_c, field_d"
       },
       {
           "kind":"vector",
           "vector": [4.0, 5.0, 6.0],
           "fields": "field_d, field_e"
       }
   ],
   "scoringProfile":"my_scoring_profile"
}

Siehe auch