pgvector は、PostgreSQL 用のオープンソースのベクター類似検索ツールです。 データベース内の他のタイプのデータと一緒にベクターデータを格納し、 次の機能 と関数を提供します:
単精度、半精度、バイナリ、およびスパースベクター。
マンハッタン距離 (L1)、ユークリッド距離 (L2)、内積、コサイン距離、ハミング距離、ジャカード距離など、主要な距離メジャー。
正確で近似的な最近傍探索。
階層型ナビゲーション可能な小規模ワールド (HNSW) やフラット圧縮を使用した転置ファイル (IVFFlat) などの主要なベクター近似類似検索インデックス。
さまざまな PostgreSQL クライアント言語。
この拡張機能は、原子性、一貫性、分離性、耐久性 (ACID) 準拠、時点復旧、結合など、他の強力な PostgreSQL 機能もサポートしています。
著作権に関する注意事項
PolarDB for PostgreSQL (Oracle 互換) には、pgvector 拡張機能が組み込まれています。 pgvector 拡張機能 (ドキュメントと機能を含む) は、もともと PostgreSQL Global Development Group によって開発および保守されていました。 Alibaba Cloud は、独自のベクターデータベースソリューション用に pgvector を適合させるための変更を加えました。
Copyright (c) 1996-2025, PostgreSQL Global Development Group
単精度ベクター
各単精度ベクターは、4 * dimensions + 8 バイトのストレージ容量を占有します。 ベクターの各要素は単精度の浮動小数点数 (PostgreSQL の real 型に似ています) であり、すべての要素は有効で有限の値である必要があります (NaN、Infinity、または -Infinity にすることはできません)。 単精度ベクターは、最大 16,000 次元まで使用できます。
演算子
演算子 | 説明 | バージョン要件 |
| 要素ごとの加算 | なし |
| 要素ごとの減算 | なし |
| 要素ごとの乗算 | 0.5.0 以降 |
| 連結 | 0.7.0 以降 |
| ユークリッド距離 | なし |
| 負の内積 | なし |
| コサイン距離 | なし |
| マンハッタン距離 | 0.7.0 以降 |
関数
関数 | 説明 | バージョン要件 |
| ベクターをバイナリ形式に量子化します。 | 0.7.0 以降 |
| ベクター間のcosine距離を計算します。 | なし |
| ベクターの内積を計算します。 | なし |
| ベクター間のマンハッタン距離を計算します。 | 0.5.0 以降 |
| ベクター間のユークリッド距離を計算します。 | なし |
| ユークリッドノルムを使用してベクターを正規化します。 | 0.7.0 以降 |
| 指定されたベクターからサブベクターを抽出します。 | 0.7.0 以降 |
| ベクターの次元数を返します。 | なし |
| ベクターのユークリッドノルムを計算します。 | なし |
集約関数 | 説明 | バージョン要件 |
| ベクターの平均を計算します。 | なし |
| ベクターの合計を計算します。 | 0.5.0 以降 |
半精度ベクター
各半精度ベクターは、2 * dimensions + 8 バイトのストレージ容量を占有します。 ベクタの各要素は半精度の浮動小数点数であり、すべての要素は有効で有限の値である必要があります (NaN、Infinity、または -Infinity にすることはできません)。 半精度ベクターは、最大 16,000 次元まで使用できます。
演算子
演算子 | 説明 | バージョン要件 |
| 要素ごとの加算 | 0.7.0 以降 |
| 要素ごとの減算 | 0.7.0 以降 |
| 要素ごとの乗算 | 0.7.0 以降 |
| 連結 | 0.7.0 以降 |
| ユークリッド距離 | 0.7.0 以降 |
| 負の内積 | 0.7.0 以降 |
| コサイン距離 | 0.7.0 以降 |
| マンハッタン距離 | 0.7.0 以降 |
関数
関数 | 説明 | バージョン要件 |
| 半精度ベクターをバイナリ形式に量子化します。 | 0.7.0 以降 |
| 半精度ベクター間のcosine距離を計算します。 | 0.7.0 以降 |
| 半精度ベクターの内積を計算します。 | 0.7.0 以降 |
| 半精度ベクター間のマンハッタン距離を計算します。 | 0.7.0 以降 |
| 半精度ベクター間のユークリッド距離を計算します。 | 0.7.0 以降 |
| 半精度ベクターのユークリッドノルムを計算します。 | 0.7.0 以降 |
| ユークリッドノルムを使用して半精度ベクターを正規化します。 | 0.7.0 以降 |
| 指定された半精度ベクターからサブベクターを抽出します。 | 0.7.0 以降 |
| 半精度ベクターの次元数を返します。 | 0.7.0 以降 |
集約関数 | 説明 | バージョン要件 |
| ベクターの平均を計算します。 | 0.7.0 以降 |
| ベクターの合計を計算します。 | 0.7.0 以降 |
バイナリベクター
各バイナリベクターは、dimensions / 8 + 8 バイトのストレージ容量を占有します。 詳細については、「ビット文字列型」をご参照ください。
演算子
演算子 | 説明 | バージョン要件 |
| ハミング距離 | 0.7.0 以降 |
| ジャカード距離 | 0.7.0 以降 |
関数
関数 | 説明 | バージョン要件 |
| バイナリベクター間のハミング距離を計算します。 | 0.7.0 以降 |
| バイナリベクター間のジャカード距離を計算します。 | 0.7.0 以降 |
スパースベクター
各スパースベクターは、8 * ゼロ以外の要素の数 + 16 バイトのストレージ容量を占有します。 ベクタの各要素は単精度の浮動小数点数であり、すべての要素は有効で有限の値である必要があります (NaN、Infinity、または -Infinity にすることはできません)。 スパースベクターは、最大 16,000 のゼロ以外の要素を持つことができます。
演算子
演算子 | 説明 | バージョン要件 |
| ユークリッド距離 | 0.7.0 以降 |
| 負の内積 | 0.7.0 以降 |
| コサイン距離 | 0.7.0 以降 |
| マンハッタン距離 | 0.7.0 以降 |
関数
関数 | 説明 | バージョン要件 |
| スパースベクター間のcosine距離を計算します。 | 0.7.0 以降 |
| スパースベクターの内積を計算します。 | 0.7.0 以降 |
| スパースベクター間のマンハッタン距離を計算します。 | 0.7.0 以降 |
| スパースベクター間のユークリッド距離を計算します。 | 0.7.0 以降 |
| スパースベクターのユークリッドノルムを計算します。 | 0.7.0 以降 |
| ユークリッドノルムを使用してスパースベクターを正規化します。 | 0.7.0 以降 |