Implementierung der semantischen Suche: Erstellen einer Rezeptsuche mit Elasticsearch

Implementierung der semantischen Suche im Kontext von E-Commerce-Websites.

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.

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:

  1. Erstelle den Inferenzpunkt.
  2. Erstellen Sie den Index und setzen Sie das Beschreibungsfeld auf semantic_text, damit er die Einbettungen empfangen kann.
  3. 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.

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:

SuchtypNamePunktzahl
LexikalischNordwestfisch Alaskan Bairdi Schneekrabbe10,453125
LexikalischHerr Yoshidas, Sauce Original Gourmet7,2289705
LexikalischPremium-Meeresfrüchte-Probierpaket – 20 Stück7.1924105
LexikalischAmerikanischer Roter Schnapper - Ganz, mit Kopf, ausgenommen6,998647
LexikalischHummerscheren und -arme, nachhaltig wild gefangen6,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:

SuchtypNamePunktzahl
SemantischGanzer, ausgenommener Wolfsbarsch mit Kopf16.175909
SemantischAlaska-Schwarzkabeljau (Sablefisch)15,855331
SemantischAmerikanischer Roter Schnapper - Ganz, mit Kopf15,454779
SemantischNordwestfisch Alaskan Bairdi Schneekrabbe15,855331
SemantischAmerikanischer Roter Schnapper - Ganz, mit Kopf15,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:

SuchtypNamePunktzahl
LexikalischAvery Easy Peel Adressetiketten, 4200 Stück8,017723
LexikalischOmeals Selbsterhitzende Not-/Portable Mahlzeiten 326,592727
LexikalischPoke-Brot mit Gelbflossenthunfischwürfeln5,836883
LexikalischHefty Super Weight 12 oz Schaumstoff5,8116536
LexikalischVanity Fair Alltagsservietten, 2-lagig, 110 Stück5,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:

SuchtypNamePunktzahl
SemantischOmeals Selbsterhitzende Not-/Portable Mahlzeiten 3214.610006
SemantischNissin, Cup Noodles, Garnelen, 71 g13,751424
SemantischNamaste Glutenfreie Waffel- und Pfannkuchenmischung13,73376
SemantischIdaho-Kartoffeln, Golden Grill Hashbrown-Kartoffeln12,549422
SemantischNissin Cup Noodles, Hühnchen, 24er-Packung12.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:

SuchtypNamePunktzahl
LexikalischPrime Hydration+ Sticks Elektrolyt-Getränkemischung14,492869
LexikalischCapri Sun, 100 % Saft, Probierpackung12.340851
LexikalischJoyburst Energy Drink, Frose Rose, 1211,839179
LexikalischKellogg's Pop-Tarts, Zuckerguss-Zimt9,97788
LexikalischKind Mini-Riegel, Probierpackung, 0,79,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:

SuchtypNamePunktzahl
SemantischOlipop 12 oz Präbiotika-Limonade (verschiedene Sorten)14,776867
SemantischBai Antioxidant Cocofusion, Probierpackung, 1814,663253
SemantischMonster Energy Drink, Zero Ultra, 2414,486348
SemantischJoyburst Energy Variety, 355 ml14.007214
SemantischJoyburst Energy Drink, Frose Rose, 1213,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

Zugehörige Inhalte

Sind Sie bereit, hochmoderne Sucherlebnisse zu schaffen?

Eine ausreichend fortgeschrittene Suche kann nicht durch die Bemühungen einer einzelnen Person erreicht werden. Elasticsearch wird von Datenwissenschaftlern, ML-Ops-Experten, Ingenieuren und vielen anderen unterstützt, die genauso leidenschaftlich an der Suche interessiert sind wie Sie. Lasst uns in Kontakt treten und zusammenarbeiten, um das magische Sucherlebnis zu schaffen, das Ihnen die gewünschten Ergebnisse liefert.

Probieren Sie es selbst aus