Von der Vektorsuche bis hin zu leistungsstarken REST-APIs bietet Elasticsearch Entwicklern das umfangreichste Such-Toolkit. Sehen Sie sich die Beispiel-Notebooks auf GitHub an, um etwas Neues testen. Sie können auch noch heute Ihre kostenlose Testversion starten oder Elasticsearch lokal ausführen.
In diesem Artikel zeigen wir, wie man eine hybride Suche implementiert, die die Ergebnisse der Volltextsuche mit der Vektorsuche kombiniert. Durch die Vereinigung dieser beiden Ansätze verbessert die hybride Suche die Ergebnisbreite und nutzt die Vorteile beider Suchstrategien.
Neben der Integration der Hybridsuche zeigen wir Ihnen, wie Sie Funktionen hinzufügen können, die Ihre Suchlösung noch robuster machen. Dazu gehören Facettenmarketing und personalisierte Produktwerbung. Darüber hinaus zeigen wir Ihnen, wie Sie mit dem Behavioral Analytics Tool von Elastic Benutzerinteraktionen erfassen und wertvolle Erkenntnisse gewinnen können.
In dieser Implementierung sehen Sie, wie Sie sowohl die Benutzeroberfläche erstellen, die es Benutzern ermöglicht, die Suchergebnisse anzuzeigen und mit ihnen zu interagieren, als auch die API, die für die Rückgabe der Informationen zuständig ist. Die Links zu den Repositories mit dem Quellcode finden Sie unten:
- https://github.com/elastic/elasticsearch-labs/tree/main/supporting-blog-content/hybrid-search-for-an-e-commerce-product-catalogue/product-store-search
- https://github.com/elastic/elasticsearch-labs/tree/main/supporting-blog-content/hybrid-search-for-an-e-commerce-product-catalogue/app-product-store
Wir haben diesen Leitfaden in mehrere Schritte unterteilt, von der Erstellung des Index bis hin zur Implementierung erweiterter Funktionen wie Facettierung und Ergebnispersonalisierung. Am Ende verfügen Sie über eine robuste Suchlösung, die Sie im E-Commerce einsetzen können.
Umgebungseinrichtung für die hybride E-Commerce-Suche
Bevor wir mit der Implementierung beginnen, müssen wir die Umgebung einrichten. Sie können entweder einen Dienst auf Elastic Cloud oder eine containerisierte Lösung zur Verwaltung von Elasticsearch nutzen. Wenn Sie sich für die Containerisierung entscheiden, finden Sie eine Konfiguration über Docker Compose in diesem Repository: docker-compose.yml.
Indexerstellung und Produktkatalog-Einführung
Der Index wird auf Basis eines Katalogs von Kosmetikprodukten erstellt, der Felder wie Name, Beschreibung, Foto, Kategorie und Schlagwörter enthält. Felder, die für die Volltextsuche verwendet werden, wie „Name“ und „Beschreibung“, werden als text abgebildet, während Felder, die für Aggregationen verwendet werden, wie „Kategorie“ und „Marke“, als keyword abgebildet werden, um die Facettierung zu ermöglichen.
Das Feld „Beschreibung“ wird für die Vektorsuche verwendet, da es mehr Kontextinformationen zu den Produkten liefert. Dieses Feld wird als dense_vector, definiert und speichert die Vektordarstellung der Beschreibung.
Die Indexzuordnung erfolgt wie folgt:
Das Skript zur Erstellung des Indexes finden Sie hier.
Einbettungsgeneration
Zur Vektorisierung der Produktbeschreibungen verwenden wir das Modell all-MiniLM-L6-v2. In diesem Fall ist die Anwendung für die Generierung der Einbettungen vor der Indizierung verantwortlich. Eine weitere Möglichkeit wäre, das Modell in den Elasticsearch-Cluster zu importieren, aber für diese lokale Umgebung haben wir uns dafür entschieden, die Vektorisierung direkt innerhalb der Anwendung durchzuführen.
Wir nutzten den auf Kaggle verfügbaren Kosmetikdatensatz, um den Index zu füllen, und um die Effizienz der Datenerfassung zu verbessern, verwendeten wir die Stapelverarbeitung. Während dieser Aufnahmephase werden wir die Einbettungen für das Feld "description" generieren und sie im neuen Feld "description_embeddings" indizieren.
Der gesamte Datenerfassungsprozess kann direkt über das im Repository verfügbare Jupyter Notebook verfolgt und ausgeführt werden. Das Notebook bietet eine Schritt-für-Schritt-Anleitung, wie die Daten gelesen, verarbeitet und in Elasticsearch indexiert werden, was eine einfache Reproduktion und das Experimentieren ermöglicht.
Sie können das Notebook unter folgendem Link aufrufen: Ingestion Notebook.
Implementierung der Hybridsuche
Implementieren wir nun die hybride Suche. Für die schlüsselwortbasierte Suche verwenden wir die Abfrage multi_match , die auf die Felder "Name", "Kategorie" und "Beschreibung" abzielt. Dadurch wird sichergestellt, dass Dokumente abgerufen werden, die den Suchbegriff in einem dieser Felder enthalten.
Für die Vektorsuche verwenden wir die KNN-Abfrage. Der Suchbegriff muss vor der Ausführung der Abfrage vektorisiert werden. Dies geschieht mithilfe der Methode, die den Eingabebegriff vektorisiert. Beachten Sie, dass für den Suchbegriff dasselbe Modell verwendet wird, das während der Datenaufnahme verwendet wurde.
Die Kombination beider Suchvorgänge erfolgt mithilfe des Reciprocal Rank Fusion (RRF) -Algorithmus, der die Ergebnisse der beiden Abfragen zusammenführt und die Suchgenauigkeit durch Reduzierung von Rauschen erhöht. RRF ermöglicht die Kombination von schlüsselwortbasierter und Vektorsuche und verbessert so das Verständnis der Benutzeranfrage.
Ergebnisse im Vergleich: Stichwortsuche vs. Hybridsuche
Vergleichen wir nun die Ergebnisse einer herkömmlichen Stichwortsuche mit denen einer Hybridsuche. Bei der Suche nach „Foundation für trockene Haut“ mittels Stichwortsuche erhalten wir folgende Ergebnisse:

- Revlon ColorStay Make-up für normale/trockene Haut: Revlon ColorStay Make-up bietet langanhaltende Deckkraft mit einer leichten Formel, die nicht verläuft, verblasst oder abfärbt. Mit Time-Release-Technologie ist diese ölfreie, feuchtigkeitsausgleichende Formel speziell für normale oder trockene Haut entwickelt, um kontinuierlich Feuchtigkeit zu spenden. Eigenschaften: Angenehmes Tragegefühl und bis zu 24 Stunden Halt. Mittlere bis hohe Deckkraft. Erhältlich in einer Reihe wunderschöner Farbtöne.
- Maybelline Dream Smooth Mousse Foundation – Beschreibung: Warum Sie sie lieben werden: Die einzigartige, cremig-aufgeschlagene Foundation sorgt für ein 100 % babyweiches Hautgefühl.\n\nHaut Spendet 14 Stunden lang Feuchtigkeit – nie rau oder trocken. Die leichte Formel bietet optimale Feuchtigkeitspflege. Verschmilzt nahtlos mit der Haut und sorgt den ganzen Tag für ein frisches Gefühl. Ölfrei, parfümfrei, dermatologisch getestet, allergiegetestet, nicht komedogen – verstopft die Poren nicht. Sicher. Für empfindliche Haut.
Analyse: Bei der Suche nach „Foundation für trockene Haut“ wurden die Ergebnisse durch die exakte Übereinstimmung zwischen den Suchbegriffen und den Produkttiteln und -beschreibungen erzielt. Diese Übereinstimmung spiegelt jedoch nicht immer die beste Wahl wider. Zum Beispiel ist Revlon ColorStay Makeup für normale/trockene Haut eine gute Wahl, da es speziell für trockene Haut entwickelt wurde. Obwohl es ölfrei ist, ist seine Formel so konzipiert, dass sie für kontinuierliche Feuchtigkeitsversorgung sorgt. Im Gegensatz dazu erhielten wir auch die Maybelline Dream Smooth Mousse Foundation, die zwar ölfrei ist und Feuchtigkeit spendet, aber generell eher für fettige oder Mischhaut empfohlen wird, da ölfreie Produkte sich eher auf die Kontrolle des Öls konzentrieren, als die zusätzliche Feuchtigkeit zu spenden, die für trockene Haut notwendig ist. Dies verdeutlicht die Grenzen von schlüsselwortbasierten Suchen, die Produkte liefern können, die den spezifischen Bedürfnissen von Menschen mit trockener Haut nicht vollständig gerecht werden.
Wenn man nun dieselbe Suche mit dem hybriden Ansatz durchführt:

- CoverGirl Outlast Stay Luminous Foundation Creamy Natural (820): Beschreibung: Die CoverGirl Outlast Stay Luminous Foundation eignet sich perfekt, um ein taufrisches Finish und einen subtilen Glow zu erzielen. Es ist ölfrei und hat eine nicht fettende Formel, die Ihrer Haut einen natürlichen Glanz verleiht, der den ganzen Tag anhält! Diese Foundation hält den ganzen Tag, spendet der Haut Feuchtigkeit und sorgt gleichzeitig für eine makellose Deckkraft.
Analyse: Dieses Produkt passt gut, da es die Feuchtigkeitszufuhr betont, was für Anwender mit trockener Haut von entscheidender Bedeutung ist. Die Begriffe „spendet Feuchtigkeit“ und „glänzendes Finish“ entsprechen der Absicht des Nutzers, eine Foundation für trockene Haut zu finden. Die Vektorsuche hat wahrscheinlich das Konzept der Feuchtigkeitsversorgung verstanden und es mit dem Bedarf an einer Foundation in Verbindung gebracht, die trockene Haut berücksichtigt. - Revlon ColorStay Make-up für normale/trockene Haut: Beschreibung: Revlon ColorStay Make-up bietet langanhaltende Deckkraft mit einer leichten Formel, die nicht verklumpt, verblasst oder abfärbt. Dank der Time Release Technology ist diese ölfreie, feuchtigkeitsausgleichende Formel speziell für normale oder trockene Haut entwickelt worden, um kontinuierlich Feuchtigkeit zu spenden.
Analyse: Dieses Produkt geht direkt auf die Bedürfnisse von Anwendern mit trockener Haut ein, indem es ausdrücklich darauf hinweist, dass es für normale oder trockene Haut formuliert ist. Die „Feuchtigkeitsausgleichsformel“ und die kontinuierliche Feuchtigkeitszufuhr eignen sich hervorragend für alle, die eine Foundation suchen, die auf trockene Haut abgestimmt ist. Die Vektorsuche lieferte dieses Ergebnis erfolgreich, nicht nur aufgrund der Übereinstimmung mit den Schlüsselwörtern, sondern auch aufgrund des Fokus auf Feuchtigkeitsversorgung und der spezifischen Erwähnung von trockener Haut als Zielgruppe. - Serum Foundation – Beschreibung: Serum Foundations sind leichte Formulierungen mit mittlerer Deckkraft, die in einer umfassenden Farbpalette mit 21 Farbtönen erhältlich sind. Diese Foundations bieten eine moderate Deckkraft, die natürlich aussieht und sich wie ein sehr leichtes Serum anfühlt. Sie sind sehr niedrigviskos und werden mit der mitgelieferten Pumpe oder, falls gewünscht, mit der separat erhältlichen Glaspipette dosiert.
Analyse: In diesem Fall wird die leichte Serum-Foundation mit natürlichem Tragegefühl hervorgehoben, was den Bedürfnissen von Menschen mit trockener Haut entgegenkommt, da diese oft nach Produkten suchen, die sanft und feuchtigkeitsspendend sind und ein nicht maskenhaftes Finish bieten. Die Vektorsuche erfasste wahrscheinlich den breiteren Kontext der leichten, natürlichen Deckkraft und der serumartigen Textur, die mit Feuchtigkeitsspeicherung und einem angenehmen Auftragen verbunden ist, wodurch sie für trockene Haut relevant wird, obwohl der Begriff "trockene Haut" nicht explizit erwähnt wird.
Facettenimplementierung
Facetten sind unerlässlich, um Suchergebnisse effizient zu verfeinern und zu filtern und den Nutzern eine gezieltere Navigation zu ermöglichen, insbesondere in Szenarien mit einer großen Produktvielfalt, wie beispielsweise im E-Commerce. Sie ermöglichen es den Nutzern, die Ergebnisse anhand von Attributen wie Kategorie, Marke oder Preis anzupassen, wodurch die Suche präziser wird. Zur Implementierung dieser Funktion verwenden wir Termaggregationen auf den Feldern category und brand , die während der Indexerstellungsphase als keyword definiert wurden.
Den vollständigen Code für die Implementierung finden Sie hier.
Nachfolgend die Facetten-Ergebnisse der Suche nach „Foundation für trockene Haut“:

Ergebnisse anpassen: Angeheftete Abfragen
In einigen Fällen kann es von Vorteil sein, bestimmte Produkte in den Suchergebnissen hervorzuheben. Hierfür verwenden wir angeheftete Suchanfragen, die es ermöglichen, dass bestimmte Produkte ganz oben in den Suchergebnissen erscheinen. Im Folgenden führen wir eine Suche nach dem Begriff „Foundation“ durch, ohne dabei Produkte zu bewerben:

In unserem Beispiel können wir Produkte bewerben, die mit dem Etikett „Glutenfrei“ gekennzeichnet sind. Durch die Verwendung der Produkt-IDs stellen wir sicher, dass diese in den Suchergebnissen priorisiert werden. Konkret werden wir die folgenden Produkte bewerben: Serum Foundation (ID: 1043), Coverage Foundation (ID: 1042) und Realist Invisible Setting Powder (ID: 1039).
Wir verwenden spezifische Produkt-IDs, um sicherzustellen, dass diese in den Suchergebnissen priorisiert werden. Die Abfragestruktur enthält eine Liste von Produkt-IDs, die oben "angeheftet" werden sollen (in diesem Fall die IDs 1043, 1042 und 1039), während die übrigen Ergebnisse dem organischen Suchverlauf folgen und eine Kombination von Bedingungen wie der Textabfrage in den Feldern "Name", "Kategorie" und "Beschreibung" verwenden. Auf diese Weise können Artikel gezielt beworben werden, wodurch ihre Sichtbarkeit gewährleistet wird, während die übrige Suche weiterhin auf der üblichen Relevanz basiert.
Nachfolgend sehen Sie das Ergebnis der Abfrageausführung mit den beworbenen Produkten:

Den vollständigen Abfragecode finden Sie hier.
Analyse des Suchverhaltens mithilfe von Verhaltensanalysen
Bis jetzt haben wir bereits Funktionen hinzugefügt, um die Relevanz der Suchergebnisse zu verbessern und die Auffindbarkeit von Produkten zu erleichtern. Nun vervollständigen wir unsere Suchlösung, indem wir eine Funktion integrieren, die uns hilft, das Suchverhalten der Nutzer zu analysieren und Muster wie Suchanfragen mit oder ohne Ergebnisse sowie Klicks auf Suchergebnisse zu identifizieren. Hierfür nutzen wir die Verhaltensanalysefunktion von Elastic. Damit können wir in nur wenigen Schritten das Suchverhalten der Nutzer überwachen und analysieren und so wertvolle Erkenntnisse gewinnen, um das Sucherlebnis zu optimieren.
Erstellung der Verhaltensanalyse-Sammlung
Unser erster Schritt wird darin bestehen, eine Sammlung zu erstellen, die für den Empfang aller Verhaltensanalyseereignisse zuständig sein wird. Um die Sammlung zu erstellen, greifen Sie über Suche > Verhaltensanalysen auf die Kibana-Oberfläche zu. Im folgenden Beispiel haben wir die Sammlung mit dem Namen tracking-search erstellt.

Integration von Verhaltensanalysen in die Schnittstelle
Unsere Front-End -Anwendung wurde in JavaScript entwickelt, und um Behavioral Analytics zu integrieren, werden wir die in der offiziellen Elastic-Dokumentation beschriebenen Schritte zur Installation des Behavioral Analytics JavaScript Trackers befolgen.
Implementierung des JavaScript-Trackers
Nun importieren wir den Tracker-Client in unsere Anwendung und verwenden die Methoden trackPageView, trackSearch und trackSearchClick , um Benutzerinteraktionen zu erfassen.
Hinweis: Obwohl wir ein Tool zur Erfassung von Nutzerinteraktionsdaten verwenden, ist die Einhaltung der DSGVO unerlässlich. Dies bedeutet, die Nutzer klar darüber zu informieren, welche Daten erhoben werden, wie diese verwendet werden und ihnen die Möglichkeit zu geben, der Nachverfolgung zu widersprechen. Darüber hinaus müssen wir strenge Sicherheitsmaßnahmen implementieren, um die gesammelten Informationen zu schützen und die Rechte der Nutzer, wie z. B. das Recht auf Datenzugriff und -löschung, zu respektieren und sicherzustellen, dass alle Schritte den Grundsätzen der DSGVO entsprechen.
Schritt 1: Erstellen der Tracker-Instanz
Zuerst erstellen wir die Tracker-Instanz, die die Interaktionen überwacht. In dieser Konfiguration definieren wir den Zielendpunkt, den Sammlungsnamen und den API-Schlüssel:
Schritt 2: Seitenaufrufe erfassen
Um Seitenaufrufe zu verfolgen, können wir das trackPageView -Ereignis konfigurieren:
Weitere Einzelheiten zum trackPageView -Ereignis finden Sie in dieser Dokumentation.
Schritt 3: Suchanfragen erfassen
Um die Suchaktionen der Nutzer zu überwachen, verwenden wir die trackSearch -Methode:
Hier erfassen wir den Suchbegriff und die Suchergebnisse.
Schritt 4: Klicks auf Suchergebnisse verfolgen
Um schließlich Klicks auf Suchergebnisse zu erfassen, verwenden wir die trackSearchClick -Methode:
Wir erfassen Informationen über die ID des angeklickten Dokuments sowie über den Suchbegriff und die Suchergebnisse.
Analyse der Daten in Kibana
Da nun Benutzerinteraktionsereignisse erfasst werden, können wir wertvolle Daten über Suchaktionen gewinnen. Kibana verwendet das Tool „Verhaltensanalyse“, um diese Verhaltensdaten zu visualisieren und zu analysieren. Um die Ergebnisse anzuzeigen, navigieren Sie einfach zu „Suchen“ > „Verhaltensanalyse“ > „Meine Sammlung“. Dort wird eine Übersicht der erfassten Ereignisse angezeigt.

In dieser Übersicht erhalten wir einen allgemeinen Überblick über die Ereignisse, die für jede in unsere Benutzeroberfläche integrierte Aktion erfasst werden. Aus diesen Informationen können wir wertvolle Einblicke in das Suchverhalten der Nutzer gewinnen. Wenn Sie jedoch personalisierte Dashboards mit Kennzahlen erstellen möchten, die besser zu Ihrem spezifischen Szenario passen, bietet Kibana leistungsstarke Tools zum Erstellen von Dashboards, mit denen Sie verschiedene Visualisierungen Ihrer Kennzahlen erstellen können.
Im Folgenden habe ich einige Visualisierungen und Diagramme erstellt, um beispielsweise die am häufigsten gesuchten Begriffe im Zeitverlauf, Suchanfragen ohne Ergebnisse, eine Wortwolke mit den am häufigsten gesuchten Begriffen und schließlich eine geografische Visualisierung zur Ermittlung der Herkunft der Suchzugriffe zu überwachen.

Fazit
In diesem Artikel haben wir eine hybride Suchlösung vorgestellt, die Keyword- und Vektorsuche kombiniert und so genauere und relevantere Ergebnisse für die Nutzer liefert. Wir haben auch untersucht, wie man zusätzliche Funktionen wie Facetten und die Personalisierung der Ergebnisse mit angehefteten Suchanfragen nutzen kann, um ein umfassenderes und effizienteres Sucherlebnis zu schaffen.
Darüber hinaus haben wir die Verhaltensanalyse von Elastic integriert, um das Nutzerverhalten während der Interaktion mit der Suchmaschine zu erfassen und zu analysieren. Mithilfe von Methoden wie trackPageView, trackSearch und trackSearchClick konnten wir Suchanfragen, Klicks auf Suchergebnisse und Seitenaufrufe überwachen und so wertvolle Einblicke in das Suchverhalten gewinnen.
Referenzen
Datensatz
https://www.kaggle.com/datasets/shivd24coder/cosmetic-brand-products-dataset
Transformator
https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2
Reziproke Rangfusion
https://www.elastic.co/guide/en/elasticsearch/reference/current/rrf.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/retriever.html#rrf-retriever
Knn-Abfrage
https://www.elastic.co/guide/en/elasticsearch/reference/current/knn-search.html
Angeheftete Anfrage
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-pinned-query.html
APIs für Verhaltensanalysen
https://www.elastic.co/guide/en/elasticsearch/reference/current/behavioral-analytics-apis.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/behavioral-analytics-overview.html




