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?']]
);
결과:
{
"error": null,
"response": {
"address": "12/12/2023",
"seller_name": "Paul Doyle"
}
}
확인란 정보 추출하기¶
이 예제에서는 문서에 표시된 확인란을 기반으로 포함되지 않은 항목에 대한 정보를 추출합니다.
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?']]
);
결과:
{
"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"
}
}
서명 상태 추출하기¶
이 예제에서는 계약서에 서명되었는지 여부에 대한 정보를 추출합니다.
SELECT AI_EXTRACT(
file => TO_FILE('@db.schema.stage','document.pdf'),
responseFormat => [['signature', 'Is this document signed?']]
);
결과:
{
"error": null,
"response": {
"signature": "no"
}
}
엔터티 목록 추출하기¶
이 예제에서는 구매자 이름 목록을 추출합니다.
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'
}
}
}
}
);
결과:
{
"error": null,
"response": {
"buyer_list": [
"John Davis",
"Jane Davis"
]
}
}
테이블 정보 추출하기¶
이 예제에서는 다음 문서에서 테이블 형식의 데이터를 추출합니다.
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'
}
}
}
}
}
);
{
"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"
]
}
}
}
입력 요구 사항¶
AI_EXTRACT는 디지털 기반 문서와 스캔 문서 모두에 최적화되어 있습니다. 다음 테이블은 입력 문서에 대한 제한 사항과 요구 사항을 나열합니다.
최대 파일 크기 |
100 MB |
|---|---|
문서당 최대 페이지 수 |
125 |
최대 질문 수 |
|
지원되는 파일 유형 |
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는 다음과 같은 오류 메시지를 표시할 수 있습니다.
메시지 |
설명 |
|---|---|
|
시스템 오류가 발생했습니다. 잠시 기다린 후 다시 시도해 보십시오. 문제가 지속되면 Snowflake 지원팀에 문의하세요. |
|
파일을 찾을 수 없습니다. |
|
파일을 찾을 수 없습니다. |
|
현재 사용자에게 파일에 액세스할 수 있는 충분한 권한이 없습니다. |
|
문서가 지원되는 형식이 아닙니다. |
|
문서가 서버 측 암호화를 사용하는 스테이지에 저장되지 않습니다. |
|
매개 변수가 제공되지 않았습니다. |
|
응답 형식이 제공되지 않았습니다. |
|
응답 형식이 유효한 JSON이 아닙니다. |
|
응답 형식에 하나 이상의 중복된 기능 이름이 포함되어 있습니다. |
|
질문 수가 허용된 한도를 초과합니다. |
|
문서가 125페이지 제한을 초과합니다. |
|
이미지 입력 또는 변환된 문서 페이지가 지원되는 크기보다 큽니다. |
|
페이지가 지원되는 크기보다 큽니다. |
|
문서가 100MB보다 큽니다. |
법적 고지¶
입력 및 출력의 데이터 분류는 다음 테이블과 같습니다.
입력 데이터 분류 |
출력 데이터 분류 |
지정 |
|---|---|---|
Usage Data |
Customer Data |
일반적으로 사용 가능한 함수는 Covered AI 기능입니다. 미리 보기 함수는 Preview AI 기능입니다. [1] |
자세한 내용은 Snowflake AI 및 ML 섹션을 참조하십시오.