Das große Sprachmodell (LLM) hat so viele erstaunliche Ideen in die Realität umgesetzt, wie Bots für alles, Wissensexperten, Forschungsassistenten und viele andere. Die meisten dieser großartigen Apps kombinieren LLM mit einem spezifischen Wissensbereich, in dem Vektordatenbanken eine Rolle spielen. Wenn Sie beispielsweise eine Frage zu einem bestimmten Bereich haben, ist es am besten, mögliche Bereiche aus der Datenbank abzurufen und dynamisch Anweisungen zu erstellen.
Die Auswahl der richtigen Vektordatenbank für Ihre App kann die Effizienz und Effektivität erheblich beeinflussen. Derzeit gibt es viele Vektordatenbankprodukte, die im Allgemeinen in zwei Kategorien eingeteilt werden - spezialisierte Vektordatenbanken und integrierte Vektordatenbanken. Während spezialisierte Vektordatenbanken wie Pinecone aufgrund ihrer Benutzerfreundlichkeit an Beliebtheit gewonnen haben, sind sie oft nicht in der Lage, das Skalieren oder die Unterstützung verschiedener Datentypen zu bewältigen. Deshalb benötigen wir integrierte Vektordatenbanken.
# Was ist eine integrierte Vektordatenbank?
Eine integrierte Vektordatenbank ist ein Datenbanktyp, der Vektorsuchfunktionen mit traditionellen strukturierten Datenbanken kombiniert. Im Gegensatz zu spezialisierten Vektordatenbanken, die ausschließlich für Vektorindizes entwickelt wurden, speichern integrierte Vektordatenbanken sowohl Vektoren als auch strukturierte Daten in derselben Datenbank und kombinieren Vektorsuchalgorithmen mit strukturierten Datenbanken. Diese Integration bietet mehrere Vorteile, darunter die Möglichkeit zur effizienten Kommunikation, flexible Metadatenfilterung, Ausführung von SQL- und Vektorverbundabfragen sowie die Nutzung ausgereifter Tools und Integrationen, die üblicherweise mit Datenbanken für allgemeine Zwecke verbunden sind.
MyScale (opens new window) ist eine cloudbasierte Datenbank, die für KI-Anwendungen und -Lösungen optimiert ist und auf der Open-Source-OLAP-Datenbank ClickHouse basiert. Sie hat es geschafft, die Leistung der Vektorsuche in einer integrierten Vektordatenbank zu verbessern. Sie bietet alle Vorteile, die andere integrierte Vektordatenbanken bieten können, und bietet zusätzliche Vorteile wie gute Leistung mit dem proprietären Vektorindexalgorithmus MSTG.
In diesem Artikel werden wir MyScale, eine der führenden integrierten Vektordatenbanken, genauer betrachten und besprechen, wie diese integrierten Vektordatenbanken Ihre LLM-Apps verbessern können.
# Kommunikation ist wichtig
Die Kommunikation ist für die Leistung Ihrer App wirklich wichtig. DBaaS (Datenbank als Service) und SaaS (Software als Service) werden aufgrund ihrer geringeren Kosten und verbesserten Skalierbarkeit weit verbreitet eingesetzt, und die Kommunikation spielt bei der Arbeit mit diesen Diensten eine Rolle.
Ein spezialisierter Vektorindex kann möglicherweise nicht alle Daten halten, die Sie haben, was bedeutet, dass Sie sie an anderer Stelle speichern müssen. In diesem Setup müssen Sie zwei Anfragen sequenziell stellen, wobei in einer einzigen Abfrage 4 Datenübertragungen stattfinden. Mit einer integrierten Datenbanklösung benötigen Sie jedoch nur 1 Anfrage mit 2 Übertragungen.
Weniger Übertragungen bedeuten weniger Latenz, und die Latenz beeinflusst die Benutzererfahrung. Wenn Sie ernsthaft über die Kommunikationslatenz nachdenken oder eine massive Abfrage an die Datenbank stellen möchten, sollten Sie MyScale als eine der Optionen unter diesen integrierten Lösungen in Betracht ziehen.
# Filtern Sie alles ohne Einschränkungen
LLM-Apps werden durch Tools erweitert. Und die Vektordatenbank ist das wichtigste davon. Wenn Sie eine große Anzahl von Vektoren durchsuchen müssen, ist es in der Regel besser, die Ergebnisse mit Schlüsselwörtern einzuschränken, und diese Vektoren können Artikel, Webseiten oder Anweisungen darstellen. Hier kommt das Konzept der metadatengefilterten Suche ins Spiel.
Die gefilterte Suche ist in LLM-Apps recht verbreitet. Sie können sie verwenden, um einige unnötige Daten auszuschließen und die Genauigkeit zu verbessern. Die meisten Vektorindexdienste bieten Metadatenfilter, um das Ausschließen von unnötigen Daten zu implementieren. Einige Implementierungen haben jedoch Einschränkungen hinsichtlich der Daten, die Sie filtern möchten, entweder in Bezug auf die Größe oder die Filterfunktionen selbst. Die Implementierung von Pinecone beispielsweise hat eine Metadatenbegrenzung von 40 KB, die die Funktionalität der Metadatenfilter einschränkt. Das kann ein großes Hindernis sein, wenn Sie ein Regex-Muster in einem sehr großen Absatz abgleichen oder einige Daten filtern möchten, die geografisch weit entfernt vom abgefragten Standort liegen.
Datenbanklösungen wie MyScale können Metadatenfilterung für Daten nahezu beliebiger Größe und Art durchführen. Sie können alles als Metadatenfilter verwenden, z. B. Geolokationen (wie H3 und S2), Übereinstimmung mit regulären Ausdrücken, Schwellenwertberechnung für mathematische Ausdrücke und sogar Metadatenfilterung mit einer SQL-Unterabfrage.
Wenn Ihre Anweisung einige geografische Entfernungen berechnen muss, hier ist ein Beispiel, wie Sie es verwenden können:
WHERE h3Distance(<data column in h3 index type>, <h3 index>) > 10
Angenommen, Sie suchen nach einer Gruppe von Artikeln, die bestimmten Schlüsselwörtern entsprechen, können Sie eine Musterübereinstimmung für Zeichenketten verwenden, um Ihre Vektorsuche einzuschränken:
WHERE column_1 LIKE '%value%'
Sie können auch reguläre Ausdrücke verwenden, um Ihre Suche weiter einzuschränken:
WHERE match(column_1, '(?i)(value\s)')
Sie können auch mit mathematischen Ausdrücken filtern, z. B. eine Vorhersage für einen Few-Shot-Learner berechnen und einen Schwellenwert verwenden, um die Ergebnisse zu filtern:
WHERE 1/(1+exp(column_1)) > 0.9
Und Sie können auch Metadatenfilterung mit einer SQL-Unterabfrage durchführen:
WHERE column_1 IN (SELECT ... FROM another_table WHERE ...)
Darüber hinaus werden Daten, bei denen Sie Metadatenfilterung durchführen können, tatsächlich als Spalten gespeichert. Es gibt keine zusätzlichen Einschränkungen hinsichtlich ihrer Größe oder Datentypen. Sie können auch externe Spalten aus anderen Tabellen mit JOIN
verknüpfen, was es Ihnen ermöglicht, komplexe Abfragepipelines mit guter Leistung zu entwerfen.
# Mehrere Vektorindizes, eine Instanz
Einige LLM-Apps können mehrere Spalten von Vektoren haben. Wenn Ihre App auf mehr als einem Vektor suchen muss, beispielsweise zuerst nach Artikeln suchen, bevor Sie unter Absätzen suchen oder zuerst Anweisungen festlegen, bevor Sie relevante Informationen abrufen, benötigen Sie möglicherweise mehrere Vektorindizes für Ihre App.
Die meisten spezialisierten Vektordatenbanken unterstützen nur einen Vektorindex pro Instanz, was bedeutet, dass Sie für jede Vektorspalte eine neue Instanz benötigen. Das kann problematisch sein, wenn Ihre Apps mehrere Vektordatenbankinstanzen verwenden müssen. Die Inkonsistenz in Bezug auf Latenz und Berechnung kann sich langfristig negativ auf die Leistung auswirken und Wartungsprobleme verursachen.
Integrierte Vektordatenbanken, insbesondere MyScale, behandeln Vektorindizes jedoch als eine Art Datenindex. Sie ermöglichen es Ihnen, für jede Tabelle einen Vektorindex zu erstellen. Wenn Sie mehrere Apps haben und sie alle eine Vektordatenbank benötigen, können Sie Tabellen und Vektorindizes für sie erstellen und sie in einer Instanz zusammenführen! Sie benötigen jetzt nur noch eine Instanz für eine LLM-App, die mehrere Vektorindizes verwendet.
# Fazit
Trotz der steileren Lernkurve aufgrund von SQL-Schnittstellen haben integrierte Vektordatenbanken unbestreitbare Vorteile. Durch die Bereitstellung flexibler Metadatenfilterung, Unterstützung mehrerer Indizes und verbesserter Kommunikationseffizienz können sie Ihre LLM-Apps auf ein neues Niveau heben. Bei MyScale sind wir fest davon überzeugt, dass integrierte Vektordatenbanken die Zukunft sind. MyScale, eine leistungsstarke integrierte Vektordatenbanklösung, unterstützt durch einen fortschrittlichen Vektorindexalgorithmus, bietet sowohl hohe Datendichte als auch Kosteneffizienz (opens new window).