Welche Abfragen brauchst du?
Eine relationale Datenbank hält beispielsweise Bestellungen, Konten und Berechtigungen konsistent und verbindet Tabellen über Joins. Eine Vektorsuche ordnet Inhalte nach der Distanz zwischen Embeddings. Damit kann sie auch Vertragsabschnitte finden, die eine Kündigungsfrist anders formulieren als die Suchanfrage. Wie gut das gelingt, hängt vom Embedding-Modell und den Dokumenten ab.
PostgreSQL kann beide Aufgaben in einer Datenbank bündeln. Mit pgvector speicherst du Embeddings in einer Spalte und kombinierst Distanzsortierung mit SQL-Filtern. Eine spezialisierte Vektordatenbank kann sinnvoll sein, wenn der Suchdienst unabhängig von der operativen Datenbank betrieben und skaliert werden soll.
Exakte Vektorsuche als Referenz
pgvector sucht standardmäßig exakt nach den nächsten Nachbarn gemäß der gewählten Distanz. ANN-Indizes wie HNSW und IVFFlat beschränken die Suche auf Kandidaten und können passende Nachbarn auslassen. Vergleiche ANN mit der exakten Suche auf denselben Daten, demselben Distanzmaß und denselben Filtern. Recall@k misst hier, wie viele der exakten Top-k-Treffer auch im ANN-Ergebnis vorkommen. Ob die Treffer die Nutzerfrage beantworten, prüfst du zusätzlich mit fachlich bewerteten Beispielen.
Bei pgvector kann ein ANN-Scan unter selektiven Filtern weniger Treffer liefern als angefordert. Ein iterativer Scan kann mehr Kandidaten durchsuchen, bis genug Treffer vorliegen oder eine konfigurierte Grenze erreicht ist. Bei stark selektiven Filtern kann auch eine exakte Suche über die kleine gefilterte Teilmenge passen. Miss die Antwortzeit unter realistischer Last und beobachte auch seltene, stark gefilterte Anfragen.
Hybrid Search und Zugriffsfilter
Bei hybrider Suche kombinierst du zwei Rankings, etwa Volltext- und Vektorsuche. Eine Artikelnummer kann über Volltext oder einen exakten Filter gefunden werden, während die Vektorsuche ähnliche Formulierungen erfasst. Ein Filter nach Mandant, Dokumentstatus oder Berechtigung begrenzt dagegen, welche Treffer überhaupt zulässig sind. In einer RAG-Anwendung gelangen nur autorisierte Passagen in den Modellkontext.
Ein gemeinsames System oder ein separater Index?
- PostgreSQL mit pgvector passt, wenn du relationale Daten und Vektoren gemeinsam abfragen willst. Metadaten und fertig berechnete Embeddings lassen sich gemeinsam schreiben. Wenn Embeddings asynchron entstehen, plane einen Umgang mit veralteten oder noch fehlenden Vektoren ein.
- Ein separater Suchdienst passt, wenn du Suchlast isolieren oder dessen Index- und Verteilungsfunktionen gezielt nutzen willst. Lege fest, wie Aktualisierungen, Löschungen und Berechtigungsänderungen im Index ankommen. Die Garantien verteilter Systeme hängen von Produkt und Konfiguration ab. Qdrant bietet beispielsweise getrennte Einstellungen für Lese- und Schreibkonsistenz.
Für die Entscheidung vergleiche bei realistischen Daten und Filtern Trefferqualität, p95-Latenz, Schreibrate, Indexaufbau, Speicherbedarf und Betriebsaufwand. Eine feste Vektoranzahl gibt dafür keine belastbare Grenze vor.