Sie haben nun zwei verschiedene Ansätze zur Suche in einer Dokumentensammlung kennengelernt, von denen jeder seine eigenen Vorteile bietet. Wenn eine dieser Methoden Ihren Bedürfnissen entspricht, benötigen Sie nichts anderes. In vielen Fällen liefert jedoch jede Suchmethode wertvolle Ergebnisse, die die andere Methode übersehen würde. Daher ist die beste Option, ein kombiniertes Ergebnis-Set anzubieten.
Für solche Fälle bietet Elasticsearch Reciprocal Rank Fusion an, einen Algorithmus, der Ergebnisse aus zwei oder mehr Listen zu einer einzigen Liste kombiniert.
Wie RRF funktioniert
Elasticsearch integriert den RRF-Algorithmus in die Suchanfrage. Betrachten Sie das folgende Beispiel, das Abschnitte query und knn enthält, um Volltext- bzw. Vektorsuchen anzufordern, sowie einen Abschnitt rrf , der diese zu einer einzigen Ergebnisliste kombiniert.
Während RRF für kurze Ergebnislisten ohne Konfiguration recht gut funktioniert, gibt es einige Parameter, die angepasst werden können, um die besten Ergebnisse zu erzielen. In der Dokumentation finden Sie detaillierte Informationen dazu.
RRF-Implementierung
Um eine kombinierte Suche zu ermöglichen, die Ergebnisse sowohl von Volltext- als auch von Vektorsuchmethoden liefert, muss die zuvor in der handle_search() -Funktion verwendete Volltextsuchlogik wieder eingeführt werden. Um eine hybride Suchstrategie zu implementieren, muss die Methode search() sowohl das Argument query als auch das Argument knn empfangen, wobei jedes Argument eine separate Abfrage anfordert. Der Abschnitt rank wird wie oben gezeigt ebenfalls hinzugefügt, um die Ergebnisse zu einer einzigen Rangliste zusammenzufassen.
Hier ist die Version von handle_search() , die die hybride Suchstrategie implementiert:
Bei dieser Version werden die besten Ergebnisse aller Suchmethoden kombiniert. Klicken Sie hier, um die vollständige Anwendung mit diesen Änderungen einzusehen.
Vorher
k-Nächste-Nachbarn-SucheNächste
Semantische Suche