Die hybride Suche ist eine leistungsstarke Technik, die mehrere Suchalgorithmen integriert, um die Genauigkeit und Relevanz der Suchergebnisse zu verbessern. Durch die Kombination der Stärken von Volltext- und Vektorsuche bietet die hybride Suche eine effektivere und umfassendere Benutzersuche.
In der Version 1.6.2 von MyScaleDB wurde diese hybride Suche (opens new window) eingeführt. Erfahren Sie, wie sie implementiert wurde und was sie zu einer Innovation in der Suchlandschaft macht.
# Kombination von Vektorsuche und Volltextsuche
In einem hybriden Suchsystem innerhalb einer Vektordatenbank werden in der Regel zwei verschiedene Arten von Suchen verwendet: Vektorsuche (opens new window) und Volltextsuche (opens new window).
- Vektorsuche: Bei diesem Ansatz werden Ergebnisse auf der Grundlage semantischer Ähnlichkeit gefunden, wobei häufig maschinelle Lernmodelle eingesetzt werden, die die Bedeutung und den Kontext von Wörtern und Phrasen erfassen. Sie ist besonders nützlich, um nuancierte oder konzeptuell verwandte Ergebnisse über Dokumente hinweg zu erfassen.
- Volltextsuche: Diese Methode gleicht Schlüsselwörter oder Phrasen direkt mit dem Text ab. Sie ist traditioneller und besonders effektiv, wenn die genaue Formulierung einer Abfrage entscheidend ist.
Jede dieser Sucharten hat ihre Stärken und Grenzen. Die Volltextsuche eignet sich hervorragend für die grundlegende Schlüsselwortabfrage und Textabgleich, was sie ideal für Abfragen macht, bei denen bestimmte Begriffe entscheidend sind. Die Vektorsuche hingegen glänzt bei der semantischen Übereinstimmung über Dokumente hinweg und dem Verständnis tieferer Bedeutungen, kann jedoch bei kurzen Textabfragen weniger effizient sein.
Die hybride Suche kombiniert die Fähigkeiten von Vektorsuche und Volltextsuche und ermöglicht so einen "Best-of-both-worlds"-Ansatz. Diese Integration ermöglicht es den Benutzern, von präzisen Schlüsselwortübereinstimmungen zu profitieren und gleichzeitig den breiteren semantischen Kontext zu erfassen. Das Ergebnis ist eine umfassendere und effektivere Sucherfahrung.
# Fusionierungsalgorithmen
Jede Suchmethode - Vektorsuche und Volltextsuche - liefert eine Ergebnismenge, die jeweils von einer Relevanzbewertung begleitet wird. Diese Bewertungen spiegeln wider, wie eng ein bestimmtes Ergebnis mit der Suchanfrage übereinstimmt, basierend auf der spezifischen Methode, die verwendet wurde.
Ein Fusionierungsalgorithmus fusioniert diese Ergebnisse effektiv. Der Algorithmus passt und normalisiert die Bewertungen sowohl von der Vektorsuche als auch von der Volltextsuche an, um sie vergleichbar zu machen und eine nahtlose Kombination zu ermöglichen. Dieser Prozess stellt sicher, dass die endgültigen Ergebnisse, die dem Benutzer präsentiert werden, die Stärken beider Suchmethoden integrieren und Ergebnisse liefern, die sowohl semantisch relevant als auch textlich präzise sind.
In MyScaleDB nutzt die hybride Suche den BM25-Score aus Textsuchen (als "lex" für lexikalisch bezeichnet) und die Distanzmetrik aus Vektorsuchen (als "sem" für semantisch bezeichnet). Um diese Integration zu erreichen, unterstützt MyScaleDB derzeit zwei Fusionierungsalgorithmen: Relative Score Fusion (RSF) und Reciprocal Rank Fusion (RRF).
# Relative Score Fusion (RSF)
Relative Score Fusion (RSF) ist eine Methode, die in hybriden Suchsystemen verwendet wird, um die Ergebnisse von Vektor- und Volltextsuchen effektiv zu kombinieren. Der Prozess umfasst zwei wesentliche Schritte: die Normalisierung der Bewertungen und die Berechnung der gewichteten Summe.
Normalisierung der Bewertungen:
- Normalisierung: RSF beginnt mit der Normalisierung der Bewertungen sowohl von Vektor- als auch von Volltextsuchen. Dabei werden die Rohbewertungen in eine gemeinsame Skala umgewandelt, die in der Regel von 0 bis 1 reicht.
- Höchste und niedrigste Bewertungen: Die höchste Bewertung in jedem Suchtyp (Vektor und Text) wird auf 1 skaliert und repräsentiert das relevanteste Ergebnis innerhalb dieser Suche. Umgekehrt wird die niedrigste Bewertung auf 0 skaliert und repräsentiert das am wenigsten relevante Ergebnis.
- Proportionale Anpassung: Alle anderen Bewertungen werden innerhalb dieses 0-1-Bereichs proportional anhand ihrer relativen Position zwischen den höchsten und niedrigsten Bewertungen angepasst.
Gewichtete Summe:
- Gewichtszuweisung: Nach der Normalisierung wird jede Bewertung mit einem spezifischen Gewicht multipliziert, das die Bedeutung des jeweiligen Suchtyps (Vektor oder Volltext) widerspiegelt.
- Berechnung der endgültigen Bewertung: Die endgültige Bewertung für jedes Ergebnis wird durch Summierung dieser gewichteten, normalisierten Bewertungen ermittelt, was zu einer ausgewogenen und umfassenden Rangfolge führt, die die Stärken beider Suchmethoden integriert.
Die verwendete Normalisierungsformel lautet:
Das Ziel von RSF ist es, eine einheitliche Rangfolge zu erstellen, die sowohl die semantische Relevanz der Vektorsuche als auch die textliche Genauigkeit der Volltextsuche integriert. Durch die Normalisierung der Bewertungen und die Anwendung geeigneter Gewichte stellt RSF sicher, dass die endgültigen Ergebnisse ausgewogen sind und die Stärken beider Suchmethoden kombinieren, um ein umfassenderes und präziseres Ergebnis für den Benutzer zu liefern.
# Reciprocal Rank Fusion (RRF)
Reciprocal Rank Fusion (RRF) ist eine alternative Methode, die in hybriden Suchsystemen verwendet wird, um Ergebnisse aus verschiedenen Suchmethoden wie Vektor- und Volltextsuchen zu kombinieren. Im Gegensatz zu RSF erfordert RRF keine Bewertungsnormalisierung. Stattdessen werden die Ergebnisse basierend auf ihrer Position in jedem Ergebnissatz mit der folgenden Formel gerankt, wobei k eine beliebige Konstante ist, die die Bedeutung niedriger gerankter Ergebnisse anpasst.
Der Hauptvorteil von RRF liegt in seiner Einfachheit. Durch den Verzicht auf die Notwendigkeit der Bewertungsnormalisierung konzentriert sich RRF direkt auf die Rangpositionen und erleichtert so die Zusammenführung von Ergebnissen aus verschiedenen Suchmethoden, insbesondere wenn die Bewertungsskalen dieser Methoden nicht direkt vergleichbar sind.
# Wie führt man eine hybride Suche in MyScaleDB durch?
Lassen Sie uns anhand eines Beispiels durchgehen, wie man die hybride Suche in MyScale durchführt. Die unten gezeigten SQL-Abfragen basieren auf einem Wikipedia-Datensatz, der in den MyScale-Cluster vorimportiert wurde.
Erstellen Sie zunächst eine Volltextsuche - FTS-Index (opens new window) - auf der Textspalte 'body' und einen MSTG-Vektorindex mit Kosinusabstand auf der Vektorspalte 'body_vector'.
CREATE TABLE wiki_abstract
(
`id` UInt64,
`body` String,
`title` String,
`url` String,
`body_vector` Array(Float32),
VECTOR INDEX body_vec_idx body_vector TYPE MSTG('metric_type=Cosine'),
INDEX body_idx body TYPE fts('{"body":{"tokenizer":{"type":"stem", "stop_word_filters":["english"]}}}') GRANULARITY 1,
CONSTRAINT check_length CHECK length(body_vector) = 1024
) ENGINE = MergeTree ORDER BY id;
In dieser SQL CREATE TABLE-Anweisung haben wir einen FTS-Index für die BM25-Volltextsuche und einen Vektorindex für die Kosinusähnlichkeitssuche auf hochdimensionalen Daten definiert, die aus Textspalten konvertiert wurden.
Als nächstes können wir eine hybride Suche ausführen, die sowohl die Text- als auch die Vektorspalten nutzt. So funktioniert es:
SELECT id, body, HybridSearch('fusion_type=RSF', 'fusion_weight=0.4')(body_vector, body,
HuggingFaceEmbedText('Wer hat die Polarmedaille gewonnen'), 'Wer hat die Polarmedaille gewonnen') AS score
FROM wiki_abstract
ORDER BY score DESC
LIMIT 5;
Diese hybride Suchabfrage führt zunächst eine Vektorsuche mit der Funktion distance()
auf der Spalte body_vector
durch, um die Objekte zu finden, die dem Abfragevektor am ähnlichsten sind. Gleichzeitig wird eine Volltextsuche mit der Funktion TextSearch()
auf der Spalte body
durchgeführt, wobei die Ergebnisse basierend auf der Häufigkeit der Suchbegriffe gerankt werden. Die beiden Suchergebnisse werden dann mit dem ausgewählten Fusionierungsalgorithmus - in diesem Fall RSF - kombiniert und die besten Kandidaten zurückgegeben.
In diesem Beispiel haben wir ein Gewicht von 0,4 für die Volltextsuche und 0,6 für die Vektorsuche verwendet. Sie können diese Gewichte anpassen, um zu experimentieren und das optimale Gleichgewicht für Ihre Daten und Suchanforderungen zu finden.
# Wann sollte man die hybride Suche verwenden?
Hybride Suchabfragen sind besonders nützlich für Suchsysteme, die die Kraft der semantischen Vektorsuche nutzen möchten, während sie gleichzeitig auf die Präzision exakter Schlüsselwortübereinstimmungen in der Volltextsuche angewiesen sind. Eine Suchanfrage wie "Wer hat die Polarmedaille gewonnen" würde mit einer hybriden Suche genauere und relevantere Ergebnisse liefern als eine herkömmliche schlüsselwortbasierte Volltextsuche oder sogar eine rein semantische Vektorsuche.
In diesem Szenario:
- Die Top 5 Ergebnisse aus der Vektorsuche enthalten 3 richtige Antworten:
- Die Top 5 Ergebnisse aus der Volltextsuche enthalten 2 richtige Antworten:
- Wie im vorherigen Abschnitt gezeigt, enthalten die Top 5 Ergebnisse aus der hybriden Suche 4 richtige Antworten.
Durch die Kombination von Vektorsuche und Volltextsuche verbessert die hybride Suche die Suchgenauigkeit erheblich und liefert eine höhere Suchgenauigkeit und relevantere Ergebnisse.
# Fazit
Die hybride Suche ist wichtig, weil sie die Genauigkeit und Relevanz der Suchergebnisse verbessert, indem sie die Direktheit der Schlüsselwortsuche mit der kontextuellen Tiefe der semantischen Suche kombiniert. Dieser duale Ansatz stellt sicher, dass Benutzer nicht nur exakte Übereinstimmungen erhalten, sondern auch kontextuell relevante Ergebnisse, selbst wenn unterschiedliche Terminologie verwendet wird. Die hybride Suche zeichnet sich auch durch ihre Fähigkeit aus, vielfältige Abfragen zu verarbeiten und umfassende und anpassungsfähige Ergebnisse zu liefern, die mit der Benutzerabsicht übereinstimmen. Ihre Fähigkeit, die Leistung zu optimieren und sich an verschiedene Anwendungen anzupassen, macht sie zu einer Schlüsseltechnologie in der modernen Informationssuche.
In diesem Artikel wurde das Konzept der hybriden Suche und deren Implementierung in MyScale erläutert. Wenn Sie Fragen zur Verwendung der hybriden Suche in MyScale haben, werfen Sie einen Blick in die MyScale-Dokumentation (opens new window) oder treten Sie unserem Discord (opens new window) bei, um Hilfe zu erhalten.