ベクトル関数と演算子
このドキュメントでは、ベクター データ型で使用できる関数と演算子の一覧を示します。
注記:
ベクトル データ型とこれらのベクトル関数は、TiDB セルフマネージド クラスターとTiDB Cloudサーバーレスクラスターでのみ使用できます。
ベクトル関数
以下の関数はベクトルデータ型専用に設計されています。
ベクトル距離関数:
関数名 | 説明 |
---|---|
VEC_L2_DISTANCE | 2つのベクトル間のL2距離(ユークリッド距離)を計算します |
VEC_COSINE_DISTANCE | 2つのベクトル間のコサイン距離を計算します |
VEC_NEGATIVE_INNER_PRODUCT | 2つのベクトルの内積の負数を計算します |
VEC_L1_DISTANCE | 2つのベクトル間のL1距離(マンハッタン距離)を計算します |
その他のベクトル関数:
関数名 | 説明 |
---|---|
VEC_DIMS | ベクトルの次元を返します |
VEC_L2_NORM | ベクトルのL2ノルム(ユークリッドノルム)を計算します |
VEC_FROM_TEXT | 文字列をベクトルに変換する |
VEC_AS_TEXT | ベクトルを文字列に変換する |
拡張された組み込み関数と演算子
次の組み込み関数と演算子は、 ベクトルデータ型の演算をサポートするために拡張されています。
算術演算子:
名前 | 説明 |
---|---|
+ | ベクトル要素ごとの加算演算子 |
- | ベクトル要素ごとの減算演算子 |
ベクトル演算の仕組みの詳細については、 ベクトル データ型 | 算術参照してください。
集計(GROUP BY)関数:
名前 | 説明 |
---|---|
COUNT() | 返された行の数を返す |
COUNT(DISTINCT) | 異なる値の数を返す |
MAX() | 最大値を返す |
MIN() | 最小値を返す |
比較関数と演算子:
名前 | 説明 |
---|---|
BETWEEN ... AND ... | 値が範囲内にあるかどうかを確認する |
COALESCE() | 最初のNULL以外の引数を返す |
= | 等号演算子 |
<=> | NULL セーフな等号演算子 |
> | より大きい演算子 |
>= | より大きいか等しい演算子 |
GREATEST() | 最大の引数を返す |
IN() | 値が値セット内にあるかどうかを確認する |
IS NULL | 値がNULL どうかをテストする |
ISNULL() | 引数がNULL どうかをテストする |
LEAST() | 最小の引数を返す |
< | より小さい演算子 |
<= | 以下演算子 |
NOT BETWEEN ... AND ... | 値が範囲内にないか確認する |
!= 、 <> | 等しくない演算子 |
NOT IN() | 値が値セット内にないかどうかを確認する |
ベクトルの比較方法の詳細については、 ベクトル データ型 | 比較参照してください。
制御フロー関数:
名前 | 説明 |
---|---|
CASE | ケース演算子 |
IF() | If/else構文 |
IFNULL() | null if/else 構文 |
NULLIF() | expr1 = expr2の場合はNULL 返す |
キャスト関数:
名前 | 説明 |
---|---|
CAST() | 値を文字列またはベクトルとしてキャストする |
CONVERT() | 値を文字列としてキャストする |
CAST()
使用方法の詳細については、 ベクトル データ型 | キャスト参照してください。
完全な参考文献
VECL2距離
VEC_L2_DISTANCE(vector1, vector2)
次の式を使用して、2 つのベクトル間のL2距離 (ユークリッド距離) を計算します。
2 つのベクトルは同じ次元を持つ必要があります。そうでない場合はエラーが返されます。
例:
[tidb]> SELECT VEC_L2_DISTANCE('[0,3]', '[4,0]');
+-----------------------------------+
| VEC_L2_DISTANCE('[0,3]', '[4,0]') |
+-----------------------------------+
| 5 |
+-----------------------------------+
VEC_コサイン距離
VEC_COSINE_DISTANCE(vector1, vector2)
次の式を使用して 2 つのベクトル間のコサイン距離計算します。
2 つのベクトルは同じ次元を持つ必要があります。そうでない場合はエラーが返されます。
例:
[tidb]> SELECT VEC_COSINE_DISTANCE('[1, 1]', '[-1, -1]');
+-------------------------------------------+
| VEC_COSINE_DISTANCE('[1, 1]', '[-1, -1]') |
+-------------------------------------------+
| 2 |
+-------------------------------------------+
VEC_負の内積
VEC_NEGATIVE_INNER_PRODUCT(vector1, vector2)
次の式を使用して、2 つのベクトル間の内積の負の値を使用して距離を計算します。
2 つのベクトルは同じ次元を持つ必要があります。そうでない場合はエラーが返されます。
例:
[tidb]> SELECT VEC_NEGATIVE_INNER_PRODUCT('[1,2]', '[3,4]');
+----------------------------------------------+
| VEC_NEGATIVE_INNER_PRODUCT('[1,2]', '[3,4]') |
+----------------------------------------------+
| -11 |
+----------------------------------------------+
VECL1距離
VEC_L1_DISTANCE(vector1, vector2)
次の式を使用して、2 つのベクトル間のL1距離 (マンハッタン距離) を計算します。
2 つのベクトルは同じ次元を持つ必要があります。そうでない場合はエラーが返されます。
例:
[tidb]> SELECT VEC_L1_DISTANCE('[0,0]', '[3,4]');
+-----------------------------------+
| VEC_L1_DISTANCE('[0,0]', '[3,4]') |
+-----------------------------------+
| 7 |
+-----------------------------------+
変数
VEC_DIMS(vector)
ベクトルの次元を返します。
例:
[tidb]> SELECT VEC_DIMS('[1,2,3]');
+---------------------+
| VEC_DIMS('[1,2,3]') |
+---------------------+
| 3 |
+---------------------+
[tidb]> SELECT VEC_DIMS('[]');
+----------------+
| VEC_DIMS('[]') |
+----------------+
| 0 |
+----------------+
VEC_L2_NORM
VEC_L2_NORM(vector)
次の式を使用してベクトルのL2 ノルム (ユークリッドノルム) を計算します。
例:
[tidb]> SELECT VEC_L2_NORM('[3,4]');
+----------------------+
| VEC_L2_NORM('[3,4]') |
+----------------------+
| 5 |
+----------------------+
VEC_FROM_TEXT
VEC_FROM_TEXT(string)
文字列をベクトルに変換します。
例:
[tidb]> SELECT VEC_FROM_TEXT('[1,2]') + VEC_FROM_TEXT('[3,4]');
+-------------------------------------------------+
| VEC_FROM_TEXT('[1,2]') + VEC_FROM_TEXT('[3,4]') |
+-------------------------------------------------+
| [4,6] |
+-------------------------------------------------+
VEC_AS_TEXT
VEC_AS_TEXT(vector)
ベクトルを文字列に変換します。
例:
[tidb]> SELECT VEC_AS_TEXT('[1.000, 2.5]');
+-------------------------------+
| VEC_AS_TEXT('[1.000, 2.5]') |
+-------------------------------+
| [1,2.5] |
+-------------------------------+
MySQL 互換性
ベクトル関数と、ベクトル データ型に対する組み込み関数および演算子の拡張使用は TiDB 固有のものであり、MySQL ではサポートされていません。