Udostępnij za pośrednictwem


Funkcja ai_extract

Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime

Ważne

Ta funkcja jest w publicznej wersji zapoznawczej i zgodna ze standardem HIPAA.

Podczas korzystania z wersji zapoznawczej:

  • Podstawowy model językowy może obsługiwać kilka języków, ale ta funkcja sztucznej inteligencji jest dostrojona do języka angielskiego.
  • Zobacz Funkcje z ograniczoną dostępnością regionalną w kontekście dostępności AI Functions w regionach.

Funkcja ai_extract() wyodrębnia dane ustrukturyzowane z tekstu i dokumentów zgodnie z dostarczonym schematem. Można użyć prostych nazw pól do wyodrębniania podstawowego lub zdefiniować złożone schematy z zagnieżdżonymi obiektami, tablicami, walidacją typu i opisami pól dla dokumentów biznesowych, takich jak faktury, kontrakty i zgłoszenia finansowe.

Funkcja akceptuje tekst lub VARIANT dane wyjściowe z innych funkcji sztucznej inteligencji, takich jak ai_parse_document, umożliwiając komponowalne przepływy pracy na potrzeby kompleksowego przetwarzania dokumentów.

Aby interfejs użytkownika wizualizacji weryfikował wyniki i iterować je, ai_extractzobacz Wyodrębnianie informacji.

Wymagania

Licencja apache 2.0

Podstawowe modele, które mogą być używane w tej chwili, są licencjonowane w ramach licencji apache 2.0, Copyright © The Apache Software Foundation. Klienci są odpowiedzialni za zapewnienie zgodności z odpowiednimi licencjami modelu.

Usługa Databricks zaleca przejrzenie tych licencji w celu zapewnienia zgodności z dowolnymi odpowiednimi warunkami. Jeśli modele pojawią się w przyszłości, które działają lepiej zgodnie z wewnętrznymi testami porównawczymi usługi Databricks, usługa Databricks może zmienić model (oraz listę odpowiednich licencji dostępnych na tej stronie).

Model obsługujący tę funkcję jest udostępniany przy użyciu interfejsów API modelu obsługującego model. Zobacz Odpowiednie terminy dotyczące modelu , aby uzyskać informacje na temat modeli dostępnych w usłudze Databricks oraz licencjach i zasadach, które regulują korzystanie z tych modeli.

Jeśli modele pojawią się w przyszłości, które działają lepiej zgodnie z wewnętrznymi testami porównawczymi usługi Databricks, usługa Databricks może zmienić modele i zaktualizować dokumentację.

  • Ta funkcja jest dostępna tylko w niektórych regionach. Zobacz Dostępność funkcji sztucznej inteligencji.
  • Ta funkcja nie jest dostępna w usłudze Azure Databricks SQL Classic.
  • Sprawdź stronę cennika usługi Databricks SQL.
  • W środowisku Databricks Runtime 15.1 lub nowszym ta funkcja jest obsługiwana w notesach usługi Databricks, w tym notesach uruchamianych jako zadanie w przepływie pracy usługi Databricks.
  • Obciążenia związane z wnioskowaniem wsadowym wymagają korzystania ze środowiska Databricks Runtime 15.4 ML LTS w celu poprawy wydajności.

Składnia

Usługa Databricks zaleca używanie wersji 2 tej funkcji, ponieważ obsługuje wyodrębnianie i opisy pól zagnieżdżonych.

ai_extract(
    content VARIANT | STRING,
    schema STRING,
    [options MAP<STRING, STRING>]
) RETURNS VARIANT

Wersja 1

ai_extract(
    content STRING,
    labels ARRAY<STRING>,
    [options MAP<STRING, STRING>]
) RETURNS STRUCT

Argumenty

  • content: wyrażenie VARIANT lub STRING. Akceptuje albo:

    • Nieprzetworzonego tekstu jako STRING
    • Utworzona VARIANT przez inną funkcję sztucznej inteligencji (na przykład ai_parse_document)
  • schema STRING: literał definiujący schemat JSON na potrzeby wyodrębniania. Schemat może być:

    • Prosty schemat: tablica JSON nazw pól (zakładana jako ciągi)
      ["vendor_name", "invoice_id", "total_amount"]
      
    • Zaawansowany schemat: obiekt JSON z informacjami o typie, opisami i zagnieżdżonych struktur
      • Obsługuje stringtypy , , integernumber, booleani enum . Przeprowadza walidację typu, nieprawidłowe wartości spowodują błąd. Maksymalnie 500 wartości wyliczenia.
      • Obsługuje obiekty zagnieżdżone przy użyciu polecenia "type": "object""properties"
      • Obsługuje tablice elementów pierwotnych lub obiektów przy użyciu polecenia "type": "array""items"
      • Opcjonalne "description" pole dla każdej właściwości w celu uzyskania jakości wyodrębniania
  • options: opcjonalny MAP<STRING, STRING> zawierający opcje konfiguracji:

    • version: Przełączenie wersji na obsługę migracji ("1.0" w przypadku zachowania w wersji 1 w "2.0" przypadku zachowania w wersji 2). Wartość domyślna jest oparta na typach wejściowych, ale powróci do "1.0"wartości .
    • instructions: Globalny opis zadania i domeny w celu poprawy jakości wyodrębniania. Musi zawierać mniej niż 20 000 znaków.

Wersja 1

  • content STRING: Wyrażenie zawierające nieprzetworzone tekst.

  • labels ARRAY<STRING>: literał. Każdy element jest typem jednostki do wyodrębnienia.

  • options: opcjonalny MAP<STRING, STRING> zawierający opcje konfiguracji:

    • version: Przełączenie wersji na obsługę migracji ("1.0" w przypadku zachowania w wersji 1 w "2.0" przypadku zachowania w wersji 2). Wartość domyślna jest oparta na typach wejściowych, ale powróci do "1.0"wartości .

Zwraca

Zwraca element VARIANT zawierający:

{
  "response": { ... },   // Extracted data matching the provided schema
  "error_message": null          // null on success, or error message on failure
}

Pole response zawiera dane ustrukturyzowane wyodrębnione zgodnie ze schematem:

  • Nazwy pól i typy są zgodne z definicją schematu
  • Zagnieżdżone obiekty i tablice są zachowywane w strukturze
  • Pola mogą być znalezione, jeśli nie zostaną null znalezione
  • Walidacja typu jest wymuszana dla integertypów , , numberboolean, i enum

Jeśli content jest NULL, wynik to NULL.

Wersja 1

Zwraca obiekt, w STRUCT którym każde pole odpowiada typowi jednostki określonej w elem labels. Każde pole zawiera ciąg reprezentujący wyodrębnioną encję. Jeśli funkcja znajdzie więcej niż jednego kandydata dla dowolnego typu jednostki, zwraca tylko jeden.

Przykłady

Prosty schemat — tylko nazwy pól

> 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
 }

Zaawansowany schemat — z typami i opisami:

> 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
 }

Zagnieżdżone obiekty i tablice:

> 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
 }

Możliwość komponowania za pomocą polecenia 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;

Używanie wyliczenia:

> 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
 }

Wersja 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"}

Ograniczenia

  • Ta funkcja nie jest dostępna w usłudze Azure Databricks SQL Classic.
  • Tej funkcji nie można używać z widokami.
  • Schemat obsługuje maksymalnie 128 pól.
  • Nazwy pól mogą zawierać maksymalnie 150 znaków.
  • Schematy obsługują maksymalnie 7 poziomów zagnieżdżania dla zagnieżdżonych pól.
  • Pola wyliczenia obsługują maksymalnie 500 wartości.
  • Walidacja typu jest wymuszana dla integertypów , number, booleani enum . Jeśli wartość nie jest zgodna z określonym typem, funkcja zwraca błąd.
  • Maksymalny całkowity rozmiar kontekstu to 128 000 tokenów.

Wersja 1

  • Ta funkcja nie jest dostępna w usłudze Azure Databricks SQL Classic.
  • Tej funkcji nie można używać z widokami.
  • Jeśli w zawartości znajduje się więcej niż jeden kandydat dla typu jednostki, zwracana jest tylko jedna wartość.