Neu bei Elasticsearch? Nehmen Sie an unserem Webinar „Erste Schritte mit Elasticsearch“ teil. Sie können jetzt auch eine kostenlose Cloud-Testversion starten oder Elastic auf Ihrem Rechner testen.
Einleitung
Viele E-Commerce-Websites sind daran interessiert, das Sucherlebnis für Rezepte zu verbessern. Die semantische Suche ermöglicht es Kunden bei korrekter Anwendung, die benötigten Zutaten schnell anhand natürlicher Suchanfragen zu finden, wie zum Beispiel „etwas für den Valentinstag“ oder „Thanksgiving-Gerichte“.
In diesem Artikel zeigen wir, wie man Elasticsearch zur Implementierung einer semantischen Suche nutzt, die solche Anfragen unterstützt. Wir werden einen Index konfigurieren, um den Katalog der Zutaten und Produkte eines Supermarkts zu speichern, und demonstrieren, wie dieser Index zur Verbesserung der Rezeptsuche verwendet werden kann. Im Verlauf des Artikels erklären wir, wie diese Datenstruktur erstellt wird und wie Techniken der natürlichen Sprachverarbeitung angewendet werden, um relevante Ergebnisse zu liefern, die der Absicht des Kunden entsprechen.
Der gesamte in diesem Artikel vorgestellte Code wurde in Python entwickelt und ist auf GitHub verfügbar. Sie können auf das Repository zugreifen, um den Quellcode einzusehen, gegebenenfalls Anpassungen vorzunehmen und die Lösungen direkt in Ihrer Entwicklungsumgebung zu implementieren.
Beginn der Implementierung der semantischen Suche
Um mit der Implementierung der semantischen Suche zu beginnen, müssen wir zunächst das natürliche Sprachmodell definieren. Elastic bietet sein eigenes Modell ELSER an, unterstützt aber auch die Integration von NLP-Modellen verschiedener Anbieter, wie beispielsweise Hugging Face. Diese Flexibilität ermöglicht es Ihnen, die Option zu wählen, die Ihren Bedürfnissen am besten entspricht.
In diesem Artikel verwenden wir ELSER, das die Komplexität der Bereitstellung und Verwaltung von NLP-Modellen reduziert. Darüber hinaus bietet Elastic die Funktion semantic_text an, die den Prozess erheblich vereinfacht. Mit semantic_text wird der gesamte Einbettungsgenerierungsprozess unkompliziert und automatisiert. Sie müssen lediglich einen Inferenzpunkt definieren und das Feld angeben, das die Einbettungen in Ihrer Indexzuordnung aufnehmen soll. Während der Dokumentenindizierung werden Einbettungen generiert und automatisch dem angegebenen Feld zugeordnet.
Einrichtungsschritte
Nachfolgend sind die Schritte zum Erstellen eines Index mit semantischer Suchunterstützung aufgeführt. Wenn Sie diese Anweisungen befolgen, wird Ihr Index konfiguriert und ist bereit für semantische Suchen:
- Erstelle den Inferenzpunkt.
- Erstellen Sie den Index und setzen Sie das Beschreibungsfeld auf semantic_text, damit er die Einbettungen empfangen kann.
- Die Daten werden im Lebensmittelkatalogindex indexiert , der einen Produktkatalog speichert. Dieser Katalog wurde aus einem hier verfügbaren Datensatz erstellt.
Anwendung der semantischen Suche in Supermärkten
Nachdem wir den Index nun mit Produktdaten aus Lebensmittelgeschäften gefüllt haben, testen und validieren wir Suchanfragen, um die Suchergebnisse mithilfe der semantischen Suche zu verbessern. Unser Ziel ist es, ein intelligenteres Sucherlebnis zu bieten, das den Kontext und die Absicht des Nutzers versteht und relevantere und genauere Ergebnisse liefert.
Durch semantische Suche gelöste Herausforderungen
Anhand des Produktkatalogs wollen wir untersuchen, wie die semantische Suche das Sucherlebnis in Supermärkten verändern kann, indem sie Vokabel- und Kontextprobleme angeht, mit denen die traditionelle lexikalische Suche oft zu kämpfen hat.
1. Interpretation kulinarischer Absichten
Problem 01: Ein Kunde sucht möglicherweise nach „Meeresfrüchte zum Grillen“, aber ein lexikalisches Suchsystem versteht die Absicht hinter der Suchanfrage möglicherweise nicht vollständig. Es kann vorkommen, dass nicht alle zum Grillen geeigneten Meeresfrüchteprodukte erkannt werden und nur diejenigen zurückgegeben werden, die den genauen Begriff „Meeresfrüchte“ oder „Grill“ im Produktnamen enthalten.
Zunächst führen wir eine lexikalische Suche durch und analysieren die Ergebnisse. Anschließend werden wir das Gleiche mit einer semantischen Suche durchführen und die Ergebnisse für denselben Suchbegriff vergleichen.
lexikalische Abfrage
Ergebnisse:
| Suchtyp | Name | Punktzahl |
|---|---|---|
| Lexikalisch | Nordwestfisch Alaskan Bairdi Schneekrabbe | 10,453125 |
| Lexikalisch | Herr Yoshidas, Sauce Original Gourmet | 7,2289705 |
| Lexikalisch | Premium-Meeresfrüchte-Probierpaket – 20 Stück | 7.1924105 |
| Lexikalisch | Amerikanischer Roter Schnapper - Ganz, mit Kopf, ausgenommen | 6,998647 |
| Lexikalisch | Hummerscheren und -arme, nachhaltig wild gefangen | 6,438654 |
Die lexikalische Suche ergab einige Meeresfrüchte, die sich zum Grillen eignen, wie zum Beispiel Amerikanischer Roter Schnapper und Nordwestfisch Alaskan Bairdi Schneekrabbe. Die lexikalische Suche lieferte jedoch weniger relevante Produkte an die Spitze der Liste, wie zum Beispiel die Mr. Yoshida Sauce, die keine Meeresfrüchte-, sondern eine Fleischsauce ist. Dies lässt darauf schließen, dass der lexikalische Algorithmus Schwierigkeiten hatte, den Kontext von „zum Grillen“ vollständig zu verstehen.
Lösung für semantische Suche
Wir verwenden eine Abfrage, die den Begriff „Meeresfrüchte“ mit Zubereitungskontexten wie „Grillen“ kombiniert, um eine umfassende Liste von Optionen zurückzugeben, wie zum Beispiel Fischfilets, Garnelen und Jakobsmuscheln, die sich ideal zum Grillen eignen – selbst wenn die Wörter „Grill“ oder „Meeresfrüchte“ nicht direkt im Produktnamen vorkommen. Dadurch wird sichergestellt, dass die Suchergebnisse besser mit den Absichten des Kunden übereinstimmen.
semantische Suche:
| Suchtyp | Name | Punktzahl |
|---|---|---|
| Semantisch | Ganzer, ausgenommener Wolfsbarsch mit Kopf | 16.175909 |
| Semantisch | Alaska-Schwarzkabeljau (Sablefisch) | 15,855331 |
| Semantisch | Amerikanischer Roter Schnapper - Ganz, mit Kopf | 15,454779 |
| Semantisch | Nordwestfisch Alaskan Bairdi Schneekrabbe | 15,855331 |
| Semantisch | Amerikanischer Roter Schnapper - Ganz, mit Kopf | 15,3892355 |
Die semantische Suche lieferte nicht nur Produkte, die direkt mit dem Begriff „Meeresfrüchte“ in Verbindung standen, sondern verstand auch den Kontext von „Grillen“ und brachte ganze Fische und Filets zum Vorschein, die zum Grillen geeignet sind. Entscheidend ist hierbei die Präzision der Ergebnisse, die auch ganze Fischsorten wie Branzino und Alaska Black Cod umfassten, die beide häufig zum Grillen verwendet werden.
Problem 02 : Viele Kunden suchen nach schnellen und einfachen Abendessenlösungen nach einem langen Arbeitstag und verwenden dabei Begriffe wie „einfache Abendessen für die Woche“. Die traditionelle lexikalische Suche erfasst das Konzept der Schnellgerichte möglicherweise nicht vollständig, da sie sich oft nur auf Produkte konzentriert, die das Wort „einfach“ in ihrem Namen enthalten.
Wie schon in der vorherigen Aufgabe beginnen wir mit einer lexikalischen Suche. Anschließend werden wir eine Lösung mittels semantischer Suche anwenden.
lexikalische Abfrage
Ergebnisse:
| Suchtyp | Name | Punktzahl |
|---|---|---|
| Lexikalisch | Avery Easy Peel Adressetiketten, 4200 Stück | 8,017723 |
| Lexikalisch | Omeals Selbsterhitzende Not-/Portable Mahlzeiten 32 | 6,592727 |
| Lexikalisch | Poke-Brot mit Gelbflossenthunfischwürfeln | 5,836883 |
| Lexikalisch | Hefty Super Weight 12 oz Schaumstoff | 5,8116536 |
| Lexikalisch | Vanity Fair Alltagsservietten, 2-lagig, 110 Stück | 5,752989 |
Die lexikalische Suche lieferte deutlich weniger relevante Ergebnisse, darunter Artikel, die in keinem Zusammenhang mit Mahlzeiten stehen, wie zum Beispiel Avery Easy Peel Adressetiketten und Vanity Fair Everyday Servietten. Diese Produkte erfüllen nicht das Bedürfnis des Nutzers nach schnellen Mahlzeiten. Während die lexikalische Suche ein nützliches Produkt (Omeals Selbstheizende Notfallmahlzeiten) lieferte, enthielten andere Ergebnisse, wie Servietten und Etiketten, in ihren Beschreibungen lediglich die Wörter „einfach“ oder „Wochentag“, ohne wirklich auf die Absicht des Nutzers nach einer schnellen Mahlzeitenlösung einzugehen.
Lösung für semantische Suche
Wir haben eine Abfrage implementiert, die die Absicht hinter schnellen und einfachen Mahlzeiten versteht. Es assoziiert Produkte, die schnell zubereitet werden können, wie vorgekochtes Fleisch, Tiefkühlnudeln oder Fertiggerichte, auch wenn sie das Wort „einfach“ nicht explizit im Namen tragen. Dieser Ansatz stellt sicher, dass die Kunden die am besten geeigneten Optionen für ein schnelles Abendessen unter der Woche finden und somit dem Bedürfnis nach Bequemlichkeit gerecht werden.
semantische Suche
Ergebnisse:
| Suchtyp | Name | Punktzahl |
|---|---|---|
| Semantisch | Omeals Selbsterhitzende Not-/Portable Mahlzeiten 32 | 14.610006 |
| Semantisch | Nissin, Cup Noodles, Garnelen, 71 g | 13,751424 |
| Semantisch | Namaste Glutenfreie Waffel- und Pfannkuchenmischung | 13,73376 |
| Semantisch | Idaho-Kartoffeln, Golden Grill Hashbrown-Kartoffeln | 12,549422 |
| Semantisch | Nissin Cup Noodles, Hühnchen, 24er-Packung | 12.034527 |
Die semantische Suche ergab Produkte, die eindeutig mit schnellen und praktischen Mahlzeiten in Verbindung stehen, wie zum Beispiel Instantnudeln (Cup Noodles), vorgekochte Kartoffeln und Pfannkuchenmischungen, die typische Optionen für ein einfaches Abendessen unter der Woche sind. Dies beweist, dass die semantische Suche das Konzept hinter dem Ausdruck „einfache Gerichte für die Woche“ erfassen kann und die Absicht des Nutzers erkennt, schnelle und bequeme Mahlzeiten zu finden. Interessanterweise können auch Produkte aus anderen Kategorien, wie zum Beispiel „Limonade“, einbezogen werden, wenn dies im Kontext relevant ist (z. B. Getränke zu Mahlzeiten).
2. Regionale Begriffe und Vokabelvariationen
Problem: Ein Kunde sucht möglicherweise nach „Soda“, während ein anderer Kunde für dasselbe Produkt „Pop“ verwendet. Die traditionelle lexikalische Suche erkennt nicht, dass sich beide Begriffe auf denselben Gegenstand beziehen.
lexikalische Abfrage
Ergebnisse:
| Suchtyp | Name | Punktzahl |
|---|---|---|
| Lexikalisch | Prime Hydration+ Sticks Elektrolyt-Getränkemischung | 14,492869 |
| Lexikalisch | Capri Sun, 100 % Saft, Probierpackung | 12.340851 |
| Lexikalisch | Joyburst Energy Drink, Frose Rose, 12 | 11,839179 |
| Lexikalisch | Kellogg's Pop-Tarts, Zuckerguss-Zimt | 9,97788 |
| Lexikalisch | Kind Mini-Riegel, Probierpackung, 0,7 | 9,336912 |
Die lexikalische Suche konzentriert sich auf exakte Wortübereinstimmungen. Während Produkte wie Prime Hydration und Capri Sun zurückgegeben wurden, führte die direkte Übereinstimmung mit dem Begriff „Pop“ auch zu irrelevanten Ergebnissen, wie zum Beispiel Kellogg's Pop-Tarts, das ein Snack und kein Getränk ist. Dies verdeutlicht, wie die lexikalische Suche weniger effektiv sein kann, wenn ein Begriff mehrere Bedeutungen hat oder mehrdeutig sein kann.
Lösung für semantische Suche
Bei semantischen Anfragen können wir das Problem der Vokabelvariationen überwinden, das bei der lexikalischen Suche nicht gelöst werden kann. Durch die Erweiterung der Suchbegriffe können wir Ergebnisse erzielen, die auf dem Kontext basieren und relevantere und umfassendere Antworten liefern.
Abfrage:
Ergebnisse:
| Suchtyp | Name | Punktzahl |
|---|---|---|
| Semantisch | Olipop 12 oz Präbiotika-Limonade (verschiedene Sorten) | 14,776867 |
| Semantisch | Bai Antioxidant Cocofusion, Probierpackung, 18 | 14,663253 |
| Semantisch | Monster Energy Drink, Zero Ultra, 24 | 14,486348 |
| Semantisch | Joyburst Energy Variety, 355 ml | 14.007214 |
| Semantisch | Joyburst Energy Drink, Frose Rose, 12 | 13,641038 |
Die semantische Suche liefert Produkte, die direkt dem Konzept von „Pop“ als Synonym für „Soda“ entsprechen (wie z. B. Olipop Prebiotics Soda), auch wenn der genaue Begriff „Pop“ nicht im Produktnamen enthalten ist. Die Suche erkannte die Absicht des Nutzers – ein erfrischendes Getränk mit wenig Zucker – und konnte relevante Produkte zurückgeben, darunter Optionen wie präbiotische Limonaden (Olipop) und zuckerfreie Energy-Drinks (Monster Energy Drink).
Fazit
Die Implementierung der semantischen Suche im Kontext von Lebensmittelgeschäften hat sich als äußerst effektiv erwiesen, um komplexe Anfragen wie „Meeresfrüchte zum Grillen“ und „einfache Gerichte für die Woche“ zu verstehen. Dieser Ansatz ermöglichte es uns, die Absicht der Nutzer genauer zu interpretieren und ihnen hochrelevante Produkte zurückzugeben.
Durch den Einsatz von Elasticsearch und die Vereinfachung des Prozesses mit ELSER konnten wir die semantische Suche schnell und effizient implementieren, die Suchergebnisse deutlich verbessern und ein agileres und zielgerichteteres Einkaufserlebnis ermöglichen. Dadurch wurde nicht nur der Suchprozess optimiert, sondern auch die Relevanz der den Kunden angebotenen Ergebnisse erhöht.
Referenzen
Modell ELSER:
https://www.elastic.co/guide/en/elasticsearch/reference/current/put-inference-api.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/infer-service-elser.html
Semantischer Text:
https://www.elastic.co/guide/en/elasticsearch/reference/current/semantic-text.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/semantic-search.html
Datensatz:
https://www.kaggle.com/datasets/bhavikjikadara/grocery-store-dataset?select=GroceryDataset.csv
Semantische Suche:
https://www.elastic.co/guide/en/elasticsearch/reference/current/semantic-search.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/semantic-search-semantic-text.html




