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