Sinnvoll geclustert: Smarte Suche mit Vektoren​

Seite 2: Methodik: Wie lässt sich ein Lied vermessen?

Inhaltsverzeichnis

Zum Vergleich der verschiedenen Produkte sollen sieben Test-Queries mit Abfragen hinsichtlich des Inhaltes der Songs dienen. Im Unterschied zu vordefinierten Benchmarks für semantische Suche wie beispielsweise GloVe liegt für das Musikdatenbank-Beispiel keine Referenz vor (so, wie es auch in den meisten realen Anwendungen der Fall ist). Daher ist es unumgänglich, sich auch mit den Daten zu beschäftigen, um einschätzen zu können, ob eine semantische Suche auch tatsächlich richtige Ergebnisse liefert. Dabei geht es eher um die Interpretation von Daten und weniger um einen Vergleich – insofern ist die Qualität grundsätzlich schwer messbar. Daher bleibt nur die subjektive Einstufung, ganz ähnlich wie Ergebnisse einer KI auch durch menschliche Autoren bewertet und verbessert werden (vergleiche das InstructGPT Paper).

Analyse der Testfragen inklusive einer Erklärung der Sinnhaftigkeit und dem aus Sicht des Autors besten Ergebnis aus dem Testdatensatz:

Frage 1: What song mentions most of the cities in Europe?

Diese Frage kombiniert eine Berechnung (tendenziell ein Schwachpunkt von LLMs) mit Semantik, da es in Europa sehr viele Städte gibt und das Modell die Songtexte entsprechend filtern muss, um nicht auch Städte etwa aus Nordamerika mitzuerfassen.

Bester Treffer: Beautiful South – Pretenders to the throne (acht Städte)

Frage 2: What is so dangerous about mosquitos?

Es gibt Liedtexte, die darauf eine Antwort haben, aber auch andere, in denen Moskitos lediglich vorkommen – die semantische Suche sollte die passenden Texte finden.

Bester Treffer: Yeah Yeah Yeahs – Mosquito

Frage 3: There was a dance track containing a lot of la la la and a boy and a girl that should stay together forever and ever. It seems that she just can't stop thinking about him.

Diese Frage ist nicht besonders komplex und führt sehr konkret auf einen Song von Kylie Minogue hin. Sie ist eher "dahingeschrieben" und somit sehr lang, hier ist vor allem der Effekt auf die Performance interessant.

Bester Treffer: Kylie Minogue – Can’t get you out of my head

Frage 4: Which song is about the dreamy island of Java?

Diese Frage ist bewusst ambivalent formuliert, da sich Java sowohl auf die Insel, die Programmiersprache als auch Kaffee beziehen kann. Die Abfrage soll hier richtige Treffer bezogen auf die Insel liefern.

Bester Treffer: David Bowie – Amlapura

Frage 5: Piazza Cavor

Simple Eingabe, aber mit einem bewussten Schreibfehler des Piazza Cavour in Rom.

Bester Treffer: Morrissey – You have killed me

Frage 6: Song in an Indonesian language or dialect?

Wie gut ist die Suche in der Lage, den Text einer Sprachfamilie zuzuordnen, ohne darauf optimiert zu sein.

Bester Treffer: Hier gibt es mehrere korrekte Songs, darunter Manuk Dadali von Oasis

Frage 7: Will winter follow directly after summer?

Diese Abfrage ist bewusst etwas irreführend, da beispielsweise im Song von Reo Speedwagen der Vers vorkommt:

Sundown, summer is fading.
Run now, here the winter comes.

Den Herbst unterschlägt die Band. Viele andere Lieder hingegen enthalten die Jahreszeiten. Die Frage lässt daher einen guten Vergleich zu, wie die Suche die Abfrage einordnet.

Bester Treffer: Steve Miller Band – Seasons

Die sieben Fragen dienen nun zum Testen der verschiedenen Datenbankansätze und zum Bewerten der Lösungen. Zunächst steht die Geschwindigkeit der Suchabfrage im Fokus. Sämtliche Messungen erfolgen auf derselben Azure-VM beziehungsweise dem Standard-Cloud-Angebot von Weaviate und Elastic.

In der Tabelle 2 ist der Median aller sieben Suchfragen angegeben, bei denen die Top-3-Treffer zurückgegeben werden sollten. Als Transformer kam stets all-mpnet-base-v2 zum Einsatz. Zum Vergleich erfolgten auch Abfragen mit dem OpenAI-Transformer text-embedding-ada-002, die jedoch keine nennenswerten Performance-Unterschiede lieferten.

Tabelle 2: Ergebnisse (Median) der sieben Suchabfragen
Software Index-Typ System Infrastruktur-Kosten bei 24/7 (unoptimiert) RAM Response-Dauer (Median)
FAISS Flat Azure F2s v2 ca. 50€/Monat 4 GB 0,09s
FAISS Flat Azure F1s ca. 35€/Monat 2 GB 0,45s
FAISS IVF Azure F2s v2 ca. 50€/Monat 4 GB 0,08s
FAISS IVF Azure F1s ca. 35€/Monat 2 GB 0,39s
Qdrant HNSW Azure F2s v2 ca. 50€/Monat 4 GB 0,09s
Qdrant HNSW Azure F1s ca. 35€/Monat 2 GB 2,57s
Weaviate HNSW Cloud-Service 25€/Monat* - 0,07s
ELSER v2 ELSER Cloud-Service Min. ca. 135€/Monat (Platinum) 4 GB 0,25s
*zusätzliche Kosten für Ingest der Daten derzeit $0,09/1 Mio. Embeddings/Monat

Es zeigt sich, dass die Abfragen auf Basis des IVF-Index im Allgemeinen etwas schneller erfolgen als die per Flat-Suche. Relevante Performance-Unterschiede sind darüber hinaus nicht zu erkennen. Das Cloud-Angebot von Weaviate ist nicht langsamer als eine lokale Abfrage. Ausschlaggebend ist der verfügbare RAM: Passt der Index in den RAM, läuft die Suche immer schnell, unabhängig vom Algorithmus.

Neben der Geschwindigkeit ist vor allem die Qualität der Suchergebnisse entscheidend. Für die Einordnung wurden erneut die Top-3-Suchtreffer für jede gestellte Frage bewertet. Etwas überraschend zeigten sich hier keine Unterschiede zwischen Flat (FAISS) und HNSW (Qdrant + Weaviate), die Reihenfolge der Top-3-Treffer ist für alle Suchabfragen in diesen Produkten stets exakt gleich. Der verfügbare RAM hatte ebenfalls keinen Einfluss auf die Suchtreffer, und die Ergebnisse sind stets reproduzierbar. Daher sind die Ergebnisse für Flat und HNSW in der Tabelle 3 auch zusammengefasst.

Die Unterschiede zwischen IVF und den anderen Indexierungsmethoden beziehungsweise den verschiedenen Transformern fallen hingegen groß aus, keine Suchabfrage zeigt komplett gleiche Treffer.

Tabelle 3: Qualität der Suchergebnisse
Software FAISS/Qdrant/Weaviate FAISS FAISS ELSER v2
Transformer all-mpnet-base-v2 all-mpnet-base-v2 text-embedding-ada-002 ELSER v2
Index Flat/HNSW IVF Flat ELSER v2
Query 1 (Songs Europe) ++ ++ + -
Query 2 (Mosquitos) +++ + ++ +
Query 3 (Dance track) ++ +++ ++ +
Query 4 (Java) ++ + ++ ++
Query 5 (Piazza Cavor) + ++ ++ ++
Query 6 (Indonesian) +++ +++ +++ ++
Query 7 (Winter und Summer) +++ ++ ++ ++
Anm: je mehr "+" desto höher die Qualität

Ein eindeutiger Sieger oder Verlierer lässt sich aus den Tests nicht ableiten. Die Ergebnisse waren in allen Fällen brauchbar, aber der zurückgelieferte Top-Treffer oft nicht immer der Beste. Einzig ELSER fällt im Vergleich doch ein Stück ab und ist kaum in der Lage, die Queries wirklich zu interpretieren und sucht allem Anschein nach vor allem nach Ähnlichkeiten.

Wenn der jeweilige Use Case es erlaubt, empfiehlt sich analog zu einer Google-Websuche eine Ausgabe der Top-10-Treffer auf einer Ergebnisseite. Dann ist der bestmögliche Treffer bei nahezu jedem der untersuchten Kandidaten, Transformer und Index-Typen auch zu finden – nur eben nicht immer auf Platz 1.

Ein Vorteil echter Datenbanken und Indizes wie Qdrant oder ELSER gegenüber Bibliotheken wie FAISS ist, dass diese meistens mehr Features für Suchabfragen mitbringen, etwa Filter (finde nur Songs von Abba), hybride Suche Vektor + Wort (etwa ein bestimmtes Wort, das im Text enthalten sein muss) oder auch Paginierung (Ausgabe von Ergebnissen in Abschnitten 1…25, 25…50 usw.). Alle diese Abfragen lassen sich auch mit FAISS oder alternativen Bibliotheken umsetzen, das erfordert jedoch manuellen Entwicklungsaufwand. Managed Services wie Weaviate bringen in der Regel weitere Vorteile bei Betrieb, Updates, Monitoring und Alarmfunktionen mit.