ベクトル関数と演算子
このドキュメントでは、ベクター データ型で使用できる関数と演算子の一覧を示します。
注記:
この機能はベータ版です。予告なく変更される可能性があります。バグを見つけた場合は、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つのベクトルの次元数は同じである必要があります。そうでない場合はエラーが返されます。
例:
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つのベクトルの次元数は同じである必要があります。そうでない場合はエラーが返されます。
OpenAI からの埋め込みの場合、この関数を使用するのは推奨です。
例:
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つのベクトルの次元数は同じである必要があります。そうでない場合はエラーが返されます。
例:
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つのベクトルの次元数は同じである必要があります。そうでない場合はエラーが返されます。
例:
SELECT VEC_L1_DISTANCE('[0, 0]', '[3, 4]');
+-------------------------------------+
| VEC_L1_DISTANCE('[0, 0]', '[3, 4]') |
+-------------------------------------+
| 7 |
+-------------------------------------+
VEC_DIMS
VEC_DIMS(vector)
ベクトルの次元を返します。
例:
SELECT VEC_DIMS('[1, 2, 3]');
+-----------------------+
| VEC_DIMS('[1, 2, 3]') |
+-----------------------+
| 3 |
+-----------------------+
SELECT VEC_DIMS('[]');
+----------------+
| VEC_DIMS('[]') |
+----------------+
| 0 |
+----------------+
VEC_L2_NORM
VEC_L2_NORM(vector)
次の式を使用してベクトルのL2ノルム (ユークリッド ノルム) を計算します。
例:
SELECT VEC_L2_NORM('[3, 4]');
+-----------------------+
| VEC_L2_NORM('[3, 4]') |
+-----------------------+
| 5 |
+-----------------------+
VEC_FROM_TEXT
VEC_FROM_TEXT(string)
文字列をベクトルに変換します。多くの場合、この変換は暗黙的に行われます。例えば、 VECTOR
データ型の列にデータを挿入する場合などです。ただし、暗黙的な変換がサポートされていない式(ベクトルに対する算術演算など)では、この関数を明示的に呼び出す必要があります。
例:
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)
ベクトルを文字列に変換します。
例:
SELECT VEC_AS_TEXT('[1.000, 2.5]');
+-----------------------------+
| VEC_AS_TEXT('[1.000, 2.5]') |
+-----------------------------+
| [1,2.5] |
+-----------------------------+
MySQLの互換性
ベクトル関数およびベクトル データ型に対する組み込み関数と演算子の拡張使用は TiDB 固有のものであり、MySQL ではサポートされていません。