Sign In
Free Sign Up
  • English
  • Español
  • 简体中文
  • Deutsch
  • 日本語
Sign In
Free Sign Up
  • English
  • Español
  • 简体中文
  • Deutsch
  • 日本語

Vorstellung der leistungsstarken Volltext- und Hybrid-Suchfunktionen von MyScale

MyScale (opens new window) ist eine vollständig verwaltete SQL-Vektordatenbank, die fortschrittliche Vektorsuchfunktionen bietet. In Version 1.5.0 von MyScale haben wir eine verbesserte Volltextsuchfunktion eingeführt, die von Tantivy (opens new window) unterstützt wird.

Die Implementierung des BM25-Algorithmus (opens new window) zur Berechnung der Relevanzbewertungen von Suchergebnissen verbessert die Volltextsuche in MyScale erheblich. Der BM25-Algorithmus ist ein wesentliches Merkmal der Textsuche, da er eine Möglichkeit bietet, Suchergebnisse basierend auf ihrer Relevanz zur ursprünglichen Abfrage zu sortieren. Er berücksichtigt Faktoren wie die Termhäufigkeit, die inverse Dokumenthäufigkeit und die Dokumentlänge. Der Algorithmus weist jedem Dokument eine Bewertung zu, sodass die relevantesten Ergebnisse zuerst angezeigt werden können.

Allerdings stehen MyScale und ClickHouse bei der Volltextsuche (opens new window) derzeit vor zwei Hauptproblemen:

  • Geringe Leistung: Die Suche und Bewertung großer Tabellen ist langsam, insbesondere wenn die Tabellen auf Millionen von Zeilen anwachsen.
  • Fehlende Funktionalität: ClickHouse unterstützt keine Fuzzy-Suche, Relevanzanpassung und BM25-Relevanzbewertung, die in modernen Suchmaschinen üblich sind.

Die Relevanzanpassung ist ein weiteres wichtiges Merkmal der Textsuche. Sie ermöglicht es Ihnen, den Suchalgorithmus fein abzustimmen, um bestimmte Aspekte der Suche zu priorisieren, z. B. eine höhere Gewichtung von Übereinstimmungen im Titel im Vergleich zum Textkörper eines Dokuments. Dadurch wird die Genauigkeit und Nützlichkeit der Suchergebnisse erheblich verbessert.

Die Fuzzy-Suche ist ebenfalls wertvoll, insbesondere zur Behandlung von Tippfehlern oder Rechtschreibfehlern in Suchanfragen. Mit ihr kann die Suchmaschine Dokumente finden, die der Suchanfrage ähnlich sind, auch wenn sie nicht exakt übereinstimmen. Dies verbessert die Benutzererfahrung erheblich und stellt sicher, dass relevante Ergebnisse aufgrund kleiner Rechtschreibfehler nicht übersehen werden.

Der Volltextsuchindex von MyScale zielt darauf ab, diese Lücke zwischen MyScale und spezialisierten Engines wie Elasticsearch zu schließen und zusätzliche Dienste überflüssig zu machen.

Zu den wichtigsten Funktionen des Volltextsuchindex von MyScale gehören:

  • Vollständig in MyScale nativ, ohne externe Abhängigkeiten;
  • Auf Tantivy aufgebaut, einer schnellen und ressourceneffizienten Alternative zu Apache Lucene;
  • Abfragezeiten über 5 Millionen Zeilen sind 300-mal schneller als der integrierte umgekehrte Index von ClickHouse;
  • Unterstützt Fuzzy- und Platzhalter-Suchen sowie umfangreiche Tokenizer;
  • Verwendet BM25 zur Relevanzbewertung ähnlich wie Elasticsearch; und
  • Echtzeitsuche ohne manuelles Neindexieren.
    Boost Your AI App Efficiency now
    Sign up for free to benefit from 150+ QPS with 5,000,000 vectors
    Free Trial
    Explore our product
    Ein Beispiel:

Zunächst erstellen wir eine Tabelle, um Wikipedia-Daten zu speichern und die Volltextsuchfunktion zu testen.

CREATE TABLE default.en_wiki_abstract(
    `id` UInt64,
    `body` String,
    `title` String,
    `url` String,
)
ENGINE = MergeTree
ORDER BY id;

Bei der Erstellung eines Volltextsuchindexes (FTS) auf der Spalte body ist es wichtig zu beachten, dass der Tokenizer in den Argumenten des Index konfiguriert werden kann. In diesem Szenario haben wir einen Tokenizer mit englischem Stemming und Stoppwörtern ausgewählt.

ALTER TABLE default.en_wiki_abstract
ADD INDEX body_idx (body)
TYPE fts('{"body":{"tokenizer":{"type":"stem", "stop_word_filters":["english"]}}}');

Anschließend laden wir die Daten über S3 hoch:

INSERT INTO default.en_wiki_abstract
SELECT * FROM s3('https://myscale-datasets.s3.ap-southeast-1.amazonaws.com/wiki_abstract_5m.parquet','Parquet');

Jetzt können wir die Spalte body mithilfe der Funktion TextSearch() durchsuchen, die eine Bewertung in BM25 zurückgibt.

SELECT
    id,
    title,
    body,
    TextSearch(body, 'non-profit institute in Washington') AS score
FROM default.en_wiki_abstract
ORDER BY score DESC
LIMIT 5;

Ausgabe:

id title body score
3400768 Drug Strategies Drug Strategies is a non-profit research institute located in Washington D.C. 24.457561
872513 Earth Policy Institute Earth Policy Institute was an independent non-profit environmental organization based in Washington, D.C. 22.730673
895248 Arab American Institute Founded in 1985, the Arab American Institute is a non-profit membership organization based in Washington D.C. 21.955559
1950599 Environmental Law Institute The Environmental Law Institute (ELI) is a non-profit, non-partisan organization, headquartered in Washington, D.C. 21.231567
2351478 Public Knowledge Public Knowledge is a non-profit Washington, D.C. 20.742344

Darüber hinaus kann die Volltextsuchfunktion in MyScale mit Vektorsuchen kombiniert werden, um Hybrid-Suchen in RAG-Pipelines durchzuführen. Benutzer führen normalerweise separate Abfragen mit Vektor- und Volltextsuchen durch und organisieren dann die Ergebnisse beider Suchen, indem sie Fusionalgorithmen über Python-Bibliotheken wie ranx (opens new window) anwenden.

Für detaillierte Anleitungen zu diesen Themen besuchen Sie bitte:

Schließlich wird der Volltextsuchindex mit Tantivy bald in unserem Open-Source-Projekt MyScaleDB (opens new window) verfügbar sein. Bleiben Sie dran!

Keep Reading

Start building your Al projects with MyScale today

Free Trial
Contact Us