全部產品
Search
文件中心

Simple Log Service:向量計算函數

更新時間:Sep 24, 2024

文本、語音、映像、視頻都能夠以向量的形式儲存在向量資料庫中,方便使用者快速搜尋和查詢。Log Service支援向量計算函數,本文介紹向量計算函數的基本文法和樣本。

向量計算函數列表

重要

以下函數中使用的向量元素,可以用特定格式的字串來描述,字串是用"[]"或者"{}"包起來的一組數字,數字之間用逗號分隔開。

函數名稱

文法

說明

傳回值類型

cosine_similarity函數

  • cosine_similarity(array(double) vector1, array(double) vector2)

  • cosine_similarity(varchar vector1, varchar vector2)

計算兩個向量之間的餘弦相似性。

餘弦相似性的取值範圍是[-1, 1]:

  • 當餘弦相似性為1時,表示兩個向量方向完全相同。

  • 當餘弦相似性為-1時,表示兩個向量方向完全相反。

  • 當餘弦相似性為0時,表示兩個向量在幾何上是正交的,即它們是垂直的。

double

inner_product或dot_product函數

  • inner_product(array(double) vector1, array(double) vector2)

  • inner_product(varchar vector1, varchar vector2)

  • dot_product(array(double) vector1, array(double) vector2)

  • dot_product(varchar vector1, varchar vector2)

計算兩個向量的內積(點積)。

double

l2_distance函數或euclidean_distance函數

  • euclidean_distance(array(double) vector1, array(double) vector2)

  • euclidean_distance(varchar vector1, varchar vector2)

  • l2_distance(array(double) vector1, array(double) vector2)

  • l2_distance(varchar vector1, varchar vector2)

計算兩個向量的歐式距離。

double

vector_norm函數

  • vector_norm(array(double) vector1)

  • vector_norm(array(double) vector1, double p)

  • vector_norm(varchar vector1)

  • vector_norm(varchar vector1, double p)

計算一個向量的範數。範數相當於向量的長度。

double

vector_sum函數

  • vector_sum(array(double) vector1)

  • vector_sum(varchar vector1)

計算一個向量的所有元素之和。

double

vector_mean函數

  • vector_mean(array(double) vector1)

  • vector_mean(varchar vector1)

計算一個向量的平均值。

double

vector_variance函數

  • vector_variance(array(double) vector1)

  • vector_variance(varchar vector1)

計算一個向量的方差。方差代表向量元素偏離均值的平均波動幅度的平方和,描述了該向量中元素分布的離散程度。

double

vector_std_dev函數

  • vector_std_dev(array(double) vector1)

  • vector_std_dev(varchar vector1)

計算一個向量的標準差,標準差是方差的正平方根。方差描述了資料點圍繞均值的波動大小。方差越大,表示資料點越分散;方差越小,表示資料點越集中。

double

vector_add函數

  • vector_add(array(double) vector1, array(double) vector2)

  • vector_add(varchar vector1, varchar vector2)

計算兩個向量相加的結果。

結合向量加減法和向量縮放,可以做任意線性變換。

array(double)

vector_subtract函數

  • vector_subtract(array(double) vector1, array(double) vector2)

  • vector_subtract(varchar vector1, varchar vector2)

計算兩個向量相減的結果。

結合向量的加減法和向量的縮放,可以做任意線性變換。

array(double)

vector_scale函數

  • vector_scale(array(double) vector1, double alpha)

  • vector_scale(varchar vector1, double alpha)

結合向量的加減法和向量的縮放,可以做任何線性變換。

array(double)

vector_multiply函數

  • vector_multiply(array(double) vector1, array(double) vector2)

  • vector_multiply(varchar vector1, varchar vector2)

計算兩個向量對應元素相乘的結果,返回結果向量。

array(double)

vector_divide函數

  • vector_divide(array(double) vector1, array(double) vector2)

  • vector_divide(varchar vector1, varchar vector2)

計算兩個向量對應元素相除的結果,返回結果向量。

array(double)

vector_add_value函數

  • vector_add_value(array(double) vector1, double value)

  • vector_add_value(varchar vector1, double value)

向量的每一個元素都加上一個常數,返回結果向量。

array(double)

vector_fill_nan函數

vector_fill_nan(varchar vector1, varchar fill_option)

對向量中出現的缺失值進行填充,向量中的元素如果為NaNnullInf或者-Inf,則被認為是缺失值。

參數fill_option支援多種配置,包括'avg''mean' 'median''min''max'以及'value=0'(0可以換成其他具體的數值)。

array(double)

cosine_similarity函數

計算兩個向量的餘弦相似性。

使用樣本

  • 查詢和分析語句

    * | 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函數

計算兩個向量的內積。

使用樣本

  • 查詢和分析語句

    * | 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的小寫形式。

計算兩個向量的歐式距離。

使用樣本

  • 查詢和分析語句

    * | SELECT l2_distance(array[1, 3], array[4, 2])

    * | SELECT l2_distance('[1, 3]', '[4, 2]')
  • 返回結果

    3.16

vector_norm函數

根據範數類型p,計算向量的範數(norm)。

使用樣本

  • 查詢和分析語句

    * | 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時,計算向量元素的平方和的平方根,結果為3.16。範數類型為3時,計算向量元素的三次方和的三次方根,結果為3.04

vector_sum函數

計算一個向量所有元素的和。

使用樣本

  • 查詢和分析語句

    * | SELECT vector_sum(array[1, -3])

    * | SELECT vector_sum('[1, -3]')
  • 返回結果

    -2

vector_mean函數

計算一個向量所有元素的平均值。

使用樣本

  • 查詢和分析語句

    * | SELECT vector_mean(array[1, -3])

    * | SELECT vector_mean('[1, -3]')
  • 返回結果

    -1

vector_variance函數

計算一個向量的方差,描述了該向量中元素分布的離散程度。

使用樣本

  • 查詢和分析語句

    * | SELECT vector_variance(array[1, -3, 8])

    * | SELECT vector_variance('[1, -3, 8]')
  • 返回結果

    向量均值為2,結果為(12+52+62=62/3)=20.67

傳回值類型

與輸入的參數值相同。

vector_std_dev函數

計算一個向量的標準差,標準差是方差的正平方根。

使用樣本

  • 查詢和分析語句

    * | SELECT vector_std_dev(array[1, -3, 8])

    * | SELECT vector_std_dev('[1, -3, 8]')
  • 返回結果

    向量均值為2,結果為(12+52+62=62/3)0.5=20.670.5=4.54

vector_add函數

vector_add函數用於計算兩個向量的相加結果。

使用樣本

  • 查詢和分析語句

    * | 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函數

vector_subtract函數用於計算兩個向量相減的結果。

使用樣本

  • 查詢和分析語句

    * | 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函數用於計算兩個向量對應元素相乘的結果。

使用樣本

  • 查詢和分析語句

    * | 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函數用於計算兩個向量對應元素相除的結果。

使用樣本

  • 查詢和分析語句

    * | 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函數用於對向量中出現的缺失值進行填充。向量中的元素如果為NaNnullInf或者-Inf,則被認為是缺失值。

參數fill_option支援多種配置,包括:

  • 指定值(value):'value=0'(0可以換成其他具體的數值)。

  • 均值(mean)

  • 中位元(median)

  • 最小值(min)

  • 最大值(max)

使用樣本

  • 查詢和分析語句

    樣本中value=4代替null

    * | SELECT vector_fill_nan('[1, null, 3, 4]', 'value=4')

    樣本中用數組的最大值(max)代替null

    * | SELECT vector_fill_nan('[1, null, 3, 4]', 'max')
  • 返回結果

    [1.0,4.0,3.0,4.0]