pgvector上にDiskANNベースのインデックスとラベルフィルタリングを追加し、ベクトル検索を高速化・低コスト化するRust製Postgres拡張。
pgvector/pgvector-python
Django、SQLAlchemy、Psycopg、asyncpg、PeeweeなどのPostgreSQLドライバーに、pgvectorのベクトル型と類似検索機能を追加するPythonライブラリ。
- スター
- 1,542
- フォーク
- 104
- 未解決の Issue
- 9
- 最終コミット
- 3 日前
これは何?
pgvector-pythonは、pgvector拡張を通じてPostgreSQLにベクトルを保存し、検索できるPythonクライアントライブラリです。ベクトル、半精度、bit、スパースベクトルの各型に加え、L2、内積、コサイン、L1、ハミング、ジャカード距離による比較演算子を提供します。
Django、SQLAlchemy、SQLModel、Psycopg 2および3、asyncpg、pg8000、Peeweeなど、幅広いPythonデータベーススタックと連携します。各連携で、拡張機能の有効化、ベクトルカラムの追加、埋め込みの挿入、最近傍検索の実行、HNSWまたはIVFFlatインデックスの作成といった一般的な手順を扱えます。
リポジトリには、Ollamaを使った検索拡張生成、OpenAIおよびCohereによる埋め込み、ハイブリッド検索、画像検索、レコメンデーション、COPYによる一括読み込みのサンプルスクリプトも含まれています。
主な機能
- 01Django、SQLAlchemy、SQLModel、Psycopg 2/3、asyncpg、pg8000、Peeweeに対応。
- 02ベクトル、半精度、bit、スパースベクトルのフィールド型を提供。
- 03L2、内積、コサイン、L1、ハミング、ジャカードなどの距離演算子を提供。
- 04各ライブラリのAPIを通じてHNSWおよびIVFFlatの近似インデックスを作成。
- 05Pythonのリスト、NumPy配列、SciPyのスパース配列間の変換に対応。
ユースケース
- PostgreSQLを使うDjangoまたはSQLAlchemyアプリケーションに、セマンティック検索やRAG検索を追加する。
- OpenAI、Cohere、SentenceTransformersのテキストまたは画像の埋め込みをPostgresに保存する。
- 既存のPostgresデータベース内のユーザー・アイテムベクトルを使って、レコメンデーション機能を構築する。
クイックスタート
- 1
PyPIからパッケージをインストールします
pip install pgvector - 2
PostgreSQLデータベースでpgvector拡張機能を有効にします(Psycopg 3の例)
conn.execute('CREATE EXTENSION IF NOT EXISTS vector') - 3
接続にvector型を登録してから、使用するライブラリのREADMEに従ってベクトルを挿入・検索します
register_vector(conn)
使う前に知っておきたいこと
- PostgreSQLサーバーにpgvector拡張機能がインストールされている必要があります。
- データベースライブラリごとに、独自のセットアップ手順と登録コードが必要です。
収録されている特集
トピック
よくある質問
- pgvector-python とは?
- Django、SQLAlchemy、Psycopg、asyncpg、PeeweeなどのPostgreSQLドライバーに、pgvectorのベクトル型と類似検索機能を追加するPythonライブラリ。 pgvector-pythonは、pgvector拡張を通じてPostgreSQLにベクトルを保存し、検索できるPythonクライアントライブラリです。ベクトル、半精度、bit、スパースベクトルの各型に加え、L2、内積、コサイン、L1、ハミング、ジャカード距離による比較演算子を提供します。
- pgvector-python は無料で使えますか?ライセンスは?
- pgvector-python は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- pgvector-python は今もメンテナンスされていますか?
- 活発にメンテナンス中。pgvector-python の最終コミットは 2026年11月5日 です。
- pgvector-python は何に使えますか?
- PostgreSQLを使うDjangoまたはSQLAlchemyアプリケーションに、セマンティック検索やRAG検索を追加する。 OpenAI、Cohere、SentenceTransformersのテキストまたは画像の埋め込みをPostgresに保存する。 既存のPostgresデータベース内のユーザー・アイテムベクトルを使って、レコメンデーション機能を構築する。
- pgvector-python のインストール方法は?
- PyPIからパッケージをインストールします: pip install pgvector PostgreSQLデータベースでpgvector拡張機能を有効にします(Psycopg 3の例): conn.execute('CREATE EXTENSION IF NOT EXISTS vector') 接続にvector型を登録してから、使用するライブラリのREADMEに従ってベクトルを挿入・検索します: register_vector(conn)
- pgvector-python はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/pgvector/pgvector-python
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
pgvector PostgreSQL拡張をGoから利用するためのライブラリ。pgx、pg、Bun、Ent、GORM、sqlx向けのvector型とヘルパーを提供します。
Node.js、Deno、BunのデータベースクライアントやORMでpgvectorのベクトル型を使えるようにする、JavaScript・TypeScript向けヘルパーライブラリです。
Milvusは、AI検索やRAGアプリケーション向けに、埋め込みを大規模に保存・検索できるオープンソースの分散型ベクトルデータベースです。
Qdrantは、セマンティック検索やレコメンデーション向けにペイロードフィルタリングを備えた、Rust製のベクトル類似検索エンジン兼ベクトルデータベースです。
Postgresにベクトル類似検索機能を追加し、リレーショナルデータとともにembeddingを保存・検索できるオープンソース拡張機能。