Semantische Suche schnell aufbauen
Diesemantische Suche ist ein großartiges Instrument, das Ihren Kunden - oder Ihren Mitarbeitern - hilft, die richtigen Produkte oder Informationen zu finden. Sie kann sogar schwer zu indexierende Informationen aufdecken und so bessere Ergebnisse erzielen. Wenn Ihre semantischen Methoden jedoch nicht schnell eingesetzt werden, werden sie Ihnen nichts nützen. Der Kunde oder Mitarbeiter wird nicht einfach nur rumsitzen, während das System sich mit der Beantwortung seiner Anfrage Zeit lässt - und wahrscheinlich werden zur gleichen Zeit tausend andere Anfragen eingegeben.
Wie kann man die semantische Suche schnell machen? Mit einer langsamen semantischen Suche ist es nicht getan.
Glücklicherweise ist dies die Art von Problem, die Lucidworks gerne löst. Wir haben vor kurzem einen mittelgroßen Cluster getestet - lesen Sie weiter, um mehr Details zu erfahren -, der 1500 RPS (Anfragen pro Sekunde) mit einer Sammlung von über einer Million Dokumenten und einer durchschnittlichen Antwortzeit von etwa 40 Millisekunden erreichte. Das ist eine beachtliche Geschwindigkeit.
Implementierung der semantischen Suche
Um die blitzschnelle Magie des maschinellen Lernens zu ermöglichen, hat Lucidworks die semantische Suche mit dem Ansatz der semantischen Vektorsuche implementiert. Es gibt zwei entscheidende Teile.
Teil eins: Das maschinelle Lernmodell
Zunächst benötigen Sie eine Möglichkeit, Text in einen numerischen Vektor zu kodieren. Bei dem Text kann es sich um eine Produktbeschreibung, eine Suchanfrage eines Benutzers, eine Frage oder sogar eine Antwort auf eine Frage handeln. Ein semantisches Suchmodell wird darauf trainiert, Text so zu kodieren, dass Text, der anderen Texten semantisch ähnlich ist, in Vektoren kodiert wird, die numerisch "nah" beieinander liegen. Dieser Kodierungsschritt muss schnell sein, um die tausend oder mehr möglichen Kundensuchen oder Benutzeranfragen zu unterstützen, die jede Sekunde eingehen.
Zweiter Teil: Die Vektorsuchmaschine
Zweitens brauchen Sie eine Möglichkeit, schnell die besten Übereinstimmungen mit der Kundensuche oder Benutzeranfrage zu finden. Das Modell wird diesen Text in einen numerischen Vektor kodiert haben. Diesen müssen Sie nun mit allen numerischen Vektoren in Ihrem Katalog oder den Listen mit Fragen und Antworten vergleichen, um die besten Übereinstimmungen zu finden - die Vektoren, die dem Abfragevektor am nächsten kommen. Dazu benötigen Sie eine Vektormaschine, die all diese Informationen effektiv und blitzschnell verarbeiten kann. Die Engine könnte Millionen von Vektoren enthalten, und Sie wollen wirklich nur die besten zwanzig oder so Übereinstimmungen mit Ihrer Anfrage. Und natürlich muss sie etwa tausend solcher Abfragen pro Sekunde verarbeiten.
Um diese Herausforderungen zu meistern, haben wir in unserer Version 5.3 von Fusion die Vektorsuchmaschine Milvus hinzugefügt. Milvus ist eine Open-Source-Software und sie ist schnell. Milvus verwendet FAISS(Facebook AI Similarity Search), dieselbe Technologie, die Facebook in der Produktion für seine eigenen maschinellen Lerninitiativen einsetzt. Bei Bedarf kann es sogar noch schneller auf der GPU laufen. Wenn Fusion 5.3 (oder höher) mit der Komponente für maschinelles Lernen installiert ist, wird Milvus automatisch als Teil dieser Komponente installiert, so dass Sie all diese Funktionen problemlos aktivieren können.
Die Größe der Vektoren in einer bestimmten Sammlung, die beim Erstellen der Sammlung angegeben wird, hängt von dem Modell ab, das diese Vektoren erzeugt. In einer bestimmten Sammlung könnten beispielsweise die Vektoren gespeichert werden, die bei der Kodierung (über ein Modell) aller Produktbeschreibungen in einem Produktkatalog entstehen. Ohne eine Vektorsuchmaschine wie Milvus wäre eine Ähnlichkeitssuche über den gesamten Vektorraum nicht möglich. Die Ähnlichkeitssuche müsste sich also auf eine Vorauswahl von Kandidaten aus dem Vektorraum (z. B. 500) beschränken und hätte sowohl eine geringere Leistung als auch qualitativ schlechtere Ergebnisse zur Folge. Milvus kann Hunderte von Milliarden von Vektoren in mehreren Vektorsammlungen speichern, um sicherzustellen, dass die Suche schnell und die Ergebnisse relevant sind.
Verwendung der semantischen Suche
Nachdem wir nun ein wenig darüber erfahren haben, warum Milvus so wichtig sein könnte, kommen wir zurück zum Arbeitsablauf der semantischen Suche. Die semantische Suche besteht aus drei Phasen. In der ersten Phase wird das maschinelle Lernmodell geladen und/oder trainiert. Danach werden die Daten in Milvus und Solr indiziert. Die letzte Phase ist die Abfragephase, in der die eigentliche Suche stattfindet. Im Folgenden werden wir uns auf die letzten beiden Phasen konzentrieren.
Indizierung in Milvus
Lucidworks-1.png
Wie im obigen Diagramm dargestellt, beginnt die Abfragephase ähnlich wie die Indizierungsphase, nur dass hier Abfragen anstelle von Dokumenten eingehen. Für jede Abfrage:
- Die Abfrage wird an die Smart Answers Index-Pipeline gesendet.
- Die Abfrage wird dann an das ML-Modell gesendet.
- Das ML-Modell gibt einen numerischen Vektor zurück (verschlüsselt aus der Anfrage). Auch hier bestimmt der Typ des Modells die Größe des Vektors.
- Der Vektor wird an Milvus gesendet, das dann ermittelt, welche Vektoren in der angegebenen Milvus-Sammlung am besten mit dem angegebenen Vektor übereinstimmen.
- Milvus gibt eine Liste von eindeutigen IDs und Abständen zurück, die den in Schritt vier ermittelten Vektoren entsprechen.
- Eine Abfrage mit diesen IDs und Abständen wird an Solr gesendet.
- Solr gibt dann eine geordnete Liste der mit diesen IDs verbundenen Dokumente zurück.
Skalentests
Um zu beweisen, dass unsere semantischen Suchabläufe mit der von unseren Kunden geforderten Effizienz ablaufen, haben wir Skalierungstests mit Gatling-Skripten auf der Google Cloud Platform unter Verwendung eines Fusion-Clusters mit acht Replikaten des ML-Modells, acht Replikaten des Abfragedienstes und einer einzelnen Instanz von Milvus durchgeführt. Die Tests wurden mit den Milvus-Indizes FLAT und HNSW durchgeführt. Der FLAT-Index hat eine 100-prozentige Trefferquote, ist aber weniger effizient - es sei denn, die Datensätze sind klein. Der HNSW-Index (Hierarchical Small World Graph) liefert immer noch qualitativ hochwertige Ergebnisse und hat seine Leistung bei größeren Datenmengen verbessert.
Sehen wir uns nun einige Zahlen aus einem kürzlich durchgeführten Beispiel an:
Lucidworks-2.png
Lucidworks-3.png
Lucidworks-4.png
Erste Schritte
Die Smart Answers-Pipelines sind so konzipiert, dass sie einfach zu bedienen sind. Lucidworks verfügt über vortrainierte Modelle, die einfach einzusetzen sind und in der Regel gute Ergebnisse liefern. Die besten Ergebnisse erzielen Sie jedoch, wenn Sie Ihre eigenen Modelle zusammen mit den vortrainierten Modellen trainieren. Setzen Sie sich noch heute mit uns in Verbindung, um zu erfahren, wie Sie diese Initiativen in Ihre Suchwerkzeuge implementieren können, um effektivere und attraktivere Ergebnisse zu erzielen.
Dieser Blog wurde neu veröffentlicht von: https://lucidworks.com/post/how-to-build-fast-semantic-search/?utm_campaign=Oktopost-Blog+Posts&utm_medium=organic_social&utm_source=linkedin
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word