共用方式為


VECTOR_DISTANCE (Transact-SQL) (預覽)

適用於: Azure SQL 資料庫 Azure SQL 受控執行個體

注意

此數據類型處於預覽狀態,而且可能會變更。 請務必閱讀在線服務服務服務等級協定 (SLA) 檔中的預覽使用規定。

使用指定的距離計量計算兩個向量之間的距離。

Syntax

Transact-SQL 語法慣例

VECTOR_DISTANCE ( distance_metric, vector1, vector2 )

引數

distance_metric

字串,其名稱為要用來計算兩個指定向量之間的距離。 支援下列距離計量:

  • cosine - 餘弦距離
  • euclidean - Euclidean 距離
  • dot - (負數) 點產品

vector1

評估為 二進位格式向量的 表達式。

vector2

評估為二進位格式向量的表達式。

距離計量

計量 描述 範圍 範例
cosine 餘弦值 (角度) 距離 [0, 2] 0:相同的向量
2:相反向量
euclidean 歐幾里得距離 [-∞, +∞] 0:相同的向量
dot 以點產品為基礎的距離指示,
藉由計算 點乘積來取得
[-∞, +∞] 較小的數位表示更類似的向量

傳回值

此函式會傳回純量 浮點 數,代表使用指定距離計量來表示兩個向量之間的距離。

如果 distance_metric 不是有效的計量,而且提供的二進位值不代表有效的向量,則會傳回錯誤。

範例

檢閱 Azure SQL 資料庫 向量搜尋範例 GitHub 存放庫,以取得端對端工作範例。

範例假設有一wikipedia_articles個名為的數據表,其類型vector為 數據行title_vector,其會儲存維琪百科文章的標題內嵌。 title_vector 假設是內嵌模型所產生的內嵌,例如 text-embedding-ada-002text-embedding-3-small ,其會傳回具有 1,536 維度的向量。

範例 1

下列範例會從具有 JSON 陣列的字串建立具有三個維度的向量。

DECLARE @v1 VECTOR(2) = '[1,1]';
DECLARE @v2 VECTOR(2) = '[-1,-1]';

SELECT 
    VECTOR_DISTANCE('euclidean', @v1, @v2) AS euclidean,
    VECTOR_DISTANCE('cosine', @v1, @v2) AS cosine,
    VECTOR_DISTANCE('dot', @v1, @v2) AS negative_dot_product;

範例 2

下列範例會根據標題向量之間的餘弦距離,傳回前 10 個最類似文章的文章。 如需範例中使用的資料庫詳細數據,請參閱這裡: 使用向量內嵌下載並匯入維琪百科文章

DECLARE @v AS VECTOR(1536);
SELECT @v = title_vector FROM [dbo].[wikipedia_articles] WHERE title = 'Alan Turing';

SELECT TOP(10) 
  id, 
  title, 
  VECTOR_DISTANCE('cosine', @v, title_vector) AS distance 
FROM 
  [dbo].[wikipedia_articles] 
ORDER BY
  distance

範例 3

下列範例會根據標題向量之間的餘弦距離,只選取距離小於 0.3 的發行項,傳回指定發行項的所有類似發行項。

DECLARE @v AS VECTOR(1536);
SELECT @v = title_vector FROM [dbo].[wikipedia_articles] WHERE title = 'Alan Turing';

SELECT  
  id, 
  title,
  VECTOR_DISTANCE('cosine', @v, title_vector) AS distance
FROM 
  [dbo].[wikipedia_articles] 
WHERE
  VECTOR_DISTANCE('cosine', @v, title_vector) < 0.3
ORDER BY
  distance