StarRocks の AI 関数は、大規模言語モデル (LLM) の機能を SQL に直接組み込みます。これにより、外部のパイプラインにデータを移動することなく、あらゆる OLAP クエリの一部としてテキストの分析、変換、生成を実行できます。
12 種類のすべてのビルトイン関数は、型付きの値 (VARCHAR、FLOAT、JSON、または BOOLEAN) を返します。これらの値は、`JOIN`、`GROUP BY`、集約、フィルター操作と自然に組み合わせることができます。生データは StarRocks 内に保持され、関数に渡したフィールドのみがモデルのエンドポイントに送信されます。
各ユーザーは、100 万トークンの無料試用クォータをご利用いただけます。無料試用クォータを超過した後は、実際のトークン消費量に基づいて追加料金が請求されます。料金の詳細については、「AI 関数の料金」をご参照ください。
機能の利点
-
高い同時実行効率:4 つのスレッドで数百の同時 LLM 呼び出しを処理します。クライアント側のアプローチでは同等数のプロセスが必要になりますが、その場合、ワークロードが完了するはるか前に OS スケジューラが機能しなくなる可能性があります。
-
レート制限操作ゼロ:組み込みの 3 段階の保護と DashScope 互換の処理により、お客様は RPM や TPM の仕組みを考慮する必要がありません。
-
データはその場に留まる:パイプライン全体がデータベース内の SQL で実行されるため、ETL は不要で、データ漏洩のリスクもありません。
-
トークンコストの削減:述語プッシュダウンにより呼び出し量が削減され、キャッシュにより重複が排除され、正確なアカウンティングですべてのトークンを追跡します。同じワークロードでも、コストを 30% 以上削減できます。
-
工業グレードの信頼性:行レベルのフォールトトレランス、スマートリトライ、プロファイルベースの可観測性により、数百万行のバッチジョブを無人で実行できます。
ユースケース
|
ユースケース |
関数 |
|
顧客レビューに対するダッシュボード対応の感情スコアリング |
|
|
製品カタログやサポートチケットの自動タグ付け |
|
|
フリーテキストからの構造化フィールド (名前、日付、場所) の抽出 |
|
|
ステージング環境への書き込み前の PII のマスキング |
|
|
ユーザー生成コンテンツ (UGC) のクリーニングと標準化 |
|
|
長いドキュメントやチケットスレッドの要約 |
|
|
多言語レコードの翻訳とローカライズ |
|
|
セマンティック関連性による FAQ や検索結果のランキング |
|
|
一般的な AI テキスト補完とコンテンツ生成 |
|
|
自然言語条件による行のフィルタリング |
|
|
カスタムナレッジベースまたはリソースに対する Q&A の実行 |
|
前提条件
開始する前に、カーネルとネットワークの要件を満たしていることを確認してください:
カーネルバージョンの要件
-
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 のルートテーブルとセキュリティグループポリシーがアウトバウンドトラフィックを許可していることを確認します。
設定の詳細については、「インターネット NAT ゲートウェイ」をご参照ください。
関数リファレンス
すべての関数は標準 SQL で呼び出されます。結果は型付きの値として返され、後続のクエリ式で直接使用できます。
|
関数 |
機能 |
戻り値 |
|
|
テキストを肯定的、否定的、中立、混合、または不明に分類します |
VARCHAR |
|
|
カスタムリストから 1 つのラベルを割り当てます |
JSON |
|
|
名前付きエンティティを抽出し、JSON として返します |
JSON |
|
|
指定された PII カテゴリを |
VARCHAR |
|
|
文法とスペルを修正します |
VARCHAR |
|
|
要約を生成します (オプションで単語数制限あり) |
VARCHAR |
|
|
テキストをターゲット言語に翻訳します |
VARCHAR |
|
|
0 から 1 までのセマンティック類似性スコアを返します |
FLOAT |
|
|
指定されたモデルとプロンプトを使用してコンテンツを生成します |
VARCHAR |
|
|
追加のパラメーター (温度、max_tokens など) を使用してコンテンツを生成します |
VARCHAR |
|
|
自然言語条件を評価して行をフィルタリングします |
BOOLEAN |
|
|
カスタムリソースまたはナレッジベースに対してクエリを実行します |
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(
'John Doe lives in New York. His email is john.doe@example.com.',
['person', 'email']
);
-- 返り値: "[REDACTED] lives in New York. His email is [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 mistakes."
ai_summarize
入力テキストの簡潔な要約を生成します。
構文
ai_summarize(text)
パラメーター
|
パラメーター |
型 |
必須 |
説明 |
|
|
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 |
最初のテキスト |
|
|
VARCHAR |
2 番目のテキスト |
戻り値
0 から 1 の間の FLOAT。スコア 1.0 はテキストが同一であることを意味します。このスコアは主にソートに使用されます。
例
SELECT ai_similarity(
'山でハイキングを楽しむのが好きです。',
'山道を歩くのが大好きです。'
);
-- 戻り値: 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', '20% 割引の夏の自転車セールのためのキャッチーなメール件名を書いてください');
-- 戻り値: "夏のサイクリングカーニバル:期間限定で 20% オフ!"
パラメーター付き:
SELECT ai_complete('qwen-plus', 'クラウドコンピューティングの利点を要約してください', map{'temperature':'0.7', 'max_tokens':'200'});
-- 戻り値: "クラウドコンピューティングは、スケーラブルなリソース、コスト効率などを提供します..."
ai_filter
テキストに対して自然言語条件を評価し、TRUE または FALSE を返します。WHERE 句で行をフィルタリングするのに便利です。
構文
ai_filter(text, condition)
パラメーター
|
パラメーター |
型 |
説明 |
|
|
VARCHAR |
評価対象のテキスト |
|
|
VARCHAR |
フィルター基準を記述する自然言語条件 |
戻り値
BOOLEAN — テキストが条件を満たす場合は 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 関数の動作は 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 などを使用します。
|
パラメーター |
プレースホルダー |
関数 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|