Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
funktion
Gäller för:
Databricks SQL
Databricks Runtime
Viktigt!
Den här funktionen är i offentlig förhandsversion och HIPAA-kompatibel.
Under förhandsversionen:
- Den underliggande språkmodellen kan hantera flera språk, men den här AI-funktionen är inställd på engelska.
- Se Funktioner med begränsad regional tillgänglighet för tillgänglighet i AI Functions-regionen.
Funktionen ai_extract() extraherar strukturerade data från text och dokument enligt ett schema som du anger. Du kan använda enkla fältnamn för grundläggande extrahering eller definiera komplexa scheman med kapslade objekt, matriser, typvalidering och fältbeskrivningar för affärsdokument som fakturor, kontrakt och ekonomiska arkiveringar.
Funktionen accepterar text eller VARIANT utdata från andra AI-funktioner som ai_parse_document, vilket aktiverar komposterbara arbetsflöden för dokumentbearbetning från slutpunkt till slutpunkt.
Ett visuellt användargränssnitt som verifierar och itererar resultatet av finns i ai_extract av information.
Krav
Apache 2.0-licens
De underliggande modeller som kan användas just nu är licensierade under Apache 2.0-licensen, Copyright © Apache Software Foundation. Kunderna ansvarar för att säkerställa efterlevnaden av tillämpliga modelllicenser.
Databricks rekommenderar att du granskar dessa licenser för att säkerställa efterlevnad av tillämpliga villkor. Om modeller dyker upp i framtiden som presterar bättre enligt Databricks interna riktmärken kan Databricks ändra modellen (och listan över tillämpliga licenser som tillhandahålls på den här sidan).
Den modell som driver den här funktionen görs tillgänglig med hjälp av API:er för Modellserver foundation-modell. Se Tillämpliga modellvillkor för information om vilka modeller som är tillgängliga på Databricks och de licenser och principer som styr användningen av dessa modeller.
Om modeller dyker upp i framtiden som presterar bättre enligt Databricks interna riktmärken kan Databricks ändra modellerna och uppdatera dokumentationen.
- Den här funktionen är endast tillgänglig i vissa regioner, se TILLGÄNGLIGHET för AI-funktioner.
- Den här funktionen är inte tillgänglig på Azure Databricks KLASSISK SQL.
- Kontrollera prissättningssidan för Databricks SQL.
- I Databricks Runtime 15.1 och senare stöds den här funktionen i Databricks-notebooks, inklusive notebooks som körs som en uppgift i ett Databricks-arbetsflöde.
- Batch-slutsatsdragningsarbetsbelastningar kräver Databricks Runtime 15.4 ML LTS för bättre prestanda.
Syntax
Databricks rekommenderar att du använder version 2 av den här funktionen eftersom den stöder kapslad fältextrahering och beskrivningar.
Version 2 (rekommenderas)
ai_extract(
content VARIANT | STRING,
schema STRING,
[options MAP<STRING, STRING>]
) RETURNS VARIANT
Version 1
ai_extract(
content STRING,
labels ARRAY<STRING>,
[options MAP<STRING, STRING>]
) RETURNS STRUCT
Argument
Version 2 (rekommenderas)
content: EttVARIANTellerSTRINGuttryck. Accepterar antingen:- Råtext som en
STRING - En
VARIANTsom produceras av en annan AI-funktion (till exempelai_parse_document)
- Råtext som en
schema: EnSTRINGliteral som definierar JSON-schemat för extrahering. Schemat kan vara:- Enkelt schema: En JSON-matris med fältnamn (antas vara strängar)
["vendor_name", "invoice_id", "total_amount"] - Avancerat schema: Ett JSON-objekt med typinformation, beskrivningar och kapslade strukturer
- Stöder
string,integer,number,booleanochenumtyper. Utför typverifiering, ogiltiga värden resulterar i ett fel. Maximalt 500 uppräkningsvärden. - Stöder kapslade objekt med hjälp av
"type": "object"med"properties" - Stöder matriser med primitiver eller objekt som använder
"type": "array"med"items" - Valfritt
"description"fält för varje egenskap för att vägleda extraheringskvaliteten
- Stöder
- Enkelt schema: En JSON-matris med fältnamn (antas vara strängar)
options: Ett valfrittMAP<STRING, STRING>som innehåller konfigurationsalternativ:-
version: Versionsväxling för att stödja migrering ("1.0"för v1-beteende,"2.0"för v2-beteende). Standardvärdet baseras på indatatyper, men återgår till"1.0". -
instructions: Global beskrivning av uppgiften och domänen för att förbättra extraheringskvaliteten. Måste vara mindre än 20 000 tecken.
-
Version 1
content: EttSTRINGuttryck som innehåller råtexten.labels: EnARRAY<STRING>literal. Varje element är en typ av entitet som ska extraheras.options: Ett valfrittMAP<STRING, STRING>som innehåller konfigurationsalternativ:-
version: Versionsväxling för att stödja migrering ("1.0"för v1-beteende,"2.0"för v2-beteende). Standardvärdet baseras på indatatyper, men återgår till"1.0".
-
Returer
Version 2 (rekommenderas)
Returnerar en VARIANT innehållande:
{
"response": { ... }, // Extracted data matching the provided schema
"error_message": null // null on success, or error message on failure
}
Fältet response innehåller strukturerade data som extraherats enligt schemat:
- Fältnamn och typer matchar schemadefinitionen
- Kapslade objekt och matriser bevaras i strukturen
- Fält kan vara
nullom de inte hittas - Typverifiering tillämpas för
integer,number,booleanochenumtyper
Om content är NULL, är NULL resultatet.
Version 1
Returnerar en STRUCT plats där varje fält motsvarar en entitetstyp som anges i labels. Varje fält innehåller en sträng som representerar den extraherade entiteten. Om funktionen hittar fler än en kandidat för någon entitetstyp returnerar den bara en.
Exempel
Version 2 (rekommenderas)
Enkelt schema – endast fältnamn
> 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
}
Avancerat schema – med typer och beskrivningar:
> 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
}
Kapslade objekt och matriser:
> 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
}
Komposterbarhet med 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;
Med uppräkningar:
> 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
}
Version 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"}
Begränsningar
Version 2 (rekommenderas)
- Den här funktionen är inte tillgänglig på Azure Databricks KLASSISK SQL.
- Den här funktionen kan inte användas med Vyer.
- Schemat stöder högst 128 fält.
- Fältnamn kan innehålla upp till 150 tecken.
- Scheman stöder upp till 7 nivåer av kapsling för kapslade fält.
- Uppräkningsfält stöder högst 500 värden.
- Typverifiering tillämpas för
integertyperna ,number,booleanochenum. Om ett värde inte matchar den angivna typen returnerar funktionen ett fel. - Den maximala totala kontextstorleken är 128 000 token.
Version 1
- Den här funktionen är inte tillgänglig på Azure Databricks KLASSISK SQL.
- Den här funktionen kan inte användas med Vyer.
- Om mer än en kandidat för en entitetstyp hittas i innehållet returneras endast ett värde.