PostgreSQL FTS: 50-fache Beschleunigung durch einfache Optimierungen

2025-04-09
PostgreSQL FTS: 50-fache Beschleunigung durch einfache Optimierungen

Ein kürzlich durchgeführter Benchmark von Neon zeigte, dass die integrierte Volltextsuche (FTS) von PostgreSQL hinter pg_search zurückfällt. Dieser Artikel enthüllt jedoch, dass Neons Benchmark eine nicht optimierte Standard-FTS-Konfiguration verwendete. Durch Vorkalkulation und Speicherung der `tsvector`-Spalte und Konfiguration von GIN-Indizes mit `fastupdate=off` wird eine dramatische Leistungsverbesserung erzielt. Experimente mit einem Datensatz mit 10 Millionen Zeilen zeigten eine etwa 50-fache Geschwindigkeitsverbesserung, was beweist, dass eine richtig optimierte Standard-FTS mit dedizierten Suchmaschinen mithalten kann. Der Artikel untersucht auch VectorChord-BM25, eine auf BM25 basierende Erweiterung, die bei Ranking-Aufgaben hervorragende Leistungen erbringt.

Mehr lesen
Entwicklung

VectorChord-BM25: PostgreSQL Volltextsuche verbessert

2025-03-03
VectorChord-BM25: PostgreSQL Volltextsuche verbessert

VectorChord-BM25 ist eine neue PostgreSQL-Erweiterung, die den BM25-Algorithmus und den Block WeakAnd-Algorithmus nutzt, um die Geschwindigkeit und Genauigkeit der Volltextsuche in PostgreSQL deutlich zu verbessern. Sie vereinfacht den Suchprozess und integriert sich nahtlos in PostgreSQL. Im Vergleich zu ElasticSearch erreicht VectorChord-BM25 durchschnittlich eine 3-mal höhere Abfragegeschwindigkeit (QPS) bei Top-1000-Suchanfragen und vergleichbare oder sogar bessere NDCG@10-Werte, erfordert aber eine sorgfältige Anpassung der Tokenisierungsstrategien für einen fairen Vergleich.

Mehr lesen
Entwicklung

Verbesserte Vektorsuche mit ColBERT-Re-Ranking in PostgreSQL

2025-01-24
Verbesserte Vektorsuche mit ColBERT-Re-Ranking in PostgreSQL

Traditionelle Vektorsuchen verwenden Sentence Embeddings, wodurch möglicherweise feinkörnige Details verloren gehen. ColBERT behebt dies, indem es Text als Token-Level-Multi-Vektoren darstellt und so nuanciertere Informationen behält und die Genauigkeit verbessert. Die Token-Level-Interaktion ist jedoch rechenintensiv. Dieser Blogbeitrag zeigt, wie man die Vektorsuche auf Sentence-Ebene mit ColBERT Token-Level Re-Ranking kombiniert, indem man die PostgreSQL-Erweiterungen VectorChord und pgvector verwendet. Dieser Ansatz führt eine schnelle initiale Suche mit Sentence Embeddings durch, gefolgt von einem Re-Ranking mit ColBERT für bessere Ergebnisse. Signifikante Verbesserungen wurden in mehreren BEIR-Datensätzen beobachtet.

Mehr lesen
Entwicklung Vektorsuche