pgvector
PostgreSQLにベクトルデータ型(vector)とその類似検索機能を追加する拡張機能。テキストや画像の埋め込み(embedding)をリレーショナルデータベースに直接保存し、類似度検索ができる。生成AIによるRAG(検索拡張生成)や画像検索、レコメンドエンジンなどの用途で使われる。
#postgresql #database #vector-search #ai
距離関数
コサイン類似度、L2距離、内積など複数の距離指標をサポートする。なお単位ベクトル(正規化済み、長さ=1)同士であれば、内積とコサイン類似度は数学的に等価になる。
インデックス方式
- IVFFlat: データをクラスタリングしてから検索範囲を絞る方式。学習コストは抑えられるが、性能を保つために定期的な再構築が必要。
- HNSW: グラフ構造を使った近似最近傍探索方式。高精度・高速だがインデックス構築の負荷が大きい。学習ステップがなく、データが空の状態からインデックスを作成してデータ追加とともに段階的に構築できる点がIVFFlatと異なる。
メリット
AWS/Azure/GCPなど主要クラウドのマネージドPostgreSQLサービスでも対応しており、既存のBIツールやSQLベースの分析基盤とも相性がよい。PostgreSQLの知見があれば学習コストを抑えて導入できる。PGliteのようなWASM版Postgresでも対応拡張機能として使え、ブラウザ内でのローカルベクトル検索が可能になる。
出典
- PostgreSQL×pgvector:ベクトル検索とインデックスの基礎
- pgvectorの基本概要とPostgreSQLにおけるベクトル検索の重要性 | 株式会社一創
- pgvectorとは何か、そして3つの距離指標の違いを整理する <a class=“note-tag” href=“/notes/tags/postgresql.html”>#postgresql - Qiita
- Cloud SQL for PostgreSQL: pgvector インデックスによる類似検索の高速化 | Google Cloud 公式ブログ
- pgvector とは | Google Cloud