使用 AI_EXTRACT 从文档中提取信息¶
AI_EXTRACT 是一个 Cortex AI 函数,允许您从文本或文档文件中提取结构化信息(如实体、列表和表),方法是用自然语言提出问题或描述要提取的信息。它可以与其他函数结合使用,为各种用例创建自定义文档处理管道(请参阅 Cortex AI 函数:文档)。
AI_EXTRACT 可以处理各种格式的文档(支持 29 种语言),并从文本密集型段落和图形形式的内容中提取信息,例如徽标、手写文本(如签名)、表或复选标记。AI_EXTRACT 可以提取以下结构化格式的信息:
实体:用自然语言提问或描述要提取的信息(如城市、街道或 ZIP 代码)。
列表(或数组):您可以提供用于提取文档中信息数组或列表的 JSON 架构,例如银行对账单中所有账户持有人的姓名或文档中所有地址的列表。
表:提供 JSON 架构,以通过指定表标题和应提取的列的列表,来提取文档中的表数据。
AI_EXTRACT 通过同时处理多个文档,自动根据您的工作负载进行扩展。可以直接从对象存储中处理文档,以避免不必要的数据移动。
备注
AI_EXTRACT 目前与自定义 网络策略 不兼容。
提取质量¶
AI_EXTRACT 使用 arctic-extract,一种基于视觉的专有大型语言模型 (LLM),来实现高精度提取。下表列出了该模型在各种标准基准测试中的得分,并与其他热门模型的得分进行了比较:
视觉问答 (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 页的限制。 |
|
图像输入或转换后的文档页面超出支持的尺寸。 |
|
页面超出支持的尺寸。 |
|
文档超过 100 MB。 |
法律声明¶
输入和输出的 Data Classification 如下表所示。
输入 Data Classification |
输出 Data Classification |
名称 |
|---|---|---|
Usage Data |
Customer Data |
正式发布的功能是涵盖的 AI 功能。预览版功能属于预览版 AI 功能。[1] |
有关更多信息,请参阅 Snowflake AI 和 ML。