本トピックでは、AI_MASK を使用して大規模 AI モデルでデータマスキングを実行する方法について説明します。
制限事項
この機能は、Ververica Runtime (VVR) 11.4 以降のバージョンでのみサポートされています。
AI_MASK 文の Flink オペレーターのスループットは、モデルプラットフォームのトラフィックの速度制限によって制限されます。トラフィックがプラットフォームの制限に達すると、Flink ジョブでバックプレッシャーが発生し、このオペレーターがボトルネックになります。深刻な速度制限は、タイムアウトエラーを引き起こし、ジョブが再起動する原因となる可能性があります。
構文
AI_MASK(
MODEL => MODEL <MODEL NAME>,
INPUT => <INPUT COLUMN NAME>,
MASK_ENTITIES => <MASK ENTITIES>
)入力パラメーター
パラメーター | データ型 | 説明 |
MODEL <MODEL NAME> | MODEL | 登録されたモデルサービスの名前。詳細については、「モデル設定」をご参照のうえ、モデルサービスを登録してください。 注意:このモデルの出力タイプは VARIANT である必要があります。 |
<INPUT COLUMN NAME> | STRING | モデルが分析する元のテキスト。 |
<MASK ENTITIES> | ARRAY<STRING> | マスキング対象のエンティティ。 注意:この入力パラメーターは定数である必要があります。 |
出力
パラメーター | データ型 | 説明 |
masked_text | STRING | マスキングされたテキスト。 |
detected_entities | ARRAY<STRING> | 検出されたエンティティ。 |
例
テストデータ
ID | 内容 |
1 | 太郎は勉強が大好きで、空き時間にはいつも読書をしています。 |
テスト文
このサンプル SQL 文では、Qwen-Plus モデルを作成し、AI_MASK を使用してデータマスキングを実行します。
CREATE TEMPORARY MODEL general_model
INPUT (`input` STRING)
OUTPUT (`content` VARIANT)
WITH (
'provider' = 'openai-compat',
'endpoint'='<YOUR ENDPOINT>',
'apiKey' = '<YOUR KEY>',
'model' = 'qwen-plus'
);
CREATE TEMPORARY VIEW infos(id, content)
AS VALUES (1, '田中さんは勉強が大好きです。彼はいつも空き時間に読書をしています。');
-- 位置引数を使用して AI_MASK を呼び出す
SELECT id, masked_text, detected_entities
FROM infos,
LATERAL TABLE(
AI_MASK(
MODEL general_model,
content,
ARRAY['name']
));
-- 名前付き引数を使用して AI_MASK を呼び出す
SELECT id, masked_text, detected_entities
FROM infos,
LATERAL TABLE(
AI_MASK(
MODEL => MODEL general_model,
INPUT => content,
MASK_ENTITIES => ARRAY['name']
));出力結果
id | masked_text | detected_entities |
1 | [NAME] は勉強が大好きです。彼はいつも空き時間に読書をしています。 | [{"エンティティ":"ティモ","タイプ":"名前"}] |