AI_EXTRACT は MaxCompute の AI 関数です。指定されたラベルを使用してテキストから構造化情報を抽出するために、モデルを呼び出します。
構文
STRING AI_EXTRACT(
STRING <model_name>,
STRING <version_name>,
STRING <input>,
ARRAY<STRING> <labels>
[, STRING <model_parameters>]
);パラメータ
model_name: 必須。使用するモデルの名前を指定する STRING です。詳細については、「SQL AI 関数」をご参照ください。
version_name: 必須。使用するモデルのバージョンを指定する STRING です。デフォルトバージョンを使用する場合は、
DEFAULT_VERSIONを指定できます。input: 必須。ソーステキストを含む STRING です。
labels: 必須。抽出するラベルを指定する ARRAY<STRING> です。配列には 1 個から 20 個のラベルを含める必要があります。
-
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 の値で、モデルが考慮する候補ラベルの範囲を制限します。値が大きいほど、範囲が広がり多様性が増し、値が小さいほど、範囲が狭まり焦点が絞られた出力になります。
-
戻り値
抽出されたすべてのラベルとそれらに対応する値を含む JSON 形式の STRING を返します。
inputが STRING でない場合、またはlabelsがARRAY<STRING>でない場合、関数はエラーを返します。labelsが定数で、20 個を超える項目が含まれている場合、関数はエラーを返します。inputまたはlabelsが NULL の場合、またはinputが空の文字列 ("") の場合、関数は NULL を返します。指定されたラベルの値が
inputテキスト内で見つからない場合、返される JSON オブジェクト内のそのラベルの値は NULL になります。
例
例 1: 定数ラベルを使用した抽出
この例では、MaxCompute の qwen3-max パブリックモデルを呼び出して、説明テキストから構造化情報を抽出します。
-- SQL ジョブでモデルコンピューティングサービスを使用
SET odps.task.major.version=sql_modelstudio;
SET odps.namespace.schema=true;
SELECT AI_EXTRACT(
bigdata_public_modelset.default.`qwen3-max`,
DEFAULT_VERSION,
'John Smith is a 35-year-old software engineer working at Alibaba Cloud in Hangzhou. He joined the company in 2020 and specializes in distributed computing.',
ARRAY('name', 'age', 'occupation', 'company', 'city', 'year_joined')
) AS extracted_info;
-- 実行結果:
+------------------------------------------------------------------------------------------------------------------------------------+
| extracted_info |
+------------------------------------------------------------------------------------------------------------------------------------+
| {"name":"John Smith","age":"35","occupation":"software engineer","company":"Alibaba Cloud","city":"Hangzhou","year_joined":"2020"} |
+------------------------------------------------------------------------------------------------------------------------------------+例 2: テーブルデータからの抽出
この例では、MaxCompute の Qwen3-4B-GGUF パブリックモデルを呼び出して、テーブル内の顧客レビューから製品、問題、センチメント情報を抽出します。
-- サンプルデータ
CREATE TABLE customer_reviews (
review STRING
);
INSERT INTO customer_reviews VALUES
('The new laptop has excellent battery life but the keyboard feels cheap.'),
('Delivery was fast. The headphones sound quality is amazing for the price.'),
('Returned the monitor due to dead pixels. Customer service was helpful though.');
-- テーブル内の顧客レビューから構造化情報を抽出
SET odps.sql.ai.treat.as.common.model=true;
SET odps.namespace.schema=true;
SELECT
review,
AI_EXTRACT(
bigdata_public_modelset.default.`Qwen3-4B-GGUF`,
DEFAULT_VERSION,
review,
ARRAY('product', 'issue', 'sentiment')
) AS extracted_info
FROM customer_reviews;
-- 実行結果:
+-----------------------------------------------------------------------------+-------------------------------------------------------------------------+
| review | extracted_info |
+-----------------------------------------------------------------------------+-------------------------------------------------------------------------+
| The new laptop has excellent battery life but the keyboard feels cheap. | {"product":"laptop","issue":"keyboard feels cheap","sentiment":"mixed"} |
| Delivery was fast. The headphones sound quality is amazing for the price. | {"product":"headphones","issue":null,"sentiment":"positive"} |
| Returned the monitor due to dead pixels. Customer service was helpful though. | {"product":"monitor","issue":"dead pixels","sentiment":"negative"} |
+-----------------------------------------------------------------------------+-------------------------------------------------------------------------+