すべてのプロダクト
Search
ドキュメントセンター

PolarDB:SQL リファレンス

最終更新日:Apr 26, 2025

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 型に似ています) であり、すべての要素は有効で有限の値である必要があります (NaNInfinity、または -Infinity にすることはできません)。 単精度ベクターは、最大 16,000 次元まで使用できます。

演算子

演算子

説明

バージョン要件

+

要素ごとの加算

なし

-

要素ごとの減算

なし

*

要素ごとの乗算

0.5.0 以降

||

連結

0.7.0 以降

<->

ユークリッド距離

なし

<#>

負の内積

なし

<=>

コサイン距離

なし

<+>

マンハッタン距離

0.7.0 以降

関数

関数

説明

バージョン要件

binary_quantize(vector) → bit

ベクターをバイナリ形式に量子化します。

0.7.0 以降

cosine_distance(vector, vector) → double precision

ベクター間のcosine距離を計算します。

なし

inner_product(vector, vector) → double precision

ベクターの内積を計算します。

なし

l1_distance(vector, vector) → double precision

ベクター間のマンハッタン距離を計算します。

0.5.0 以降

l2_distance(vector, vector) → double precision

ベクター間のユークリッド距離を計算します。

なし

l2_normalize(vector) → vector

ユークリッドノルムを使用してベクターを正規化します。

0.7.0 以降

subvector(vector, integer, integer) → vector

指定されたベクターからサブベクターを抽出します。

0.7.0 以降

vector_dims(vector) → integer

ベクターの次元数を返します。

なし

vector_norm(vector) → double precision

ベクターのユークリッドノルムを計算します。

なし

集約関数

説明

バージョン要件

avg(vector) → vector

ベクターの平均を計算します。

なし

sum(vector) → vector

ベクターの合計を計算します。

0.5.0 以降

半精度ベクター

各半精度ベクターは、2 * dimensions + 8 バイトのストレージ容量を占有します。 ベクタの各要素は半精度の浮動小数点数であり、すべての要素は有効で有限の値である必要があります (NaNInfinity、または -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 以降

関数

関数

説明

バージョン要件

binary_quantize(halfvec) → bit

半精度ベクターをバイナリ形式に量子化します。

0.7.0 以降

cosine_distance(halfvec, halfvec) → double precision

半精度ベクター間のcosine距離を計算します。

0.7.0 以降

inner_product(halfvec, halfvec) → double precision

半精度ベクターの内積を計算します。

0.7.0 以降

l1_distance(halfvec, halfvec) → double precision

半精度ベクター間のマンハッタン距離を計算します。

0.7.0 以降

l2_distance(halfvec, halfvec) → double precision

半精度ベクター間のユークリッド距離を計算します。

0.7.0 以降

l2_norm(halfvec) → double precision

半精度ベクターのユークリッドノルムを計算します。

0.7.0 以降

l2_normalize(halfvec) → halfvec

ユークリッドノルムを使用して半精度ベクターを正規化します。

0.7.0 以降

subvector(halfvec, integer, integer) → halfvec

指定された半精度ベクターからサブベクターを抽出します。

0.7.0 以降

vector_dims(halfvec) → integer

半精度ベクターの次元数を返します。

0.7.0 以降

集約関数

説明

バージョン要件

avg(halfvec) → halfvec

ベクターの平均を計算します。

0.7.0 以降

sum(halfvec) → halfvec

ベクターの合計を計算します。

0.7.0 以降

バイナリベクター

各バイナリベクターは、dimensions / 8 + 8 バイトのストレージ容量を占有します。 詳細については、「ビット文字列型」をご参照ください。

演算子

演算子

説明

バージョン要件

<~>

ハミング距離

0.7.0 以降

<%>

ジャカード距離

0.7.0 以降

関数

関数

説明

バージョン要件

hamming_distance(bit, bit) → double precision

バイナリベクター間のハミング距離を計算します。

0.7.0 以降

jaccard_distance(bit, bit) → double precision

バイナリベクター間のジャカード距離を計算します。

0.7.0 以降

スパースベクター

各スパースベクターは、8 * ゼロ以外の要素の数 + 16 バイトのストレージ容量を占有します。 ベクタの各要素は単精度の浮動小数点数であり、すべての要素は有効で有限の値である必要があります (NaNInfinity、または -Infinity にすることはできません)。 スパースベクターは、最大 16,000 のゼロ以外の要素を持つことができます。

演算子

演算子

説明

バージョン要件

<->

ユークリッド距離

0.7.0 以降

<#>

負の内積

0.7.0 以降

<=>

コサイン距離

0.7.0 以降

<+>

マンハッタン距離

0.7.0 以降

関数

関数

説明

バージョン要件

cosine_distance(sparsevec, sparsevec) → double precision

スパースベクター間のcosine距離を計算します。

0.7.0 以降

inner_product(sparsevec, sparsevec) → double precision

スパースベクターの内積を計算します。

0.7.0 以降

l1_distance(sparsevec, sparsevec) → double precision

スパースベクター間のマンハッタン距離を計算します。

0.7.0 以降

l2_distance(sparsevec, sparsevec) → double precision

スパースベクター間のユークリッド距離を計算します。

0.7.0 以降

l2_norm(sparsevec) → double precision

スパースベクターのユークリッドノルムを計算します。

0.7.0 以降

l2_normalize(sparsevec) → sparsevec

ユークリッドノルムを使用してスパースベクターを正規化します。

0.7.0 以降