Snowflake AI_EXTRACT now handles 1,000-page documents in preview

Snowflake has updated AI_EXTRACT, its Cortex AI SQL function for pulling fields, lists and tables out of documents, so that a single file can now run to 1,000 pages instead of 125. The release note, dated November 2, 2026 and labeled Public Preview, also reports a 12.8% relative improvement in average extraction accuracy over the previous version, based on Snowflake's own evaluations, and says the gains cover complex forms, handwritten content, dense tables and charts.
The update has one firm condition. It reaches only accounts where cross-region inference is enabled, and in those accounts it applies automatically, with no SQL changes and no change in price, according to Snowflake. Accounts without cross-region inference keep using the previous version of AI_EXTRACT, with the old 125-page ceiling and the old behavior. For data teams that already run extraction pipelines in SQL, the practical work is therefore an account-parameter check and a review of code that sets the scale_factor argument, which the new version ignores.
··········
WHAT SNOWFLAKE CHANGED IN AI_EXTRACT.
AI_EXTRACT takes either a text string or a staged file and a response format that describes what to pull out: single values such as a supplier name, lists such as all line-item descriptions, or whole tables returned as one array per column. Snowflake's documentation presents it as the updated version of EXTRACT_ANSWER and recommends it for new work. The function returns JSON with a response field and an error field, so results can be parsed and loaded into tables with ordinary SQL.
The November 2 update changes four things, all documented in the release note. Accuracy improves on average by 12.8% relative to the previous version. The page limit per document rises from 125 to 1,000. Requests that ask for several fields at once are handled more reliably and come back as one combined result. The scale_factor argument, which used to let users trade processing effort for quality on difficult scans, is no longer needed: existing calls that pass it keep working, and any value is ignored.
The function documentation adds a fifth difference tied to cross-region inference. With it enabled, a file that cannot be processed returns an error for that document while the rest of the statement continues; without it, one bad file makes the whole statement fail. For batch jobs over a stage directory with hundreds of files, that difference decides whether a single corrupted scan stops a nightly load.
........
Behavior | Cross-region inference enabled | Not enabled |
AI_EXTRACT version | Updated (Nov 2, 2026 preview) | Previous version |
Max pages per file | 1,000 | 125 |
Unprocessable file | Error for that file, statement continues | Statement fails |
scale_factor | Ignored | Applies, 1.0 to 4.0, default 1.0 |
Price | Unchanged | Unchanged |
........
··········
AI_EXTRACT LIMITS THAT STAY IN PLACE.
The higher page ceiling sits alongside limits that did not change. A staged file can be at most 100 MB. Each page can measure up to 50 by 50 inches, and images up to 10,000 by 10,000 pixels. A single call accepts up to 100 entity questions or up to 10 table questions, with each table question counting as 10 entity questions, so a request with 4 table questions leaves room for 60 entity questions. Answers are capped at 512 tokens per entity question and 4,096 tokens for table answers.
Supported formats include PDF, DOC and DOCX, PPT and PPTX, EML, HTML, Markdown, plain text, and the common image types (PNG, JPEG, TIFF, BMP, GIF and WEBP). The documentation lists support for about 29 languages, among them English, Chinese, Japanese, Korean, Arabic, Hindi and most major European languages. The function works with client-side and server-side stage encryption, PrivateLink and network policies.
The response format can be an object that maps labels to questions, an array of questions, an array of label and question pairs, or a JSON schema. Schemas are the route for lists and tables: string is the only supported scalar type, the top level must be an object, and table extraction uses a column_ordering property whose names must match the schema properties exactly, including case. An optional scores argument, available only with named-argument syntax, adds a confidence score between 0 and 1 for each extracted field and one aggregate score per list or table, at no extra cost.
··········
CROSS-REGION INFERENCE SETTINGS FOR AI_EXTRACT.
Whether an account gets the new AI_EXTRACT depends on the account parameter CORTEX_ENABLED_CROSS_REGION. Only the ACCOUNTADMIN role can change it, with ALTER ACCOUNT, and it exists only at account level. Accepted values are ANY_REGION, cloud-wide values such as AWS_GLOBAL or AZURE_GLOBAL, geography values such as AWS_US, AWS_EU, AZURE_EU or GCP_US, comma-separated combinations, and DISABLED.
Snowflake's documentation says new organizations created in commercial regions after March 9, 2026 default to ANY_REGION, while other commercial accounts in supported regions inherit a same-cloud geography value such as AWS_US. A behavior change in the 2026_06 bundle set those geography defaults for many existing accounts, but it excluded accounts that had already set any value, including DISABLED, and accounts in finance, healthcare, government, FedRAMP and VPS deployments. An administrator can confirm the value in effect with the statement below.
SHOW PARAMETERS LIKE 'CORTEX_ENABLED_CROSS_REGION' IN ACCOUNT;
-- Example: allow routing within AWS regions in the United States only
ALTER ACCOUNT SET CORTEX_ENABLED_CROSS_REGION = 'AWS_US';On data handling, Snowflake states that customer data stays in the account's home region, that prompts and responses travel to the processing region only temporarily and are not persisted there, and that traffic is always encrypted in transit. Within one cloud provider it stays on the provider's private backbone; across providers it crosses the public internet over mutual TLS. Credits are consumed in the requesting region and there are no egress charges. Teams with residency rules should pick the narrowest geography value that meets them instead of ANY_REGION, since the parameter decides where document content may be processed.
··········
RUNNING AI_EXTRACT ON A STAGE OF DOCUMENTS.
Users need a role that has been granted the SNOWFLAKE.CORTEX_USER database role. A single-file call with named arguments and confidence scores looks like this, using placeholder database, schema and file names.
SELECT AI_EXTRACT(
file => TO_FILE('@docs_db.raw.contracts', 'master_agreement_2026.pdf'),
responseFormat => {
'counterparty': 'What is the name of the counterparty?',
'effective_date': 'What is the effective date of the agreement?',
'governing_law': 'Which jurisdiction governs the agreement?'
},
scores => TRUE
) AS result;For batch work, the documentation shows AI_EXTRACT running over every file in a stage through its directory table, which must be enabled. With the update in place, files up to 1,000 pages no longer need to be split before they reach this query.
SELECT
relative_path,
AI_EXTRACT(
file => TO_FILE('@docs_db.raw.contracts', relative_path),
responseFormat => [['counterparty', 'What is the name of the counterparty?'],
['effective_date', 'What is the effective date of the agreement?']]
) AS result
FROM DIRECTORY(@docs_db.raw.contracts);Snowflake recommends a warehouse no larger than MEDIUM for AI_EXTRACT, because larger sizes do not make it faster. Teams comparing this in-warehouse approach with chatbot uploads can read our overview of which AI chatbots can extract tables from PDF files, which covers the interactive route for occasional documents.
··········
ESTIMATING AI_EXTRACT PAGE TOKENS FOR A BATCH.
The documentation explains how AI_EXTRACT is metered: compute cost depends on the number of pages plus input prompt tokens and output tokens. For paged formats such as PDF, DOCX and TIFF, each page counts as 970 tokens, and each JPEG or PNG image counts as one page, or 970 tokens. The credit rate per token is not given on the function page, so the example below stops at the page-token component, which is the part that grows with document length.
........
Illustrative batch | Files | Avg pages | Pages | Page tokens |
Contracts (PDF) | 300 | 48 | 14,400 | 13,968,000 |
Annual reports (PDF) | 40 | 310 | 12,400 | 12,028,000 |
Scanned receipts (PNG) | 1,200 | 1 | 1,200 | 1,164,000 |
Total | 1,540 | 28,000 | 27,160,000 |
........
In this illustrative batch, the 40 annual reports averaging 310 pages could not be processed whole under the old 125-page limit; they had to be split or skipped. Under the updated version they run as single files, and they account for 12,028,000 of the 27,160,000 page tokens, about 44% of the total from under 3% of the files. Prompt and output tokens come on top of these figures, so a pilot on a sample of real documents is the reliable way to measure credits before scheduling a full run.
··········
WHAT DATA TEAMS SHOULD CHECK BEFORE RELYING ON THE UPDATE.
The first check is the account parameter, because it decides which version of the function runs. The second is existing code: any pipeline that tuned scale_factor for hard scans should be retested, since that argument now has no effect, and quality on those documents should be compared with the previous output. The third is error handling, since with cross-region inference a failed file returns an error in its row rather than stopping the statement, so downstream logic should read the error field and route those rows for review.
The update is labeled Public Preview, and Snowflake's note does not say when the new version becomes generally available, which model powers it or whether accounts can opt out while keeping cross-region inference on. The accuracy figure is an average from Snowflake's own evaluations and will vary by document type. Extraction scores help prioritize human review, but they are given per field and per table, with no per-item scores inside lists or tables.
The same account parameter governs other Cortex features that need cross-region inference, and Snowflake's behavior-change note names Cortex Code as one of them, so a single residency decision affects several AI features at once. Recent Snowflake AI changes are also covered in our article on Snowflake CoWork Deep Research and cited web sources. Teams that publish extracted tables to partners may also want to look at Snowflake Open Data Sharing for Iceberg tables.
··········
SNOWFLAKE AI_EXTRACT: WHAT DEPENDS ON YOUR ACCOUNT SETTINGS.
Snowflake confirms the 1,000-page limit, the 12.8% average accuracy improvement, more reliable multi-field responses, the retirement of scale_factor and unchanged pricing, all in a Public Preview dated November 2, 2026. Every one of those changes depends on CORTEX_ENABLED_CROSS_REGION being set to a value other than DISABLED; otherwise the previous AI_EXTRACT stays in place with its 125-page ceiling and statement-level failures.
What Snowflake has not disclosed is the general availability date, the underlying model and a per-token credit rate on the function page. The regional list for native processing remains short on Google Cloud, where the documentation names only Middle East Central2 (Dammam), so Google Cloud accounts in other regions need cross-region inference to use the function at all. For teams running document pipelines in SQL, the immediate steps are to confirm the parameter value, retest documents that relied on scale_factor, and measure page tokens on a sample before moving long reports into production.
··········
FOLLOW US FOR MORE.
·····
DATA STUDIOS
·····
datastudios.org




