Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks SQL
Databricks Runtime
Penting
Fungsionalitas ini sesuai dengan Pratinjau Umum dan HIPAA.
Selama pratinjau:
- Model bahasa yang mendasar dapat menangani beberapa bahasa, tetapi Fungsi AI ini disetel untuk bahasa Inggris.
- Lihat Fitur dengan ketersediaan regional terbatas untuk mengetahui ketersediaan regional dari Fungsi AI.
Fungsi ini ai_extract() mengekstrak data terstruktur dari teks dan dokumen sesuai dengan skema yang Anda berikan. Anda dapat menggunakan nama bidang sederhana untuk ekstraksi dasar, atau menentukan skema kompleks dengan objek berlapis, array, validasi jenis, dan deskripsi bidang untuk dokumen bisnis seperti faktur, kontrak, dan pengajuan keuangan.
Fungsi ini menerima teks atau VARIANT output dari fungsi AI lainnya seperti ai_parse_document, memungkinkan alur kerja yang dapat disusupi untuk pemrosesan dokumen end-to-end.
Agar UI visual memvalidasi dan melakukan iterasi pada hasil ai_extract, lihat Ekstraksi Informasi.
Persyaratan
Lisensi Apache 2.0
Model dasar yang mungkin digunakan saat ini dilisensikan di bawah Lisensi Apache 2.0, Hak Cipta © Apache Software Foundation. Pelanggan bertanggung jawab untuk memastikan kepatuhan terhadap lisensi model yang berlaku.
Databricks merekomendasikan untuk meninjau lisensi ini untuk memastikan kepatuhan terhadap persyaratan yang berlaku. Jika model muncul di masa depan yang berkinerja lebih baik sesuai dengan tolok ukur internal Databricks, Databricks mungkin mengubah model (dan daftar lisensi yang berlaku yang disediakan di halaman ini).
Model yang mendukung fungsi ini tersedia menggunakan MODEL Model Serving Foundation API. Lihat Ketentuan model yang berlaku untuk informasi tentang model mana yang tersedia di Databricks serta lisensi dan kebijakan yang mengatur penggunaan model tersebut.
Jika model muncul di masa depan yang berkinerja lebih baik sesuai dengan tolok ukur internal Databricks, Databricks dapat mengubah model dan memperbarui dokumentasi.
- Fungsi ini hanya tersedia di beberapa wilayah, lihat Ketersediaan fungsi AI.
- Fungsi ini tidak tersedia di Azure Databricks SQL Classic.
- Periksa halaman harga Databricks SQL.
- Di Databricks Runtime 15.1 ke atas, fungsi ini didukung di notebook Databricks, termasuk notebook yang dijalankan sebagai tugas dalam alur kerja Databricks.
- Beban kerja inferensi batch memerlukan Databricks Runtime 15.4 ML LTS untuk meningkatkan performa.
Sintaks
Databricks merekomendasikan penggunaan versi 2 dari fungsi ini karena mendukung ekstraksi dan deskripsi bidang berlapis.
Versi 2.1 (disarankan)
ai_extract(
content VARIANT | STRING,
schema STRING,
[options MAP<STRING, STRING>]
) RETURNS VARIANT
Versi 2
ai_extract(
content VARIANT | STRING,
schema STRING,
[options MAP<STRING, STRING>]
) RETURNS VARIANT
Versi 1
ai_extract(
content STRING,
labels ARRAY<STRING>,
[options MAP<STRING, STRING>]
) RETURNS STRUCT
Argumen
Versi 2.1 (disarankan)
content: EkspresiVARIANTatauSTRING. Menerima:- Teks mentah sebagai
STRING -
VARIANTDiproduksi oleh fungsi AI lain (sepertiai_parse_document)
- Teks mentah sebagai
schema: HarfiahSTRINGyang menentukan skema JSON untuk ekstraksi. Skemanya dapat berupa:- Skema sederhana: Array JSON dari nama bidang (diasumsikan sebagai string)
"[\"vendor_name\", \"invoice_id\", \"total_amount\"]" - Skema tingkat lanjut: Objek JSON dengan informasi jenis, deskripsi, dan struktur berlapis
-
stringMendukung jenis , ,integernumber,boolean, danenum. Melakukan validasi jenis. Nilai yang tidak valid mengakibatkan kesalahan. Maksimum 500 nilai enum. - Mendukung objek berlapis menggunakan
"type": "object"dengan"properties" - Mendukung array primitif atau objek yang menggunakan
"type": "array"dengan"items" - Bidang opsional
"description"untuk setiap properti untuk memandu kualitas ekstraksi
-
- Skema sederhana: Array JSON dari nama bidang (diasumsikan sebagai string)
options: OpsiMAP<STRING, STRING>konfigurasi opsional yang berisi:-
version: Peralihan versi untuk mendukung migrasi ("2.1","2.0","1.0"). Default didasarkan pada jenis input. -
instructions: Deskripsi global tugas dan domain untuk meningkatkan kualitas ekstraksi. Harus kurang dari 20.000 karakter. -
enableCitations: Ketikatrue, output untuk setiap bidang dalam skema ekstraksi menyertakan daftar nol atau lebih kutipan, yang menunjukkan dalam dokumen output yang diekstrak. -
enableConfidenceScores: Ketikatrue, output untuk setiap bidang dalam skema ekstraksi menyertakan skor keyakinan antara 0 dan 1, menunjukkan seberapa pasti model tentang nilai tersebut. Ambang keyakinan yang sesuai tergantung pada kasus penggunaan spesifik Anda, dan Anda harus memilih cutoff yang selaras dengan toleransi Anda untuk risiko dan kesalahan.
-
Versi 2
content: EkspresiVARIANTatauSTRING. Menerima:- Teks mentah sebagai
STRING -
VARIANTDiproduksi oleh fungsi AI lain (sepertiai_parse_document)
- Teks mentah sebagai
schema: HarfiahSTRINGyang menentukan skema JSON untuk ekstraksi. Skemanya dapat berupa:- Skema sederhana: Array JSON dari nama bidang (diasumsikan sebagai string)
"[\"vendor_name\", \"invoice_id\", \"total_amount\"]" - Skema tingkat lanjut: Objek JSON dengan informasi jenis, deskripsi, dan struktur berlapis
-
stringMendukung jenis , ,integernumber,boolean, danenum. Melakukan validasi jenis. Nilai yang tidak valid mengakibatkan kesalahan. Maksimum 500 nilai enum. - Mendukung objek berlapis menggunakan
"type": "object"dengan"properties" - Mendukung array primitif atau objek yang menggunakan
"type": "array"dengan"items" - Bidang opsional
"description"untuk setiap properti untuk memandu kualitas ekstraksi
-
- Skema sederhana: Array JSON dari nama bidang (diasumsikan sebagai string)
options: OpsiMAP<STRING, STRING>konfigurasi opsional yang berisi:-
version: Peralihan versi untuk mendukung migrasi ("1.0"untuk perilaku v1,"2.0"untuk perilaku v2). Default didasarkan pada jenis input, tetapi kembali ke"1.0". -
instructions: Deskripsi global tugas dan domain untuk meningkatkan kualitas ekstraksi. Harus kurang dari 20.000 karakter.
-
Versi 1
content: EkspresiSTRINGyang berisi teks mentah.labels: Sebuah literalARRAY<STRING>. Setiap elemen adalah jenis entitas yang akan diekstrak.options: OpsiMAP<STRING, STRING>konfigurasi opsional yang berisi:-
version: Peralihan versi untuk mendukung migrasi ("1.0"untuk perilaku v1,"2.0"untuk perilaku v2). Default didasarkan pada jenis input, tetapi akan kembali ke"1.0".
-
Pengembalian
Versi 2.1 (disarankan)
Mengembalikan yang VARIANT berisi:
{
"response": {...}, // Extracted data matching the provided schema. Each leaf is returned as a Field object (see below).
"error_message": null, // null on success, or error message on failure
"metadata": { ... } // Metadata about the response, including unfurled citation ids.
}
Bidang response berisi data terstruktur yang diekstrak sesuai dengan skema:
- Nama dan jenis bidang cocok dengan definisi skema
- Struktur skema dipertahankan dalam respons: objek dan array berlapis menjaga bentuk aslinya. Setiap bidang "skalar" dalam skema ekstraksi memiliki objek output dengan bidang berikut:
-
value: Nilai yang diekstrak, diketik sesuai dengan skema.Nulljika bidang tidak dapat diekstrak. -
citation_ids: Hanya ada ketikaenableCitationsadalahtrue. Array ID yang diindeks ke dalammetadata.citations. -
confidence_score: Hanya ada ketikaenableConfidenceScoresadalahtrue. Float antara 0 dan 1.
-
- Validasi jenis diberlakukan untuk tipe bilangan bulat, angka, boolean, dan enum
- Jika
contentNULL, hasilnya adalahNULL.
Bidang metadata berisi metadata tentang respons. Ketika enableCitations adalah true, metadata bidang berisi detail tentang setiap ID kutipan di response bidang yang melacak nilai yang diekstrak kembali ke lokasinya dalam input.
Tergantung pada jenis input, kutipan dapat berupa salah satu dari dua jenis:
- Untuk input teks mentah (STRING), kutipan adalah rentang teks dalam input asli. Setiap objek dalam metadata.citations berisi:
-
id: Bilangan bulat yang cocok dengan entri citation_ids pada bidang. -
start: Offset karakter berbasis 0 inklusif ke dalam string input. -
stop: Offset karakter berbasis 0 eksklusif ke dalam string input.
-
- Untuk dokumen dan gambar PDF (saat menggunakan
ai_extracthilir ), kutipanai_parse_documentadalah kotak pembatas dalam input asli. Setiap objek dalammetadata.citationsberisi:-
id: Bilangan bulat yang cocok dengancitation_idsentri pada bidang. -
bbox: Array{coord, page_id}objek, identik dalam bentuk ke element.bbox dalamai_parse_documentoutput.coordadalah koordinat piksel pada gambar halaman seperti[x0, y0, x1, y1]; page_idindeks halaman berbasis 0.
-
Versi 2
Mengembalikan yang VARIANT berisi:
{
"response": { ... }, // Extracted data matching the provided schema
"error_message": null // null on success, or error message on failure
}
Bidang response berisi data terstruktur yang diekstrak sesuai dengan skema:
- Nama dan jenis bidang cocok dengan definisi skema
- Objek dan array berlapis dipertahankan dalam struktur
- Bidang mungkin
nulljika tidak ditemukan - Validasi jenis diberlakukan untuk
integer, ,numberboolean, danenumjenis
Jika contentNULL, hasilnya adalah NULL.
Versi 1
Mengembalikan di STRUCT mana setiap bidang sesuai dengan jenis entitas yang ditentukan dalam labels. Setiap bidang berisi string yang mewakili entitas yang diekstrak. Jika fungsi menemukan lebih dari satu kandidat untuk jenis entitas apa pun, fungsi hanya mengembalikan satu.
Contoh
Versi 2.1 (disarankan)
Skema sederhana - nama bidang saja
> SELECT ai_extract(
'Invoice #12345 from Acme Corp for $1,250.00 dated 2024-01-15',
'["invoice_id", "vendor_name", "total_amount", "invoice_date"]',
options => map('version', '2.1')
);
{
"response": {
"invoice_id": {"value": "12345"},
"vendor_name": {"value": "Acme Corp"},
"total_amount": {"value": "1250.00"},
"invoice_date": {"value": "2024-01-15"}
},
"error_message": null
}
Skema tingkat lanjut - dengan jenis dan deskripsi
> SELECT ai_extract(
'Invoice #12345 from Acme Corp for $1,250.00 dated 2024-01-15',
'{
"invoice_id": {"type": "string", "description": "Unique invoice identifier"},
"vendor_name": {"type": "string", "description": "Legal business name"},
"total_amount": {"type": "number", "description": "Total invoice amount"},
"invoice_date": {"type": "string", "description": "Date in YYYY-MM-DD format"}
}',
options => map('version', '2.1')
);
{
"response": {
"invoice_id": {"value": "12345"},
"vendor_name": {"value": "Acme Corp"},
"total_amount": {"value": 1250.00},
"invoice_date": {"value": "2024-01-15"}
},
"error_message": null
}
Objek dan array berlapis
> SELECT ai_extract(
'Invoice #12345 from Acme Corp
Line 1: Widget A, qty 10, $50.00 each
Line 2: Widget B, qty 5, $100.00 each
Subtotal: $1,000.00, Tax: $80.00, Total: $1,080.00',
'{
"invoice_header": {
"type": "object",
"properties": {
"invoice_id": {"type": "string"},
"vendor_name": {"type": "string"}
}
},
"line_items": {
"type": "array",
"description": "List of invoiced products",
"items": {
"type": "object",
"properties": {
"description": {"type": "string"},
"quantity": {"type": "integer"},
"unit_price": {"type": "number"}
}
}
},
"totals": {
"type": "object",
"properties": {
"subtotal": {"type": "number"},
"tax_amount": {"type": "number"},
"total_amount": {"type": "number"}
}
}
}',
options => map('version', '2.1')
);
{
"response": {
"invoice_header": {
"invoice_id": {"value": "12345"},
"vendor_name": {"value": "Acme Corp"}
},
"line_items": [
{"description": {"value": "Widget A"}, "quantity": {"value": 10}, "unit_price": {"value": 50.00}},
{"description": {"value": "Widget B"}, "quantity": {"value": 5}, "unit_price": {"value": 100.00}}
],
"totals": {
"subtotal": {"value": 1000.00},
"tax_amount": {"value": 80.00},
"total_amount": {"value": 1080.00}
}
},
"error_message": null
}
Komposabilitas dengan ai_parse_document
> WITH parsed_docs AS (
SELECT
path,
ai_parse_document(
content,
MAP('version', '2.0')
) AS parsed_content
FROM READ_FILES('/Volumes/finance/invoices/', format => 'binaryFile')
)
SELECT
path,
ai_extract(
parsed_content,
'["invoice_id", "vendor_name", "total_amount"]',
MAP('version', '2.1', 'instructions', 'These are vendor invoices.')
) AS invoice_data
FROM parsed_docs;
Menggunakan enum
> SELECT ai_extract(
'Invoice #12345 from Acme Corp, amount: $1,250.00 USD',
'{
"invoice_id": {"type": "string"},
"vendor_name": {"type": "string"},
"total_amount": {"type": "number"},
"currency": {
"type": "enum",
"labels": ["USD", "EUR", "GBP", "CAD", "AUD"],
"description": "Currency code"
},
"payment_terms": {"type": "string"}
}',
options => map('version', '2.1')
);
{
"response": {
"invoice_id": {"value": "12345"},
"vendor_name": {"value": "Acme Corp"},
"total_amount": {"value": 1250.00},
"currency": {"value": "USD"},
"payment_terms": {"value": null}
},
"error_message": null
}
Kutipan (input STRING, kutipan SPAN)
> SELECT ai_extract(
'Invoice #12345 from Acme Corp for $1,250.00 dated 2024-01-15',
'{
"invoice_id": {"type": "string", "description": "Unique invoice identifier"},
"vendor_name": {"type": "string", "description": "Legal business name"},
"total_amount": {"type": "number", "description": "Total invoice amount"},
"invoice_date": {"type": "string", "description": "Date in YYYY-MM-DD format"}
}',
options => map(
'version', '2.1',
'enableCitations', 'true'
)
);
{
"response": {
"invoice_id": {"citation_ids": [0], "value": "12345"},
"vendor_name": {"citation_ids": [0], "value": "Acme Corp"},
"total_amount": {"citation_ids": [1], "value": 1250.00},
"invoice_date": {"citation_ids": [1], "value": "2024-01-15"}
},
"metadata": {
"chunk_type": "span",
"citations": [
{"id": 0, "start": 0, "stop": 29},
{"id": 1, "start": 29, "stop": 60}
]
},
"error_message": null
}
Kutipan (VARIAN dari ai_parse_document, kutipan BBOX)
> WITH parsed AS (
SELECT ai_parse_document(
content,
map('imageOutputPath', '/Volumes/main/default/parsed_images/') // necessary for rendering bboxes
) AS doc
FROM READ_FILES('/Volumes/main/default/invoices/invoice.pdf', format => 'binaryFile')
)
SELECT ai_extract(
doc,
'{"invoice_id":{"type":"string"}, "total_amount":{"type":"number"}}',
options => map('version','2.1','enableCitations','true')
) AS extracted
FROM parsed;
{
"response": {
"invoice_id": {"citation_ids": [0], "value": "12345"},
"total_amount": {"citation_ids": [1], "value": 1250.00}
},
"metadata": {
"chunk_type": "bbox",
"citations": [
{"id": 0, "bbox": [{"coord": [120, 80, 240, 110], "page_id": 0}]},
{"id": 1, "bbox": [{"coord": [400, 500, 560, 530], "page_id": 0}]}
],
"pages": [{"id": 0, "image_uri": "/Volumes/main/default/parsed_images/6077ca79...f8efdb2ed05.jpg"}]
},
"error_message": null
}
Skor keyakinan
> SELECT ai_extract(
'Invoice #12345 from Acme Corp for $1,250.00 dated 2024-01-15',
'{
"invoice_id": {"type": "string", "description": "Unique invoice identifier"},
"vendor_name": {"type": "string", "description": "Legal business name"},
"total_amount": {"type": "number", "description": "Total invoice amount"},
"invoice_date": {"type": "string", "description": "Date in YYYY-MM-DD format"}
}',
options => map(
'version', '2.1',
'enableConfidenceScores', 'true'
)
);
{
"response": {
"invoice_id": {"confidence_score": 0.95, "value": "12345"},
"vendor_name": {"confidence_score": 0.62, "value": "Acme Corp"},
"total_amount": {"confidence_score": 1.0, "value": 1250.00},
"invoice_date": {"confidence_score": 0.99, "value": "2024-01-15"}
},
"error_message": null
}
Contoh buku catatan
Notebook berikut menyediakan antarmuka penelusuran kesalahan visual untuk menganalisis output kutipan ai_extract fungsi. Ini menunjukkan cara merender metadata kutipan sebagai cuplikan substring (input STRING) atau overlay kotak pembatas (input VARIAN), dan menggabungkan ai_extract kutipan kembali ke ai_parse_document elemen di SQL sehingga Anda dapat menandai ekstraksi keyakinan rendah untuk tinjauan manual.
Buku catatan penyajian kutipan
Versi 2
Skema sederhana - nama bidang saja
> SELECT ai_extract(
'Invoice #12345 from Acme Corp for $1,250.00 dated 2024-01-15',
'["invoice_id", "vendor_name", "total_amount", "invoice_date"]'
);
{
"response": {
"invoice_id": "12345",
"vendor_name": "Acme Corp",
"total_amount": "1250.00",
"invoice_date": "2024-01-15"
},
"error_message": null
}
Skema tingkat lanjut - dengan jenis dan deskripsi
> SELECT ai_extract(
'Invoice #12345 from Acme Corp for $1,250.00 dated 2024-01-15',
'{
"invoice_id": {"type": "string", "description": "Unique invoice identifier"},
"vendor_name": {"type": "string", "description": "Legal business name"},
"total_amount": {"type": "number", "description": "Total invoice amount"},
"invoice_date": {"type": "string", "description": "Date in YYYY-MM-DD format"}
}'
);
{
"response": {
"invoice_id": "12345",
"vendor_name": "Acme Corp",
"total_amount": 1250.00,
"invoice_date": "2024-01-15"
},
"error_message": null
}
Objek dan array berlapis
> SELECT ai_extract(
'Invoice #12345 from Acme Corp
Line 1: Widget A, qty 10, $50.00 each
Line 2: Widget B, qty 5, $100.00 each
Subtotal: $1,000.00, Tax: $80.00, Total: $1,080.00',
'{
"invoice_header": {
"type": "object",
"properties": {
"invoice_id": {"type": "string"},
"vendor_name": {"type": "string"}
}
},
"line_items": {
"type": "array",
"description": "List of invoiced products",
"items": {
"type": "object",
"properties": {
"description": {"type": "string"},
"quantity": {"type": "integer"},
"unit_price": {"type": "number"}
}
}
},
"totals": {
"type": "object",
"properties": {
"subtotal": {"type": "number"},
"tax_amount": {"type": "number"},
"total_amount": {"type": "number"}
}
}
}'
);
{
"response": {
"invoice_header": {
"invoice_id": "12345",
"vendor_name": "Acme Corp"
},
"line_items": [
{"description": "Widget A", "quantity": 10, "unit_price": 50.00},
{"description": "Widget B", "quantity": 5, "unit_price": 100.00}
],
"totals": {
"subtotal": 1000.00,
"tax_amount": 80.00,
"total_amount": 1080.00
}
},
"error": null
}
Komposabilitas dengan ai_parse_document
> WITH parsed_docs AS (
SELECT
path,
ai_parse_document(
content,
MAP('version', '2.0')
) AS parsed_content
FROM READ_FILES('/Volumes/finance/invoices/', format => 'binaryFile')
)
SELECT
path,
ai_extract(
parsed_content,
'["invoice_id", "vendor_name", "total_amount"]',
MAP('instructions', 'These are vendor invoices.')
) AS invoice_data
FROM parsed_docs;
Menggunakan enum
> SELECT ai_extract(
'Invoice #12345 from Acme Corp, amount: $1,250.00 USD',
'{
"invoice_id": {"type": "string"},
"vendor_name": {"type": "string"},
"total_amount": {"type": "number"},
"currency": {
"type": "enum",
"labels": ["USD", "EUR", "GBP", "CAD", "AUD"],
"description": "Currency code"
},
"payment_terms": {"type": "string"}
}'
);
{
"response": {
"invoice_id": "12345",
"vendor_name": "Acme Corp",
"total_amount": 1250.00,
"currency": "USD",
"payment_terms": null
},
"error": null
}
Versi 1
> SELECT ai_extract(
'John Doe lives in New York and works for Acme Corp.',
array('person', 'location', 'organization')
);
{"person": "John Doe", "location": "New York", "organization": "Acme Corp."}
> SELECT ai_extract(
'Send an email to jane.doe@example.com about the meeting at 10am.',
array('email', 'time')
);
{"email": "jane.doe@example.com", "time": "10am"}
Keterbatasan
Versi 2.1 (disarankan)
- Fungsi ini tidak tersedia di Azure Databricks SQL Classic.
- Fungsi ini tidak dapat digunakan dengan tampilan.
- Skema ini mendukung maksimum 128 bidang.
- Nama bidang dapat berisi hingga 150 karakter.
- Skema mendukung hingga tujuh tingkat bersarang untuk bidang berlapis.
- Bidang Enum mendukung maksimal 500 nilai.
- Validasi jenis diberlakukan untuk
integerjenis , ,numberboolean, danenum. Jika nilai tidak cocok dengan jenis yang ditentukan, fungsi mengembalikan kesalahan. - Ukuran konteks total maksimum adalah 128.000 token.
Versi 2
- Fungsi ini tidak tersedia di Azure Databricks SQL Classic.
- Fungsi ini tidak dapat digunakan dengan tampilan.
- Skema ini mendukung maksimum 128 bidang.
- Nama bidang dapat berisi hingga 150 karakter.
- Skema mendukung hingga tujuh tingkat bersarang untuk bidang berlapis.
- Bidang Enum mendukung maksimal 500 nilai.
- Validasi jenis diberlakukan untuk
integerjenis , ,numberboolean, danenum. Jika nilai tidak cocok dengan jenis yang ditentukan, fungsi mengembalikan kesalahan. - Ukuran konteks total maksimum adalah 128.000 token.
Versi 1
- Fungsi ini tidak tersedia di Azure Databricks SQL Classic.
- Fungsi ini tidak dapat digunakan dengan Tampilan.
- Jika lebih dari satu kandidat untuk jenis entitas ditemukan dalam konten, hanya satu nilai yang dikembalikan.