Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Funkce
Platí pro:
Databricks SQL
Databricks Runtime
Funkce ai_extract() extrahuje strukturovaná data z textu a dokumentů podle vámi zadaného schématu. Pro základní extrakci můžete použít jednoduché názvy polí nebo definovat složitá schémata s vnořenými objekty, poli, ověřováním typů a popisy polí pro obchodní dokumenty, jako jsou faktury, kontrakty a finanční zařazování.
Funkce přijímá text nebo VARIANT výstup z jiných funkcí umělé inteligence, jako je ai_parse_documentnapříklad povolení kompozovatelných pracovních postupů pro komplexní zpracování dokumentů.
Vizuální uživatelské rozhraní k ověření a iteraci výsledků ai_extractnajdete v tématu Extrakce informací.
Požadavky
Licence Apache 2.0
Základní modely, které lze v tuto chvíli použít, jsou licencované v rámci licence Apache 2.0, Copyright © Apache Software Foundation. Zákazníci zodpovídají za dodržení platných modelových licencí.
Databricks doporučuje zkontrolovat tyto licence, abyste zajistili soulad s platnými podmínkami. Pokud se modely objeví v budoucnu, které fungují lépe podle interních srovnávacích testů Databricks, může Databricks změnit model (a seznam použitelných licencí uvedených na této stránce).
The model powering this function is made available using Model Serving Foundation Model APIs. Informace o modelech dostupných v Databricks a licencích a zásadách, které řídí používání těchto modelů, najdete v příslušných podmínkách modelu .
Pokud se modely objeví v budoucnu, které fungují lépe podle interních srovnávacích testů Databricks, může Databricks změnit modely a aktualizovat dokumentaci.
- Tato funkce je dostupná jenom v některých oblastech, viz dostupnost funkce AI.
- Pro pracovní prostory s doplňkem Rozšířené zabezpečení a dodržování předpisů
- Informace o
ai_extractnajdete v regionální podpoře. - Informace o tom, jak ji povolit ve vašem pracovním prostoru, najdete v tématu Správa Azure Databricks preview.
- Tato funkce není k dispozici ve skladech SQL Pro nebo Classic.
- Vyžaduje se Databricks Runtime 18.2 nebo novější.
- Informace o
- Pro poznámkové bloky a pracovní postupy Databricks se vyžaduje bezserverové výpočetní prostředí.
- Podívejte se na stránku s cenami SQL služby Databricks.
Tip
Databricks doporučuje pro použití verze 2.0 nebo novějšíai_extract. Verze 1.0 je starší rozhraní, které tyto funkce nepodporuje a nedoporučuje se pro nové nebo produkční úlohy.
Verze 2.0 a novější podporuje
- Bohaté schémata JSON s vnořenými objekty, poli, ověřováním typů a popisy polí
- Přijímá funkce upstreamové AI i
STRINGVARIANTvstupy jakoai_parse_document
Verze 2.1 také přidává citace a skóre spolehlivosti.
Pokud chcete verzi připnout explicitně, předejte options => map('version', '2.1')ji .
Syntaxe
Verze 2.1 (doporučeno)
ai_extract(content, schema [, options])
Verze 2
ai_extract(content, schema [, options])
Verze 1 (starší verze)
ai_extract(content, labels [, options])
Argumenty
Verze 2.1 (doporučeno)
content:VARIANTneboSTRINGvýraz. Přijímá buď:- Nezpracovaný text jako
STRING - A
VARIANTvytvořené jinou funkcí umělé inteligence (napříkladai_parse_document)
- Nezpracovaný text jako
schemaSTRING: Literál definující schéma JSON pro extrakci. Schéma může být následující:- Jednoduché schéma: Pole názvů polí JSON (předpokládá se jako řetězce)
"[\"vendor_name\", \"invoice_id\", \"total_amount\"]" - Pokročilé schéma: Objekt JSON s informacemi o typu, popisy a vnořenými strukturami
- Podporuje
string, ,integernumber,boolean, aenumtypy. Provede ověření typu. Hodnoty, které nejsou platné, způsobí chybu. Maximálně 500 hodnot výčtu. - Podporuje vnořené objekty používající s
"type": "object""properties" - Podporuje pole primitiv nebo objektů používajících s
"type": "array""items" - Volitelné
"description"pole pro každou vlastnost pro vodítko kvality extrakce
- Podporuje
- Jednoduché schéma: Pole názvů polí JSON (předpokládá se jako řetězce)
options: VolitelnéMAP<STRING, STRING>obsahující možnosti konfigurace:-
version: Přepnutí verze na podporu migrace ("2.1","2.0","1.0"). Výchozí hodnota je založená na vstupních typech. -
instructions: Globální popis úlohy a domény, aby se zlepšila kvalita extrakce. Musí být kratší než 20 000 znaků. -
enableCitations: Kdyžtrue, výstup pro každé pole ve schématu extrakce obsahuje seznam nula nebo více citací, které v dokumentu extrahovaný výstup. -
enableConfidenceScores: Kdyžtrue, výstup pro každé pole ve schématu extrakce zahrnuje skóre spolehlivosti mezi 0 a 1, které indikuje, jak určitý model je o této hodnotě. Odpovídající prahová hodnota spolehlivosti závisí na vašem konkrétním případu použití a měli byste zvolit omezení, které odpovídá vaší toleranci pro riziko a chybu.
-
Verze 2
content:VARIANTneboSTRINGvýraz. Přijímá buď:- Nezpracovaný text jako
STRING - A
VARIANTvytvořené jinou funkcí umělé inteligence (napříkladai_parse_document)
- Nezpracovaný text jako
schemaSTRING: Literál definující schéma JSON pro extrakci. Schéma může být následující:- Jednoduché schéma: Pole názvů polí JSON (předpokládá se jako řetězce)
"[\"vendor_name\", \"invoice_id\", \"total_amount\"]" - Pokročilé schéma: Objekt JSON s informacemi o typu, popisy a vnořenými strukturami
- Podporuje
string, ,integernumber,boolean, aenumtypy. Provede ověření typu. Hodnoty, které nejsou platné, způsobí chybu. Maximálně 500 hodnot výčtu. - Podporuje vnořené objekty používající s
"type": "object""properties" - Podporuje pole primitiv nebo objektů používajících s
"type": "array""items" - Volitelné
"description"pole pro každou vlastnost pro vodítko kvality extrakce
- Podporuje
- Jednoduché schéma: Pole názvů polí JSON (předpokládá se jako řetězce)
options: VolitelnéMAP<STRING, STRING>obsahující možnosti konfigurace:-
version: Přepnutí verze na podporu migrace ("1.0"pro chování v1,"2.0"pro chování v2). Výchozí hodnota je založena na vstupních typech, ale vrátí se zpět na"1.0". -
instructions: Globální popis úlohy a domény, aby se zlepšila kvalita extrakce. Musí být kratší než 20 000 znaků.
-
Verze 1 (starší verze)
content: VýrazSTRINGobsahující nezpracovaný text.labels: Doslovný výrazARRAY<STRING>. Každý prvek je typ entity, která se má extrahovat.options: VolitelnéMAP<STRING, STRING>obsahující možnosti konfigurace:-
version: Přepnutí verze na podporu migrace ("1.0"pro chování v1,"2.0"pro chování v2). Výchozí hodnota je založená na vstupních typech, ale vrátí se zpět na"1.0".
-
Návraty
Verze 2.1 (doporučeno)
VARIANT Vrátí hodnotu obsahující:
{
"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 version and citation details.
}
Pole response obsahuje strukturovaná data extrahovaná podle schématu:
- Názvy a typy polí odpovídají definici schématu.
- Struktura schématu je zachována v odpovědi: vnořené objekty a pole zachovávají původní tvar. Každé skalární pole ve schématu extrakce má výstupní objekt s následujícími poli:
-
value: Extrahovaná hodnota zadaná podle schématu.Nullpokud pole nelze extrahovat. -
citation_ids: Pouze tehdy, kdyženableCitationsjetrue. Pole ID indexovaných dometadata.citations. -
confidence_score: Pouze tehdy, kdyženableConfidenceScoresjetrue. Plovák mezi 0 a 1.
-
- Ověření typu se vynucuje pro celočíselné, číselné, logické a výčtové typy.
- Pokud
contentjeNULL, výsledek jeNULL.
Pole metadata obsahuje metadata o odpovědi. Pokud enableCitations je true, obsahuje také podrobnosti o každém ID citace v response poli, které trasují extrahované hodnoty zpět do jeho umístění ve vstupu.
V závislosti na typu vstupu můžou být citace jednoho ze dvou typů:
- U nezpracovaných textových vstupů (STRING) je citace rozsahem textu v původním vstupu. Každý objekt v metadata.citations obsahuje:
-
id: Celé číslo odpovídající citation_ids záznamu v poli. -
start: Inkluzivní posun znaků založený na 0 do vstupního řetězce. -
stop: Výhradní posun 0 znaků do vstupního řetězce.
-
- U dokumentů a obrázků PDF (při použití
ai_extractpodřízeného textuai_parse_document) je citace ohraničující rámeček v původním vstupu. Každý objekt obsahujemetadata.citations:-
id: Celé číslo odpovídajícícitation_idspoložce v poli. -
bbox: Pole{coord, page_id}objektů, identické ve tvaru s element.bbox veai_parse_documentvýstupu.coordje souřadnice pixelů na obrázku stránky, jako[x0, y0, x1, y1]; page_idje index stránky založený na 0.
-
Verze 2
VARIANT Vrátí hodnotu obsahující:
{
"response": { ... }, // Extracted data matching the provided schema
"metadata": {
"version": "2.0" // Function version used
},
"error_message": null // null on success, or error message on failure
}
Pole response obsahuje strukturovaná data extrahovaná podle schématu:
- Názvy a typy polí odpovídají definici schématu.
- Vnořené objekty a pole se zachovají ve struktuře.
- Pole můžou být
null, pokud nebyla nalezena. - Ověření typu se vynucuje pro
integer,numberboolean, aenumtypy
Pole metadata obsahuje metadata o odpovědi.
Pokud content je NULL, výsledek je NULL.
Verze 1 (starší verze)
Vrátí, kde STRUCT každé pole odpovídá typu entity zadanému v labels. Každé pole obsahuje řetězec představující extrahovaná entita. Pokud funkce najde více než jednoho kandidáta pro jakýkoli typ entity, vrátí pouze jeden.
Příklady
Verze 2.1 (doporučeno)
Jednoduché schéma – pouze názvy polí
> 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
}
Pokročilé schéma – s typy a popisy
> 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
}
Vnořené objekty a pole
> 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
}
Kompozability with 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;
Použití výčtů
> 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
}
Citace (vstup STRING, citace 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": {
"version": "2.1",
"chunk_type": "span",
"citations": [
{"id": 0, "start": 0, "stop": 29},
{"id": 1, "start": 29, "stop": 60}
]
},
"error_message": null
}
Citace (VARIANT z ai_parse_document, citace 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": {
"version": "2.1",
"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
}
Skóre spolehlivosti
> 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
}
Příklad poznámkového bloku
Následující poznámkový blok poskytuje vizuální ladicí rozhraní pro analýzu výstupů ai_extract citace funkce. Ukazuje, jak vykreslit metadata citace jako fragmenty podřetězců (vstup STRING) nebo ohraničující překrytí rámečku (vstup VARIANT) a spojit ai_extract citace zpět k ai_parse_document prvkům v SQL, abyste mohli označit extrakce s nízkou spolehlivostí pro ruční kontrolu.
Vykreslovací poznámkový blok citace
Verze 2
Jednoduché schéma – pouze názvy polí
> 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"
},
"metadata": {
"version": "2.0"
},
"error_message": null
}
Pokročilé schéma – s typy a popisy
> 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"
},
"metadata": {
"version": "2.0"
},
"error_message": null
}
Vnořené objekty a pole
> 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
}
},
"metadata": {
"version": "2.0"
},
"error": null
}
Kompozability with 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;
Použití výčtů
> 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
},
"metadata": {
"version": "2.0"
},
"error": null
}
Verze 1 (starší verze)
> 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"}
Omezení
Verze 2.1 (doporučeno)
- Tato funkce není k dispozici v Azure Databricks SQL Classic.
- Tuto funkci nelze použít se zobrazeními.
- Schéma podporuje maximálně 128 polí.
- Názvy polí můžou obsahovat až 150 znaků.
- Schémata podporují až sedm úrovní vnoření pro vnořená pole.
- Pole výčtu podporují maximálně 500 hodnot.
- Ověření typu se vynucuje pro
integer,numberboolean, aenumtypy. Pokud hodnota neodpovídá zadanému typu, vrátí funkce chybu. - Maximální celková velikost kontextu je 128 000 tokenů.
Verze 2
- Tato funkce není k dispozici v Azure Databricks SQL Classic.
- Tuto funkci nelze použít se zobrazeními.
- Schéma podporuje maximálně 128 polí.
- Názvy polí můžou obsahovat až 150 znaků.
- Schémata podporují až sedm úrovní vnoření pro vnořená pole.
- Pole výčtu podporují maximálně 500 hodnot.
- Ověření typu se vynucuje pro
integer,numberboolean, aenumtypy. Pokud hodnota neodpovídá zadanému typu, vrátí funkce chybu. - Maximální celková velikost kontextu je 128 000 tokenů.
Verze 1 (starší verze)
- Tato funkce není k dispozici v Azure Databricks SQL Classic.
- Tuto funkci nelze použít se zobrazeními.
- Pokud je v obsahu nalezeno více než jeden kandidát na typ entity, vrátí se pouze jedna hodnota.