StarRocks AI 関数は、大規模言語モデル (LLM) の機能を SQL に直接埋め込むため、データを外部パイプラインに移動させることなく、あらゆる OLAP クエリの一部としてテキスト分析、変換、生成を実行できます。
12 個の組み込み関数はすべて、型付きの値 (VARCHAR、FLOAT、JSON、またはブール値) を返します。これらは JOIN、GROUP BY、集約、フィルター操作と自然に組み合わせられます。生データは StarRocks に残り、関数に渡したフィールドのみがモデルのエンドポイントに送信されます。
各ユーザーは 100万 トークンの無料試用クォータを利用できます。無料試用クォータを超過した分は、実際のトークン消費量に基づいて課金されます。料金詳細については、AI 機能の料金 をご参照ください。
特長
-
高い同時実行効率:4 つのスレッドで、数百もの同時 LLM 呼び出しを実行します。クライアント側のアプローチでは同数のプロセスが必要となり、OS スケジューラはワークロードが完了するはるか前に破綻してしまいます。
-
レート制限の運用不要:組み込みの 3 層保護と DashScope 互換の処理により、RPM や TPM の仕組みを考慮する必要はありません。
-
データの移動不要:パイプライン全体がデータベース内の SQL で実行されるため、ETL は不要で、データ漏えいのリスクもありません。
-
トークンコストの削減:述語プッシュダウンで呼び出し量を削減、キャッシュで重複を排除し、正確なアカウンティングですべてのトークンを追跡します。同じワークロードでも、コストを 30% 以上削減できます。
-
産業レベルの信頼性:行レベルのフォールトトレランス、スマートリトライ、プロファイルベースの可観測性により、100万行のバッチジョブを無人で実行できます。
ユースケース
|
ユースケース |
関数 |
|
顧客レビューに対する、ダッシュボード対応の感情スコアリング |
|
|
製品カタログまたはサポートチケットの自動タグ付け |
|
|
フリーテキストからの構造化フィールド (名前、日付、場所) の抽出 |
|
|
ステージング環境への書き込み前の PII のマスキング |
|
|
ユーザー生成コンテンツのクリーニングと標準化 |
|
|
長文ドキュメントまたはチケットスレッドの要約 |
|
|
多言語レコードの翻訳とローカライズ |
|
|
意味的関連性による、よくある質問または検索結果のランキング |
|
|
一般的な AI テキスト補完とコンテンツ生成 |
|
|
自然言語の条件による行のフィルタリング |
|
|
カスタムナレッジベースまたはリソースに対する Q&A の実行 |
|
サポートされているモデル
StarRocks AI Center は、AI 関数のタイプごとに異なるモデルを割り当てます。現在サポートされているモデルは以下の通りです。
|
機能 |
モデル |
適用可能な関数 |
|
テキスト生成 (LLM) |
|
|
|
翻訳 |
|
|
|
マルチモーダル理解 |
|
|
|
テキスト埋め込み |
|
|
|
マルチモーダル埋め込み |
|
|
-
qwen3-vl-embeddingは、統一されたベクトル空間を生成するため、テキスト埋め込みとマルチモーダル埋め込みの両方に含まれています。テキストベクトルと画像/動画ベクトルをモダリティをまたいで直接比較できるため、クロスモーダル検索に最適です。 -
カスタムモデルには、StarRocks AI Center に登録されたリソースを通じてアクセスします。これらを呼び出すには、
ai_custom_query/ai_custom_embedding/ai_custom_multimodal_embeddingを使用してください。
前提条件
作業を開始する前に、カーネルとネットワークの要件を満たしていることを確認してください。
カーネルバージョンの要件
-
3.3.20-2.1.1 以降
-
3.5.16-2.1.1 以降
ネットワークアクセスの設定
StarRocks の BE ノードが外部のモデルサービスエンドポイントにアクセスするには、アウトバウンドインターネットアクセスが必要です。クラスターが実行されている VPC に NAT Gateway をセットアップしてください。
-
NAT Gateway を作成し、Elastic IP Address (EIP) をバインドします。
-
BE ノードの CIDR ブロックからのトラフィックを NAT Gateway 経由でルーティングする SNAT ルールを追加します。
-
VPC のルートテーブルとセキュリティグループのポリシーで、アウトバウンドトラフィックが許可されていることを確認します。
セットアップの詳細については、「Internet NAT Gateway」をご参照ください。
関数リファレンス
すべての関数は標準 SQL で呼び出されます。結果は型付きの値として返され、後続のクエリ式で直接使用できます。
|
関数 |
機能 |
戻り値 |
|
|
テキストを肯定的、否定的、中立的、混合、または不明に分類します |
VARCHAR |
|
|
カスタムリストから 1 つのラベルを割り当てます |
JSON |
|
|
固有表現を抽出し、JSON として返します |
JSON |
|
|
指定された PII カテゴリを |
VARCHAR |
|
|
文法とスペルを修正します |
VARCHAR |
|
|
要約を生成します (オプションの単語数制限付き) |
VARCHAR |
|
|
テキストをターゲット言語に翻訳します |
VARCHAR |
|
|
0 から 1 までの意味的類似性スコアを返します |
浮動小数点型 |
|
|
指定されたモデルとプロンプトを使用してコンテンツを生成します |
VARCHAR |
|
|
追加のパラメータ (temperature、max_tokens など) を使用してコンテンツを生成します |
VARCHAR |
|
|
自然言語の条件を評価して行をフィルタリングします |
ブール型 |
|
|
カスタムリソースまたはナレッジベースに対してクエリを実行します |
VARCHAR |
関数の詳細
ai_sentiment
入力テキストのセンチメントを分類します。
構文
ai_sentiment(text)
パラメーター
|
パラメーター |
型 |
説明 |
|
|
VARCHAR |
分析対象のテキスト |
戻り値
VARCHAR — 'positive'、'negative'、'neutral'、'mixed'、または 'unknown'。センチメントを特定できない場合は、NULL を返します。
例
単一値のテスト:
SELECT ai_sentiment('I am happy');
-- 戻り値:'positive'
テーブル列に適用:
SELECT
review_id,
review_text,
ai_sentiment(review_text) AS sentiment
FROM customer_reviews
LIMIT 10;
ai_classify
定義したリストから 1 つのラベルを割り当てます。
構文
ai_classify(text, labels)
パラメーター
|
パラメーター |
型 |
説明 |
|
|
VARCHAR |
分類対象のテキスト |
|
|
ARRAY<VARCHAR> |
候補ラベル — 最低 2 個、最大 20 個の要素 |
戻り値
JSON — 分類結果を含むオブジェクト。分類に失敗した場合は NULL を返します。
例
単一値のテスト:
SELECT ai_classify('My password is leaked.', ['urgent', 'not urgent']);
-- 戻り値:{"labels": ["urgent"]}
製品説明の一括タグ付け:
SELECT
product_id,
description,
ai_classify(description, ['clothing', 'shoes', 'accessories', 'furniture']) AS category
FROM products
LIMIT 10;
ai_extract
テキストから名前付きエンティティを抽出し、JSON オブジェクトとして返します。
構文
ai_extract(text, entity_labels)
パラメーター
|
パラメーター |
型 |
説明 |
|
|
VARCHAR |
抽出元のテキスト |
|
|
ARRAY<VARCHAR> |
抽出するエンティティタイプ、例: |
戻り値
キーがエンティティタイプ、値が抽出されたテキストである JSON オブジェクト。
例
SELECT ai_extract(
'田中一郎はニューヨークに住み、Acme 社で働いています。',
['person', 'location', 'organization']
);
-- 戻り値:{"person":"田中一郎","location":"ニューヨーク","organization":"Acme 社"}
ai_redact
指定された PII カテゴリを [REDACTED] で置換します。
構文
ai_redact(text, categories)
パラメーター
|
パラメーター |
型 |
説明 |
|
|
VARCHAR |
編集対象のテキスト |
|
|
ARRAY<VARCHAR> |
マスキング対象の PII カテゴリ。例: |
戻り値
一致したエンティティが [REDACTED] で置換された VARCHAR。
例
単一値のテスト:
SELECT ai_redact(
'田中一郎はニューヨークに住んでいます。彼のメールアドレスは taro.tanaka@example.com です。',
['person', 'email']
);
-- 戻り値:"[REDACTED] はニューヨークに住んでいます。彼のメールアドレスは [REDACTED] です。"
エクスポート前にログテーブル全体の PII を編集:
SELECT
log_id,
ai_redact(log_text, ['person', 'email', 'phone']) AS redacted_log
FROM audit_logs
LIMIT 10;
ai_fix_grammar
テキストの文法とスペルを修正します。
構文
ai_fix_grammar(text)
パラメーター
|
パラメーター |
型 |
説明 |
|
|
VARCHAR |
修正対象のテキスト |
戻り値
文法とスペルが修正された VARCHAR。
例
SELECT ai_fix_grammar('This sentence have some mistake');
-- 戻り値: "This sentence has some mistake"
ai_summarize
入力テキストの簡潔な概要を生成します。
構文
ai_summarize(text[, max_words])
パラメーター
|
パラメーター |
型 |
必須 |
説明 |
|
|
VARCHAR |
はい |
要約対象のテキスト |
戻り値
概要を格納した VARCHAR。
例
SELECT ai_summarize(
'Apache Spark is a unified analytics engine for large-scale data processing...',
10
);
-- 戻り値: "Spark: unified engine for large-scale data processing with APIs and tools."
ai_translate
テキストをある言語から別の言語に翻訳します。
構文
ai_translate(text, source_lang, target_lang)
パラメーター
|
パラメーター |
型 |
説明 |
|
|
VARCHAR |
翻訳対象のテキスト |
|
|
VARCHAR |
ソース言語コード (ISO 639-1) |
|
|
VARCHAR |
ターゲット言語コード (ISO 639-1) |
一般的な言語コード:
|
言語 |
コード |
|
アラビア語 |
|
|
中国語 (簡体字) |
|
|
英語 |
|
|
フランス語 |
|
|
ドイツ語 |
|
|
ヒンディー語 |
|
|
日本語 |
|
|
韓国語 |
|
|
ポルトガル語 |
|
|
ロシア語 |
|
|
スペイン語 |
|
戻り値
翻訳された VARCHAR。
例
SELECT ai_translate('Hello, how are you?', 'en', 'es');
-- 戻り値: "Hola, ¿cómo estás?"
ai_similarity
2 つのテキスト間の意味的類似性を計算します。
構文
ai_similarity(text1, text2)
パラメーター
|
パラメーター |
型 |
説明 |
|
|
VARCHAR |
1 つ目のテキスト |
|
|
VARCHAR |
2 つ目のテキスト |
戻り値
0 から 1 の範囲の FLOAT 値。スコア 1.0 は、テキストが同一であることを意味します。このスコアは主にソートに使用されます。
例
SELECT ai_similarity(
'I enjoy hiking in the mountains.',
'I love walking through mountain trails.'
);
-- 戻り値: 0.82
ai_complete
指定されたモデルを使用してコンテンツを生成します。シンプルな形式とパラメーター付き形式の 2 つのオーバーロードをサポートします。
構文
-- オーバーロード 1: シンプル
ai_complete(model, prompt)
-- オーバーロード 2: パラメーター付き
ai_complete(model, prompt, params)
パラメーター
|
パラメーター |
型 |
説明 |
|
|
VARCHAR |
モデル名 (例: |
|
|
VARCHAR |
コンテンツ生成を指示するプロンプト |
|
|
MAP<VARCHAR, VARCHAR> |
任意。 |
戻り値
VARCHAR — 生成されたテキスト。
例
シンプルな形式:
SELECT ai_complete('qwen-plus', 'Write a catchy email subject for a summer bike sale with a 20% discount');
-- 戻り値: "Summer Cycling Carnival: 20% Off for a Limited Time!"
パラメーター付き:
SELECT ai_complete('qwen-plus', 'Summarize the benefits of cloud computing', map{'temperature':'0.7', 'max_tokens':'200'});
-- 戻り値: "Cloud computing offers scalable resources, cost efficiency..."
ai_filter
自然言語条件をテキストに対して評価し、TRUE または FALSE を返します。WHERE 句での行のフィルタリングに便利です。
構文
ai_filter(text, condition)
パラメーター
|
パラメーター |
型 |
説明 |
|
|
VARCHAR |
評価対象のテキスト |
|
|
VARCHAR |
フィルター条件を記述する自然言語の文。 |
戻り値
ブール値 — テキストが条件を満たす場合は TRUE、それ以外の場合は FALSE。
例
SELECT * FROM reviews WHERE ai_filter(review_text, 'mentions product quality issues');
-- レビューテキストが製品品質の問題について言及している行を返します
ai_custom_query
カスタムリソースまたはナレッジベースに対してクエリを実行します。
構文
ai_custom_query(resource, prompt)
パラメーター
|
パラメーター |
型 |
説明 |
|
|
VARCHAR |
クエリ対象のカスタムリソースまたはナレッジベースの名前 |
|
|
VARCHAR |
リソースに問い合わせるクエリまたは質問 |
戻り値
VARCHAR。
例
SELECT ai_custom_query('my_knowledge_base', 'What is StarRocks?');
-- 戻り値: "StarRocks is a high-performance analytical data warehouse..."
マルチモーダルと AI 集約
ai_complete (理解と生成)
テキスト推論とマルチモーダル理解をサポートする汎用的なモデル呼び出しインターフェースです。StarRocks の AI 関数の中で最も柔軟な関数です。単純なテキスト推論だけでなく、画像、動画、マルチコンテンツフュージョンなどのマルチモーダル入力も処理します。テキスト生成については、テキスト関数のセクションにある ai_complete を参照してください。このセクションでは、マルチモーダル理解と生成について説明します。
マルチモーダル理解と生成
バイナリ画像データ、URL とモダリティ、またはマルチコンテンツ配列を渡して、マルチモーダル LLM を呼び出して理解と生成を行うことができます。
構文
-- バイナリ画像の入力
ai_complete(prompt, binary_image)
ai_complete(prompt, binary_image, extra_params)
ai_complete(model, prompt, binary_image)
ai_complete(model, prompt, binary_image, extra_params)
-- URL + モダリティの入力
ai_complete(model, prompt, input, modality)
ai_complete(model, prompt, input, modality, extra_params)
-- マルチコンテンツフュージョンの入力
ai_complete(model, prompt, contents)
ai_complete(model, prompt, contents, extra_params)
パラメーター
-
model:マルチモーダル生成では明示的に指定することを推奨します (例:qwen-vl-max)。URL/動画およびマルチコンテンツ形式には明確なデフォルトモデルのオーバーロードがないため、モデルを明示的に渡す必要があります。 -
prompt:必須。プロンプト。 -
binary_image:VARBINARY 型のバイナリ画像データ。 -
input:URL または base64 エンコードされた VARCHAR 型の入力。モダリティと組み合わせて使用します。 -
modality:入力のモダリティタイプ。有効な値はimageとtextです。注:videoを渡した場合、現在は NULL が返されます (外部でフレームを抽出し、画像に変換する必要があります)。 -
contents:ARRAY<MAP<VARCHAR,VARCHAR>>型のマルチコンテンツフュージョン入力。1回の呼び出しで複数の画像または混合コンテンツを渡すことができます。 -
extra_params:オプション。MAP 型の生成パラメーター。
戻り値
VARCHAR 型のモデルのレスポンスを返します。
例
-- URL から画像を理解する
SELECT ai_complete('qwen-vl-max',
'この画像の主な内容を説明してください',
'https://bucket.oss-cn-hangzhou.aliyuncs.com/demo.jpg',
'image');
-- バイナリ画像を理解する
SELECT ai_complete('qwen-vl-max', '画像内のテキストを認識してください', image_binary)
FROM scanned_docs LIMIT 10;
-- マルチコンテンツフュージョン (画像とテキスト)
SELECT ai_complete('qwen-vl-max', 'これら 2 つの画像の違いを比較してください',
array[
map{'type': 'image_url', 'image_url': 'https://bucket.oss-cn-hangzhou.aliyuncs.com/img1.jpg'},
map{'type': 'image_url', 'image_url': 'https://bucket.oss-cn-hangzhou.aliyuncs.com/img2.jpg'}
]);
ai_embed
テキストを固定次元のセマンティックベクターに変換します。
構文
ai_embed(text)
ai_embed(model, text)
ai_embed(model, text, extra_params)
パラメーター
-
model:オプション。埋め込みモデル名。 -
text:必須。ベクトル化するテキスト。 -
extra_params:オプション (例:次元)。
戻り値
ARRAY<FLOAT> 型のベクター。テキストが NULL の場合は NULL を返します。
ai_custom_embedding
リソースを使用してカスタム埋め込みモデルを呼び出し、テキストベクターを生成します。
構文
ai_custom_embedding(resource_name, text)
ai_custom_embedding(resource_name, text, extra_params)
戻り値
ARRAY<FLOAT> 型のベクター。
ai_embed_multimodal
画像、動画、またはテキストを統一されたベクトル空間内のセマンティックベクターに変換し、クロスモーダル検索とマルチコンテンツフュージョンをサポートします。
構文
ai_embed_multimodal(input, modality)
ai_embed_multimodal(model, input, modality)
ai_embed_multimodal(binary_image)
ai_embed_multimodal(contents)
パラメーター
-
input:URL または Base64 エンコードされた入力。モダリティと組み合わせて使用します。 -
modality:image、video、またはtextのいずれか。 -
binary_image:バイナリ画像データ、VARBINARY 型。 -
contents:ARRAY<MAP<VARCHAR,VARCHAR>>型のマルチコンテンツフュージョン入力。
戻り値
ARRAY<FLOAT> 型のベクター。
ai_custom_multimodal_embedding
リソースを使用してカスタムマルチモーダル埋め込みモデルを呼び出します。
構文
ai_custom_multimodal_embedding(resource_name, input, modality)
ai_custom_multimodal_embedding(resource_name, binary_image)
ai_custom_multimodal_embedding(resource_name, contents)
戻り値
ARRAY<FLOAT> 型のベクター。
ai_agg
プロンプトを使用して、テキストのグループに対して LLM ベースの集計を実行します (GROUP BY 集計関数)。
構文
ai_agg(text, instruction)
ai_agg(model, text, instruction)
パラメーター
-
text:必須。集計するテキスト列。 -
instruction:必須。集計の指示。
戻り値
VARCHAR 型の集計結果 (グループごとに1つ)。
ai_agg_summary
テキストのグループに対して集約要約を生成します。要約用に ai_agg をラップした便利なラッパーです。
構文
ai_agg_summary(text)
ai_agg_summary(model, text)
戻り値
VARCHAR 型の集約要約 (グループごとに1つ)。
要約の方向性を指定するには、代わりに ai_agg を使用し、instruction パラメーターに特定の要件を記述してください。
ベストプラクティス
基本的な関数を組み合わせることで、1 つの SQL ステートメントでエンドツーエンドの AI データ処理パイプラインを構築できます — 外部サービスにデータをエクスポートする必要はありません。
セマンティックフィルタリング + 分類ルーティング
WHERE 句で ai_filter を使用して意味的に関連するレコードを選択し、次に ai_classify を適用してラベルを割り当て、チケットやレビューの分類ルーティングを可能にします。チケットの自動割り当て、ユーザーフィードバックの分類、および同様のシナリオに最適です。
-- ステップ 1:苦情チケットのセマンティックフィルタリング
-- ステップ 2:苦情の事業部門別分類
SELECT ticket_id, content,
ai_classify(content, ['logistics', 'product quality', 'after-sales', 'pricing dispute']) AS category
FROM tickets
WHERE ai_filter(content, 'the content expresses a customer complaint or dissatisfaction');
マルチモーダル検索データセットの構築
ai_embed_multimodal を使用して画像や動画を大規模にベクトル化し、それらをベクトル列に書き込み、ベクトルインデックスと全文検索インデックスを組み合わせてハイブリッド検索を行います。データがレイクハウスから出されることはありません。ビジュアル製品検索、動画コンテンツ検索、マルチモーダル RAG ナレッジベースの構築に最適です。
-- 製品画像をバッチでベクトル化
INSERT INTO product_vectors (product_id, image_vec)
SELECT product_id,
ai_embed_multimodal('qwen3-vl-embedding', image_url, 'image') AS image_vec
FROM products;
-- テキストによる画像検索:説明に最も類似した製品を検索
SELECT product_id, image_url
FROM product_vectors
ORDER BY cosine_similarity(image_vec,
ai_embed_multimodal('qwen3-vl-embedding', 'red summer dress', 'text'))
DESC LIMIT 10;
顧客/製品レベルのAI要約
GROUP BY 句で ai_agg / ai_agg_summary を使用して、エンティティごとに複数のテキストをプロファイルまたは要約に統合し、分析に適した出力列を生成します。顧客プロファイリング、製品レビューの要約、会議メモの抽出に最適です。
-- 各顧客の問題プロファイルを生成
SELECT customer_id,
ai_agg(content, 'Summarize all tickets for this customer in one sentence, covering main issues and sentiment') AS customer_profile
FROM support_tickets
GROUP BY customer_id;
-- 製品レビューの要約を集約
SELECT product_id,
ai_agg_summary(review_text) AS review_digest
FROM product_reviews
GROUP BY product_id;
分析前のPIIの墨塗り
ai_redact を使用して、分析のためにテキストを保存する前に匿名化することで、コンプライアンスと使いやすさのバランスを取ります。開発/テストデータの準備、監査ログのサニタイズ、プライバシーコンプライアンスのシナリオに最適です。
-- ユーザーフィードバックを墨塗りし、分析テーブルに書き込む
INSERT INTO feedback_anonymized (ticket_id, content_clean)
SELECT ticket_id,
ai_redact(content, ['name', 'phone', 'ID number', 'email', 'bank card']) AS content_clean
FROM user_feedback;
コンテンツのバッチ生成と翻訳
マーケティングコピーのバッチ生成に ai_complete を使用し、ai_translate と組み合わせて多言語ローカライズを行います — これらすべてが SQL 内で完結し、外部ツールは不要です。
-- マーケティングスローガンをバッチ生成し、日本語に翻訳
SELECT product_name,
ai_complete('qwen3.6-plus',
concat('Write a promotional slogan (15 words max) for: ', product_name)) AS slogan,
ai_translate(
ai_complete('qwen3.6-plus',
concat('Write a promotional slogan (15 words max) for: ', product_name)),
'en', 'ja') AS slogan_ja
FROM products
WHERE category = 'summer_new';
クラスター設定
AI 関数の動作は、BE の動的パラメーターで制御します。ADMIN SET CONFIG を使用してランタイムに変更できます。再起動は不要です。
現在の値を表示するには、次のコマンドを実行します。
SELECT * FROM information_schema.be_configs WHERE NAME LIKE 'ai_%';
モデル接続
|
パラメーター |
デフォルト |
説明 |
|
|
|
モデルサービスエンドポイント。任意の OpenAI 互換の Chat/Completions エンドポイントをサポートします。 |
|
|
|
呼び出すモデル。テキスト生成モデルをサポートします。 |
|
|
|
Alibaba Cloud Model Studio の API キーです。「API キーの取得」をご参照ください。 |
|
|
|
すべての AI 関数に適用されるシステムプロンプト。 |
|
|
|
HTTP 接続タイムアウト (単位:ミリ秒、デフォルト:10 秒)。 |
|
|
|
HTTP リクエストタイムアウト (単位:ミリ秒、デフォルト:10 分)。 |
|
|
|
モデルへの同時 HTTP リクエストの最大数。リクエストスループットを制御します。 |
|
|
(OpenAI 互換形式) |
リクエストボディテンプレート。プレースホルダー: |
バッチサイズ
各関数は、リクエストをバッチ単位でモデルに送信します。バッチサイズを大きくすると、モデルの呼び出し回数が減少し、合計応答時間を短縮できます。
|
パラメーター |
デフォルト |
関数 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
プロンプトテンプレート
各関数は、設定可能なプロンプトテンプレートを使用します。テンプレートのプレースホルダーは $0、$1 などです。
|
パラメーター |
プレースホルダー |
関数 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|