Die Suche in technischen Dokumentationen stellt Entwickler vor eine besondere Herausforderung: Wie findet man relevante Inhalte, wenn Nutzer nach Begriffen suchen, die semantisch ähnlich, aber lexikalisch unterschiedlich sind? Die Antwort liegt in der Kombination verschiedener Suchtechnologien – wie SurrealDB mit seiner neuen hybriden Suchfunktion beweist.
Warum klassische Suchmethoden an ihre Grenzen stoßen
Volltextsuche und Vektorsuche verfolgen grundverschiedene Ansätze. Die Volltextsuche zerlegt Texte in Token und analysiert diese nach linguistischen Kriterien wie Stammformenbildung oder Groß-/Kleinschreibung. Die Vektorsuche hingegen erfasst die semantische Bedeutung von Wörtern durch numerische Vektoren, die maschinelle Lernmodelle generieren.
Ein einfaches Beispiel verdeutlicht die Unterschiede: Der Begriff "Lead" kann sowohl eine Person als auch ein chemisches Element bezeichnen. Während ein Volltextindex die exakte Schreibweise abgleicht, erkennt die Vektorsuche die kontextuelle Bedeutung – unabhängig von der Formulierung. Beide Methoden haben jedoch jeweils eigene Stärken und Schwächen:
- Volltextsuche: Präzise bei exakten Wortübereinstimmungen, aber anfällig für Synonyme und Mehrdeutigkeiten
- Vektorsuche: Erfasst semantische Ähnlichkeiten, benötigt jedoch trainierte Modelle und Ressourcen für die Vektorerstellung
SurrealDB löst dieses Dilemma durch die Integration beider Ansätze in einer hybriden Suchfunktion.
Die Architektur der hybriden Suche in SurrealDB
Die neue Suchfunktion der SurrealDB-Dokumentation kombiniert BM25-basierte Volltextsuche mit OpenAI-generierten Vektoreinbettungen und nutzt das Reciprocal Rank Fusion (RRF)-Verfahren zur Ergebnisoptimierung. Dieses Verfahren bewertet Dokumente, die in mehreren Suchergebnislisten auftauchen, höher als solche mit nur einer Trefferliste.
Die Implementierung erfolgt vollständig in SurrealQL, der Abfragesprache von SurrealDB. Ein zentraler Bestandteil ist der analysator, der Texte für die Volltextsuche aufbereitet:
DEFINE ANALYZER OVERWRITE simple TOKENIZERS blank, class, camel, punct FILTERS snowball(english);Dieser Analysator zerlegt Texte in Grundformen (Lemmatisierung), entfernt Satzzeichen und trennt CamelCase-Begriffe. Ein Beispiel demonstriert die Wirkung:
search::analyze(
"simple",
"The project lead frowned and took a hard look at the results. They were clear as day."
).join(' ');Die Ausgabe zeigt die normalisierten Token, die dann mit dem Index abgeglichen werden:
"the project lead frown and took a hard look at the result . they were clear as day"
Für die Vektorsuche werden Embeddings mit OpenAI generiert und in SurrealDB gespeichert. Die Kombination beider Suchergebnisse erfolgt über die RRF-Funktion:
LET $fused = search::rrf(
[$page_ft, $page_vs, $section_ft, $section_vs],
60,
80
);Hierbei stehen $page_ft und $section_ft für Volltextsuchergebnisse auf Seiten- bzw. Abschnittebene, während $page_vs und $section_vs die entsprechenden Vektorsuchen repräsentieren.
Praktische Umsetzung: Indizes und Abfragen
Für die hybride Suche müssen zunächst spezifische Indizes angelegt werden. SurrealDB unterstützt dabei die Kombination aus Volltext- und Vektorindizes:
-- Volltextindex für den Seitentitel
DEFINE INDEX OVERWRITE page_ft_title ON page FIELDS title FULLTEXT ANALYZER simple BM25;
-- Vektorindex für Dokument-Abschnitte
DEFINE INDEX vector_index_sections ON section FIELDS embedding TYPE vector(1536);Die Suchabfrage kombiniert dann beide Indizes. Ein typischer Aufruf sieht wie folgt aus:
-- Volltextsuche mit @-Operator
SELECT * FROM page WHERE title @@ "hybride Suchfunktion";
-- Vektorsuche mit Nearest Neighbor (NN) Operation
SELECT * FROM section WHERE embedding <|> (SELECT embedding FROM section WHERE id = "doc123");SurrealDB übernimmt dabei die komplexe Logik der RRF-Bewertung und gibt die finalen Suchergebnisse in einer optimierten Reihenfolge zurück.
Vorteile und Anwendungsfälle für Entwickler
Die hybride Suche von SurrealDB bietet mehrere entscheidende Vorteile:
- Höhere Relevanz: Durch die Kombination beider Suchmethoden werden sowohl exakte Treffer als auch semantisch ähnliche Inhalte gefunden.
- Flexibilität: Entwickler können die Gewichtung beider Suchmethoden anpassen, um spezifische Anforderungen zu erfüllen.
- Performance: Die Integration in SurrealDB vermeidet externe Abhängigkeiten und reduziert Latenzzeiten.
- Einfache Integration: Die Implementierung erfolgt vollständig in SurrealQL, ohne zusätzliche Bibliotheken.
Mögliche Anwendungsbereiche umfassen:
- Technische Dokumentationen mit komplexen Fachbegriffen
- E-Commerce-Plattformen mit Produktbeschreibungen und Kundenbewertungen
- Wissensdatenbanken mit heterogenen Inhalten
- Suchfunktionen in CMS-Systemen
Ausblick: Zukunft der hybriden Suche
Die Kombination aus Volltext- und Vektorsuche markiert einen wichtigen Meilenstein in der Entwicklung moderner Suchtechnologien. SurrealDB zeigt, wie sich beide Ansätze in einer einzigen Abfragesprache effizient vereinen lassen.
Die Open-Source-Implementierung der Dokumentationssuche bietet Entwicklern nicht nur eine sofort einsatzbereite Lösung, sondern auch eine hervorragende Grundlage für eigene Experimente. Mit der zunehmenden Verbreitung von Vektordatenbanken und hybriden Suchverfahren wird diese Technologie in den kommenden Jahren weiter an Bedeutung gewinnen.
Wer die hybride Suche selbst ausprobieren möchte, findet die vollständige Dokumentation im GitHub-Repository von SurrealDB. Die lokale Einrichtung erfordert lediglich eine OpenAI-API und die Laufzeitumgebung Bun.
KI-Zusammenfassung
SurrealDB’nin hibrit arama sistemiyle doküman aramasını nasıl geliştirebilirsiniz? Tam metin ve vektör aramayı birleştiren RRF yöntemi hakkında detaylı bilgi edinin.