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句によるフィルタリング時にリコールを向上させるためのイテレーティブインデックススキャンを含みます。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト