AI_EXTRACT は、MaxCompute の SQL 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:任意。STRING。`max_tokens`、`temperature`、`top_p` などのモデルパラメーターを指定します。フォーマットは JSON 文字列です:
'{"max_tokens": 500, "temperature": 0.6, "top_p": 0.95}'。max_tokens:1 回のモデル呼び出しで生成されるトークンの最大数。MaxCompute パブリックモデルの場合、デフォルト値は 4,096 です。
temperature:0 から 1 までの値で、出力のランダム性を制御します。値が高いほど、より創造的で多様な出力になり、値が低いほど、より決定的で保守的な出力になります。
top_p:0 から 1 までの値で、モデルが選択できる候補ラベルの範囲を制限します。値が高いほど範囲が広がり多様性が増し、値が低いほど範囲が狭まり、より焦点の合った結果になります。
戻り値
抽出されたすべてのラベルとそれに対応する値を含む JSON 形式の STRING を返します。この関数は以下のルールに従います:
inputが STRING ではない場合、またはlabelsが ARRAY<STRING> ではない場合、エラーを返します。labelsに定数配列が指定され、20 個を超えるラベルが含まれている場合、エラーを返します。inputまたはlabelsが NULL の場合、またはinputが空の文字列 ("") の場合、NULL を返します。inputテキストにlabels配列内のラベルに対応する情報が含まれていない場合、出力においてそのラベルの値は NULL になります。
使用例
例 1: 定数ラベルを使用した情報抽出
MaxCompute の公開モデル qwen3.7-max を呼び出し、指定されたテキストから、指定されたラベルの構造化された情報を抽出します。
SET odps.namespace.schema=true;
SELECT AI_EXTRACT(
bigdata_public_modelset.default.`qwen3.7-max`,
DEFAULT_VERSION,
'Zhang Wei is a 35-year-old software engineer who works at the Alibaba Cloud office 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 |
+----------------+
| {\n "Name": "Zhang Wei",\n "Age": 35,\n "Occupation": "Software Engineer",\n "Company": "Alibaba Cloud",\n "City": "Hangzhou",\n "Year Joined": 2020\n} |
+----------------+例 2: テーブルデータからの情報抽出
MaxCompute の公開モデル deepseek-v4-pro を呼び出し、テーブルに格納されている顧客レビューから製品、問題、センチメント情報を抽出します。
-- サンプルデータ
CREATE TABLE customer_reviews (
review STRING
);
INSERT INTO customer_reviews VALUES
('The new laptop has great battery life, but the keyboard feels a bit off.'),
('Shipping was fast, and the sound quality of the headphones is excellent for the price. Very satisfied.'),
('The monitor had dead pixels, so I returned it. The customer service was helpful, though.');
-- モデルを呼び出し、テーブル内の顧客レビューから構造化情報を抽出します
SET odps.namespace.schema=true;
SELECT
review,
AI_EXTRACT(
bigdata_public_modelset.default.`deepseek-v4-pro`,
DEFAULT_VERSION,
review,
ARRAY('Product', 'Issue', 'Sentiment')
) AS extracted_info
FROM customer_reviews;
-- 結果
+--------+----------------+
| review | extracted_info |
+--------+----------------+
| The new laptop has great battery life, but the keyboard feels a bit off. | {"Product": "Laptop", "Issue": "Keyboard feels off", "Sentiment": "Negative"} |
| Shipping was fast, and the sound quality of the headphones is excellent for the price. Very satisfied. | {"Product": "Headphones", "Issue": null, "Sentiment": "Positive"} |
| The monitor had dead pixels, so I returned it. The customer service was helpful, though. | {"Product": "Monitor", "Issue": "Dead pixels", "Sentiment": "Negative"} |
+--------+----------------+よくある質問
公開モデルのトラブルシューティング
現象:モデルコンピューティングサービスでサポートされている公開モデルを呼び出すと、次のエラーが表示されます:
FAILED: ODPS-0130071:[1,8] Semantic analysis exception - inference quota status check failed, error message: region cn-shanghai not found in inference quota原因:プロジェクトのリージョン (例: cn-shanghai) でモデルコンピューティングサービスが有効化されていません。その結果、MaxCompute は AI 推論リソースにアクセスできません。
解決方法:Alibaba Cloud コンソールにアクセスし、プロジェクトのリージョンでモデルコンピューティングサービスを有効化します。詳細な手順については、「Purchase and use the MaxCompute Model Computing Service」をご参照ください。