PostgreSQLのFTS:簡単な最適化で50倍高速化

2025-04-09
PostgreSQLのFTS:簡単な最適化で50倍高速化

Neonによる最近のベンチマークで、PostgreSQLの組み込み全文検索(FTS)がpg_searchに遅れをとることが示されました。しかし、この記事では、Neonのベンチマークが最適化されていない標準的なFTS設定を使用していたことを明らかにしています。`tsvector`カラムを事前に計算して保存し、`fastupdate=off`でGINインデックスを設定することで、劇的なパフォーマンス向上を実現できます。1000万行のデータセットでの実験では、約50倍の速度向上を示し、適切に最適化された標準FTSが専用の検索エンジンに匹敵することを証明しています。この記事では、ランキングタスクに優れた性能を発揮するBM25ベースの拡張機能であるVectorChord-BM25についても考察しています。

続きを読む
開発

VectorChord-BM25:PostgreSQL全文検索の強化

2025-03-03
VectorChord-BM25:PostgreSQL全文検索の強化

VectorChord-BM25は、BM25アルゴリズムとBlock WeakAndアルゴリズムを利用して、PostgreSQLの全文検索の速度と精度を大幅に向上させる新しいPostgreSQL拡張機能です。検索プロセスを簡素化し、PostgreSQLとシームレスに統合されます。Elasticsearchと比較して、VectorChord-BM25はTop 1000クエリあたりのクエリ毎秒(QPS)が平均3倍向上し、NDCG@10スコアも同等かそれ以上を実現しますが、公平なベンチマークのためにはトークナイゼーション戦略の調整が必要です。

続きを読む
開発

PostgreSQLにおけるColBERT rerankによるベクトル検索の高速化

2025-01-24
PostgreSQLにおけるColBERT rerankによるベクトル検索の高速化

従来のベクトル検索はセンテンスエンベディングに依存しており、細かな情報が失われる可能性があります。ColBERTは、テキストをトークンレベルのマルチベクトルとして表現することで、より多くのニュアンス情報を保持し、検索精度を向上させます。しかし、トークンレベルの相互作用は計算コストが高くなります。この記事では、PostgreSQL拡張機能であるVectorChordとpgvectorを使用して、センテンスレベルのベクトル検索とColBERTトークンレベルのrerankを組み合わせる方法を示します。このアプローチは、センテンスエンベディングを使用して高速な初期検索を行い、その後ColBERTでrerankすることで、結果を向上させます。複数のBEIRデータセットで大幅な改善が観察されました。

続きを読む