VECTOR_DISTANCE (Transact-SQL) (預覽)
適用於: Azure SQL 資料庫 Azure SQL 受控執行個體
注意
此數據類型處於預覽狀態,而且可能會變更。 請務必閱讀在線服務服務服務等級協定 (SLA) 檔中的預覽使用規定。
使用指定的距離計量計算兩個向量之間的距離。
Syntax
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-002 或 text-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