AI_EXTRACT로 문서에서 정보 추출하기

AI_EXTRACT는 자연어로 질문하거나 추출할 정보를 설명하여 텍스트 또는 문서 파일에서 엔터티, 목록, 테이블과 같은 정형 정보를 추출할 수 있는 Cortex AI 함수입니다. 다른 함수와 함께 사용하여 다양한 사용 사례에 대한 사용자 지정 문서 처리 파이프라인을 생성할 수 있습니다(Cortex AI 함수: 문서 참조).

AI_EXTRACT는 다양한 형식(29개 언어)의 문서를 처리하고 텍스트가 많은 단락과 로고, 필기 텍스트(예: 서명), 테이블 또는 확인 표시와 같은 그래픽 형식의 콘텐츠에서 정보를 추출할 수 있습니다. AI_EXTRACT는 다음과 같은 정형 형식으로 정보를 추출할 수 있습니다.

  • 엔터티: 자연어로 질문하거나 추출할 정보(예: 도시, 거리 또는 ZIP 코드)를 설명합니다.

  • 목록(또는 배열): 은행 명세서의 모든 계좌 소유자 이름 또는 문서의 모든 주소 목록과 같이 문서에 있는 정보의 배열 또는 목록을 추출하는 JSON 스키마를 제공할 수 있습니다.

  • 테이블: 추출해야 하는 테이블 제목과 열 목록을 지정하여 문서에 있는 테이블 형식 데이터를 추출하는 JSON 스키마를 제공합니다.

AI_EXTRACT는 여러 문서를 동시에 처리하여 워크로드에 따라 자동으로 확장됩니다. 문서는 불필요한 데이터 이동을 피하기 위해 오브젝트 저장소에서 직접 처리될 수 있습니다.

참고

AI_EXTRACT 는 현재 사용자 지정 네트워크 정책 과 호환되지 않습니다.

추출 품질

AI_EXTRACT는 높은 추출 정확도를 제공하는 독점적인 비전 기반 대규모 언어 모델(LLM)인 ``arctic-extract``를 사용합니다. 다음 테이블에는 여러 표준 벤치마크에서 해당 모델이 획득한 점수가 정리되어 있으며, 다른 주요 모델들의 점수도 비교 참고용으로 함께 제공됩니다.

시각적 질문 답변(VQA)

제안

DocVQA 점수

인적 평가

0.9811

Snowflake Arctic-Extract

0.9433

Azure OpenAI GPT-o3

0.9339

Google Gemini 2.5-Pro

0.9316

Google Anthropic Claude 4 Sonnet

0.9119

Azure Document Intelligence + GPT-o3

0.8853

Google Document AI + Gemini

0.8497

Azure OpenAI GPT-o3

0.9339

AWS Textract

0.8313

텍스트 전용 질문 답변(SQuAD v2)

제안

ANLS

정확한 일치

Snowflake Arctic-Extract

81.18

78.74

Anthropic Claude 4 Sonnet

80.54

77.10

Meta LLaMA 3.1 405B

80.37

76.56

Meta LLaMA 4 Scout

74.30

70.70

OpenAI GPT 4.1

70.71

66.81

Meta LLaMA 3.1 8B

59.13

54.48

이 예제에서는 다음 이미지를 입력 문서로 사용합니다. 문서는 스테이지에 저장됩니다.

콘도미니엄 매매 계약서

엔터티 추출하기

매매 계약서에서 판매자 이름과 제안 만료 날짜를 추출합니다.

SELECT AI_EXTRACT(
  file => TO_FILE('@db.schema.stage','document.pdf'),
  responseFormat => [['seller_name', 'What is the seller name?'], ['address', 'What is the offer expiration date?']]
);
Copy

결과:

{
    "error": null,
    "response": {
        "address": "12/12/2023",
        "seller_name": "Paul Doyle"
    }
}
Copy

확인란 정보 추출하기

이 예제에서는 문서에 표시된 확인란을 기반으로 포함되지 않은 항목에 대한 정보를 추출합니다.

SELECT AI_EXTRACT(
  file => TO_FILE('@db.schema.stage','document.pdf'),
  responseFormat => [['flat_items', 'What items are not included with the flat?'], ['default', 'What Default is selected?']]
);
Copy

결과:

{
    "error": null,
    "response": {
        "default": "Forfeiture of Earnest Money",
        "flat_items": "dryer, security system, satellite dish, wood stove, fireplace insert, hot tub, attached speaker(s), generator, other"
    }
}
Copy

서명 상태 추출하기

이 예제에서는 계약서에 서명되었는지 여부에 대한 정보를 추출합니다.

SELECT AI_EXTRACT(
    file => TO_FILE('@db.schema.stage','document.pdf'),
    responseFormat => [['signature', 'Is this document signed?']]
);
Copy

결과:

{
  "error": null,
    "response": {
        "signature": "no"
    }
}
Copy

엔터티 목록 추출하기

이 예제에서는 구매자 이름 목록을 추출합니다.

SELECT AI_EXTRACT(
    file => TO_FILE('@db.schema.files', 'report.pdf'),
    responseFormat => {
        'schema': {
        'type': 'object',
        'properties': {
            'buyer_list': {
            'description': 'What are the buyer names?',
            'type': 'array'
            }
        }
        }
    }
);
Copy

결과:

{
    "error": null,
    "response": {
        "buyer_list": [
        "John Davis",
        "Jane Davis"
        ]
    }
}
Copy

테이블 정보 추출하기

이 예제에서는 다음 문서에서 테이블 형식의 데이터를 추출합니다.

Granger Causality Tests - P-값
SELECT AI_EXTRACT(
    file => TO_FILE('@db.schema.files', 'report.pdf'),
    responseFormat => {
        'schema': {
            'type': 'object',
            'properties': {
                'income_table': {
                'description': 'Table 2: Granger Causality Tests - P-values',
                'type': 'object',
                'column_ordering': ['description', 'countries','lags','z','z_approx'],
                'properties': {
                    'description': {
                        'description': 'Description',
                        'type': 'array'
                        },
                    'countries': {
                        'description': 'Countries',
                        'type': 'array'
                        },
                    'lags': {
                        'description': 'Lags',
                        'type': 'array'
                        },
                    'z': {
                        'description': 'Z',
                        'type': 'array'
                    },
                    'z_approx': {
                        'description': 'Z approx.',
                        'type': 'array'
                    }
                }
            }
        }
    }
);
Copy
{
    "error": null,
    "response": {
        "income_table": {
            "countries": [
                "33","80","29","84","34"
            ],
            "description": [
                "Commodity exporters",
                "Non-commodity exporters",
                "AE",
                "EMDE",
                "Large or market-dominant countries"
            ],
            "lags": [
                "2","1","1","1","1"
            ],
            "z": [
                "0.11","0.08","0.89","0.12","0.07"
            ],
            "z_approx": [
                "0.25","0.19","0.95","0.25","0.14"
            ]
        }
    }
}
Copy

입력 요구 사항

AI_EXTRACT는 디지털 기반 문서와 스캔 문서 모두에 최적화되어 있습니다. 다음 테이블은 입력 문서에 대한 제한 사항과 요구 사항을 나열합니다.

최대 파일 크기

100 MB

문서당 최대 페이지 수

125

최대 질문 수

  • 엔터티(단일 또는 목록) 추출을 위한 100가지 질문

  • 테이블 추출을 위한 10가지 질문

지원되는 파일 유형

PDF, PPT, PPTX, DOCX, EML, DOC, DOCX, HTM, HTML, TEXT, MD, TXT, BMP, JPEG, JPG, PNG, TIFF, TIF, WEBP

스테이지 암호화

서버 측 암호화:

액세스 제어 요구 사항

AI_EXTRACT 함수를 사용하려면 ACCOUNTADMIN 역할을 가진 사용자가 함수를 호출할 사용자에게 SNOWFLAKE.CORTEX_USER 데이터베이스 역할을 부여해야 합니다. 자세한 내용은 Cortex LLM privileges 항목을 참조하십시오.

비용 고려 사항

Cortex AI_EXTRACT 함수는 문서당 페이지 수, 입력 프롬프트 토큰, 처리된 출력 토큰에 따라 컴퓨팅 비용이 발생합니다.

  • 페이징된 파일 형식의 경우(PDF, DOCX, TIF, TIFF), 각 페이지는 970개의 토큰으로 계산됩니다.

  • 이미지 파일 형식의 경우(JPEG, JPG, PNG), 각 개별 이미지 파일은 페이지로 청구되며 970개의 토큰으로 계산됩니다.

Snowflake는 더 작은 웨어하우스(AI_EXTRACT보다 크지 않음)에서 Cortex MEDIUM 함수를 호출하는 쿼리를 실행할 것을 권장합니다. 웨어하우스가 크다고 성능이 향상되는 것은 아닙니다.

지원되는 언어

AI_EXTRACT는 다음 언어를 지원합니다.

  • 아랍어

  • 벵골어

  • 버마어

  • 세부아노어

  • 중국어

  • 체코어

  • 네덜란드어

  • 영어

  • 프랑스어

  • 독일어

  • 히브리어

  • 힌디어

  • 인도네시아어

  • 이탈리아어

  • 일본어

  • 크메르어

  • 한국어

  • 라오어

  • 말레이어

  • 페르시아어

  • 폴란드어

  • 포르투갈어

  • 러시아어

  • 스페인어

  • 타갈로그어

  • 태국어

  • 터키어

  • 우르두어

  • 베트남어

리전 가용성

AI_EXTRACT에 대한 지원은 다음 Snowflake 리전의 계정에서 사용할 수 있습니다.

AWS

Azure

US 서부 2

동부 US 2

US 동부 1

서부 US 2

US CA 중부 1

중남부 US

유럽 중부 1

북유럽

유럽 서부 1

서유럽

SA 동부 1

인도 중부

AP 북동부 1

일본 동부

AP 남동부 2

동남아시아 오스트레일리아 동부

AI_EXTRACT는 리전 간 지원을 제공합니다. Cortex AI 리전 간 지원 활성화에 대한 정보는 리전 간 추론 섹션을 참조하세요.

오류 조건

Snowflake Cortex AI_EXTRACT는 다음과 같은 오류 메시지를 표시할 수 있습니다.

메시지

설명

Internal error.

시스템 오류가 발생했습니다. 잠시 기다린 후 다시 시도해 보십시오. 문제가 지속되면 Snowflake 지원팀에 문의하세요.

Not found.

파일을 찾을 수 없습니다.

Provided file cannot be found.

파일을 찾을 수 없습니다.

Provided file cannot be accessed.

현재 사용자에게 파일에 액세스할 수 있는 충분한 권한이 없습니다.

The provided file format {fil_extension} isn't supported.

문서가 지원되는 형식이 아닙니다.

The provided file isn't in the expected format or is client-side encrypted or is corrupted.

문서가 서버 측 암호화를 사용하는 스테이지에 저장되지 않습니다.

Empty request.

매개 변수가 제공되지 않았습니다.

Missing or empty response format.

응답 형식이 제공되지 않았습니다.

Invalid response format.

응답 형식이 유효한 JSON이 아닙니다.

Duplicate feature name found: {feature_name}.

응답 형식에 하나 이상의 중복된 기능 이름이 포함되어 있습니다.

Too many questions: {number} complex and {number} simple = {number} total, complex question weight {number}.

질문 수가 허용된 한도를 초과합니다.

Maximum number of 125 pages exceeded. The document has {actual_pages} pages.

문서가 125페이지 제한을 초과합니다.

Page size in pixels exceeds 10000x10000. The page size is {actual_px} pixels.

이미지 입력 또는 변환된 문서 페이지가 지원되는 크기보다 큽니다.

Page size in inches exceeds 50x50 (3600x3600 pt). The page size is {actual_in} inches ({actual_pt} pt).

페이지가 지원되는 크기보다 큽니다.

Maximum file size of 104857600 bytes exceeded. The file size is {actual_size} bytes.

문서가 100MB보다 큽니다.