Ü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 die folgenden Rank Fusion-Algorithmen:
| Algorithmus | Beschreibung |
|---|---|
| RRF (Reciprocal Rank Fusion) | Fusionsalgorithmus basierend auf dem Kehrwert der Rangposition |
| Score Fusion | Fusion durch Score-Normalisierung und gewichteten Durchschnitt |
| Borda Count | Abstimmungsbasierte Ranking-Fusion |
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: 60)rank(d): Rang des Dokuments d in jedem Suchergebnis
Einstellungen
fess_config.properties
Grundeinstellungen:
# Rank Fusion aktivieren
rank.fusion.enabled=true
# Zu verwendender Algorithmus
rank.fusion.algorithm=rrf
# RRF k-Parameter
rank.fusion.rrf.k=60
# Suchtypen für die Fusion
rank.fusion.search.types=keyword,semantic
Algorithmus-spezifische Einstellungen
RRF-Einstellungen:
rank.fusion.algorithm=rrf
rank.fusion.rrf.k=60
Score Fusion-Einstellungen:
rank.fusion.algorithm=score
rank.fusion.score.normalize=true
rank.fusion.score.weights=0.7,0.3
Borda Count-Einstellungen:
rank.fusion.algorithm=borda
rank.fusion.borda.top_n=100
Integration mit Hybridsuche
Rank Fusion ist besonders effektiv bei der Hybridsuche, die Schlüsselwortsuche und semantische Suche kombiniert.
Konfigurationsbeispiel
# Hybridsuche aktivieren
search.hybrid.enabled=true
# Ergebnisse von Schlüsselwortsuche und semantischer Suche fusionieren
rank.fusion.enabled=true
rank.fusion.algorithm=rrf
rank.fusion.rrf.k=60
# Gewichtung für jeden Suchtyp
search.hybrid.keyword.weight=0.6
search.hybrid.semantic.weight=0.4
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
Benutzerdefiniertes Scoring
Beispiel für die Kombination mehrerer Score-Faktoren:
# Basis-Suchscore + Datums-Boost + Popularität
rank.fusion.enabled=true
rank.fusion.algorithm=score
rank.fusion.score.factors=relevance,recency,popularity
rank.fusion.score.weights=0.5,0.3,0.2
Leistungsüberlegungen
Speicherverbrauch
Der Speicherverbrauch steigt, da mehrere Suchergebnisse gehalten werden
Begrenzen Sie die maximale Anzahl der Fusionsziele mit
rank.fusion.max.results
# Maximale Ergebnisanzahl für die Fusion
rank.fusion.max.results=1000
Verarbeitungszeit
Die Antwortzeit steigt, da mehrere Suchen ausgeführt werden
Erwägen Sie Optimierung durch parallele Ausführung
# Parallele Ausführung aktivieren
rank.fusion.parallel=true
rank.fusion.thread.pool.size=4
Cache
Nutzen Sie Caching für häufige Abfragen
# Cache für Rank Fusion-Ergebnisse
rank.fusion.cache.enabled=true
rank.fusion.cache.size=1000
rank.fusion.cache.expire=300
Fehlersuche
Suchergebnisse weichen von Erwartungen ab
Symptom: Ergebnisse nach Rank Fusion weichen von den Erwartungen ab
Prüfpunkte:
Ergebnisse jedes Suchtyps einzeln überprüfen
Prüfen, ob die Gewichtung angemessen ist
Den k-Parameterwert anpassen
Suche ist langsam
Symptom: Suche wird bei aktiviertem Rank Fusion langsam
Lösungen:
Parallele Ausführung aktivieren:
rank.fusion.parallel=true
Anzahl der Fusionsziel-Ergebnisse begrenzen:
rank.fusion.max.results=500
Caching aktivieren:
rank.fusion.cache.enabled=true
Speichermangel
Symptom: OutOfMemoryError tritt auf
Lösungen:
Maximale Anzahl der Fusionsziel-Ergebnisse reduzieren
JVM-Heap-Größe erhöhen
Nicht benötigte Suchtypen deaktivieren
Referenz
Skripting-Übersicht - Scripting-Übersicht
../admin/search-settings - Sucheinstellungen-Leitfaden
Übersicht LLM-Integration - LLM-Integrations-Leitfaden (Semantische Suche)