Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Databricks SQL
Databricks Runtime
Belangrijk
Deze functionaliteit bevindt zich in de openbare preview-fase en is HIPAA-compatibel.
Tijdens de preview:
- Het onderliggende taalmodel kan verschillende talen verwerken, maar deze AI-functie is afgestemd op Engels.
- Zie Functies met beperkte regionale beschikbaarheid voor beschikbaarheid van AI Functions-regio's.
Met de ai_extract() functie worden gestructureerde gegevens geëxtraheerd uit tekst en documenten volgens een schema dat u opgeeft. U kunt eenvoudige veldnamen gebruiken voor basisextractie of complexe schema's definiëren met geneste objecten, matrices, typevalidatie en veldbeschrijvingen voor zakelijke documenten, zoals facturen, contracten en financiële archivering.
De functie accepteert tekst of VARIANT uitvoer van andere AI-functies, zoals ai_parse_documenthet inschakelen van composable werkstromen voor end-to-end documentverwerking.
Zie ai_extract voor een visuele gebruikersinterface voor het valideren en herhalen van de resultaten van.
Vereisten
Apache 2.0-licentie
De onderliggende modellen die op dit moment kunnen worden gebruikt, hebben een licentie onder de Apache 2.0-licentie, Copyright © The Apache Software Foundation. Klanten zijn verantwoordelijk voor het garanderen van naleving van toepasselijke modellicenties.
Databricks raadt aan deze licenties te controleren om ervoor te zorgen dat alle toepasselijke voorwaarden worden nageleefd. Als modellen in de toekomst beter presteren volgens de interne benchmarks van Databricks, kan Databricks het model (en de lijst met toepasselijke licenties op deze pagina) wijzigen.
Het model dat deze functie mogelijk maakt, wordt beschikbaar gesteld met behulp van Model Serving Foundation Model-API's. Zie Toepasselijke modelvoorwaarden voor informatie over welke modellen beschikbaar zijn in Databricks en de licenties en beleidsregels die het gebruik van deze modellen bepalen.
Als er in de toekomst modellen ontstaan die beter presteren volgens de interne benchmarks van Databricks, kan Databricks de modellen wijzigen en de documentatie bijwerken.
- Deze functie is alleen beschikbaar in sommige regio's, zie beschikbaarheid van AI-functies.
- Deze functie is niet beschikbaar in Azure Databricks SQL Classic.
- Controleer de pagina met prijzen voor Databricks SQL.
- In Databricks Runtime 15.1 en hoger wordt deze functie ondersteund in Databricks-notebooks, waaronder notebooks die worden uitgevoerd als een taak in een Databricks-werkstroom.
- Batch-inferentieworkloads vereisen Databricks Runtime 15.4 ML LTS voor betere prestaties.
Syntaxis
Databricks raadt aan om versie 2 van deze functie te gebruiken omdat deze ondersteuning biedt voor geneste veldextractie en beschrijvingen.
Versie 2.1 (aanbevolen)
ai_extract(
content VARIANT | STRING,
schema STRING,
[options MAP<STRING, STRING>]
) RETURNS VARIANT
Versie 2
ai_extract(
content VARIANT | STRING,
schema STRING,
[options MAP<STRING, STRING>]
) RETURNS VARIANT
Versie 1
ai_extract(
content STRING,
labels ARRAY<STRING>,
[options MAP<STRING, STRING>]
) RETURNS STRUCT
Argumenten
Versie 2.1 (aanbevolen)
content: EenVARIANT- ofSTRING-expressie. Accepteert ofwel:- Onbewerkte tekst als een
STRING - Een
VARIANTfunctie die wordt geproduceerd door een andere AI-functie (zoalsai_parse_document)
- Onbewerkte tekst als een
schema: EenSTRINGletterlijke definitie van het JSON-schema voor extractie. Het schema kan het volgende zijn:- Eenvoudig schema: een JSON-matrix met veldnamen (ervan uitgegaan dat het tekenreeksen zijn)
"[\"vendor_name\", \"invoice_id\", \"total_amount\"]" - Geavanceerd schema: een JSON-object met typegegevens, beschrijvingen en geneste structuren
- Ondersteunt
string,integer, ,numberenbooleanenumtypen. Voert typevalidatie uit. Waarden die ongeldig zijn, resulteren in een fout. Maximum van 500 enumwaarden. - Ondersteunt geneste objecten die worden gebruikt
"type": "object"met"properties" - Ondersteunt matrices van primitieven of objecten die worden gebruikt
"type": "array"met"items" - Optioneel
"description"veld voor elke eigenschap om extractiekwaliteit te begeleiden
- Ondersteunt
- Eenvoudig schema: een JSON-matrix met veldnamen (ervan uitgegaan dat het tekenreeksen zijn)
options: Een optioneelMAP<STRING, STRING>met configuratieopties:-
version: Versieswitch voor ondersteuning van migratie ("2.1","2.0","1.0"). De standaardwaarde is gebaseerd op invoertypen. -
instructions: Globale beschrijving van de taak en het domein om de extractiekwaliteit te verbeteren. Moet kleiner zijn dan 20.000 tekens. -
enableCitations: Wanneertruebevat de uitvoer voor elk veld in het extractieschema een lijst met nul of meer bronvermeldingen, wat aangeeft in het document dat de uitvoer is geëxtraheerd. -
enableConfidenceScores: Wanneertruebevat de uitvoer voor elk veld in het extractieschema een betrouwbaarheidsscore tussen 0 en 1, waarmee wordt aangegeven hoe bepaald het model over die waarde gaat. De juiste betrouwbaarheidsdrempel is afhankelijk van uw specifieke use-case en u moet een grens kiezen die overeenkomt met uw tolerantie voor risico's en fouten.
-
Versie 2
content: EenVARIANT- ofSTRING-expressie. Accepteert ofwel:- Onbewerkte tekst als een
STRING - Een
VARIANTfunctie die wordt geproduceerd door een andere AI-functie (zoalsai_parse_document)
- Onbewerkte tekst als een
schema: EenSTRINGletterlijke definitie van het JSON-schema voor extractie. Het schema kan het volgende zijn:- Eenvoudig schema: een JSON-matrix met veldnamen (ervan uitgegaan dat het tekenreeksen zijn)
"[\"vendor_name\", \"invoice_id\", \"total_amount\"]" - Geavanceerd schema: een JSON-object met typegegevens, beschrijvingen en geneste structuren
- Ondersteunt
string,integer, ,numberenbooleanenumtypen. Voert typevalidatie uit. Waarden die ongeldig zijn, resulteren in een fout. Maximum van 500 enumwaarden. - Ondersteunt geneste objecten die worden gebruikt
"type": "object"met"properties" - Ondersteunt matrices van primitieven of objecten die worden gebruikt
"type": "array"met"items" - Optioneel
"description"veld voor elke eigenschap om extractiekwaliteit te begeleiden
- Ondersteunt
- Eenvoudig schema: een JSON-matrix met veldnamen (ervan uitgegaan dat het tekenreeksen zijn)
options: Een optioneelMAP<STRING, STRING>met configuratieopties:-
version: Versieswitch voor ondersteuning van migratie ("1.0"voor v1-gedrag,"2.0"voor v2-gedrag). De standaardwaarde is gebaseerd op invoertypen, maar valt terug op"1.0". -
instructions: Globale beschrijving van de taak en het domein om de extractiekwaliteit te verbeteren. Moet kleiner zijn dan 20.000 tekens.
-
Versie 1
content: EenSTRINGexpressie die de onbewerkte tekst bevat.labels: EenARRAY<STRING>letterlijk object. Elk element is een type entiteit dat moet worden geëxtraheerd.options: Een optioneelMAP<STRING, STRING>met configuratieopties:-
version: Versieswitch voor ondersteuning van migratie ("1.0"voor v1-gedrag,"2.0"voor v2-gedrag). De standaardwaarde is gebaseerd op invoertypen, maar valt terug op"1.0".
-
Retouren
Versie 2.1 (aanbevolen)
Retourneert een VARIANT met:
{
"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.
}
Het response veld bevat de gestructureerde gegevens die zijn geëxtraheerd volgens het schema:
- Veldnamen en -typen komen overeen met de schemadefinitie
- De structuur van het schema blijft behouden in het antwoord: geneste objecten en matrices behouden hun oorspronkelijke vorm. Elk scalaire veld in het extractieschema heeft een uitvoerobject met de volgende velden:
-
value: De geëxtraheerde waarde, getypt volgens het schema.Nullals het veld niet kan worden geëxtraheerd. -
citation_ids: Alleen aanwezig wanneerenableCitations.trueEen matrix van id's geïndexeerd inmetadata.citations. -
confidence_score: Alleen aanwezig wanneerenableConfidenceScores.trueEen float tussen 0 en 1.
-
- Typevalidatie wordt afgedwongen voor gehele getallen, getallen, booleaanse en opsommingstypen
- Als
contentNULLis, dan is het resultaatNULL.
Het metadata veld bevat de metagegevens over het antwoord. Wanneer enableCitations dat het is true, bevat het metadata veld details over elke bronvermeldings-id in het response veld die de geëxtraheerde waarde terug naar de locatie in de invoer traceren.
Afhankelijk van het type invoer kunnen bronvermeldingen van een van de volgende twee typen zijn:
- Voor invoer van onbewerkte tekst (STRING) is een bronvermelding een reeks tekst in de oorspronkelijke invoer. Elk object in metadata.citations bevat:
-
id: Geheel getal dat overeenkomt met een citation_ids vermelding in een veld. -
start: Inclusief tekenverschil op basis van 0 in de invoertekenreeks. -
stop: Exclusieve tekenverschuiving op basis van 0 in de invoertekenreeks.
-
- Voor PDF-documenten en -afbeeldingen (wanneer u
ai_extractdownstream ofai_parse_document) gebruikt, is een bronvermelding een begrenzingsvak in de oorspronkelijke invoer. Elk object inmetadata.citationsbevat:-
id: Geheel getal dat overeenkomt met eencitation_idsitem in een veld. -
bbox: Matrix van{coord, page_id}objecten, identiek in vorm aan element.bbox inai_parse_documentuitvoer.coordis pixelcoördinaten op de pagina-afbeelding, net als[x0, y0, x1, y1]; page_ideen op 0 gebaseerde pagina-index.
-
Versie 2
Retourneert een VARIANT met:
{
"response": { ... }, // Extracted data matching the provided schema
"error_message": null // null on success, or error message on failure
}
Het response veld bevat de gestructureerde gegevens die zijn geëxtraheerd volgens het schema:
- Veldnamen en -typen komen overeen met de schemadefinitie
- Geneste objecten en matrices blijven behouden in de structuur
- Velden kunnen worden gevonden als deze niet worden
nullgevonden - Typevalidatie wordt afgedwongen voor
integer,numberenbooleanenumtypen
Als contentNULL is, dan is het resultaat NULL.
Versie 1
Retourneert een STRUCT locatie waar elk veld overeenkomt met een entiteitstype dat is opgegeven in labels. Elk veld bevat een tekenreeks die de geëxtraheerde entiteit vertegenwoordigt. Als met de functie meer dan één kandidaat voor een entiteitstype wordt gevonden, wordt er slechts één geretourneerd.
Voorbeelden
Versie 2.1 (aanbevolen)
Eenvoudig schema: alleen veldnamen
> 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
}
Geavanceerd schema - met typen en beschrijvingen
> 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
}
Geneste objecten en matrices
> 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
}
Composabiliteit met 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;
Opsommingen gebruiken
> 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
}
Bronvermeldingen (TEKENREEKS-invoer, SPAN-bronvermeldingen)
> 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
}
Bronvermeldingen (VARIANT uit ai_parse_document, BBOX-bronvermeldingen)
> 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
}
Betrouwbaarheidsscores
> 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
}
Voorbeeld van notitieblok
Het volgende notebook biedt een visuele foutopsporingsinterface voor het analyseren van de bronvermeldingsuitvoer van de ai_extract functie. Het laat zien hoe u bronvermeldingsmetagegevens weergeeft als subtekenreeksfragmenten (STRING-invoer) of overlays van begrenzingsvakken (VARIANT-invoer) en bronvermeldingen weer kunt koppelen ai_extract aan ai_parse_document elementen in SQL, zodat u extracties met een lage betrouwbaarheid kunt markeren voor handmatige controle.
Notebook voor bronvermeldingsweergave
Versie 2
Eenvoudig schema: alleen veldnamen
> 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
}
Geavanceerd schema - met typen en beschrijvingen
> 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
}
Geneste objecten en matrices
> 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
}
Composabiliteit met 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;
Opsommingen gebruiken
> 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
}
Versie 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"}
Beperkingen
Versie 2.1 (aanbevolen)
- Deze functie is niet beschikbaar in Azure Databricks SQL Classic.
- Deze functie kan niet worden gebruikt met weergaven.
- Het schema ondersteunt maximaal 128 velden.
- Veldnamen mogen maximaal 150 tekens bevatten.
- Schema's ondersteunen maximaal zeven geneste niveaus voor geneste velden.
- Enum-velden ondersteunen maximaal 500 waarden.
- Typevalidatie wordt afgedwongen voor
integer,numberenbooleanenumtypen. Als een waarde niet overeenkomt met het opgegeven type, retourneert de functie een fout. - De maximale totale contextgrootte is 128.000 tokens.
Versie 2
- Deze functie is niet beschikbaar in Azure Databricks SQL Classic.
- Deze functie kan niet worden gebruikt met weergaven.
- Het schema ondersteunt maximaal 128 velden.
- Veldnamen mogen maximaal 150 tekens bevatten.
- Schema's ondersteunen maximaal zeven geneste niveaus voor geneste velden.
- Enum-velden ondersteunen maximaal 500 waarden.
- Typevalidatie wordt afgedwongen voor
integer,numberenbooleanenumtypen. Als een waarde niet overeenkomt met het opgegeven type, retourneert de functie een fout. - De maximale totale contextgrootte is 128.000 tokens.
Versie 1
- Deze functie is niet beschikbaar in Azure Databricks SQL Classic.
- Deze functie kan niet worden gebruikt met weergaven.
- Als er meer dan één kandidaat voor een entiteitstype wordt gevonden in de inhoud, wordt slechts één waarde geretourneerd.