Détecte et masque les entités nommées dans un texte à l'aide d'un grand modèle de langage (LLM). Indiquez une colonne de texte et une liste de types d'entités : la fonction renvoie le texte masqué ainsi que la liste des entités détectées.
Limites
Ververica Runtime (VVR) 11.4 ou version ultérieure est requis.
Pour utiliser le service Flink AI (modèles intégrés), vous devez disposer de VVR 11.7 ou d'une version ultérieure et activer le service Flink AI. Pour plus de détails, consultez Flink AI service (built-in models).
Le débit est limité par la politique de limitation de la plateforme de service de modèle. Lorsque le trafic atteint la limite d'accès de la plateforme, une contre-pression se produit dans le job Flink et AI_MASK devient le goulot d'étranglement. Dans les cas graves, les opérateurs peuvent expirer et provoquer le redémarrage du job Flink.
Syntaxe
AI_MASK(
MODEL => MODEL <model_name>,
INPUT => <input_column>,
MASK_ENTITIES => <mask_entities>
)
Les arguments nommés (illustrés ci-dessus) et les arguments positionnels sont pris en charge. Consultez Exemples.
Paramètres
| Paramètre | Type de données | Description |
|---|---|---|
MODEL <model_name> |
MODEL | Nom du service de modèle enregistré. Pour plus d'informations, consultez Model settings. Le modèle doit renvoyer une sortie de type VARIANT. |
<input_column> |
STRING | Colonne de texte à analyser. |
<mask_entities> |
ARRAY\ |
Types d'entités à détecter et à masquer. Ce paramètre doit être une constante. |
Sorties
AI_MASK renvoie une ligne pour chaque ligne d'entrée avec les colonnes suivantes :
| Colonne | Type de données | Description |
|---|---|---|
masked_text |
STRING | Texte d'entrée dont les entités détectées ont été remplacées par des espaces réservés entre crochets, par exemple [NAME]. |
detected_entities |
ARRAY\ |
Entités détectées dans le texte d'entrée. Chaque élément est une chaîne JSON contenant deux champs : entity (le fragment de texte original) et type (l'étiquette du type d'entité), par exemple {"entity":"Timmo","type":"name"}. |
Exemples
L'exemple suivant utilise un modèle intégré Flink, charge des données d'exemple et masque les noms de personnes en utilisant à la fois la syntaxe des arguments positionnels et celle des arguments nommés.
Données de test
| id | content |
|---|---|
| 1 | Timmo really loves studying. He reads study materials whenever he has free time. |
Instruction SQL
CREATE TEMPORARY MODEL general_model
INPUT (`input` STRING)
OUTPUT (`content` VARIANT)
WITH (
'provider' = 'openai-compat',
'task' = 'chat/completions',
'model' = 'qwen3.6-flash'
);
CREATE TEMPORARY VIEW infos(id, content)
AS VALUES (1, 'Timmo really loves studying. He reads study materials whenever he has free time.');
-- Positional argument syntax
SELECT id, masked_text, detected_entities
FROM infos,
LATERAL TABLE(
AI_MASK(
MODEL general_model,
content,
ARRAY['name']
));
-- Named argument syntax
SELECT id, masked_text, detected_entities
FROM infos,
LATERAL TABLE(
AI_MASK(
MODEL => MODEL general_model,
INPUT => content,
MASK_ENTITIES => ARRAY['name']
));
Sortie
| id | masked_text | detected_entities |
|---|---|---|
| 1 | [NAME] really loves studying. He reads study materials whenever he has free time. | [{"entity":"Timmo","type":"name"}] |