pgvector/pgvector
Open-source vector similarity search for Postgres
何を解決するか
pgvector は PostgreSQL 用のオープンソース拡張であり、データベース内に直接ベクトル埋め込みを格納・検索できるようにします。これにより、専用のベクトルデータベースを別途用意する必要がなくなり、関係データと併せて埋め込みを保持しつつ、ACID準拠性を維持し、標準SQLクエリをサポートできます。
動作方法
新しい vector データ型と、類似性検索に特化した距離演算子を導入します。単精度、半精度(halfvec)、バイナリ(bit)、スパースベクトル(sparsevec)など、複数のベクトルタイプをサポートしています。
検索速度を向上させるために、2種類の近似最近傍(ANN)インデックスを提供します:
- HNSW(Hierarchical Navigable Small World):マルチレイヤーのグラフインデックスで、高いクエリパフォーマンスと優れた速度-リコールのトレードオフを実現しますが、メモリ消費量が多く、構築に時間がかかります。
- IVFFlat(Inverted File Flat):ベクトルをリスト(クラスタ)に分割し、最も近いリストのみを検索するインデックスで、HNSWよりも構築が速く、メモリ使用量も少ないです。
対象ユーザー
PostgreSQL を既に使用している開発者やデータエンジニアで、AIアプリケーション(RAGや推薦システムなど)にベクトル類似性検索を統合したいが、新たなインフラの複雑さを避けたい人向けです。
特徴
- Postgres統合:JOIN、ACID準拠性、時系列の復旧など、Postgresの完全な機能を活用できます。
- 多様なベクトルサポート:単精度、半精度、バイナリ、スパースベクトルを処理できます。
- 複数の距離メトリクス:L2距離、内積、コサイン距離、L1距離、ハミング距離、ジャカード距離をサポートします。
- ハイブリッド検索:Postgresの全文検索と組み合わせて、ハイブリッドリトリーバーとして利用可能です。
- 高度なインデックス:
WHERE句によるフィルタリング時にリコールを向上させるためのイテレーティブインデックススキャンを含みます。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト