Estimated reading time: ~11 minutes. No prior experience required.
The first time I bolted AI onto a data warehouse, the plan looked reasonable on a
whiteboard: pull the data out of the warehouse, send it to an AI service
somewhere else, get the answer, bring it back. In practice it was clumsy. Data
had to leave its secure home, travel across the network, get processed elsewhere,
and return, slower, more expensive, and now I had sensitive data copied into a
second place I had to worry about.
The obvious question: why move the data to the AI at all, why not bring the AI to the data? That's exactly the idea behind
By the end of this post you'll understand what Cortex is, its main capabilities,
how you use it, the traps, and how it fits the modern data stack.
Quick note: Snowflake and Cortex are commercial products, not open source. We
include this post because "AI inside the warehouse" is a pattern you'll meet
everywhere now, and theideashere apply to similar features in other
platforms too.
One sentence: Snowflake Cortex is a set of AI capabilities built directly into the Snowflake data warehouse, letting you run AI tasks, like summarizing text, translating, or asking questions in plain English, using simple SQL, without your data ever leaving Snowflake.
If you've read the Snowflake post, this is "Snowflake, now with a brain attached."
Imagine your company data is a huge, secure library, and you need documents
analyzed. You could mail each document to an outside consultant, wait, and get it
back, slow, and now your documents are sitting on someone else's desk.
Or you could hire an in-house expert who works inside the library. Documents
never leave the building. You just walk over and ask. Faster, safer, simpler.
Cortex is that in-house expert. The AI lives where the data lives, so you ask
questions right where everything already is, through the SQL you already use.
Cortex bundles several AI abilities. Here are the ones you'll actually reach for.
The simplest and most striking: you call an AI model like it's a normal SQL
function. Want to summarize a column of customer reviews? It's one function call
applied across your rows. Sentiment, translation, summarization, all as SQL you
run right in the warehouse.
-- Summarize each review, right inside a query (conceptual)
SELECT
review_id,
SNOWFLAKE.CORTEX.SUMMARIZE(review_text) AS summary,
SNOWFLAKE.CORTEX.SENTIMENT(review_text) AS mood
FROM customer_reviews;
No data export, no separate service, the AI runs where the rows already are.
This is the "talk to your data" capability: a business user types a question in
plain English, "what were our top five products by revenue last quarter?", and
Cortex translates it into SQL, runs it, and returns the answer. It turns the
warehouse into something a non-SQL user can interrogate directly.
The key to making this reliable is a semantic model, a description of what
your tables and columns mean in business terms, so the AI maps "revenue" to the
right column instead of guessing.
For question-answering over documents, Cortex Search finds the most relevant
passages from your text data (the retrieval piece of the RAG pattern from the
LangChain post), built in, so you don't assemble a separate search system.
The newest layer: agents that can combine the above, search for relevant data,
generate SQL, call the LLM functions, to answer more complex, multi-step
questions, all within the platform's security boundary.
flowchart LR
U[User asks in English] --> A[Cortex Analyst / Agent]
A --> SEM[Semantic model:<br/>what columns mean]
A --> SQL[Generates SQL]
SQL --> DATA[(Your Snowflake data)]
DATA --> ANS[Answer, grounded in your data]
ANS --> U
Three real advantages over the awkward round trip:
The whole appeal is how little you need to do:
-- 1. Classic AI-as-SQL: translate and summarize in one query
SELECT
ticket_id,
SNOWFLAKE.CORTEX.TRANSLATE(body, 'es', 'en') AS english_body,
SNOWFLAKE.CORTEX.SUMMARIZE(body) AS summary
FROM support_tickets
WHERE created_at >= '2026-07-01';
-- 2. Ask a question in English via Cortex Analyst (conceptual),
-- backed by a semantic model that defines "revenue", "region", etc.
-- "What was total revenue by region last month?"
-- -> Cortex generates and runs the SQL, returns the table.
The AI came to the data. The data stayed home.
Cortex Analyst is only as good as the business definitions you give it. Without a
semantic model, it guesses which column means "revenue", and may guess wrong.
Investing in clear semantic definitions is what turns "impressive demo" into
"trustworthy answers."
Just like any text-to-SQL, Cortex can produce a query that looks right but
double-counts or misses a filter. Sanity-check generated numbers against a known
total before you rely on them, especially for anything that drives a decision.
Running AI functions across millions of rows consumes compute (and Snowflake bills
for compute). Applying SUMMARIZE
to your entire history "just to see" can get
expensive fast. Test on a small slice, then scale deliberately.
Cortex shines at questions grounded in your data. It's not meant to be a
free-roaming general assistant. Point it at well-modeled data and clear questions;
don't expect it to answer things your data doesn't contain.
AI-generated summaries or answers can surface sensitive details. The same access
controls that protect your tables should apply to who can run these functions and
see their results. Don't let convenience quietly widen access.
Since Cortex is AI, the "AI angle" here is about building and refining it well:
A word of caution: an AI that can query your warehouse in plain English is
powerful and easy to misuse, a vague question can return a confidently wrong
number. Keep humans in the loop for decisions, validate the semantic model, and
respect the same data-access rules you'd apply to any analyst.
Snowflake Cortex brings AI to your data instead of shipping your data to the
AI, running models inside the warehouse, through plain SQL, without data ever
leaving its secure home. You learned:
SENTIMENT
) on a small text column. Seeing AI run Hire the in-house expert, and the awkward round trip retires for good.