Serie · 3 Teile · pgturbohybrid

Dense, Hybrid, Late Interaction

Retrieval in PostgreSQL, Schritt für Schritt

Dense-Vektoren finden Bedeutung, BM25 findet das exakte Wort. Ein ernsthaftes Such- oder RAG-System braucht fast immer beides, am liebsten ohne einen zweiten Dienst neben der Datenbank. Diese Serie baut Retrieval Schritt für Schritt direkt in PostgreSQL: erst kompakte Dense-Suche mit pgturbohybrid, dann lexikalische Evidenz über BM25, schließlich Late Interaction mit vielen Vektoren pro Dokument.

01

ein Vektor pro Dokument

02

Vektor + exakte Begriffe

03

viele Token-Vektoren

01

TurboQuant in PostgreSQL

Efficient Dense Retrieval with 4-bit Graph Codes

Dense-Retrieval mit 4-bit-Codes statt voller Float-Vektoren im heißen Indexpfad. SIMD-freundliches Scoring hält die Latenz niedrig, exaktes Reranking kommt nur dann dazu, wenn es zählt.

  • 4-bit codes
  • SIMD
  • Reranking

Artikel lesen →

02

Hybrid Retrieval in PostgreSQL

Integrating BM25 and Dense Vectors with RRF

Semantische Kandidaten aus dem TurboQuant-Graph, exakte Treffer aus dem BM25-Zweig, zusammengeführt per Reciprocal-Rank-Fusion. Die Fusion passiert im Indexzugriff selbst, nicht in einer SQL-Konstruktion drumherum.

  • BM25
  • RRF
  • Hybrid-Index

Artikel lesen →

03

Late Interaction in PostgreSQL

Multivector Retrieval with pgturbohybrid and ColBERT Integration

Nicht ein Vektor pro Dokument, sondern viele Token-Vektoren. Jedes Query-Token sucht seinen besten Match, MaxSim summiert die Treffer. ColBERT-Stil, lokal eingebettet über pg_colbert_llama.

  • MaxSim
  • Multivector
  • ColBERT

Artikel lesen →

Worum es geht

Embeddings, Volltext & Fusion in PostgreSQL

Suche steckt heute in fast jedem Produkt: in der Doku, im Support-Tool, im RAG-System hinter einem Chatbot. Der klassische Weg dahin führt über eine eigene Vektordatenbank, die neben der eigentlichen Datenbank läuft, in der die Inhalte ohnehin schon liegen. Zwei Systeme nebeneinander, beide wollen betrieben und synchron gehalten werden.

Der Gedanke hinter pgturbohybrid ist unspektakulär, und genau deshalb interessant. Wenn die Daten sowieso in PostgreSQL liegen, kann die Suche gleich mitwohnen: Embeddings, Volltext und Fusion im selben System, abgefragt über dasselbe SQL, gesichert über dasselbe Backup.

Für viele Projekte verschwindet damit eine ganze Betriebsebene. Kein zweiter Dienst, der nachts umkippt. Und wer später wirklich an Grenzen stößt, kann immer noch auf eine dedizierte Engine wechseln, statt sie schon ab Tag eins zu brauchen.

Die drei Teile oben zeigen, wie weit das trägt, von der kompakten Dense-Suche bis zu Late Interaction mit vielen Vektoren pro Dokument.

Der Bogen

Retrieval-Stack in PostgreSQL

Die Reihenfolge ist kein Zufall, jeder Artikel reicht den nächsten an. Teil 1 hört dort auf, wo Dense-Suche an ihre Grenze stößt: bei exakten Strings, IDs und seltenen Begriffen, die ein Embedding verwischt. Teil 2 holt dafür BM25 dazu und fusioniert beide Signale per RRF. Weil ein einzelner Vektor pro Dokument aber immer eine Zusammenfassung bleibt, öffnet Teil 3 die Tür zu vielen Token-Vektoren und MaxSim.

Am Ende steht weniger „eine Vektorspalte mit Index“ als ein kompletter Retrieval-Stack in PostgreSQL: Embedding-Erzeugung, Token-Level-Suche, lexikalische Evidenz, Rank-Fusion, Diagnostik, am Schluss ganz normale SQL-Zeilen.

Das Ganze gibt’s übrigens auch als PostgreSQL-Extension:

pg Kurze Unterbrechung · Open Source Der Code zur Serie. Auf GitHub, zum Selberrechnen. Dense Hybrid Late Interaction pgturbohybrid · PostgreSQL-Extension GitHub Repo öffnen

Benchmark

Ein Referenzpunkt, kein Naturgesetz

Der DBPedia-Benchmark aus dem README unseres Plugins läuft auf einer Million Vektoren, ursprünglich aufgesetzt von den Leuten bei qdrant. Retrieval-Performance hängt von Embedding-Modell, Dimensionen, Korpus und Hardware ab, die Zahlen gelten also nur für genau diesen Aufbau. Interessant ist weniger der Sieger als die Form des Tradeoffs.

Engine / Profilrecall@10Queries/sLatenz ø
pgturbohybrid · dense0,83657391,27 ms
pgturbohybrid · high_recall0,98328002,71 ms
pgvector HNSW0,97917704, 37 ms
qdrant0,9868539,24 ms
milvus0,98875010.39 ms
weaviate0,97726332,90 ms

Quelle: DBPedia Dense Benchmark, pgturbohybrid README. Als Orientierung gedacht, nicht als universelle Aussage.

Einordnung

Lohnt sich der Weg für dich?

Der Ansatz passt nicht überall. Gut passt er, wenn:

  • dein Stack ohnehin PostgreSQL-first ist und du nicht ab Tag eins einen zweiten Vektordienst betreiben willst;
  • kompakter Index-Speicher und niedrige Latenz zählen, approximatives Retrieval für deinen Fall aber okay ist;
  • du Recall und Profile auf deinen eigenen Daten messen kannst, statt dich auf fremde Benchmarks zu verlassen.

Brauchst du dagegen verteilte, voll gemanagte Vektorsuche mit harter Betriebsisolierung, bleibt eine dedizierte Engine womöglich die bessere Wahl. Der Punkt der Serie ist ein anderer: PostgreSQL deckt mehr vom Retrieval-Stack ab, als viele Teams annehmen.

Mayflower Labs · R&D

Das hier kam aus dem Labor.

pgturbohybrid ist kein Feierabend-Hack. Es ist Teil dessen, was in den Mayflower Labs passiert: Wir nehmen echte Kundenprobleme, bauen Prototypen in der R&D-Zeit – Open Source first – und bringen sie in Wochen in Produktion. Eine PostgreSQL-native Retrieval-Engine, die sich mit dedizierten Vektordatenbanken misst, ist genau so eins davon.

Aus demselben Labor

pgturbohybrid SmolLM German Embeddings QwenVL für Docling DeepSeek OCR für Docling Mayflower Sandbox GritQL MCP VNC-Use Scry Clau-Make AI-Caramba Spring Migrator XLSLiberator Kali AI Red Team CodeAnalysis MCP German LLM Embed
  • Open Source first
  • Vom Kundenproblem zum Prototyp
  • Produktionsreif in 4–6 Wochen
Ins Labor schauen Mayflower Labs — wo Enterprise-KI entsteht.

… ODER

Direkt Kontakt aufnehmen

Für den Fall, dass du dich direkt mit uns austauschen möchtest – fülle das Formular aus; wir melden uns bei dir!