AI_SIMILARITY

更新时间:
复制为 MD 格式

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