Interpretation von Vektordatenbanken

Ob RAG oder Agent, fast jede LLM-gesteuerte Anwendung kann eine Vektordatenbank verwenden. Was ist also eine Vektordatenbank? Wie unterscheidet es sich von herkömmlichen Datenbanken? Wie wähle ich eine Vektordatenbank aus? Bei diesem Artikel handelt es sich um Studiennotizen eines alten Programmierers zu Vektordatenbanken.

1. Was ist eine Vektordatenbank?

Zuerst müssen wir verstehen, was ein Vektor ist.

Vektoren sind Datendarstellungen, die Objekte anhand verschiedener Merkmale oder Attribute beschreiben. Jeder Vektor stellt einen einzelnen Datenpunkt dar, beispielsweise ein Wort oder ein Bild, und besteht aus einer Sammlung von Werten, die seine vielen Eigenschaften beschreiben. Diese Variablen werden manchmal „Merkmale“ oder „Dimensionen“ genannt. Beispielsweise kann ein Bild als Vektor aus Pixelwerten dargestellt werden und ein ganzer Satz kann als Vektor aus Worteinbettungen dargestellt werden.

Einige häufig verwendete Datenvektoren sind wie folgt:

  • Bildvektoren sind Bildmerkmalsvektoren, die durch Deep-Learning-Modelle extrahiert werden. Diese Merkmalsvektoren erfassen wichtige Bildinformationen wie Farbe, Form, Textur usw. und können für Aufgaben wie Bilderkennung und -abruf verwendet werden;

  • Textvektoren sind Textmerkmalsvektoren, die durch Worteinbettungstechnologien wie Word2Vec, BERT usw. generiert werden. Diese Vektoren enthalten die semantischen Informationen des Textes und können für Aufgaben wie Textklassifizierung und Stimmungsanalyse verwendet werden;

  • Sprachvektoren sind Merkmalsvektoren, die durch akustische Modelle aus Tonsignalen extrahiert werden. Diese Vektoren erfassen wichtige Eigenschaften von Tönen, wie Tonhöhe, Rhythmus, Klangfarbe usw., und können für Aufgaben wie Spracherkennung und Stimmabdruckerkennung verwendet werden.

Eine Vektordatenbank ist eine Datenbank, die Daten als hochdimensionale Vektoren speichert, bei denen es sich um mathematische Darstellungen von Merkmalen oder Attributen handelt. Jeder Vektor verfügt über eine bestimmte Anzahl von Dimensionen, die je nach Komplexität und Granularität der Daten zwischen Dutzenden und Tausenden liegen können. Vektoren werden normalerweise durch Anwenden einer Transformations- oder Einbettungsfunktion auf Rohdaten (z. B. Text, Bilder, Audio, Video usw.) generiert. Einbettungsfunktionen können auf verschiedenen Methoden basieren, wie z. B. Modellen des maschinellen Lernens, Worteinbettungen und Algorithmen zur Merkmalsextraktion. Vektordatenbanken verwenden Indizierungsstrategien, um spezifische Abfragen nach Vektorähnlichkeit zu vereinfachen. Dies ist besonders nützlich bei Anwendungen des maschinellen Lernens, bei denen Ähnlichkeitssuchen häufig verwendet werden, um vergleichbare Datenpunkte zu entdecken oder Empfehlungen zu generieren.

c333f7adc3987257a051bcf8cec9406e.jpeg

Zu den Hauptfunktionen der Vektordatenbank gehören:

  • Verwaltung: Die Vektordatenbank verarbeitet Daten in Form von Rohdaten und kann Daten effektiv organisieren und verwalten, um die Anwendung von KI-Modellen zu erleichtern.

  • Speicherung: Kann Vektordaten speichern, einschließlich hochdimensionaler Daten, die von verschiedenen KI-Modellen verwendet werden.

  • Abruf: Vektordatenbanken sind besonders gut darin, Daten effizient abzurufen. Diese Funktion stellt sicher, dass das KI-Modell die benötigten Daten schnell abrufen kann, wenn sie benötigt werden. Dies ist auch ein wichtiger Grund, warum Vektordatenbanken in einigen Empfehlungssystemen oder Abrufsystemen verwendet werden können.

Der Hauptvorteil einer Vektordatenbank besteht darin, dass sie eine schnelle und genaue Ähnlichkeitssuche und -abfrage basierend auf der Vektorentfernung oder Ähnlichkeit der Daten ermöglicht. Dies bedeutet, dass eine Vektordatenbank verwendet werden kann, um die ähnlichsten oder relevantesten Daten basierend auf ihrer semantischen oder kontextuellen Bedeutung zu finden, anstatt herkömmliche Methoden zur Abfrage einer Datenbank basierend auf genauen Übereinstimmungen oder vordefinierten Kriterien zu verwenden. Vektordatenbanken können unstrukturierte Daten durchsuchen, aber auch halbstrukturierte oder sogar strukturierte Daten verarbeiten. Sie können beispielsweise eine Vektordatenbank verwenden, um Bilder zu finden, die einem bestimmten Bild basierend auf visuellem Inhalt und Stil ähneln, Dokumente, die einem bestimmten Dokument ähneln, basierend auf Thema und Stimmung, und Produkte zu finden, die einem bestimmten Produkt basierend auf Funktionen und Bewertungen ähneln .

2. Arbeitsmechanismus der Vektordatenbank

Vektordatenbanken sind so aufgebaut, dass sie die spezifische Struktur von Vektoreinbettungen berücksichtigen, und sie verwenden Indexierungsalgorithmen, um Vektoren basierend auf ihrer Ähnlichkeit mit dem Abfragevektor effizient zu suchen und abzurufen.

Das Funktionsprinzip der Vektordatenbank kann mit dem Funktionsprinzip von CPU und GPU verglichen werden. Die CPU und die GPU sind die Rechen- bzw. Grafikverarbeitungskerne des Computers, während die Vektordatenbank der Speicher- und Speicherkern großer Modelle ist. In der Lernphase des großen Modells empfängt die Vektordatenbank multimodale Daten zur vektorisierten Darstellung, sodass das große Modell Daten während des Trainings effizienter aufrufen und verarbeiten kann. Durch Multithreading-Mechanismen und Matrixoperationen stellt die GPU eine leistungsstarke Rechenleistung bereit, wodurch das Training großer Modelle schneller und effizienter wird.

Im Gegensatz zu herkömmlichen Datenbanken weisen Vektordatenbanken drei Hauptunterschiede auf: Datenvektorisierung, Vektorabruf und Ähnlichkeitsberechnung. Die Vektorisierung von Daten nutzt die Einbettungstechnologie. Die Einbettung dient als Brücke, um nicht numerische Daten in eine Form umzuwandeln, die von Modellen des maschinellen Lernens verwendet werden kann, sodass diese Muster und Beziehungen in den Daten effektiver identifizieren können. Im Allgemeinen ist Text ein eindimensionaler Vektor, ein Bild eine zweidimensionale Matrix und ein Video entspricht einer dreidimensionalen Matrix. Bei diesen Einbettungen handelt es sich im Wesentlichen um Zahlenlisten (d. h. Vektoren), die eine kontextbezogene Darstellung der Daten speichern. Innerhalb der Speicherschicht wird die Datenbank in Form eines Stapels von m Vektoren gespeichert, wobei jeder Vektor n Dimensionen verwendet, um einen Datenpunkt mit einer Gesamtgröße von m×n darzustellen. Aus Gründen der Abfrageleistung werden diese Stapel häufig durch Sharding aufgeteilt.

Beim Vektorabruf wird ein Vektor eingegeben, die TopN-Vektoren, die dem Eingabevektor am ähnlichsten sind, aus der Datenbank gefunden und zurückgegeben. Um Ähnlichkeitssuchen und -abfragen in Vektordatenbanken durchzuführen, werden Abfragevektoren verwendet, die die erforderlichen Informationen oder Bedingungen darstellen. Abfragevektoren können aus demselben Datentyp wie die Speichervektoren oder aus einem anderen Datentyp abgeleitet werden. Verwenden Sie ein Ähnlichkeitsmaß, um den Abstand zwischen zwei Vektoren im Vektorraum zu berechnen. Ähnlichkeitsmaße können auf verschiedenen Maßen basieren, wie z. B. Kosinusähnlichkeit, euklidischer Distanz, innerem Vektorprodukt, Hamming-Distanz und Jaccard-Index.

Unter diesen ist der Vektorabrufalgorithmus einer der Kernelemente der Vektordatenbank. Der Vektorabruf kann als eine ungefähre Suche nach dem nächsten Nachbarn betrachtet werden, bei der die Vorindexkonstruktion verwendet wird, um den Suchraum während der Datenabfrage zu reduzieren und den Abruf zu beschleunigen. Derzeit sind die wichtigsten Suchalgorithmen:

  • Baumbasierte Methoden wie KDTree und Annoy

  • Graphbasierte Methoden wie HNSW

  • Auf Produktquantisierung basierende Methoden wie SQ und PQ

  • Hash-basierte Methoden wie LSH

  • Methode basierend auf invertiertem Index

Indizes in Vektordatenbanken können auf zwei Ebenen organisiert und implementiert werden: Datenstruktur und Komprimierungsebene. Die Klassifizierung der Indizierung basierend auf der Datenstruktur ist wie folgt:

bfa42129bdc3bbc0807061c7e0f6f83a.jpeg

Erstellen Sie einen Index basierend auf der Datenkomprimierungsmethode, die hauptsächlich flache Komprimierung und Quantisierungskomprimierung umfasst. Flache Komprimierung bezieht sich auf das Speichern des Index eines Vektors in seiner unveränderten Form. Bei der Quantisierung wird der zugrunde liegende Vektor des Index in Blöcke mit weniger Bytes aufgeteilt (normalerweise durch Konvertieren von Gleitkommazahlen in Ganzzahlen), um den Speicherverbrauch und die Berechnung von Suchprozessen zu reduzieren kosten.

6c0ffadb9c6ab50580192e2cc8567b9d.jpeg

Die Ergebnisse von Ähnlichkeitssuchen und -abfragen sind normalerweise eine Rangliste von Vektoren mit der höchsten Ähnlichkeitsbewertung zum Abfragevektor. Sie können dann auf die entsprechenden Rohdaten zugreifen, die jedem Vektor in der Originalquelle oder dem Originalindex zugeordnet sind.

3. Klassifizierung von Vektordatenbanken

Entsprechend der Implementierungsmethode der Vektordatenbank können wir die Vektordatenbank grob in vier Kategorien einteilen: native Vektordatenbank, vektorgestützte Volltextsuchdatenbank, vektorgestützte NoSQL-Datenbank und vektorgestützte relationale Datenbank.

3.1 Native Vektordatenbank

Native Vektordatenbanken sind speziell zum Speichern und Abrufen von Vektoren konzipiert. Einschließlich Chroma, LanceDB, Marqo, Milvus/Zilliz, Pinecone, Qdrant, Vald, Vespa, Weaviate usw. werden die verwalteten Daten basierend auf der Vektordarstellung von Objekten oder Datenpunkten organisiert und indiziert. Hier werden nur drei davon vorgestellt. Spezifische Informationen finden Sie auf den jeweiligen offiziellen Websites.

Faiss

Faiss ist eine Open-Source-Bibliothek für effiziente Ähnlichkeitssuche und dichtes Vektor-Clustering. Faiss ist in C++ mit einem vollständigen Python/Numpy-Wrapper geschrieben. Einige gängige Algorithmen werden auf der GPU implementiert und sind zur Grundlage vieler Open-Source-Vektordatenbanken geworden.

191ea2e0690b082b6871f78d805d28ec.jpeg

Faiss kann verschiedene Indextypen erstellen und bietet Ähnlichkeitsberechnungsfunktionen für den euklidischen Abstand oder das Skalarprodukt. Einige Indextypen sind einfache Basislinien, z. B. die exakte Suche. Die meisten verfügbaren Indexstrukturen erfordern die Berücksichtigung von Suchzeit, Suchqualität, Speichernutzung pro Indexvektor usw.

Faiss unterstützt eine Vielzahl von Vektorsuchtechniken und stellt Algorithmen bereit, die in Vektorsätzen unterschiedlicher Größe suchen können, auch in solchen, die die Speicherkapazität überschreiten.

Einer der Hauptvorteile von Faiss ist die Geschwindigkeit und Skalierbarkeit, die eine schnelle Suche selbst in Datensätzen mit Milliarden von Vektoren ermöglicht. Darüber hinaus wird Hilfscode zum Auswerten und Optimieren von Parametern bereitgestellt.

Tannenzapfen

Pinecone ist eine cloudbasierte Vektordatenbank, die die Entwicklung von Echtzeit-Ähnlichkeitssuchanwendungen ermöglicht. Sie kann hochdimensionale Vektoreinbettungen mit Millisekunden-Latenz speichern und untersuchen und eignet sich für Anwendungen wie Empfehlungssysteme, Bild- und Videosuche sowie natürliche Anwendungen Sprachverarbeitung.

Zu den Hauptfunktionen von Pinecone gehören automatische Indizierung, Echtzeitaktualisierungen, automatische Abfrageoptimierung und eine REST-API für die einfache Interaktion mit aktuellen Prozessen. Seine Architektur ist auf Skalierbarkeit und Robustheit ausgelegt und erleichtert die Verwaltung großer Datenmengen bei gleichzeitiger Aufrechterhaltung einer hohen Verfügbarkeit.

6a40772d064ee2d788eff9351366f6f6.jpeg

Pinecone ist eine Vektordatenbankplattform, die gehostet werden kann, was bedeutet, dass es kommerzielle und kostenlose Pläne gibt. Zu seinen Hauptmerkmalen gehören:

  • Unterstützt vollständig verwaltete Dienste

  • Hoch skalierbar

  • Datenerfassung in Echtzeit

  • Suche mit geringer Latenz

  • Integrieren Sie mit LangChain

Pinecone nutzt eine Vielzahl von Sicherheitsmaßnahmen, um die Datensicherheit und Privatsphäre der Benutzer zu schützen. Der mehrstufige Zugriffskontrollmechanismus kann die Zugriffsrechte und Betriebsrechte der Benutzer steuern. Er verwendet außerdem Datenverschlüsselung, Übertragungsverschlüsselung und andere Technologien, um die Sicherheit der Daten zu schützen. Er bietet außerdem Funktionen wie Datensicherung und -wiederherstellung, um Datenverlust zu verhindern Schaden.

In Bezug auf die Leistung schneidet Pinecone sehr gut ab. Es kann bis zu 1 Million QPS unterstützen und zeichnet sich durch geringe Latenz und hohen Durchsatz aus. Darüber hinaus bietet es die Vorteile einer verteilten Bereitstellung, einer Indexerstellung in Echtzeit und einer effizienten Vektorähnlichkeitssuche. Das ist möglich Helfen Sie Benutzern, große Vektordaten schnell zu verarbeiten.

Darüber hinaus unterstützt Pinecone auch mehrere Programmiersprachen und Frameworks wie Python, Java, TensorFlow usw., sodass Benutzer es problemlos in ihre eigenen Anwendungen integrieren können.

Der Drachen

Milvus ist eine verteilte Open-Source-Vektordatenbank, die sich durch hohe Verfügbarkeit, hohe Leistung und einfache Erweiterung auszeichnet und für den Echtzeitabruf umfangreicher Vektordaten verwendet wird.

Milvus basiert auf Vektorsuchbibliotheken wie Faiss, Annoy, HNSW usw. Es kann problemlos Millionen von Entitäten verwalten und den am besten geeigneten Indexalgorithmus entsprechend verschiedenen Datenmerkmalen auswählen. Der Kern besteht darin, das Problem des Abrufs dichter Vektorähnlichkeiten zu lösen . Auf der Grundlage des Vektorabrufs unterstützt Milvus Datenpartitionierung, Datenpersistenz, inkrementelle Datenaufnahme, Skalar-Vektor-Hybridabfrage, Zeitreisen und andere Funktionen. Gleichzeitig optimiert es die Leistung des Vektorabrufs erheblich und kann die Anforderungen von erfüllen jedes Szenario zum Abrufen von Vektoren. Anwendungsanforderungen.

12dfe5dc1d7920c024c95124a13fa4e5.jpeg

Milvus bietet außerdem die Vorteile einer verteilten Bereitstellung, hoher Verfügbarkeit und hoher Skalierbarkeit, wodurch Benutzer große Mengen an Vektordaten schnell verarbeiten können. Darüber hinaus bietet es eine Vielzahl von Sicherheitsmaßnahmen zum Schutz der Datensicherheit und Privatsphäre der Benutzer. Es unterstützt Technologien wie SSL/TLS-Verschlüsselung und Zugriffskontrolle, um den illegalen Zugriff auf Daten und deren Diebstahl zu verhindern. Darüber hinaus bietet es Funktionen wie Datensicherung und -wiederherstellung Daten schützen. Vollständigkeit und Verfügbarkeit.

Darüber hinaus bietet Milvus auch eine Vielzahl von Client-SDKs wie Python, Java, C++ usw., sodass Benutzer problemlos verschiedene Programmiersprachen verwenden können, um auf Milvus zuzugreifen und es zu bedienen.

3.2 Unterstützt die Vektor-Volltextsuchdatenbank

Zu diesen Datenbanken gehören Elastic/Lucene, OpenSearch und Solr. Sie alle verfügen über Rich-Text-Retrieval-Funktionen wie anpassbare Tokenizer, Tokenizer, Stoppwortlisten, N-Gramm usw. Die meisten von ihnen basieren auf Open-Source-Bibliotheken und verfügen über große integrierte Ökosysteme, einschließlich Vektorbibliotheken.

Elasticsearch ist beispielsweise eine verteilte Such- und Analysemaschine, die verschiedene Datentypen unterstützt. In Version 7.3 hat Elasticsearch Unterstützung für Vektordatenindizes und Hybridabfragen hinzugefügt. Beim Vektorabruf werden jedoch immer noch Brute-Force-Berechnungen verwendet, was zu großen Leistungseinbußen führt. Die in Version 8.0 eingeführte knn-Suche ist eigentlich ein ungefährer Suchalgorithmus für den nächsten Nachbarn. Die Ähnlichkeit unterstützt den euklidischen Abstand, das Skalarprodukt und die Kosinusähnlichkeit. Die unterste Ebene der knn-Suche verwendet tatsächlich HNSW. Ein hybrider Abruf ist auf diese Weise leider nicht möglich.

3.3 NoSQL-Datenbanken, die Vektoren unterstützen

Fast alle dieser NoSQL-Datenbanken haben in letzter Zeit durch die Hinzufügung von Vektorsucherweiterungen Vektorfunktionen erhalten. Testen Sie sie daher unbedingt, wenn Sie sie verwenden. Cassandra, Rockset, Azure Cosmos DB und MongoDB haben alle Pläne angekündigt, die Vektorsuche hinzuzufügen. Die Leistung der Vektorsuche in NoSQL-Datenbanken kann je nach unterstützten Vektorfunktionen, Indizierungsmethoden und Hardwarebeschleunigung stark variieren.

RedisVector ist beispielsweise eine Vektordatenbank, die sich auf die effiziente Verarbeitung von Vektordaten konzentriert. Es eignet sich hervorragend zum Speichern und Analysieren großer Mengen von Vektordaten, einschließlich Tensoren, Matrizen und numerischen Arrays. Durch die Nutzung von Redis für die In-Memory-Datenspeicherung bietet RedisVector leistungsstarke Abfrageantwortzeiten. Es bietet integrierte Indizierungs- und Suchfunktionen zum schnellen Suchen und Finden ähnlicher Vektoren. RedisVector unterstützt außerdem verschiedene Distanzmaße zum Vergleichen von Vektoren und zum Durchführen komplexer Analysevorgänge. Durch Operationen an Vektordaten, einschließlich Arithmetik und Aggregation auf Elementebene, bietet RedisVector eine vielseitige Umgebung für die Arbeit mit Vektoren, die für Anwendungen des maschinellen Lernens geeignet ist, die hochdimensionale Vektordaten verarbeiten und analysieren und die Erstellung benutzerdefinierter und ähnlichkeitsbasierter Empfehlungssysteme ermöglichen Empfehlungen. Genaue Suche.

Bei NoSQL-Datenbanken, die Vektoren unterstützen, ist es in Ordnung, zu experimentieren, Sie sollten jedoch vorsichtig sein, wenn Sie sie in einer Produktionsumgebung verwenden.

3.4 Vector-fähige SQL-Datenbanken

Die meisten davon sind relationale Datenbanken und unterstützen SQL-Abfragen, wie SingleStoreDB, PostgreSQL, Clickhouse und Kineticas pgvector/Supabase Vector usw. Sie alle kündigen die Einbeziehung von Vektorsuchfunktionen wie Skalarprodukt, Kosinusähnlichkeit, euklidischer Distanz und Manhattan-Distanz an und verwenden Ähnlichkeitswerte, um n nächste Nachbarn zu finden. Dank hybrider Abfragen können Vektoren mit anderen Daten kombiniert werden, um aussagekräftigere Ergebnisse zu erhalten. Darüber hinaus können die meisten SQL-Datenbanken als Dienste bereitgestellt und vollständig in der Cloud verwaltet werden.

67b6c3a9f47c8b4daf723588ac54c6d1.jpeg

Postgres übergibt beispielsweise sowohl pg_vector als auch pg_embdding Plug-in zur Implementierung einer Vektordatenbank, sodass die PG-Datenbank Funktionen zum Abrufen von Vektorindizes unterstützen kann. Sein Indexierungsalgorithmus verwendet den Faiss-basierten IVF-Flat-Index, der eine hervorragende Rückrufrate bietet.

4. Einige Vergleiche von Vektordatenbanken

4.1 Programmiersprachenunterstützung

Chroma ist ein Python/TypeScript-Wrapper, der auf der C++-Programmiersprache OLAP-Datenbank Clickhouse und dem Open-Source-Vektorindex HNSWLib basiert. Heutzutage werden reaktionsfähige und skalierbare Datenbanken jedoch häufig in modernen Sprachen wie Golang oder Rust geschrieben. Von den Anbietern, die speziell für Vektordatenbanken entwickelt wurden, ist Vespa der einzige, der in Java erstellt wurde.

4.2 Open Source oder nicht

Pinecone ist eine vollständig geschlossene Quelle, Zilliz ist ebenfalls eine vollständig verwaltete kommerzielle Lösung mit geschlossener Quelle, basiert jedoch vollständig auf Milvus. Bei anderen Vektordatenbanken ist der Quellcode zumindest hinsichtlich der Codebasis verfügbar. Die spezifische Lizenz bestimmt die Lizenzierungsfähigkeit des Codes und die Vorgehensweise einsetzen.

a9300e5cebe0a9ec86bd78e36d97b972.jpeg

4.3 Suchalgorithmus

Die Abrufalgorithmen vieler Vektordatenbanken verwenden HNSW, wobei Milvus über die umfassendste Unterstützung für Abrufalgorithmen verfügt.

f75b5dc17329f83948ff8e0f31451b4c.jpeg

4.4 Bereitstellungsmethode

Zu den typischen Bereitstellungsmethoden für Vektordatenbanken gehören die lokale Bereitstellung und die gehostete/Cloud-native Bereitstellung, die beide der CS-Architektur folgen. Als neue Option gibt es auch den eingebetteten Modus, bei dem die Datenbank selbst eng mit dem Anwendungscode gekoppelt ist und serverlos läuft. Derzeit sind nur Chroma und LanceDB als eingebettete Datenbanken verfügbar.

82dea2da8e44549df8246396ce57807d.jpeg

Zusammenfassend lässt sich sagen, dass der Vergleich einiger Indikatoren gängiger Vektordatenbanken wie folgt aussieht:

b7e54579388ea7b77b14ca3caec523a7.jpeg

Darüber hinaus müssen Sie bei der Auswahl einer Vektordatenbank die folgenden Faktoren berücksichtigen:

  • Skalierbarkeit: Kann hochdimensionale große Datenmengen effizient verarbeiten und bei steigenden Datenanforderungen erweitern.

  • Leistung: Geschwindigkeit und Effizienz sind für Datenbanken von entscheidender Bedeutung, die hervorragende Datensuche, Suchleistung und die Durchführung verschiedener Vektoroperationen erfordern.

  • Flexibilität: Unterstützt eine Vielzahl von Datentypen und -formaten und kann problemlos an verschiedene Anwendungsszenarien angepasst werden.

  • Benutzerfreundlichkeit. Diese Datenbanken sind einfach zu verwenden und zu verwalten, einfach zu installieren und zu konfigurieren, verfügen über intuitive APIs und sind gut dokumentiert und unterstützt.

  • Zuverlässigkeit: Sie müssen einen Ruf für Zuverlässigkeit und Stabilität haben.

5. Vergleich von Vektordatenbanken und anderen Datenbanktypen

Herkömmliche Datenbanken, wie etwa relationale Datenbanken, sind für die Speicherung strukturierter Daten konzipiert. Das bedeutet, dass die Daten in vordefinierten Tabellen, Zeilen und Spalten organisiert werden, wodurch Datenintegrität und -konsistenz gewährleistet werden. Herkömmliche Datenbanken sind oft für CRUD optimiert und darauf ausgelegt, Dateneinträge effizient zu erstellen, zu lesen, zu aktualisieren und zu löschen, wodurch sie für eine Vielzahl von Anwendungen geeignet sind, von Webdiensten bis hin zu Unternehmenssoftware. Sobald die Datenbankstruktur jedoch definiert ist, können Änderungen komplex und zeitaufwändig sein. Diese Starrheit stellt die Datenkonsistenz sicher, ist jedoch möglicherweise nicht so flexibel wie die schemalose oder dynamische Schemanatur einiger moderner Datenbanken.

Merkmale  Relationale Datenbank  Vektordatenbank
Art der Daten  Traditionelle Datentypen wie numerische Werte, Zeichenfolgen und Zeit  Vektordaten speichern nicht die Originaldaten
Datengröße  Klein, 100 Millionen Datenvolumen sind sehr groß  Das Endergebnis sind große, Hunderte Milliarden Daten
Datenorganisation  Tabellenbasiert, nach Zeilen und Spalten geordnet  Basierend auf Vektoren, organisiert nach Vektordimensionen
Methode finden  Genaue Suche: Punktsuche/Bereichssuche  Näherungssuche: erfordert höhere Rechenleistung
Geringe Latenz, hohe Parallelität  NEIN  Ja
Unterstützen Sie Anwendungen der oberen Ebene  Schwächer  Bietet der Außenwelt eine einheitliche API, die sich besser für die Bereitstellung und Verwendung umfangreicher KI-Referenzprogramme eignet
Anwendungsszenarien  Geringe Fehlertoleranz, genauere Suchergebnisse müssen bereitgestellt werden  Hohe Szenenfehlertoleranzrate

Anstatt mehrere Standarddatentypen in Zeilen und Spalten zu speichern (z. B. Zeichenfolgen, Zahlen und andere skalare Datentypen), führen Vektordatenbanken einen neuen Datentyp namens „Vektor“ ein und erstellen Optimierungen rund um diesen Datentyp, speziell für die Implementierung von schneller Speicherung, schnellem Abruf und Näherung Semantik der Nachbarsuche. In einer herkömmlichen Datenbank werden Zeilen in der Datenbank mithilfe von Indizes oder Schlüssel-Wert-Paaren abgefragt, die genaue Übereinstimmungen finden und Zeilen zurückgeben, die sich auf diese Abfragen beziehen.

Insbesondere sieht der Vergleich zwischen Vektordatenbanken und Graphdatenbanken wie folgt aus:

0b83eba26ddc8d66f9d2a6ab560c9bd8.jpeg

6. Anwendung der Vektordatenbank in großen Modellen

Anwendungen, die auf großen Modellen basieren, stehen häufig vor Herausforderungen wie der Generierung ungenauer oder irrelevanter Informationen, mangelnder sachlicher Konsistenz oder gesundem Menschenverstand, Wiederholung oder Widersprüchlichkeit, Voreingenommenheit oder Anstößigkeit. Um diese Herausforderungen zu meistern, können Vektordatenbanken verwendet werden, um Informationen zu Themen, Schlüsselwörtern, Fakten, Meinungen und/oder Quellen zu speichern, die sich von der gewünschten Domäne unterscheiden. Wenn Sie dann mit einem großen Modell arbeiten, werden Informationen aus der Vektordatenbank über KI-Plug-ins weitergegeben, um informativere und ansprechendere Inhalte zu generieren, die der Zielabsicht und dem angegebenen Stil entsprechen.

Mit Vektordatenbanken sind wir in der Lage, Ereignisse schnell als Einbettungen zu laden und zu speichern und Vektordatenbanken als Gehirne zu verwenden, die KI-Modelle antreiben und kontextbezogene Informationen, den Abruf des Langzeitgedächtnisses, semantische Datenzuordnung und mehr bereitstellen. Typische Anwendungen von Vektordatenbanken sind wie folgt:
1. Erstellen Sie Vektoren mithilfe der Einbettungstechnologie
2. Speichern Sie diese Vektoren in Vektordatenbanken
3. Wenden Sie Indizierungsstrategien an, um Vektoren zu organisieren und zu verwalten
4. Verwenden Sie Abfragevektoren, um Ähnlichkeitssuchen durchzuführen
5. Erhalten Sie ähnliche Vektoren aus der Vektordatenbank

Tatsächlich gibt es für Vektordatenbanken viele Anwendungsfälle in verschiedenen Bereichen und Anwendungen, darunter die Verarbeitung natürlicher Sprache (NLP), Computer Vision (CV), Empfehlungssysteme (RS) und andere Bereiche, die semantisches Verständnis und Abgleich von Daten erfordern. Ein Anwendungsfall für die Speicherung von Informationen in Vektordatenbanken besteht darin, großen Sprachmodellen (LLMs) die Generierung relevanterer und kohärenterer Texte auf der Grundlage von KI-Plug-ins zu ermöglichen.

Da die Vektordatenbank die abzufragenden Daten als Einbettungsvektoren speichert und das Sprachmodell (LLM) sein internes Wissen auch als Einbettungsvektoren kodiert, handelt es sich um eine natürliche Übereinstimmung in Anwendungen zur generativen Fragebeantwortung. Die Vektordatenbank fungiert als Wissensdatenbank, während LLM eine Teilmenge der Daten im Einbettungsraum direkt abfragen kann. Im Allgemeinen können für den Betrieb die folgenden Methoden verwendet werden:

  1. Benutzer stellen über die Benutzeroberfläche Fragen in natürlicher Sprache.

  2. Der Text der Frage wird an das Einbettungsmodell übergeben, das dann einen Satzeinbettungsvektor zurückgibt.

  3. Der Fragevektor wird an die Vektordatenbank übergeben und die k-obersten Ergebnisse, die ihm am ähnlichsten sind, werden über die ANN-Suche zurückgegeben. Dieser Schritt ist sehr wichtig, da er den Suchraum von LLM im nächsten Schritt erheblich reduziert.

  4. Erstellen Sie eine LLM-Eingabeaufforderung (basierend auf einer vom Entwickler vordefinierten Vorlage), konvertieren Sie sie in einen Einbettungsvektor und übergeben Sie ihn an LLM. Die Verwendung eines Frameworks wie LangChain erleichtert diesen Schritt, da Eingabeaufforderungen dynamisch erstellt werden können und die nativen eingebetteten Module von LLM aufrufen, ohne dass für jeden Workflow viel benutzerdefinierter Code geschrieben werden muss.

  5. LLM durchsucht die Top-k-Ergebnisse nach Informationen und generiert eine Antwort auf die Frage, die an den Benutzer zurückgesendet wird.

6bd249f37fb9ef289eb622c6a98c8224.jpeg

Durch die Kombination von LLM- und Vektordatenbanken können viele weitere nützliche Anwendungen erstellt werden. Allerdings ist es notwendig, einige potenzielle Einschränkungen von Vektordatenbanken zu verstehen. In Suchanwendungen priorisieren sie nicht unbedingt exakte Übereinstimmungen von Schlüsselwortphrasen, um die Relevanz zu bestimmen. Die gespeicherten und abgefragten Daten müssen in die maximale Sequenzlänge des verwendeten Einbettungsmodells passen (bei Modellen wie BERT beträgt diese Länge nicht mehr als einige hundert Wörter). Derzeit besteht der beste Ansatz darin, Frameworks wie LangChain und LlamaIndex zu nutzen, um die Daten in Vektoren fester Größe aufzuteilen oder zu komprimieren, die in den Kontext des zugrunde liegenden Modells passen.

Ebenso stehen Vektordatenbanken vor vielen der gleichen Herausforderungen wie andere Datenbanktechnologien und erfordern kontinuierliche Anstrengungen zur Verbesserung der Skalierbarkeit, Näherungsgenauigkeit, Latenzleistung und Wirtschaftlichkeit. Bei vielen Vektordatenbanken müssen die Kernfunktionen der Datenbank verbessert werden, z. B. Sicherheit, Ausfallsicherheit, Betriebsunterstützung und Unterstützung verschiedener Arbeitslasten. Mit zunehmender Reife von KI-Anwendungen werden in Zukunft mehr als nur Vektorsuchfunktionen erforderlich sein.

[Referenzmaterialien und zugehörige Lektüre]

Supongo que te gusta

Origin blog.csdn.net/wireless_com/article/details/134635849
Recomendado
Clasificación