All Products
Search
Document Center

Realtime Compute for Apache Flink:AI_MASK

Last Updated:Jul 18, 2026

Mendeteksi dan menyamarkan entitas bernama dalam teks menggunakan large language model (LLM). Cukup berikan kolom teks dan daftar jenis entitas—fungsi ini akan mengembalikan teks yang telah disamarkan beserta daftar entitas yang terdeteksi.

Batasan

  • Memerlukan Ververica Runtime (VVR) 11.4 atau lebih baru.

  • Throughput dibatasi oleh kebijakan rate limiting platform layanan model. Ketika lalu lintas mencapai batas akses platform, backpressure terjadi pada Pekerjaan Flink dan AI_MASK menjadi bottleneck. Dalam kasus parah, operator dapat mengalami timeout dan menyebabkan Pekerjaan Flink restart.

Sintaksis

AI_MASK(
  MODEL => MODEL <model_name>,
  INPUT => <input_column>,
  MASK_ENTITIES => <mask_entities>
)

Argumen bernama (seperti di atas) maupun argumen posisional didukung. Lihat Contoh.

Parameter

Parameter Tipe Data Deskripsi
MODEL <model_name> MODEL Nama layanan model yang telah didaftarkan. Untuk informasi selengkapnya, lihat Pengaturan model. Model harus mengembalikan output bertipe VARIANT.
<input_column> STRING Kolom teks yang akan dianalisis.
<mask_entities> ARRAY\<STRING\> Jenis entitas yang akan dideteksi dan disamarkan. Parameter ini harus berupa konstanta.

Output

AI_MASK mengembalikan satu baris per baris input dengan kolom-kolom berikut:

Kolom Tipe Data Deskripsi
masked_text STRING Teks input dengan entitas yang terdeteksi diganti oleh placeholder dalam tanda kurung siku, misalnya [NAME].
detected_entities ARRAY\<STRING\> Entitas yang terdeteksi dalam teks input. Setiap elemen merupakan string JSON dengan dua bidang: entity (fragmen teks asli) dan type (label jenis entitas), misalnya {"entity":"Timmo","type":"name"}.

Contoh

Contoh berikut membuat model Qwen-Plus, memuat data sampel, dan menyamarkan nama orang menggunakan sintaksis argumen posisional maupun bernama.

Data uji

id content
1 Timmo really loves studying. He reads study materials whenever he has free time.

Pernyataan SQL

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 really loves studying. He reads study materials whenever he has free time.');

-- Sintaksis argumen posisional
SELECT id, masked_text, detected_entities
FROM infos,
LATERAL TABLE(
  AI_MASK(
    MODEL general_model,
    content,
    ARRAY['name']
    ));

-- Sintaksis argumen bernama
SELECT id, masked_text, detected_entities
FROM infos,
LATERAL TABLE(
  AI_MASK(
    MODEL => MODEL general_model,
    INPUT => content,
    MASK_ENTITIES => ARRAY['name']
    ));

Ganti placeholder berikut dengan nilai aktual:

Placeholder Deskripsi

Output

id masked_text detected_entities
1 [NAME] really loves studying. He reads study materials whenever he has free time. [{"entity":"Timmo","type":"name"}]