AI_SIMILARITY は MaxCompute の AI 関数です。モデルを呼び出して 2 つのテキスト間のテキスト類似性とセマンティック類似性を判定し、0〜1 の FLOAT 値を返します。値が大きいほど類似度が高いことを示します。
構文
FLOAT AI_SIMILARITY(
STRING <model_name>,
STRING <version_name>,
STRING <input1>,
STRING <input2>
[, STRING <model_parameters>]
);パラメータ
model_name:必須。使用するモデル名を指定する文字列です。詳細については、「SQL AI functions」をご参照ください。
version_name:必須。使用するモデルバージョン名を指定する文字列です。デフォルトバージョンを呼び出す場合は、
DEFAULT_VERSIONを使用できます。input1:必須。セマンティック類似性の計算に使用する 1 つ目のテキストを表す文字列です。
input2:必須。セマンティック類似性の計算に使用する 2 つ目のテキストを表す文字列です。
-
model_parameters:任意。モデルパラメーターを JSON 形式で指定する文字列です。
max_tokens、temperature、top_pなどを指定できます。例:'{"max_tokens": 500, "temperature": 0.6, "top_p": 0.95}'。-
max_tokens:1 回のモデル呼び出しで生成されるトークンの最大数です。MaxCompute パブリックモデルのデフォルト値は 4096 です。
-
temperature:0 ~ 1 の値で、モデルの出力のランダム性を制御します。値が大きいほど、より創造的で多様な出力になり、値が小さいほど、より確定的で保守的な出力になります。
-
top_p:0 ~ 1 の値で、モデルが考慮する候補ラベルの範囲を制限します。値が大きいほど、範囲が広がり多様性が増し、値が小さいほど、範囲が狭まり焦点が絞られた出力になります。
-
戻り値
2 つの入力テキストの類似度スコアを表す、0〜1 の FLOAT 値を返します。戻り値のルールは次のとおりです:
スコアが 1.0 の場合、2 つのテキストは同一です。スコアが 0.0 の場合、2 つのテキストは完全に無関係です。
input1またはinput2が NULL の場合、関数は NULL を返します。input1またはinput2が STRING ではない場合、関数はエラーを返します。
例
例 1:テキスト類似性の比較
MaxCompute が提供する公開モデル qwen3-max を呼び出し、MaxCompute に関する 2 つのテキスト間のセマンティック類似性を計算します。
-- 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 is a big data computing platform.',
'MaxCompute provides large-scale data processing capabilities.'
) AS similarity_score;
-- 結果:
+------------------+
| similarity_score |
+------------------+
| 0.85 |
+------------------+例 2:テキストペアの比較と並べ替え
MaxCompute が提供する公開モデル Qwen3-4B-GGUF を呼び出し、複数のテキストペアを比較して、類似度の降順で並べ替えます。この方法は、データセットから意味的に最も関連性の高いテキストペアを特定する場合に適しています。
-- サンプルデータ
CREATE TABLE text_pairs (
text1 STRING,
text2 STRING
);
INSERT INTO text_pairs VALUES
('Cloud computing enables scalable infrastructure.', 'Businesses can scale their IT resources using cloud services.'),
('The weather is sunny today.', 'Machine learning algorithms require large datasets.'),
('Data warehousing stores historical data for analysis.', 'A data warehouse provides analytical processing of large data volumes.'),
('I enjoy reading books.', 'Reading is my favorite hobby.');
-- セマンティック類似性について複数のテキストペアを比較
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 |
+------------------------------------------------------+-----------------------------------------------------------------------+------------------+
| Cloud computing enables scalable infrastructure. | Businesses can scale their IT resources using cloud services. | 0.92 |
| Data warehousing stores historical data for analysis.| A data warehouse provides analytical processing of large data volumes.| 0.88 |
| I enjoy reading books. | Reading is my favorite hobby. | 0.82 |
| The weather is sunny today. | Machine learning algorithms require large datasets. | 0.05 |
+------------------------------------------------------+-----------------------------------------------------------------------+------------------+