- 大規模なベクトルをコスト効率よく管理するための、PostgreSQL向け新しいベクトル検索拡張
- 768次元の1億ベクトルに対し、上位10件クエリでQPS 131、精度0.95を達成可能
- 400,000件のベクトルを1ドルで保存可能:
- Pinecone(ストレージ最適化インスタンス)と比べて6倍安価
- pgvectorと比べて26倍安価
HNSW(Hierarchical Navigable Small Worlds)ベースのベクトルデータベースの問題点
- 長いインデックス作成時間: 500万レコードで2時間以上
- 高いメモリ要件: 1,000万ベクトルの保存に最大40GBが必要
VectorChordの革新的なソリューション: ディスクフレンドリーなIVF+RaBitQ
- IVF(転置ファイルインデックス) と RaBitQ 量子化を使用
- 32ビットベクトルを 圧縮ビット表現 に変換して計算コストを削減
- 比較の大半は圧縮ベクトルを使用し、精度保証のために少数のベクトルに対してのみ完全精度計算を実行
- HNSWより高速で効率的な検索:
- RaBitQはベクトルを1ビットに圧縮し、計算速度を 100倍向上
- 高い精度を維持しながら速度最適化が可能
主なベンチマーク結果
GISTデータセット(1M、960次元)
- VectorChordはpgvectorと比べてQPSが 2倍高い
- KMeansクラスタリングを外部GPUで実行した後、PostgreSQLへ取り込む方式を活用
- AWS
i4i.large インスタンス(2 vCPUs、16GB RAM)で70万ベクトルのインデックス作成に要した時間: 186秒
- pgvectorと比べて 16倍高速
- 挿入速度も 14倍高速
LAION 5Mデータセット
r6a.xlarge マシンで実験(4 vCPUs、32GB RAM、200GB EBS):
- 高精度でも高速な応答を維持
- 月額165.56ドルで同等の性能を提供し、競合プラットフォームよりコスト効率が高い
LAION 100Mデータセット
- AWS
i4i.xlarge インスタンス(4 vCPUs、32GB RAM、937GB SSD):
- QPS 16.2 @ recall 0.95(上位10件の結果基準)
- マルチスレッド環境でリクエスト増加に応じた 線形的なQPS増加 を観測
VectorChordの主な利点
- PostgreSQLの物理レプリケーションやその他の機能と互換性あり
- 外部インデックス作成 をサポート:
- より高性能なマシンでインデックスを作成し、それを小規模マシンへ持ち込んでクエリを実行
- 単一マシンで 数十億件のベクトル をサポート可能
- 低コスト・高性能: 競合プラットフォームと比べて月額コストを大幅に削減
要約と追加情報
- VectorChordはPostgreSQL環境で効率的なベクトル検索を提供
- IVFおよびRaBitQ量子化により速度とメモリ使用量を最適化し、大規模データセットに適している
- クラウド管理サービス: PGVecto.rs Cloud
1件のコメント
VectorはPostgreSQLの新しいJSONです
上の記事で引用されている pgvector と、この VectorChord の前身である pgvecto.rs は別の拡張機能です。
pgvector vs. pgvecto.rs in 2024: A Comprehensive Comparison for Vector Search in PostgreSQL
pgvecto.rs を作ったチームが VectorChord を開発してあわせて管理しており、まだ機能はすべて VectorChord に移行していません。来年ごろには pgvecto.rs のサポートを終了し、VectorChord に移行するとのことです。
Postgres でベクトルを保存している方は参考にしてください。