Da der Index nun mit ELSER-Einbettungen ausgestattet ist, kann die Funktion handle_search() in app.py so geändert werden, dass sie diese Einbettungen durchsucht. Zunächst lernen Sie, wie Sie nur mit ELSER suchen können. Später werden die bisherigen Suchmethoden wieder integriert, um eine kombinierte Lösung zu erstellen.
Um ELSER-Inferenzen bei der Suche zu nutzen, wird der Abfragetyp text_expansion verwendet. Nachfolgend sehen Sie eine aktualisierte handle_search() -Funktion mit dieser Abfrage:
Die text_expansion -Abfrage empfängt einen Schlüssel mit dem Namen des zu durchsuchenden Feldes. Unter diesem Schlüssel konfiguriert model_id , welches Modell bei der Suche verwendet werden soll, und model_text definiert, wonach gesucht werden soll. Beachten Sie, dass in diesem Fall kein Embedding für den Suchtext generiert werden muss, da Elasticsearch das Modell verwaltet und sich darum kümmern kann.
In der obigen Version von handle_search() wurden die filters nicht verwendet, und die Aggregationen wurden weggelassen. Diese können auf die gleiche Weise wieder hinzugefügt werden, wie sie in die Volltextsuchlösung integriert wurden. Nachfolgend ist eine aktualisierte handle_search() Funktion aufgeführt, die die text_expansion Abfrage in einen bool.must Abschnitt verschiebt, wobei Filter in bool.filter enthalten sind und Aggregationen wie zuvor hinzugefügt werden.
Nehmen Sie sich etwas Zeit, um mit verschiedenen Suchanfragen zu experimentieren. Sie werden feststellen, dass – ähnlich wie bei dichten Vektoreinbettungen – die vom ELSER-Modell gesteuerten Suchvorgänge besser funktionieren als die Volltextsuche, wenn die exakten Wörter nicht in den indizierten Dokumenten vorkommen.
Vorher
ELSER ModellNächste
Hybride Suche