Übersicht über die Bildähnlichkeitssuche in Elasticsearch

enterprise-search-search-bar-pattern-light-1680x980.png

Stellen Sie sich vor, Sie könnten den Look einer berühmten Person mit einem Screenshot einfangen. Mit diesem Bild könnten die Nutzer anschließend online nach Kleidungsstücken suchen, die zum entsprechenden Stil passen. Das ist mit den aktuellen Sucherlebnissen leider nicht möglich.

Ihre Kunden haben Schwierigkeiten, gesuchte Produkte zu finden, und wenn sie es nicht schaffen, wandern sie ab. Manche Kunden kennen keinen Namen (Schlüsselwort) für das Produkt, nach dem sie suchen, wissen jedoch ungefähr, wie es aussieht oder haben sogar ein Foto davon. Mit der Vektorsuche, einer in Elastic integrierten Funktion, können Unternehmen jetzt eine Bildähnlichkeitssuche implementieren. Auf diese Weise können Unternehmen intuitive Sucherlebnisse anbieten, damit ihre Kunden mit einem einzigen Bild mühelos die gewünschten Produkte finden können.

Um diese Funktion in Elastic zu implementieren, brauchen Sie kein Expertenwissen im Bereich Machine Learning. Das liegt daran, dass die Vektorsuche bereits in unsere skalierbare und leistungsstarke Plattform integriert ist. Sie erhalten Integrationen in Anwendungsframeworks, um interaktive Anwendungen noch einfacher erstellen zu können.

In dieser mehrteiligen Blogreihe zeigen wir Ihnen, wie Sie einen Anwendungsprototyp für eine Bildähnlichkeitssuche in Elastic mit einer eigenen Reihe von Bildern erstellen können. Das Frontend dieses Anwendungsprototyps wird mit Flask implementiert. Anschließend können Sie dieses Beispiel als Blaupause für Ihre eigene Anwendung verwenden.

In diesem Artikel schauen wir hinter die Kulissen und zeigen Ihnen die erforderliche Architektur, um die Vektorsuche mit Elastic auf Bilddaten anwenden zu können. Falls Sie sich eher für die semantische Textsuche als für Bilder interessieren, empfehlen wir Ihnen die mehrteilige Blogreihe zum Thema Natürliche Sprachverarbeitung (Natural Language Processing, NLP). Dort erfahren Sie mehr über Texteinbettung und Vektorsuche, Erkennung benannter Entitäten (Named Entity Recognition, NER), Sentimentanalysen und die Anwendung dieser Techniken in Elastic. Zunächst gehen wir einen Schritt zurück und erklären, warum sowohl Ähnlichkeits- als auch semantische Suche auf der Vektorsuche basieren.

Semantische Suche und Ähnlichkeitssuche – jeweils auf Basis der Vektorsuche

Die Vektorsuche nutzt Machine Learning (ML), um die Bedeutung und den Kontext von unstrukturierten Daten zu erfassen. Die Vektorsuche findet ähnliche Daten mit Algorithmen wie „geschätzter nächster Nachbar“ Approximate Nearest Neighbor, ANN). Im Vergleich zur herkömmlichen Textsuche (in Elastic auf Basis der BM25-Bewertung) liefert die Vektorsuche relevantere Ergebnisse und wird schneller ausgeführt (und zwar ohne extreme Suchmaschinenoptimierungen).

Dieser Ansatz unterstützt nicht nur Textdaten, sondern auch Bilder und andere Arten von unstrukturierten Daten, für die generische Einbettungsmodelle verfügbar sind. Für Textdaten wird dieser Vorgang oft auch als semantische Suche bezeichnet, und die Ähnlichkeitssuche wird häufig im Kontext von Bild- und Audiodaten eingesetzt.

Wie werden Vektoreinbettungen für Bilder generiert?

Vektoreinbettungen sind numerische Darstellungen von Daten und dem zugehörigen Kontext und werden in hochdimensionalen (dichten) Vektoren gespeichert. Modelle zum Generieren von Einbettungen werden üblicherweise mit Millionen von Beispielen trainiert, um relevante und genaue Ergebnisse zu liefern.

Einbettungen für Textdaten werden oft mit BERT-ähnlichen Transformationen generiert. Sie unterstützen viele verschiedene Textarten und sind in öffentlichen Repositorys wie Hugging Face verfügbar. Einbettungsmodelle, die beliebige Arten von Bildern unterstützen, befinden sich momentan noch in der Entwicklungsphase. Das CLIP-Modell, das unsere Teams verwenden, um Prototypen der Bildähnlichkeits-App zu erstellen, wird von OpenAI bereitgestellt und liefert einen guten Ausgangspunkt. Für spezielle Anwendungsfälle und fortgeschrittene Nutzer müssen Sie unter Umständen ein eigenes Einbettungsmodell trainieren, um die gewünschte Leistung zu erreichen. Als Nächstes brauchen Sie eine effiziente Suchfunktion. Elastic unterstützt die weithin verwendete HNSW-basierte Suche nach dem geschätzten nächsten Nachbarn.

Innovative Anwendungen mit der Ähnlichkeitssuche

Welche Innovationen sind mit der Ähnlichkeitssuche möglich? In unserem ersten Beispiel könnten die Nutzer mit einem Screenshot nach dem Outfit einer berühmten Persönlichkeit suchen.

Die Ähnlichkeitssuche bietet außerdem die folgenden Möglichkeiten:

  • Produkte empfehlen, die dem ähneln, was andere Kunden gekauft haben
  • Verwandte Designs oder relevante Vorlagen aus einer Bibliothek aus grafischen Designelementen finden
  • Lieder, die Ihnen gefallen könnten, in beliebten Streamingdiensten auf Basis Ihrer zuletzt gehörten Lieder finden
  • Riesige Datensätze mit unstrukturierten und unmarkierten Bildern mit einer natürlichen Beschreibung durchsuchen

Erfahren Sie mehr über die Funktionsweise der Bildähnlichkeitssuche >>

Architekturübersicht der Bildähnlichkeitssuche

Diese Art von interaktiver Anwendung erscheint auf den ersten Blick recht komplex. Dies gilt insbesondere, wenn Sie die Implementierung mit einer herkömmlichen Architektur betrachten, wie unten gezeigt. Im zweiten Diagramm sehen Sie jedoch die deutlich vereinfachte Elastic-Architektur.

Abbildung 1: Typische Implementierung der Bildähnlichkeitssuche (erfordert externe Dienste)

Die meisten Anwendungsframeworks zum Durchsuchen Ihrer indexierten Daten unterstützen weder die Suche nach dem k-Nearest-Neighbor, die für eine Vektor- oder Ähnlichkeitssuche benötigt wird, noch die nötige Inferenz für die Anwendung von NLP-Modellen. Daher muss die Bildähnlichkeitssuche neben dem kNN-Kerndienst noch mit mehreren weiteren Diensten interagieren. Falls Sie außerdem eine Textverarbeitung benötigen, muss die Suche auch mit einem NLP-Dienst interagieren, wie in Abbildung 1 gezeigt. Diese Architektur ist kompliziert zu erstellen und zu warten.

Wenn wir die Bildähnlichkeitssuche dagegen mit der Elastic Platform implementieren,  sind Vektorsuche und NLP bereits nativ integriert. Die Anwendung kann nativ mit allen beteiligten Komponenten kommunizieren. Der Elasticsearch-Cluster kann kNN-Suchvorgänge und NLP-Inferenz ausführen, wie unten gezeigt.

Abbildung 2: Implementierung der Bildähnlichkeitssuche in Elastic

Warum sollten Sie Elastic für Ihre Bildähnlichkeitssuche auswählen?

Mit der Bildähnlichkeitssuche in Elastic erhalten sie zahlreiche Vorteile. Elastic bietet u. a. die folgenden Vorteile:

Geringere Anwendungskomplexität. Mit Elastic brauchen Sie keine separaten Dienste für die Ausführung der kNN-Suche und die Vektorisierung Ihrer Sucheingabe. Endpoints für Vektorsuche und NLP-Inferenz sind in einer skalierbaren Suchplattform integriert. In anderen beliebten Frameworks erfolgt die Anwendung von Deep Neural Networks und NLP-Modellen separat von der Skalierung der Suche über große Datensätze. Dies bedeutet, dass Sie Experten einstellen, zusätzliche Entwicklungszeit für Ihr Projekt einplanen und Ressourcen für die fortlaufende Verwaltung bereitstellen müssen. 

Skalierbarkeit und Geschwindigkeit. Mit Elastic erhalten Sie Skalierbarkeit und Geschwindigkeit. Die Modelle befinden sich im gleichen Cluster neben den Suchknoten. Dies gilt für lokale Cluster und in noch größerem Ausmaß für Deployments in der Cloud. Mit Elastic Cloud können Sie mühelos hoch- und herunterskalieren, je nach aktueller Such-Workload.

Wenn Sie die Anzahl der von Ihrer Anwendung benötigten Dienste reduzieren, wirkt sich dies nicht nur auf die Skalierbarkeit aus. Sie können außerdem die Leistungsüberwachung und den Wartungsbedarf vereinfachen und sich vor potenziellen Sicherheitslücken schützen, um nur einige der Vorteile zu nennen. Zukünftige serverlose Architekturen sind der nächste Schritt zur Vereinfachung von Anwendungen.

Wie geht es weiter?

Die ersten zwei Artikel in dieser Reihe befassen sich ausführlicher mit der Implementierung der Bildähnlichkeitssuche in Elastic. Dort finden Sie technische Designaspekte für die einzelnen Komponenten in der Architekturübersicht sowie den eigentlichen Code für die Implementierung der Architektur in Elastic. 

Melden Sie sich für unseren praktischen Vektorsuche-Workshop an, um etwas praktische Erfahrung mit der Anwendung der Vektorsuche in Elastic zu sammeln. In unserem virtuellen Event Hub können Sie den nächsten Workshop finden und sich dafür anmelden. Falls Sie in der Zwischenzeit Fragen zu den hier besprochenen Konzepten haben, können Sie sich jederzeit im Diskussionsforum an unsere Community wenden.

Ursprünglich veröffentlicht am 14. Dezember 2022, aktualisiert am 28. Februar 2023.