Übersicht
Die Rank Fusion-Funktion von Fess integriert mehrere Suchergebnisse, um genauere Suchergebnisse zu liefern.
Was ist Rank Fusion
Rank Fusion ist eine Technik, die Ergebnisse aus mehreren Suchalgorithmen oder Bewertungsmethoden kombiniert, um ein einzelnes optimiertes Ranking zu generieren.
Hauptvorteile:
Kombiniert die Stärken verschiedener Algorithmen
Verbessert die Suchgenauigkeit
Liefert vielfältige Suchergebnisse
Unterstützte Algorithmen
Fess unterstützt den RRF (Reciprocal Rank Fusion)-Algorithmus.
RRF (Reciprocal Rank Fusion)
RRF berechnet Scores durch Summierung des Kehrwerts der Rangposition jedes Ergebnisses.
Formel:
score(d) = Σ 1 / (k + rank(d))
k: Konstanter Parameter (Standard: 20)rank(d): Rang des Dokuments d in jedem Suchergebnis
Einstellungen
fess_config.properties
Grundeinstellungen:
# Fenstergröße (Anzahl der Ergebnisse für die Fusion)
rank.fusion.window_size=200
# RRF rank_constant (k-Parameter)
rank.fusion.rank_constant=20
# Anzahl der Threads für parallele Verarbeitung (-1 ist Standard)
rank.fusion.threads=-1
# Name des Score-Felds
rank.fusion.score_field=rf_score
Integration mit Hybridsuche
Rank Fusion ist besonders effektiv bei der Hybridsuche, die Schlüsselwortsuche und semantische Suche kombiniert.
Anwendungsbeispiele
Grundlegende Hybridsuche
BM25-Score mit Schlüsselwortsuche berechnen
Vektorähnlichkeit mit semantischer Suche berechnen
Beide Ergebnisse mit RRF fusionieren
Endgültiges Ranking generieren
Suchablauf:
User Query
↓
┌──────────────────┬──────────────────┐
│ Keyword Search │ Semantic Search │
│ (BM25) │ (Vector) │
└────────┬─────────┴────────┬─────────┘
↓ ↓
Rank List 1 Rank List 2
└────────┬─────────┘
↓
Rank Fusion (RRF)
↓
Final Ranking
Leistungsüberlegungen
Speicherverbrauch
Der Speicherverbrauch steigt, da mehrere Suchergebnisse gehalten werden
Begrenzen Sie die maximale Anzahl der Fusionsziele mit
rank.fusion.window_size
# Fenstergröße für die Fusion
rank.fusion.window_size=200
Verarbeitungszeit
Die Antwortzeit steigt, da mehrere Suchen ausgeführt werden
Setzen Sie die Anzahl der Threads für parallele Ausführung mit
rank.fusion.threads
# Anzahl der Threads für parallele Ausführung (-1 ist Standard)
rank.fusion.threads=-1
Fehlersuche
Suchergebnisse weichen von Erwartungen ab
Symptom: Ergebnisse nach Rank Fusion weichen von den Erwartungen ab
Prüfpunkte:
Ergebnisse jedes Suchtyps einzeln überprüfen
Den
rank.fusion.rank_constant-Wert anpassenDen
rank.fusion.window_size-Wert anpassen
Suche ist langsam
Symptom: Suche wird bei aktiviertem Rank Fusion langsam
Lösungen:
rank.fusion.window_sizereduzieren:rank.fusion.window_size=100
rank.fusion.threadsanpassen:rank.fusion.threads=4
Speichermangel
Symptom: OutOfMemoryError tritt auf
Lösungen:
rank.fusion.window_sizereduzierenJVM-Heap-Größe erhöhen
Referenz
Skripting-Übersicht - Scripting-Übersicht
../admin/search-settings - Sucheinstellungen-Leitfaden
Übersicht LLM-Integration - LLM-Integrations-Leitfaden (Semantische Suche)