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 |
|---|---|
1ドキュメントあたりの最大ページ数 |
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 権限 をご参照ください。
コストの考慮事項¶
Cortex AI_EXTRACT関数では、ドキュメントごとのページ数、入力プロンプトトークン、処理される出力トークンに基づいて計算コストが発生します。
ページ化されたファイル形式の場合(PDF、DOCX、TIF、TIFF)、各ページは970トークンとしてカウントされます。
画像ファイル形式の場合(JPEG、JPG、PNG)、個々の画像ファイルはページとして請求され、970トークンとしてカウントされます
Snowflake は、Cortex AI_EXTRACT 関数を呼び出すクエリを、小規模なウェアハウス(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です。 |
|
応答形式には、1つ以上の重複した機能名が含まれます。 |
|
質問数が許容制限を超えています。 |
|
ドキュメントが125ページの制限を超えています。 |
|
画像入力または変換されたドキュメントページが、サポートされているディメンションよりも大きいです。 |
|
ページがサポートされているディメンションよりも大きいです。 |
|
ドキュメントが100 MB を超えています。 |
法的通知¶
インプットとアウトプットのデータ分類は以下の表の通りです。
入力データの分類 |
出力データの分類 |
指定 |
|---|---|---|
Usage Data |
Customer Data |
一般的に利用可能な関数は、カバーされている AI 機能です。プレビュー関数は、 AI 機能をプレビューします。[1] |
詳細については、 Snowflake AI と ML をご参照ください。