Daten & Dokumente

Timescale veröffentlicht pg_vectorsearch für hochperformante Vektor-Indizierung in PostgreSQL

Timescale hat die Alpha-Erweiterung pg_vectorsearch veröffentlicht, die den PRISM-Index für eine schnellere Approximate Nearest Neighbor-Suche in PostgreSQL einführt.

Illustration of vector data structures inside a glass cube on a desk
Für diesen Artikel generierte Illustration

Automatisch aus dem englischen Original übersetzt.

Timescale hat pg_vectorsearch veröffentlicht, eine neue PostgreSQL-Erweiterung, die darauf ausgelegt ist, die Approximate Nearest Neighbor-Suche (ANN) für Vektordaten zu beschleunigen. Das am 14. Oktober 2026 veröffentlichte Tool im Alpha-Stadium führt den PRISM-Index ein, der bestehende Lösungen wie HNSW und IVFFlat sowohl in puncto Geschwindigkeit als auch Speichereffizienz übertreffen soll. Die Veröffentlichung richtet sich an Entwickler, die Retrieval-Augmented Generation (RAG)-Systeme erstellen und skalierbare Vektor-Infrastrukturen innerhalb ihrer bestehenden relationalen Datenbanken benötigen.

Was passiert ist

Der Kern dieser Veröffentlichung ist der PRISM-Index, was für „Partitioned Routing Index for Similarity Matching“ steht. Er ist in C implementiert, um eine enge Integration mit den internen Mechanismen von PostgreSQL zu gewährleisten. Laut Ankündigung ist PRISM bei Abfragen und beim Indexaufbau deutlich schneller als die IVFFlat- und HNSW-Indizes von pgvector. In Benchmarks mit einem Datensatz aus 100 Millionen Vektoren erreichte PRISM eine vergleichbare Recall-Rate wie der graphenbasierte HNSW-Index, benötigte jedoch nur ein Viertel des Speichers und lieferte schnellere Abfragezeiten.

Diese Erweiterung unterstützt dynamische Updates, sodass Einfüge-, Aktualisierungs- und Löschvorgänge ohne einen vollständigen Neuaufbau des Index möglich sind. Die Maintainer weisen jedoch ausdrücklich darauf hin, dass sich die Software derzeit im Alpha-Status befindet und für Tests statt für den Produktiveinsatz gedacht ist. Upgrades zwischen Vorabversionen sind möglicherweise nicht möglich, daher wird Nutzern empfohlen, das Entfernen und erneute Erstellen der Erweiterung sowie ihrer Indizes einzuplanen, während das Projekt weiterentwickelt wird. Bekannte Probleme werden im Changelog dokumentiert.

Wie es funktioniert

PRISM verwendet einen hierarchischen Zentroid-Baum, um Vektoren in Cluster zu partitionieren, und stützt sich auf den PostgreSQL-Puffer-Cache, um diese Routing-Struktur im Speicher zu halten. Dieser Ansatz ermöglicht es dem System, relevante Cluster schnell zu identifizieren, ohne den gesamten Datensatz zu durchsuchen. Sobald die nächsten Cluster identifiziert sind, scannt das System Posting-Listen, um Kandidatenvektoren zu generieren. Diese Listen sind für SIMD-Distanzberechnungen optimiert und nutzen AVX2-, AVX512- und NEON-Befehle, um Berechnungen auf kompatibler Hardware zu beschleunigen.

Ein wichtiges technisches Merkmal ist die Verwendung der RaBitQ-Quantisierung. Diese Methode kodiert Vektoren mit theoretischen Fehlergrenzen und ermöglicht einen zweistufigen Suchprozess. Die erste Stufe schätzt Distanzen ab und nutzt die Fehlergrenzen, um Vektoren auszuschließen, die unmöglich nächste Nachbarn sein können. Dieser Filterungsschritt reduziert die Anzahl der Kandidaten erheblich, die gegen Vollpräzisionsvektoren neu bewertet werden müssen, die im Tabellen-Heap gespeichert sind. Der letzte Schritt gibt die k nächsten Nachbarn nach diesem effizienten Filterungs- und Neuordnungsvorgang zurück.

Wichtige Details

  • Indextyp: PRISM (Partitioned Routing Index for Similarity Matching), ein IVF-artiger Index mit hierarchischem Routing.
  • Quantisierung: Nutzt RaBitQ-Quantisierung mit theoretischen Fehlergrenzen für eine effiziente zweistufige Suchfilterung.
  • Hardwarebeschleunigung: Distanzberechnungen sind für SIMD-Befehle einschließlich AVX2, AVX512 und NEON optimiert.
  • Kompatibilität: Kann bestehende vector- und halfvec-Spalten von pgvector direkt indizieren oder native vec32- und vec16-Typen verwenden.
  • Wartung: Unterstützt dynamische Einfüge-, Aktualisierungs- und Löschvorgänge; das Aufteilen von Posting-Listen wird über die Prozedur prism_rebalance verwaltet.
  • Status: Alpha-Veröffentlichung für Testzwecke; Upgrades zwischen Vorabversionen erfordern möglicherweise das Löschen und erneute Erstellen der Indizes.

Warum das wichtig ist

Für Ingenieure, die KI-Anwendungen entwickeln, wird die Leistungsfähigkeit der Vektorsuche oft zum Engpass, wenn Datensätze wachsen. Traditionelle graphenbasierte Indizes wie HNSW können erhebliche Mengen an Speicher verbrauchen, was die Infrastrukturkosten erhöht. Indem PRISM demonstriert, dass es 100 Millionen Vektoren mit einem Bruchteil des von HNSW benötigten Speichers verarbeiten kann, bietet diese Erweiterung einen Weg zu kosteneffizienter Skalierung. Sie ermöglicht es Teams, ihre Vektordaten neben ihren transaktionalen Daten in PostgreSQL zu halten, was die Architektur vereinfacht und den Bedarf an separaten Vektor-Datenbankdiensten reduziert.

Die Kompatibilität mit bestehenden pgvector-Tabellen ist besonders wichtig für Migrationen. Entwickler müssen ihre Schemas oder Anwendungslogik nicht neu schreiben, um den neuen Index zu testen. Sie können pg_vectorsearch neben pgvector installieren und einen PRISM-Index auf bestehenden Spalten erstellen. Dies senkt die Einstiegshürde für die Bewertung, ob die Leistungssteigerungen die operative Komplexität der Einführung einer neuen Indexierungsmethode rechtfertigen, selbst in der frühen Alpha-Phase.

Was Sie tun können

  • Installieren Sie PostgreSQL 18 oder neuer zusammen mit einem GNU-C11-Compiler wie GCC 11+ oder Clang 14+, um Ihre Umgebung vorzubereiten.
  • Bauen Sie die Erweiterung aus dem Quellcode mit dem Meson-Build-System und stellen Sie sicher, dass Sie die erforderlichen PostgreSQL-Entwicklungs-Header haben.
  • Testen Sie die Erweiterung auf Nicht-Produktionsdatensätzen, indem Sie einen PRISM-Index auf bestehenden vector- oder halfvec-Spalten erstellen.
  • Experimentieren Sie mit dem Parameter prism.nprobe, um den Kompromiss zwischen Abfragegeschwindigkeit und Recall-Genauigkeit für Ihren spezifischen Workload anzupassen.
  • Überwachen Sie das Changelog auf bekannte Probleme und seien Sie darauf vorbereitet, Indizes zu löschen und neu zu erstellen, wenn Sie neue Vorabversionen testen.
  • Evaluieren Sie die Prozedur prism_rebalance, um die Indexleistung während dynamischer Einfüge- und Aktualisierungsvorgänge aufrechtzuerhalten.

Tools aus dem Bytechap-Shop

Weiterlesen

Alle Artikel