Erste Schritte mit Pgvector: Ein Leitfaden für Entwickler, die Vektordatenbanken erforschen
Mit den jüngsten Technologietrends im Bereich der generativen KI und [Large-Language-Models] (https://zilliz.com/glossary/large-language-models-(llms)) sind effizientere Möglichkeiten zur Speicherung und Abfrage von Daten entstanden. Traditionelle Datenbanken wie MySQL und PostgreSQL waren jahrelang die ideale Wahl für Entwickler. In letzter Zeit hat jedoch ein neuer Datenbanktyp namens Vektordatenbank in der Community große Popularität erlangt.
Mit der pgvector-Erweiterung können Entwickler effizient Vektordaten in PostgreSQL speichern und so erweiterte Datenverwaltungsfunktionen nutzen.
Vektordatenbanken unterscheiden sich stark von traditionellen Datenbanken, insbesondere in Bezug auf ihre Anwendungsfälle. In dieser Zusammenfassung werden wir uns mit Pgvector beschäftigen, einer Erweiterung von PostgreSQL, die es Ihnen ermöglicht, Vektorspeicher mit einer PostgreSQL-Datenbank zu verwenden. Wir werden auch die Grenzen von Pgvector erforschen und verstehen, wie es sich von spezialisierten Vektordatenbanken unterscheidet, und wie und wo Sie Vektordatenbanken für Ihre Anwendungen einsetzen können.
Wenn Sie ein Entwickler sind, der mit traditionellen Datenbanken vertraut ist und nach neuen Lösungen sucht, wird dieses Handbuch das Wissen vermitteln, das Sie für den Einstieg in Pgvector benötigen. Es wird Ihnen auch helfen, andere dedizierte Vektordatenbanken als Alternative zu Pgvector zu erkunden.
Künstliche Intelligenz und maschinelles Lernen sind heute in verschiedenen Branchen weit verbreitet, z. B. in der Technologie, der IT, der Medizin und der Automobilbranche. In diesen Bereichen werden Daten als Vektoren mit numerischen Werten dargestellt, die Eigenschaften und Merkmale von unstrukturierten Daten wie Bildern oder Texten erfassen. Algorithmen für maschinelles Lernen verwenden diese Vektoren als Eingabe, um Muster und Beziehungen innerhalb der Daten zu erkennen.
Pgvector ist eine Open-Source-Erweiterung von PostgreSQL, einer traditionellen relationalen Open-Source-Datenbank. Sie unterstützt die Speicherung und Suche von Vektoren aus der Verarbeitung natürlicher Sprache oder Deep-Learning-Modellen auf PostgreSQL. Sie können Pgvector auch einfach als eine Vektor-Datenbank-Erweiterung von PostgreSQL sehen.
Eines der besten Dinge bei der Arbeit mit Pgvector ist, dass es sich ähnlich anfühlt wie die Arbeit mit einer traditionellen SQL-Datenbank wie PostgreSQL. Die Syntax für Vektoroperationen, wie z.B. das Erstellen von Vektorspalten, das Erstellen einer neuen Tabelle mit Vektorspalten und das Abrufen der nächsten L2-Nachbarn, ist die gleiche.
Ganz gleich, ob Sie an KI-Anwendungen, Empfehlungssystemen oder einem anderen Projekt mit hochdimensionalen Daten arbeiten, die Kenntnis der Pgvector-Datenbank - und anderer Vektordatenbanken - kann Ihren Horizont im Bereich Datenbankmanagement erweitern. Sie ermöglicht auch eine effiziente Speicherung von Vektorwerten, ohne dass Sie umfangreiche Kenntnisse über Vektorspeicherung und Datenbanken benötigen.
Beginnen wir nun mit der Einrichtung von Pgvector, um es in PostgreSQL zu integrieren. Stellen Sie sicher, dass Sie PostgreSQL in Ihrem System installiert haben. Für Mac können Sie es einfach über Homebrew installieren:
brew install postgresql
Sie können schnell überprüfen, ob Sie PostgreSQL installiert haben, indem Sie den folgenden Befehl ausführen:
psql --version
Daraufhin sollten Sie die Version von PostgreSQL erhalten, die auf Ihrem System installiert ist, wie unten gezeigt:
Sie müssen auch make installieren. Sie können es einfach mit Homebrew installieren, indem Sie den folgenden Befehl ausführen:
brew install make
Dann sollte es make in Ihrem System wie unten gezeigt installieren:
Bevor Sie in die Welt der Vektordatenbanken eintauchen, müssen Sie Pgvector einrichten und mit PostgreSQL integrieren. Lassen Sie uns die notwendigen Schritte durchgehen.
- Klonen Sie das Pgvector-Repositorium.
cd /tmp && git clone --branch v0.4.4 https://github.com/pgvector/pgvector.git
- Wechseln Sie in dieses Verzeichnis und fuehren Sie die folgenden
make-Befehle aus:
cd pgvector && make && make install
Integration von Pgvector mit Postgres
Öffnen Sie das PostgreSQL-Kommandozeilen-Interface (psql) mit dem folgenden Befehl. Dieser Schritt startet Postgres auf Ihrer Kommandozeile, so dass Sie Postgres-Befehle direkt in Ihrem Terminal ausführen können:
psql
Mit dem folgenden Befehl können Sie einen Benutzer für Postgres erstellen:
CREATE USER <Benutzer> WITH PASSWORD <Passwort>
Melden Sie sich dann mit den Anmeldedaten, die Sie mit dem obigen Befehl erstellt haben, bei diesem Benutzer an. Sie können sich aber auch als Superuser bei Postgres anmelden:
psql -U postgres
Erstellen wir nun eine neue Datenbank, um mit dem folgenden Befehl zu arbeiten:
Datenbank vectordb erstellen;
Lassen Sie uns diese Datenbank auswählen:
/c vectordb;
Dann aktivieren wir die Pgvector-Erweiterung für unsere Datenbank "vectordb":
Erweiterung pgvector erstellen;
Sie müssen diesen Schritt nur einmal für jede Datenbank durchführen, die Sie mit Pgvector verwenden möchten.
Pgvector Beispiel
Lassen Sie uns zwei Vektorspalten erstellen, id und embedding, in einer Tabelle namens vectors. Die Tabelle und die Spalten speichern die Vektordaten in PostgreSQL.
CREATE TABLE vectors (
id SERIAL PRIMARY KEY,
embedding float4[] -- Die Vektorspalte
);
Jetzt können wir einige Vektordaten in unsere Tabelle "Vectors" einfügen:
INSERT INTO vectors (Einbettung) VALUES
('{1.2, 0.8, -2.1}'),
('{-0.7, 2.4, 3.6}');
Um die Tabelle anzuzeigen, können wir einfach die Abfrage SELECT * auf unsere Tabelle Vektoren ausführen.
SELECT * FROM vectors;
Verwendung von Pgvector für die Suche nach Vektorähnlichkeit
Wir haben besprochen, wie Vektordatenbanken für die Durchführung von Ähnlichkeitssuchen nützlich sein können. Hier ist, wie man eine einfache Ähnlichkeitssuche schreibt, um Vektoren zu finden, die einem gegebenen Abfragevektor ähnlich sind.
SELECT * FROM Vektoren
WHERE pgvector_cosine(einbettung, '{0.9, -0.3, 1.8}') > 0.8;
Wir verwenden die reguläre SELECT *-Abfrage mit einer WHERE-Klausel. Dann verwenden wir die Funktion pgvector_cosine, um anzugeben, dass wir Zeilen abrufen wollen, bei denen die Kosinusähnlichkeit zwischen der Spalte des Vektors Einbettung und dem gegebenen Abfragevektor {0,9, -0,3, 1,8} größer als 0,8 ist.
Einführung in Vektordatenbanken
Was ist eine Vektordatenbank?
Eine Vektordatenbank ist ein spezieller Datenbanktyp, der für die effiziente Speicherung, Verwaltung und Abfrage hochdimensionaler Vektordaten entwickelt wurde. Im Gegensatz zu herkömmlichen Datenbanken, die für strukturierte Daten wie Text und Zahlen optimiert sind, sind Vektordatenbanken auf die Verarbeitung komplexer Datentypen zugeschnitten, die beim maschinellen Lernen und der Verarbeitung natürlicher Sprache verwendet werden. Diese Datenbanken eignen sich hervorragend für die Durchführung von Ähnlichkeitssuchen, bei denen das Ziel darin besteht, Vektoren zu finden, die einem bestimmten Abfragevektor auf der Grundlage bestimmter Abstandsmetriken ähnlich sind.
Vektordatenbanken sind von entscheidender Bedeutung für Anwendungen, die die Speicherung und den Abruf von Vektordaten erfordern, wie z. B. Bilderkennung, Empfehlungssysteme und [semantische Suche] (https://zilliz.com/glossary/semantic-search). Durch den Einsatz fortschrittlicher Indizierungstechniken können Vektordatenbanken schnell und präzise relevante Vektoren abrufen, was sie für Entwickler, die mit KI- und maschinellen Lernmodellen arbeiten, unverzichtbar macht.
Vorteile von Vektordatenbanken für Entwickler
Vektordatenbanken bieten Entwicklern mehrere bedeutende Vorteile:
- Effiziente Speicherung und Abfrage: Sie sind optimiert, um hochdimensionale Vektordaten effizient zu speichern und abzurufen, so dass auch große Datensätze effektiv verwaltet werden können.
Schnelle und genaue Ähnlichkeitssuche: Vektordatenbanken unterstützen schnelle Ähnlichkeitssuchen, so dass Entwickler schnell die relevantesten Vektoren finden können. Dies ist für Anwendungen wie Empfehlungssysteme und Bilderkennung unerlässlich.
Unterstützung für verschiedene Abstandsmetriken und Algorithmen: Sie bieten Flexibilität bei der Auswahl verschiedener Abstandsmetriken (z. B. Kosinusähnlichkeit, euklidischer Abstand) und Algorithmen, um spezifischen Anwendungsanforderungen gerecht zu werden.
Skalierbarkeit und Flexibilität: Vektordatenbanken können große Datensätze verarbeiten und eignen sich daher für Anwendungen, die die Verwaltung von Millionen oder sogar Milliarden von Vektoren erfordern.
Integration mit gängigen Programmiersprachen und Frameworks: Sie bieten eine nahtlose Integration in verschiedene Programmiersprachen und Frameworks, so dass Entwickler die Funktionen von Vektordatenbanken problemlos in ihre bestehenden Arbeitsabläufe integrieren können.
Durch die Nutzung dieser Vorteile können Entwickler effizientere und skalierbare Anwendungen erstellen, die eine erweiterte Vektordatenverwaltung und Ähnlichkeitssuche erfordern.
Verstehen von Vektordaten
Was sind Vektordaten?
Vektordaten sind eine Art von Daten, die als eine Liste von Zahlen dargestellt werden, die als Vektor bezeichnet werden. Jede Zahl in einem Vektor entspricht einem bestimmten Merkmal oder Attribut der dargestellten Daten. Vektoren sind vielseitig und können zur Darstellung einer Vielzahl von Datentypen verwendet werden, z. B. Text, Bilder, Audio und mehr. Im Kontext des maschinellen Lernens und der Verarbeitung natürlicher Sprache stellen Vektoren häufig die semantische Bedeutung von Wörtern, Sätzen oder ganzen Dokumenten dar.
Eines der Hauptmerkmale von Vektordaten ist ihre hohe Dimensionalität. Vektoren können Tausende oder sogar Millionen von Dimensionen haben, die komplizierte Details und Beziehungen innerhalb der Daten erfassen. Diese hohe Dimensionalität stellt herkömmliche Datenbanken vor Herausforderungen, da sie nicht für die Speicherung und Abfrage solch komplexer Datenstrukturen optimiert sind.
Vektordatenbanken gehen diese Herausforderungen an, indem sie effiziente Speicher- und Abrufmechanismen bieten, die speziell für hochdimensionale Vektordaten entwickelt wurden. Sie ermöglichen Entwicklern die Durchführung von Vektorähnlichkeitssuchen, bei denen das Ziel darin besteht, Vektoren zu finden, die einem bestimmten Abfragevektor anhand bestimmter Kriterien ähnlich sind. Diese Fähigkeit ist für Anwendungen wie Bilderkennung, Empfehlungssysteme und die Verarbeitung natürlicher Sprache unerlässlich, bei denen das Verständnis und die Nutzung der Beziehungen zwischen Datenpunkten entscheidend sind.
Durch die Verwendung von Vektordatenbanken können Entwickler Vektordaten effizient speichern und abfragen und so neue Möglichkeiten für die Entwicklung fortschrittlicher KI- und maschineller Lernanwendungen erschließen.
Pgvector index and limitations
Obwohl Pgvector eine großartige Möglichkeit ist, Vektoren zu speichern und zu durchsuchen, hat es einige offensichtliche Nachteile.
Pgvector hat Probleme mit der Skalierbarkeit, wenn es um hochdimensionale Vektoren geht. Die Speicherung von Vektordaten kann auch zusätzliche Speicher- und Indizierungskosten verursachen. Es ist auch wichtig zu bedenken, wie viel Platz Ihre Vektordaten benötigen und wie sich dies auf die Abfrageleistung auswirken könnte.
Außerdem unterstützt Pgvector nur einen Index-Typ namens [IVFFlat] (https://zilliz.com/learn/choosing-right-vector-index-for-your-project#Inverted-file-index-IVF). Diese Einschränkung wirkt sich sowohl auf die Eigenschaften der Vektoren als auch auf die Größe der von Ihnen gespeicherten Datensätze aus. Es bedeutet auch, dass es keine Standard-Speicheroptimierung mit einem Pgvector-Index gibt.
Zusammenfassend lässt sich sagen, dass Pgvector eine PostgreSQL-Erweiterung ist, die die Speicherung und Suche von Vektoreinbettungen ermöglicht. Sie hat jedoch begrenzte Fähigkeiten und eine begrenzte Leistung. Glücklicherweise gibt es heute viele dedizierte Vektordatenbanken wie Milvus, die aufgrund verbesserter Indizes oder Algorithmen eine weitaus bessere Arbeit leisten.
Nachdem wir uns nun mit Pgvector, seinen Anwendungen und Nachteilen beschäftigt haben, wollen wir nun das Konzept der speziellen Vektordatenbanken vorstellen.
Im Gegensatz zu Pgvector, einem Vektorsuch-Plugin auf einer traditionellen Datenbank, sind [dedizierte Vektordatenbanken] (https://zilliz.com/learn/what-is-vector-database) wie [Milvus] (https://milvus.io/) und [Zilliz] (https://zilliz.com/) von Grund auf für die Speicherung und Abfrage von Millionen oder sogar Milliarden hochdimensionaler Vektordaten mit Antworten fast in Echtzeit entwickelt worden. Sie nutzen fortschrittliche Indizierungstechniken, um Ähnlichkeitssuchen effizient zu handhaben, bieten eine hervorragende Leistung für ähnlichkeitsbasierte Operationen, verarbeiten große Vektordaten und bieten leistungsstarke APIs für KI- und maschinelle Lernanwendungen.
Eine dedizierte Vektordatenbank wie Milvus eignet sich für eine breite Palette von [Anwendungsfällen] (https://zilliz.com/vector-database-use-cases), darunter die Ähnlichkeitssuche in Bildern und Videos, die Verarbeitung natürlicher Sprache, Empfehlungssysteme und vieles mehr. Dank ihrer Vielseitigkeit eignet sie sich für verschiedene KI-bezogene Projekte. Lassen Sie uns Milvus verstehen und wie man es in der Cloud mit .
Milvus ist eine Open-Source-Vektordatenbank, die eine robuste Lösung für die Verwaltung und Abfrage von Milliarden von hochdimensionalen Vektoren bietet. Sie bietet zahlreiche interessante Funktionen wie GPU-Index, Arm64, Bereichssuche, Upsert und CDC, die eine optimale Leistung und Benutzerfreundlichkeit für die Entwicklung von KI- und Machine-Learning-Anwendungen gewährleisten. Weitere Informationen zu diesen Funktionen finden Sie im [neuesten Milvus 2.3 Release Blog] (https://milvus.io/blog/unveiling-milvus-2-3-milestone-release-offering-support-for-gpu-arm64-cdc-and-other-features.md).
Die Zilliz Cloud ist ein Cloud-basierter Dienst, der Milvus-Instanzen in den Bereich der Software as a Service (SaaS) bringt. Er vereinfacht die Bereitstellung und Verwaltung von Milvus-Datenbanken, indem er eine Cloud-Infrastruktur, Skalierbarkeit und operativen Support bietet. Zilliz stellt sicher, dass Entwickler die Fähigkeiten von Milvus nutzen können, ohne die Komplexität der Einrichtung und Wartung ihrer Infrastruktur. Es ist so, als würde man Amazon RDS für PostgreSQL in der Cloud verwenden.
Die Zilliz Cloud bietet eine kostenlose Stufe, die jedem Entwickler den gleichen Zugang zu diesem Vektordatenbankdienst ermöglicht. Die kostenlose Ebene bietet bis zu zwei Sammlungen, die jeweils bis zu 500.000 Vektoren mit 768 Dimensionen und noch mehr in kleinerem Maßstab aufnehmen können. Diese großzügige Kapazität ermöglicht eine umfangreiche Datenverarbeitung, ohne dass Investitionen in die Infrastruktur erforderlich sind.
Stellen Sie bei einem Upgrade auf Postgres 12 sicher, dass die Vektorerweiterung ordnungsgemäß verwaltet wird, um Kompatibilität und Funktionalität zu gewährleisten.
Wie wähle ich zwischen Milvus und Zilliz?
Wenn Sie die vollständige Kontrolle über Ihre Datenbank haben möchten, können Sie sich für selbst gehostete Milvus-Instanzen entscheiden. Allerdings müssen Sie Ihre Infrastruktur entsprechend Ihren Bedürfnissen und Anwendungsfällen einrichten und verwalten.
Wenn Sie hingegen eine Cloud-basierte Vektordatenbank bevorzugen, können Sie [Zilliz Cloud] (https://zilliz.com/blog/zilliz-cloud-vector-db-for-all) verwenden. Mit Zilliz können Sie sich auf die Entwicklung Ihrer Anwendung konzentrieren, indem Sie Milvus in der Cloud nutzen, ohne sich um die Wartung der Infrastruktur kümmern zu müssen.
Milvus und Zilliz ermöglichen Entwicklern eine effiziente Verwaltung von Vektordaten, sind jedoch auf unterschiedliche Einsatzpräferenzen ausgerichtet. Ganz gleich, ob Sie sich für die Flexibilität eines selbst gehosteten Systems oder die Einfachheit einer Cloud-Lösung entscheiden, die Zusammenarbeit zwischen Milvus und Zilliz bietet Ihnen Optionen, die auf die Anforderungen Ihres Projekts abgestimmt sind.
Pgvector vs. Milvus und Zilliz: Ein Vergleich von Vektordatenbanken
Vergleichen wir nun [https://zilliz.com/comparison] Pgvector mit Milvus/Zilliz hinsichtlich Benutzerfreundlichkeit, Leistung und Flexibilität.
Pgvector lässt sich nahtlos in PostgreSQL integrieren, was Entwicklern, die diese relationale Datenbank bereits verwenden, vertraut ist. Milvus und Zilliz erfordern jedoch zusätzliche Konfigurationen, um ihre SDKs und APIs zu installieren. Die gute Nachricht ist, dass nach der Einrichtung von Milvus/Zilliz die Erstellung eines groß angelegten Ähnlichkeitssuchdienstes weniger als eine Minute dauert. Darüber hinaus sind einfache und intuitive SDKs für verschiedene Programmiersprachen verfügbar.
Abgesehen von der Installation ist die Verwendung der SDKs jedoch mit einer gewissen Lernkurve verbunden. Pgvector scheint aufgrund seiner Vertrautheit mit PostgreSQL einfacher zu benutzen zu sein.
Leistungs- und Skalierbarkeitsanalyse für die Vektorähnlichkeitssuche
Eine wesentliche Einschränkung von Pgvector ist die begrenzte Indizierungsfähigkeit. Bei komplexen Ähnlichkeitssuchen übertrifft Milvus Pgvector aufgrund seiner optimierten Indizierungsmechanismen, wie in [diesem Benchmark] (https://zilliz.com/blog/milvus-2.x-performance-benchmark-update) gezeigt wird.
Milvus nutzt die approximate nearest neighbor-Suche, um die Abfrageleistung zu verbessern und bietet schnellere Antwortzeiten, wobei im Vergleich zur exakten Nearest-Neighbor-Suche eine gewisse Genauigkeit geopfert wird.
Pgvector und Milvus sind leistungsstarke Vektorsuche Stacks, die entwickelt wurden, um große Vektordaten effizient zu verarbeiten. Milvus/Zilliz ist jedoch besser skalierbar und kann Datensätze mit Milliarden von Vektoreinbettungen verarbeiten.
Feature Sets und Flexibilität bei Vektoreinbettungen
Während Pgvector die Vektorfähigkeiten in PostgreSQL einbringt, ist Milvus/Zilliz eine zweckbestimmte Vektordatenbank mit speziellen Funktionen, die auf KI-Anwendungen zugeschnitten sind. Sie haben einen größeren Funktionsumfang und können für benutzerdefinierte [Vektordatenbank-Anwendungsfälle] hilfreicher sein (https://zilliz.com/vector-database-use-cases).
VectorDBBench ist ein Open-Source-Benchmarking-Tool für Vektordatenbanken. Es vergleicht gängige Vektordatenbanken und auf dem Markt verfügbare Cloud-Dienste und liefert unvoreingenommene Benchmark-Ergebnisse hinsichtlich Abfragen pro Sekunde (QPS), Abfragen pro Dollar (QP$) und P99-Latenz.
Sie können beispielsweise VectorDBBench nutzen, um Pgvector mit Milvus oder Zilliz zu vergleichen. Den Benchmarking-Ergebnissen zufolge übertreffen Milvus und Zilliz Pgvector hinsichtlich QPS und Latenz.
Hinweis: Es handelt sich um eine Punktzahl von 1-100, die auf der Leistung der einzelnen Systeme in verschiedenen Fällen nach einer spezifischen Regel basiert. Eine höhere Punktzahl bedeutet eine bessere Leistung.
Anmerkung: Dies ist eine Punktzahl von >1, basierend auf der Leistung jedes Systems in verschiedenen Fällen gemäß einer spezifischen Regel. Eine niedrigere Punktzahl bedeutet eine bessere Leistung.
Mit VectorDBBench können Sie schnell erkennen, welche Datenbank in Bezug auf verschiedene Metriken besser abschneidet. Sie können auch feststellen, welche Datenbank am besten für Ihre spezifischen Anforderungen geeignet ist.
Pgvector eröffnet neue Möglichkeiten für die Speicherung und Abfrage von Vektordaten in PostgreSQL. Wenn Sie bereits mit PostgreSQL vertraut sind und sich mit Vektordatenbanken beschäftigen möchten, ist Pgvector ein hervorragender Ausgangspunkt. Für KI-Anwendungen mit Millionen oder gar Milliarden von Vektorähnlichkeitssuchen ist die Leistung von Pgvector jedoch möglicherweise nicht ausreichend. Milvus und Zilliz bieten spezielle Funktionen, die die Leistung optimieren. Berücksichtigen Sie die Anforderungen Ihres Projekts und erkunden Sie diese Vektordatenbanken, um das volle Potenzial der Vektorspeicherung in Ihren Anwendungen zu erschließen.
Dieser Beitrag wurde von Siddhant Varma geschrieben. Siddhant ist ein Full-Stack-JavaScript-Entwickler mit Erfahrung im Front-End-Engineering. Er hat an der Skalierung mehrerer Startups in Indien mitgewirkt und hat Erfahrung in der Entwicklung von Produkten in den Branchen Ed-Tech und Gesundheitswesen. Siddhant hat eine Leidenschaft für das Unterrichten und ein Händchen für das Schreiben. Er hat auch vielen Hochschulabsolventen das Programmieren beigebracht und ihnen dabei geholfen, bessere zukünftige Entwickler zu werden.
Zuletzt aktualisiert: Januar 23, 2024
Weiterlesen

Zilliz Cloud Just Landed in Claude Code
Zilliz Cloud Just Landed in Claude Code - Build AI Apps without Leaving Your Terminal

Smarter Autoscaling in Zilliz Cloud: Always Optimized for Every Workload
With the latest upgrade, Zilliz Cloud introduces smarter autoscaling—a fully automated, more streamlined, elastic resource management system.

ColPali + Milvus: Redefining Document Retrieval with Vision-Language Models
When combined with Milvus's powerful vector search capabilities, ColPali becomes a practical solution for real-world document retrieval challenges.
