ai_extract 함수

적용 대상:체크 마크가 표시된 예 Databricks SQL 체크 마크가 표시된 예 Databricks Runtime

중요함

이 기능은 공개 미리 보기HIPAA 규격에 있습니다.

미리 보기 중:

  • 기본 언어 모델은 여러 언어를 처리할 수 있지만 이 AI 함수는 영어로 조정됩니다.
  • AI Functions의 지역 가용성에 대한 지역별로 제한된 기능을 참조하세요.

이 함수는 ai_extract() 사용자가 제공하는 스키마에 따라 텍스트 및 문서에서 구조화된 데이터를 추출합니다. 기본 추출에 간단한 필드 이름을 사용하거나, 중첩된 개체, 배열, 형식 유효성 검사 및 청구서, 계약 및 재무 서류와 같은 비즈니스 문서에 대한 필드 설명을 사용하여 복잡한 스키마를 정의할 수 있습니다.

이 함수는 종단 간 문서 처리를 위해 작성 가능한 워크플로를 사용하도록 설정하는 등 VARIANT다른 AI 함수의 텍스트 또는 ai_parse_document 출력을 허용합니다.

결과의 ai_extract유효성을 검사하고 반복하는 시각적 UI는 정보 추출을 참조하세요.

요구 사항

Apache 2.0 라이선스

현재 사용할 수 있는 기본 모델은 Apache 2.0 라이선스인 Copyright © The Apache Software Foundation에 따라 라이선스가 부여됩니다. 고객은 해당 모델 라이선스를 준수할 책임이 있습니다.

Databricks는 해당 조건을 준수하도록 이러한 라이선스를 검토할 것을 권장합니다. Databricks의 내부 벤치마크에 따라 더 나은 성능을 제공하는 모델이 향후에 나타날 경우 Databricks는 모델(및 이 페이지에 제공된 해당 라이선스 목록)을 변경할 수 있습니다.

이 함수를 구동하는 모델은 Model Serving Foundation 모델 API를 사용하여 사용할 수 있습니다. Databricks에서 사용할 수 있는 모델과 해당 모델의 사용을 제어하는 라이선스 및 정책에 대한 자세한 내용은 해당 모델 용어를 참조하세요.

Databricks의 내부 벤치마크에 따라 더 나은 성능을 제공하는 모델이 미래에 등장할 경우 Databricks는 모델을 변경하고 설명서를 업데이트할 수 있습니다.

  • 이 함수는 일부 지역에서만 사용할 수 있습니다. AI 함수 가용성을 참조하세요.
  • 이 함수는 Azure Databricks SQL 클래식에서 사용할 수 없습니다.
  • Databricks SQL 가격 페이지를 확인하세요.
  • Databricks Runtime 15.1 이상에서는 이 함수가 Databricks 노트북뿐만 아니라 Databricks 워크플로의 태스크로 실행되는 노트북에서도 지원됩니다.
  • 성능 향상을 위해서는 일괄 처리 유추 워크로드에 Databricks Runtime 15.4 ML LTS가 필요합니다.

구문

Databricks는 중첩된 필드 추출 및 설명을 지원하므로 이 함수의 버전 2를 사용하는 것이 좋습니다.

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

버전 1

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

논쟁

  • content: A VARIANT 또는 STRING 식입니다. 다음 중 하나를 수락합니다:

    • 원시 텍스트를
    • VARIANT 다른 AI 함수(예: ai_parse_document)에 의해 생성된 A
  • schema STRING: 추출을 위한 JSON 스키마를 정의하는 리터럴입니다. 스키마는 다음과 같습니다.

    • 단순 스키마: 필드 이름의 JSON 배열(문자열로 가정)
      ["vendor_name", "invoice_id", "total_amount"]
      
    • 고급 스키마: 형식 정보, 설명 및 중첩 구조체가 있는 JSON 개체
      • , string, integernumberboolean 형식을 enum지원합니다. 형식 유효성 검사를 수행합니다. 잘못된 값으로 인해 오류가 발생합니다. 최대 500개 열거형 값입니다.
      • 다음을 사용하여 중첩된 개체를 "type": "object" 지원합니다. "properties"
      • 를 사용하여 기본 형식 또는 개체의 배열을 "type": "array" 지원합니다. "items"
      • 추출 품질을 안내하는 각 속성에 대한 선택적 "description" 필드
  • options: 구성 옵션을 포함하는 선택 사항 MAP<STRING, STRING> :

    • version: 마이그레이션을 지원하도록 버전 스위치("1.0" v1 동작의 경우, "2.0" v2 동작의 경우). 기본값은 입력 형식을 기반으로 하지만 ."1.0"
    • instructions: 추출 품질을 개선하기 위해 작업 및 도메인에 대한 전역 설명입니다. 20,000자 미만이어야 합니다.

버전 1

  • content STRING: 원시 텍스트를 포함하는 식입니다.

  • labels: ARRAY<STRING> 리터럴 상수. 각 요소는 추출할 엔터티의 형식입니다.

  • options: 구성 옵션을 포함하는 선택 사항 MAP<STRING, STRING> :

    • version: 마이그레이션을 지원하도록 버전 스위치("1.0" v1 동작의 경우, "2.0" v2 동작의 경우). 기본값은 입력 형식을 기반으로 하지만 ."1.0"

반품

포함하는 항목을 VARIANT 반환합니다.

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

필드에는 response 스키마에 따라 추출된 구조화된 데이터가 포함됩니다.

  • 필드 이름 및 형식이 스키마 정의와 일치합니다.
  • 중첩된 개체 및 배열은 구조에 유지됩니다.
  • 필드를 찾을 수 null 없는 경우
  • , integernumberboolean 형식에 대해 enum형식 유효성 검사가 적용됩니다.

contentNULL이면 결과는 NULL입니다.

버전 1

각 필드가 STRUCT 에 지정된 labels엔터티 형식에 해당하는 위치를 반환합니다. 각 필드에는 추출된 엔터티를 나타내는 문자열이 포함됩니다. 함수가 엔터티 형식에 대해 둘 이상의 후보를 찾으면 하나만 반환합니다.

예제

단순 스키마 - 필드 이름만

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

고급 스키마 - 형식 및 설명 포함:

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

중첩된 개체 및 배열:

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

다음을 사용하여 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;

열거형 사용:

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

버전 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"}

제한점

  • 이 함수는 Azure Databricks SQL 클래식에서 사용할 수 없습니다.
  • 이 함수는 와 함께 사용할 수 없습니다.
  • 스키마는 최대 128개의 필드를 지원합니다.
  • 필드 이름은 최대 150자를 포함할 수 있습니다.
  • 스키마는 중첩된 필드에 대해 최대 7개의 중첩 수준을 지원합니다.
  • 열거형 필드는 최대 500개 값을 지원합니다.
  • 형식 유효성 검사는 , integernumberboolean 형식에 적용enum됩니다. 값이 지정된 형식과 일치하지 않으면 함수는 오류를 반환합니다.
  • 최대 총 컨텍스트 크기는 128,000개의 토큰입니다.

버전 1

  • 이 함수는 Azure Databricks SQL 클래식에서 사용할 수 없습니다.
  • 이 함수는 와 함께 사용할 수 없습니다.
  • 콘텐츠에서 엔터티 형식에 대한 후보가 두 개 이상 있으면 하나의 값만 반환됩니다.