全部產品
Search
文件中心

MaxCompute:AI_SIMILARITY

更新時間:May 27, 2026

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             |
+--------------------------------------+--------------------------------------+------------------+