テキスト、オーディオ、画像、およびビデオをベクトルデータベースにベクトルとして保存して、検索とクエリを容易にすることができます。 Simple Log Serviceはベクトル計算機能をサポートしています。 このトピックでは、ベクトル計算関数の構文について説明します。 このトピックでは、関数の使用方法の例も示します。
ベクトル計算関数
次の関数で使用されるベクトル要素は、特定の形式の文字列として表示されます。 文字列は、括弧 [] または括弧 () で囲まれ、コンマ (,) で区切られた数値のセットです。
関数 | 構文 | 説明 | 戻り値のデータ型 |
| 2つのベクトルのコサイン類似度を計算します。 コサイン類似度の有効値: [-1, 1] 。
| double | |
| 2つのベクトルの内積を計算します。 | double | |
| 2つのベクトル間のユークリッド距離を計算します。 | double | |
| ベクトルのノルムを計算します。 ベクトルのノルムは、ベクトルの大きさに等しい。 | double | |
| ベクトルのすべての要素の合計を計算します。 | double | |
| ベクトルの平均を計算します。 | double | |
| ベクトルの分散を計算します。 分散は、ベクトルの要素の分散を測定する。 分散は、ベクトルの各要素から平均までの距離の2乗の平均です。 | double | |
| ベクトルの標準偏差を計算します。 ベクトルの標準偏差は、その分散の正の平方根である。 分散は、データセット内の各データポイントが平均からどれだけ離れているかを測定します。 高い分散値は、データ点が平均から著しく広がっていることを示す。 低い分散値は、データ点が平均に近いことを示す。 | double | |
| 2つのベクトルの合計を計算します。 ベクトル加算、ベクトル減算、およびベクトルスケーリング関数に基づいて、任意の線形変換を実行できます。 | 配列 (ダブル) | |
| 2つのベクトルの差を計算します。 ベクトル加算、ベクトル減算、およびベクトルスケーリング関数に基づいて、任意の線形変換を実行できます。 | 配列 (ダブル) | |
| ベクトルスケーリングの結果を計算します。 ベクトル加算、ベクトル減算、およびベクトルスケーリング関数に基づいて、任意の線形変換を実行できます。 | 配列 (ダブル) | |
| 2つのベクトルの同じ位置にある各要素の積を計算し、結果ベクトルを返します。 | 配列 (ダブル) | |
| 2つのベクトルの同じ位置にある各要素の除算を計算し、結果ベクトルを返します。 | 配列 (ダブル) | |
| ベクトル内の各要素に定数を追加し、結果ベクトルを返します。 | 配列 (ダブル) | |
vector_fill_nan(varchar vector1, varchar fill_option) | ベクトル内で空のままの要素の値を指定します。
| 配列 (ダブル) |
cosine_similarity関数
cosine_similarity関数は、2つのベクトルのコサイン類似度を計算します。
例
クエリ文
* | SELECT cosine_similarity(array[1, 2, 3, 4], array[10, 20, 30, 40])
または
* | SELECT cosine_similarity('[1, 2, 3, 4]', '[10, 20, 30, 40]')
クエリおよび分析の結果
1
inner_productまたはdot_product関数
inner_productまたはdot_product関数は、2つのベクトルの内積を計算します。
例
クエリ文
* | SELECT inner_product(array[1, 2, 3, 4], array[10, 20, 30, 40])
または
* | SELECT inner_product('[1, 2, 3, 4]', '[10, 20, 30, 40]')
クエリおよび分析の結果
300.0
l2_distanceまたはeuclidean_distance関数
l2_distanceは小文字のlで始まります。
l2_distanceまたはeuclidean_distance関数は、2つのベクトル間のユークリッド距離を計算します。
例
クエリ文
* | SELECT l2_distance(array[1, 3], array[4, 2])
または
* | SELECT l2_distance('[1, 3]', '[4, 2]')
クエリおよび分析の結果
3.16
vector_norm関数
vector_norm関数は、ノルムのタイプに基づいてベクトルのノルムを計算します。 ノルムのタイプはp
で指定されます。
例
クエリ文
* | SELECT vector_norm(array[1, 3], 1)
* | SELECT vector_norm(array[1, 3], 2)
* | SELECT vector_norm(array[1, 3], 3)
クエリおよび分析の結果
この関数は、ノルムタイプが1、2、および3の場合、
[1,3]
ベクトルのノルムを計算します。 ノルム型が1の場合、関数はベクトル要素の絶対値の合計を計算します。 結果は4
です。 ノルムタイプが2の場合、関数はベクトル要素の2乗の合計の平方根を計算します。 結果は3.16
である。 ノルム型が3の場合、関数はベクトル要素の立方体の合計の立方根を計算します。 結果は3.04
である。
vector_sum関数
vector_sum関数は、ベクトルのすべての要素の合計を計算します。
例
クエリ文
* | SELECT vector_sum(array[1, -3])
または
* | SELECT vector_sum('[1, -3]')
クエリおよび分析の結果
-2
vector_mean関数
vector_mean関数は、ベクトルの平均を計算します。
例
クエリ文
* | SELECT vector_mean(array[1, -3])
または
* | SELECT vector_mean('[1, -3]')
クエリおよび分析の結果
-1
vector_分散関数
vector_variance関数は、ベクトルの分散を計算します。 分散は、ベクトルの要素の分散を測定する。
例
クエリ文
* | SELECT vector_variance(array[1, -3, 8])
または
* | SELECT vector_variance('[1, -3, 8]')
クエリおよび分析の結果
ベクトルの平均は2である。 分散は、以下の式
(1 2 + 5 2 + 6 2= 62/3) = 20.67
を用いて計算される。
戻り値のデータ型
パラメーター値のデータ型と同じです。
vector_std_dev関数
vector_std_dev関数は、ベクトルの標準偏差を計算します。 ベクトルの標準偏差は、その分散の正の平方根である。
例
クエリ文
* | SELECT vector_std_dev(array[1, -3, 8])
または
* | SELECT vector_std_dev('[1, -3, 8]')
クエリおよび分析の結果
ベクトルの平均は2である。 標準偏差は、以下の式を使用することによって計算される。
(1 2 + 5 2 + 6 2= 62/3) 0.5= 20.67 0.5= 4.54
。
vector_add関数
vector_add関数は、2つのベクトルの合計を計算します。
例
クエリ文
* | SELECT vector_add(array[1, 2, 3, 4], array[2, 3, 1, 1.5])
または
* | SELECT vector_add("[1, 2, 3, 4]", "[2, 3, 1, 1.5]")
クエリおよび分析の結果
[3.0、5.0、4.0、5.5]
ベクトル_減算関数
vector_subtract関数は、2つのベクトルの差を計算します。
例
クエリ文
* | SELECT vector_subtract(array[1, 2, 3, 4], array[2, 3, 1, 1.5])
または
* | SELECT vector_subtract(array[1, 2, 3, 4], array[2, 3, 1, 1.5])
クエリおよび分析の結果
[-1.0、-1.0、2.0、2.5]
vector_scale関数
vector_scale関数は、ベクトルスケーリングの結果を計算します。
例
クエリ文
* | SELECT vector_scale(array[1, 2, 3, 4], 5)
または
* | SELECT vector_scale('[1, 2, 3, 4]', 5)
クエリおよび分析の結果
[5.0、10.0、15.0、20.0]
vector_multiply関数
vector_multiply関数は、2つのベクトルの同じ位置にある各要素の積を計算します。
例
クエリ文
* | SELECT vector_multiply(array[1, 2, 3, 4], array[2, 3, 1, 1.5])
または
* | SELECT vector_multiply('[1,2, 3, 4]', '[2,3, 1, 1.5]')
クエリおよび分析の結果
[2.0、6.0、3.0、6.0]
vector_divide関数
vector_divide関数は、2つのベクトルの同じ位置にある各要素の除算を計算します。
例
クエリ文
* | SELECT vector_divide(array[1, 2, 3, 4], array[2, 3, 1, 1.5])
または
* | SELECT vector_divide('[1,2, 3, 4]', '[2,3, 1, 1.5]')
クエリおよび分析の結果
[0.5、0.6666666666666666、3.0、2.6666666666666667]
vector_add_value関数
vector_add_value関数は、ベクトル内の各要素に定数を追加します。
例
クエリ文
* | SELECT vector_add_value(array[1, 2, 3, 4], 2.0)
または
* | SELECT vector_add_value('[1, 2, 3, 4]', 2.0)
クエリおよび分析の結果
[3.0、4.0、5.0、6.0]
vector_fill_nan関数
vector_fill_nan関数は、ベクトル内で空のままの要素の値を指定します。 NaN
、null
、Inf
、または -Inf
がベクトルに存在する場合、関連する要素は空と見なされます。
次のように、fill_option
に異なる値を指定できます。
value=0
です。 0を他の数字に置き換えることができます。平均
中央値
min
max
例
クエリ文
null
をvalue=4
に置き換える:* | SELECT vector_fill_nan('[1, null, 3,4]', 'value=4 ')
または、
null
を配列の最大値に置き換えます。* | SELECT vector_fill_nan('[1, null, 3,4]', 'max')
クエリおよび分析の結果
[1.0、4.0、3.0、4.0]