pg_vectorsearch ist eine PostgreSQL-Erweiterung für leistungsstarke approximative Nächste-Nachbarn-Suche (ANN), die auf GitHub veröffentlicht und auf Hacker News diskutiert wurde. Sie befindet sich derzeit in der Alpha-Phase und ist für Tests, nicht für den Produktivbetrieb gedacht. Ein Upgrade zwischen Vorabversionen ist möglicherweise nicht möglich, daher sollten Nutzer einplanen, die Erweiterung und ihre Indizes zu entfernen und neu zu erstellen. Das Changelog listet bekannte Probleme auf.
Der PRISM-Index der Erweiterung (Partitioned Routing Index for Similarity Matching) ist eine Indexzugriffsmethode, die konzeptionell dem IVFFlat von pgvector ähnelt, aber auf RaBitQ-Quantisierung, hierarchischem Routing und Partitionierung basiert. Er ist in C implementiert und unterstützt SIMD-Distanzberechnungen (AVX2, AVX512, NEON), dynamisches Einfügen, Aktualisieren und Löschen sowie das Rebalancing von Posting-Listen über prism_rebalance. Das Projekt gibt an, dass PRISM sowohl bei Abfragen als auch beim Erstellen von Indizes deutlich schneller ist als IVFFlat und HNSW von pgvector und dass es bei einem Datensatz mit 100 Millionen Vektoren auf einer Instanz mit einem Viertel des Arbeitsspeichers bei gleicher Trefferquote (Recall) HNSW übertrifft.
PRISM nutzt einen hierarchischen Zentroid-Baum, um Vektoren in Cluster zu unterteilen, und setzt auf den Puffer-Cache von PostgreSQL, um diesen Baum im Speicher warm zu halten. Vektoren werden mit RaBitQ quantisiert und in Posting-Listen gespeichert. Seine Fehlergrenzen erlauben es Suchen, Vektoren auszuschließen, die keine nächsten Nachbarn sein können, wodurch die Anzahl der nötigen Neuberechnungen mit voller Genauigkeit sinkt.
Nutzer können Vektoren in nativen vec32- oder vec16-Spalten speichern oder einen PRISM-Index direkt auf bestehenden vector- oder halfvec-Spalten von pgvector erstellen, ohne ihre Tabellen oder Abfragen zu ändern. Beide Wege verwenden dieselben Operatoren und Tuning-Einstellungen, etwa prism.nprobe, um Trefferquote und Geschwindigkeit gegeneinander abzuwägen.
Quelle: Hacker News · Zusammengefasst von HeadlinesBriefing