Topik ini menjelaskan cara menggunakan AI_EXTRACT untuk mengekstraksi informasi terstruktur dengan Large Language Models (LLM).
Batasan
Hanya didukung oleh mesin komputasi waktu nyata Ververica Runtime (VVR) 11.4 atau versi yang lebih baru.
Throughput operator Flink yang digunakan dalam pernyataan AI_EXTRACT dibatasi oleh platform layanan model. Jika lalu lintas mencapai batas akses platform, tekanan balik (backpressure) terjadi pada operator tersebut. Pembatasan laju yang parah dapat memicu timeout dan menyebabkan Pekerjaan Flink melakukan restart.
Sintaksis
AI_EXTRACT(
MODEL => MODEL <MODEL NAME>,
INPUT => <INPUT COLUMN NAME>,
EXTRACT_SCHEMA => <EXTRACT SCHEMA>
)Parameter input
Parameter | Tipe data | Deskripsi |
MODEL <MODEL NAME> | MODEL | Nama layanan model yang telah didaftarkan. Untuk informasi selengkapnya, lihat Model Settings untuk mendaftarkan layanan model. Catatan: Tipe output model harus berupa VARIANT. |
<INPUT COLUMN NAME> | STRING | Teks mentah dari mana model mengekstraksi informasi. |
<EXTRACT SCHEMA> | STRING | String JSON yang menjelaskan skema data yang diekstraksi. Catatan: Parameter ini harus berupa konstanta. |
Output
Parameter | Tipe data | Deskripsi |
extracted_json | STRING | Informasi terstruktur yang diekstraksi. |
Contoh
Data uji
id | description |
1 | Xiao Ming is 18 years old and lives in Hangzhou. His phone number is ******. |
Pernyataan uji
Contoh ini membuat model Qwen-Plus dan menggunakan AI_EXTRACT untuk mengekstraksi informasi pengguna.
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, description)
AS VALUES (1, 'Xiao Ming is 18 years old and lives in Hangzhou. His phone number is ******.');
-- Gunakan argumen posisional untuk memanggil AI_EXTRACT
SELECT id, extracted_json
FROM infos,
LATERAL TABLE(
AI_EXTRACT(
MODEL general_model,
description,
'{"name":"string","phone":"string","address":"string","age":"int"}'));
-- Gunakan argumen bernama untuk memanggil AI_EXTRACT
SELECT id, extracted_json
FROM infos,
LATERAL TABLE(
AI_EXTRACT(
MODEL => MODEL general_model,
INPUT => description,
EXTRACT_SCHEMA => '{"name":"string","phone":"string","address":"string","age":"int"}'));Hasil output
id | extracted_json |
1 | {"address":"Hangzhou","age":18,"name":"Xiao Ming","phone":"******"} |