Skip to content

pgvector

Postgres-Erweiterung, die Vektorspalten und HNSW- oder IVFFlat-Indizes ergänzt, sodass Embeddings neben den Zeilen liegen, die sie beschreiben.

Getestet von Sheela · Aktualisiert

Auf GitHub ansehen Open Source

Unsere Bewertung

4.6/5

Für die meisten Teams, die schon auf Postgres sind, ist eine eigene Vektordatenbank zusätzliche Infrastruktur, die pgvector überflüssig macht.

Was ist pgvector?

pgvector ergänzt PostgreSQL um einen Vektor-Datentyp und Ähnlichkeitssuche. Du speicherst Embeddings in einer gewöhnlichen Tabellenspalte und fragst sie mit SQL ab, mit Joins gegen deine übrigen Daten und Filtern über normale WHERE-Klauseln, innerhalb derselben Transaktionen.

Ohne Index sucht es exakt. Für Geschwindigkeit bietet es zwei approximative Indizes: HNSW (ein geschichteter Graph, bessere Trefferquote, mehr Speicher) und IVFFlat (Cluster, schneller aufgebaut, schwächere Trefferquote). Unterstützt werden Vektoren mit voller und halber Genauigkeit, binäre und dünnbesetzte Vektoren. Der Standardtyp vector speichert bis zu 16.000 Dimensionen, indiziert aber nur 2.000; halbe Genauigkeit indiziert bis zu 4.000, binär bis zu 64.000. Version 0.8.0 brachte iterative Index-Scans, die so lange weitersuchen, bis genug Zeilen deinen Filter passieren.

Es unterstützt Postgres 13 und neuer, wobei das noch unveröffentlichte 0.9.0 die Versionen 13 und 14 streicht, und ist auf fast jedem verwalteten Postgres-Dienst verfügbar. Das neueste Release, 0.8.7 vom 1. Oktober 2026, behebt eine Sicherheitslücke, die zur Ausführung von Code führen kann.

Lohnt sich pgvector?

pgvector streicht einen ganzen Dienst aus deinem Stack. Embeddings liegen in derselben Datenbank, denselben Backups und denselben Transaktionen wie die Dokumente, die sie beschreiben. Es gibt keinen zweiten Speicher, der synchron gehalten werden muss, und Filter sind einfaches SQL. Es hat rund 23.450 GitHub-Sterne und nur 17 offene Issues, und das unveröffentlichte 0.9.0 steht schon im Changelog.

Der komfortable Bereich ist schmaler, als das Marketing nahelegt. Encore, das Postgres-Hosting verkauft, sieht es unterhalb von etwa fünf Millionen Vektoren bei moderater Last (Hunderte Abfragen pro Sekunde) gleichauf mit Pinecone; zwischen fünf und zehn Millionen braucht es eine sorgfältige Abstimmung von shared_buffers, work_mem und den HNSW-Einstellungen. Der Speicher erklärt, warum. Laut README belegt jeder Vektor 4 Byte pro Dimension plus 8, zehn Millionen Embeddings mit 1.536 Dimensionen brauchen also vor jedem Index rund 61,5 GB, und der Aufbau von HNSW wird drastisch langsamer, sobald der Graph über maintenance_work_mem hinauswächst. Halbe Genauigkeit halbiert das. Jenseits dieser Grenze halten pgvectorscale oder VectorChord die Daten noch eine Weile in Postgres.

Filtern verlangt Aufmerksamkeit. Approximative Indizes filtern nach dem Scan, und das Beispiel im README selbst ist deutlich: Mit dem Standardwert 40 für hnsw.ef_search und einem Filter, der auf 10% der Zeilen passt, liefert eine Abfrage im Schnitt etwa 4 Ergebnisse. Iterative Scans, partielle Indizes oder eine Partitionierung nach Mandant beheben das, aber nichts davon ist standardmäßig aktiv.

2026 kamen Sicherheitskorrekturen, auf die du reagieren solltest. CVE-2026-3172, ein Pufferüberlauf beim parallelen Aufbau von HNSW, ließ einen Nutzer, der Indizes anlegen darf, Daten aus anderen Tabellen auslesen (0.6.0 bis 0.8.1, behoben in 0.8.2). CVE-2026-18022, ein Überlauf beim Aufbau von IVFFlat nur auf 32-Bit-Systemen, wurde in 0.8.6 behoben, und CVE-2026-103484, ebenfalls beim Aufbau von IVFFlat, kann in jeder Version bis 0.8.6 zur Ausführung beliebigen Codes führen und ist in 0.8.7 behoben. Auf einem verwalteten Dienst folgt die Version der Erweiterung dem Zeitplan des Anbieters und nicht deinem, und das ist das eigentliche Argument, sie zu prüfen, bevor du dir Benchmark-Diagramme ansiehst.

Wo es sich lohnt

  • Ein Backend-Engineer bei einem SaaS-Unternehmen auf Amazon RDS

    Semantische Suche über zwei Millionen Support-Tickets ergänzen

    Füge eine halfvec-Spalte hinzu, befülle die Embeddings nach, baue einen HNSW-Index und verknüpfe die Ergebnisse mit gewöhnlichen WHERE-Klauseln mit der Ticket-Tabelle. Bei 1.536 Dimensionen sind das rund 6 GB Vektordaten, die eine etwas größere Instanz bewältigt, ohne dass ein neuer Dienst betrieben werden muss.

  • Ein Engineering Lead bei einem B2B-Start-up mit 400 Kundenmandanten

    Die Dokumente jedes Kunden beim RAG-Retrieval getrennt halten

    Partitioniere die Embedding-Tabelle nach Mandant oder lege partielle Indizes an und schalte iterative Scans ein, damit gefilterte Abfragen vollständige Ergebnismengen liefern. Row-Level Security gilt wie für jede Tabelle, die Isolation nutzt also Kontrollen, die das Team ohnehin prüft.

  • Ein CTO, der die Rechnung einer verwalteten Vektordatenbank abwägt

    Entscheiden, ob die Vektorsuche einen eigenen Anbieter braucht

    Unterhalb von etwa fünf Millionen Vektoren bei Hunderten Abfragen pro Sekunde rät Encore dazu, in Postgres zu bleiben: ein Backup, ein Zugriffsmodell, keine Sync-Jobs. Der Preis ist Zeit für das Tuning, wenn der Index über den Arbeitsspeicher hinauswächst.

Bevor du dich festlegst

Einrichtung
Auf verwaltetem Postgres CREATE EXTENSION vector ausführen; selbst gehostet aus dem Quellcode installieren (make, make install) oder über den Paketmanager für Postgres 13 und neuer. Aktualisiert wird mit ALTER EXTENSION vector UPDATE in jeder Datenbank.
Integrationen
Jeder Postgres-Client und jedes ORM; Bibliotheken in den meisten Sprachen kapseln den Vektortyp. Unterstützt auf den großen verwalteten Diensten, die das Projekt in seinem Issue zu Hosting-Anbietern auflistet, und von RAG-Werkzeugen wie Open WebUI als Backend genutzt.
Daten und Datenschutz
Alles bleibt in deiner Postgres-Instanz unter den bestehenden Backups, Rollen und Row-Level Security; die Erweiterung sendet nirgendwohin etwas. Die PostgreSQL License beschränkt die kommerzielle Nutzung nicht.
Kosten im großen Maßstab
Keine Lizenzkosten; du zahlst für eine größere Datenbank. Jeder Vektor belegt 4 Byte pro Dimension plus 8, zehn Millionen Vektoren mit 1.536 Dimensionen brauchen also rund 61,5 GB (als halfvec die Hälfte) plus Index, und der Aufbau verlangt ein maintenance_work_mem, das groß genug für den Graphen ist.
Grenzen
Indexgrenzen von 2.000 Dimensionen (4.000 bei halber Genauigkeit), Filterung nach dem Scan, die iterative Scans braucht, langsamer Aufbau von HNSW, sobald der Speicher ausgeht, kein horizontales Sharding, und 0.9.0 wird Postgres 13 und 14 streichen.

Was gut ist

  • Kein zusätzlicher Dienst: Vektoren, Zeilen und Transaktionen an einem Ort
  • Filter und Joins in einfachem SQL
  • Auf fast jedem verwalteten Postgres verfügbar
  • Permissive PostgreSQL License

Was nicht

  • Gefilterte Abfragen können mit den Standardwerten weit weniger Zeilen liefern als angefordert
  • Indiziert beim Standardtyp nur 2.000 Dimensionen
  • Drei CVEs im Jahr 2026, eine davon erlaubt vor 0.8.7 die Ausführung von Code
  • Nicht für Milliarden von Vektoren oder sehr hohe Abfrageraten gebaut

Am besten für

Teams, die schon auf Postgres sind und RAG oder semantische Suche über einige Millionen Vektoren bauen.

Alternativen zu pgvector

pgvector: häufige Fragen

Lohnt sich pgvector?
Für die meisten Teams, die schon auf Postgres sind, ist eine eigene Vektordatenbank zusätzliche Infrastruktur, die pgvector überflüssig macht. Wir bewerten es mit 4.6 von 5.
Was kostet pgvector?
Kostenlos und Open Source unter der PostgreSQL License. Die einzigen Kosten sind die Postgres-Instanz, die du schon betreibst, oder eine größere.
Welche Nachteile hat pgvector?
Gefilterte Abfragen können mit den Standardwerten weit weniger Zeilen liefern als angefordert; Indiziert beim Standardtyp nur 2.000 Dimensionen; Drei CVEs im Jahr 2026, eine davon erlaubt vor 0.8.7 die Ausführung von Code; Nicht für Milliarden von Vektoren oder sehr hohe Abfrageraten gebaut.
Für wen eignet sich pgvector?
Teams, die schon auf Postgres sind und RAG oder semantische Suche über einige Millionen Vektoren bauen.
Was kostet pgvector für ein Team oder im Produktivbetrieb?
Keine Lizenzkosten; du zahlst für eine größere Datenbank. Jeder Vektor belegt 4 Byte pro Dimension plus 8, zehn Millionen Vektoren mit 1.536 Dimensionen brauchen also rund 61,5 GB (als halfvec die Hälfte) plus Index, und der Aufbau verlangt ein maintenance_work_mem, das groß genug für den Graphen ist.
Ist pgvector sicher für Firmendaten?
Alles bleibt in deiner Postgres-Instanz unter den bestehenden Backups, Rollen und Row-Level Security; die Erweiterung sendet nirgendwohin etwas. Die PostgreSQL License beschränkt die kommerzielle Nutzung nicht.
Was sind die besten Alternativen zu pgvector?
Die nächsten Alternativen, die wir getestet haben, sind Qdrant, Milvus, Weaviate, LanceDB und Chroma.

Antworten geprüft am 23. Okt. 2026.