本文為您介紹如何使用AI_MASK通過AI大模型進行資料脫敏。
使用限制
-
僅Realtime Compute引擎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 |
content |
|
1 |
Timmo真的太愛學習了吧,一有空閑就看到他在看學習資料。 |
測試語句
樣本SQL建立千問Qwen-Plus模型,使用AI_MASK進行資料脫敏。
CREATE TEMPORARY MODEL general_model
INPUT (`input` STRING)
OUTPUT (`content` VARIANT)
WITH (
'provider' = 'openai-compat',
'task' = 'chat/completions',
'model' = 'qwen-plus'
);
CREATE TEMPORARY VIEW infos(id, content)
AS VALUES (1, 'Timmo真的太愛學習了吧,一有空閑就看到他在看學習資料。');
-- Use positional argument to call AI_MASK
SELECT id, masked_text, detected_entities
FROM infos,
LATERAL TABLE(
AI_MASK(
MODEL general_model,
content,
ARRAY['name']
));
-- Use named argument to call 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]真的太愛學習了吧,一有空閑就看到他在看學習資料。 |
[{"entity":"Timmo","type":"name"}] |