ベクトル関数と演算子
このドキュメントでは、ベクター データ型で使用できる関数と演算子の一覧を示します。
注記:
この機能はベータ版です。予告なく変更される可能性があります。バグを見つけた場合は、GitHub で問題報告を行ってください。
注記:
ベクトルデータ型とこれらのベクトル関数は、TiDB Self-Managed、 TiDB Cloudスターター 、およびTiDB Cloud専用 TiDB Cloudエッセンシャル使用できます。TiDB Self-Managed およびTiDB Cloud Dedicated の場合、TiDB バージョンは v8.4.0 以降である必要があります (v8.5.0 以降を推奨)。
ベクトル関数
以下の関数はベクトルデータ型専用に設計されています。
ベクトル距離関数:
関数名 | 説明 |
---|---|
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_COSINE_DISTANCE
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
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 ではサポートされていません。