共用方式為


VECTOR_NORMALIZE (Transact-SQL) (預覽)

適用於:Azure SQL 資料庫

注意

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

VECTOR_NORMALIZE 接受向量做為輸入,並傳回正規化向量,這是向量,其長度為 1 在指定的 常態類型中。

這種標準化在各種人工智慧應用程式中非常重要,其中向量代表不同形式的數據,例如視覺內容、文字資訊或音訊訊號。 藉由正規化向量,我們會確保其縮放比例的統一性,這特別適用於依賴測量向量距離或分組和區分數據點的作業。

雖然 Azure OpenAI 的模型提供標準化向量,但還有其他模型和架構,其中向量不會自動正規化。 例如,在通常用於自然語言處理工作的 Gensim 連結庫中,根據預設,向量不一定會正規化。

使用者通常需要手動正規化向量,或使用連結庫所提供的特定函式,以確保向量具有單位長度。

一般而言,使用機器學習模型或向量內嵌時,請務必檢查檔或模型的輸出,以判斷向量是否已正規化。 如果您的應用程式需要正規化,則如果模型預設未提供標準化向量,您可能需要將其實作為個別步驟。

例如,如果您想要使用 Euclidean norm 的標準化向量(這是最常見的常態類型),您可以使用:

SELECT VECTOR_NORMALIZE ( vector_column, 'norm2' )
FROM ...

Syntax

Transact-SQL 語法慣例

VECTOR_NORMALIZE ( vector_column, norm_type )

引數

vector_column

評估為向量的表達式。 這個數據行必須是 向量 數據類型。

norm_type

字串,其名稱為 norm 型別,用來計算指定向量的常態。 支援下列常態類型:

  • norm1 - 1-norm,這是向量元件的絕對值總和。
  • norm2 - 2-norm,也稱為 Euclidean Norm,這是向量元件平方總和的平方根。
  • norminf - 無限常態,這是向量元件絕對值的最大值。

傳回值

結果是向量,其方向與輸入向量相同,但長度為 1。

如果輸入為 NULL,則傳回的結果也會是 NULL

如果norm_type不是有效的常態類型,而且vector_column不是向量數據類型,則會傳回錯誤。

範例

範例 1

正規化向量:

CREATE TABLE dbo.vectors
(
  id INT PRIMARY KEY,
  v VECTOR(3) NOT NULL
);

INSERT INTO dbo.vectors (ID, v) VALUES 
(1, '[0.1, -2, 42]'),
(2, '[2, 0.1, -42]');

SELECT id, VECTOR_NORMALIZE(v, 'norm2') AS nv FROM dbo.vectors; 

範例 2

DECLARE @v VECTOR(3) = '[1, 2, 3]';

SELECT VECTOR_NORMALIZE(@v, 'norm1'), VECTOR_NORMALIZE(@v, 'norminf');