ベクトル関数と演算子
このドキュメントでは、ベクター データ型で使用できる関数と演算子の一覧を示します。
注記:
- ベクトル関数と演算子はベータ版であり、予告なく変更される可能性があります。バグを発見した場合は、GitHubで問題報告を行ってください。
- ベクトルデータ型とこれらのベクトル関数は、 TiDBセルフマネージド 、 TiDB Cloudスターター 、 TiDB Cloudエッセンシャル 、およびTiDB Cloud専用で使用できます。TiDB Self-ManagedおよびTiDB Cloud Dedicatedの場合、TiDBバージョンはv8.4.0以降である必要があります(v8.5.0以降を推奨)。
ベクトル関数
以下の関数はベクトルデータ型専用に設計されています。
ベクトル距離関数:
その他のベクトル関数:
拡張された組み込み関数と演算子
次の組み込み関数と演算子は、 ベクトルデータ型演算をサポートするために拡張されています。
算術演算子:
ベクトル演算の仕組みの詳細については、 ベクトルデータ型 | 算術参照してください。
集計(GROUP BY)関数:
比較関数と演算子:
ベクトルの比較方法の詳細については、 ベクトルデータ型 | 比較参照してください。
制御フロー関数:
キャスト関数:
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 ではサポートされていません。