AI_SIMILARITY 是 MaxCompute 提供的 AI Function,通過調用模型判斷兩文本的文本和語義相似性,輸出 0-1 之間的浮點數,值越大代表語義越相似。
命令格式
FLOAT AI_SIMILARITY(
STRING <model_name>,
STRING <version_name>,
STRING <input1>,
STRING <input2>
[, STRING <model_parameters>]
);參數說明
model_name:必填。STRING 類型。待使用的模型名,請參見SQL AI Function。
version_name:必填。STRING 類型。待使用的模型版本名。如果調用預設版本,支援直接輸入
DEFAULT_VERSION。input1:必填。STRING 類型。待計算語義相似性的第一個文本。
input2:必填。STRING 類型。待計算語義相似性的第二個文本。
model_parameters:選填。STRING 類型。支援指定模型調用相關參數 max_tokens、temperature、top_p,格式為
'{"max_tokens": 500, "temperature": 0.6, "top_p": 0.95}'。參數說明如下:max_tokens:設定模型單次調用輸出 token 的最大數量,對於 MaxCompute 公用模型,預設值為 4096。
temperature:介於 0 到 1 之間的值,用於控制模型輸出的隨機性強度。值越大,輸出越具創意和多樣性;值越低,輸出越確定和保守。
top_p:介於 0 到 1 之間的值,用於限定模型選擇的備選標籤範圍。值越大,備選範圍越廣,多樣性越高;值越小,範圍越窄,結果越集中。
傳回值說明
返回範圍為 0-1 之間的 FLOAT 類型數值,表示兩個輸入文本的相似性得分。返回規則如下:
1.0 分表示兩文本完全相同,0.0 分表示兩文本毫無關聯。
input1 或 input2 輸入值為 NULL 時,返回 NULL。
input1 或 input2 非 STRING 類型時,返回報錯。
使用樣本
樣本 1:比較兩段文本的相似性
調用 MaxCompute 提供的公用模型 qwen3-max,計算兩段關於 MaxCompute 的文本之間的語義相似性。
-- 在SQL作業中使用模型計算服務
SET odps.task.major.version=sql_modelstudio;
SET odps.namespace.schema=true;
SELECT AI_SIMILARITY(
bigdata_public_modelset.default.`qwen3-max`,
DEFAULT_VERSION,
'MaxCompute是一個巨量資料計算平台。',
'MaxCompute提供大規模資料處理能力。'
) AS similarity_score;
-- 返回結果
+------------------+
| similarity_score |
+------------------+
| 0.75 |
+------------------+樣本 2:比較多組文本並按相似性排序
調用 MaxCompute 提供的公用模型 Qwen3-4B-GGUF,比較多組文本對並按相似性降序排列。該方法適用於從資料集中識別語義最相關的文本對。
-- 樣本資料
CREATE TABLE text_pairs (
text1 STRING,
text2 STRING
);
INSERT INTO text_pairs VALUES
('雲端運算支援彈性擴充基礎設施。', '企業可以通過雲端服務靈活擴充IT資源。'),
('今天天氣晴朗。', '機器學習演算法需要大量資料集。'),
('資料倉儲儲存歷史資料用於分析。', '資料倉儲提供對大規模資料的分析處理能力。'),
('我喜歡讀書。', '閱讀是我最喜歡的愛好。');
-- 比較多組文本對的語義相似性
SET odps.sql.ai.treat.as.common.model=true;
SET odps.namespace.schema=true;
SELECT
text1,
text2,
AI_SIMILARITY(
bigdata_public_modelset.default.`Qwen3-4B-GGUF`,
DEFAULT_VERSION,
text1,
text2
) AS similarity_score
FROM text_pairs
ORDER BY similarity_score DESC;
-- 返回結果:
+--------------------------------------+--------------------------------------+------------------+
| text1 | text2 | similarity_score |
+--------------------------------------+--------------------------------------+------------------+
| 資料倉儲儲存歷史資料用於分析。 | 資料倉儲提供對大規模資料的分析處理… | 0.92 |
| 我喜歡讀書。 | 閱讀是我最喜歡的愛好。 | 0.88 |
| 雲端運算支援彈性擴充基礎設施。 | 企業可以通過雲端服務靈活擴充IT資源。 | 0.82 |
| 今天天氣晴朗。 | 機器學習演算法需要大量資料集。 | 0.05 |
+--------------------------------------+--------------------------------------+------------------+