Skip to content
Back to skills

Snowflake Cortex

ASecurity

Build AI agents that operate directly on Snowflake data using Cortex LLM functions, Cortex Analyst (text-to-SQL), and Cortex Search (RAG) -- with zero data movement.

  • 31 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 6, 2026
ai-agentspythongosqlapidatabase

Works with

  • cli
  • api

Security analysis

A100/100

Scanned June 6, 2026

npx -y skills add frank-luongt/faos-skills-marketplace --skill snowflake-cortex --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Snowflake Cortex?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Snowflake Cortex
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/frank-luongt-snowflake-cortex/badge)](https://www.skillsdirectory.com/skills/frank-luongt-snowflake-cortex)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
<!-- AUTO-GENERATED by export-skills.py — DO NOT EDIT -->
---
name: snowflake-cortex
description: Snowflake Cortex AI patterns for in-warehouse LLM inference, text-to-SQL (Cortex Analyst), and RAG (Cortex Search). Use when building AI agents that operate on Snowflake data without data movement.
tags: [snowflake, cortex, analytics, llm]
---

# Snowflake Cortex AI

Build AI agents that operate directly on Snowflake data using Cortex LLM functions, Cortex Analyst (text-to-SQL), and Cortex Search (RAG) -- with zero data movement.

## When to Use

- Running LLM inference directly in SQL (summarize, classify, extract, translate)
- Building natural language to SQL interfaces over warehouse data (Cortex Analyst)
- Creating RAG search services over Snowflake-resident documents (Cortex Search)
- Choosing between Claude, Gemini, Llama, and Mistral models within Snowflake

## Supported Models

| Provider | Models |
|---|---|
| **Anthropic** | claude-3-5-sonnet, claude-3-haiku |
| **Google** | gemini-1.5-flash (limited regions) |
| **Meta** | llama3.1-70b, llama3.1-8b, llama3-70b |
| **Mistral** | mistral-large2, mixtral-8x7b |
| **Snowflake** | arctic |

## Patterns

### 1. Cortex LLM Functions (SQL-Callable AI)

```sql
-- Text generation with Claude
SELECT SNOWFLAKE.CORTEX.COMPLETE(
  'claude-3-5-sonnet',
  'Explain the key financial metrics for a SaaS company in 3 bullet points'
);

-- Sentiment analysis
SELECT
  review_id,
  review_text,
  SNOWFLAKE.CORTEX.SENTIMENT(review_text) AS sentiment_score
FROM customer_reviews
WHERE sentiment_score < -0.5;  -- Find negative reviews

-- Summarization
SELECT
  ticket_id,
  SNOWFLAKE.CORTEX.SUMMARIZE(conversation_log) AS summary
FROM support_tickets
WHERE resolved_date = CURRENT_DATE();

-- Classification
SELECT
  email_id,
  subject,
  SNOWFLAKE.CORTEX.CLASSIFY_TEXT(
    body,
    ['billing', 'technical_support', 'feature_request', 'complaint', 'praise']
  ):label::STRING AS category
FROM customer_emails;

-- Translation
SELECT
  SNOWFLAKE.CORTEX.TRANSLATE(product_description, 'en', 'vi') AS vietnamese_desc
FROM products;

-- Embeddings for vector operations
SELECT
  doc_id,
  SNOWFLAKE.CORTEX.EMBED_TEXT_1024('e5-base-v2', content) AS embedding
FROM documents;
```

### 2. Cortex Analyst (Text-to-SQL)

**Semantic Model Definition (YAML):**
```yaml
# Stage this file: PUT file://semantic_model.yaml @my_stage
name: sales_analytics
description: "Sales analytics model for revenue and order analysis"
tables:
  - name: orders
    description: "Sales order data with customer and product details"
    base_table: analytics.public.orders
    columns:
      - name: order_id
        description: "Unique order identifier"
        data_type: VARCHAR
      - name: revenue
        description: "Order revenue in USD"
        data_type: NUMBER
        aggregation: sum
      - name: quantity
        description: "Number of units ordered"
        data_type: NUMBER
        aggregation: sum
    time_dimensions:
      - name: order_date
        description: "Date the order was placed"
        data_type: DATE
    dimensions:
      - name: product_category
        description: "Product category (Electronics, Clothing, etc.)"
        data_type: VARCHAR
      - name: region
        description: "Sales region (APAC, EMEA, Americas)"
        data_type: VARCHAR
verified_queries:
  - question: "What was total revenue last quarter?"
    sql: "SELECT SUM(revenue) FROM orders WHERE order_date >= DATEADD(quarter, -1, DATE_TRUNC('quarter', CURRENT_DATE())) AND order_date < DATE_TRUNC('quarter', CURRENT_DATE())"
  - question: "Top 10 products by revenue"
    sql: "SELECT product_category, SUM(revenue) as total_revenue FROM orders GROUP BY 1 ORDER BY 2 DESC LIMIT 10"
```

**Python Client:**
```python
import requests
import json

def ask_cortex_analyst(question: str, model_file: str = "@my_stage/semantic_model.yaml") -> dict:
    """Send natural language question to Cortex Analyst."""
    from snowflake.connector import connect

    conn = connect(account="...", user="...", password="...", warehouse="MY_WH")

    response = requests.post(
        f"https://{conn.account}.snowflakecomputing.com/api/v2/cortex/analyst/message",
        headers={
            "Authorization": f"Snowflake Token=\"{conn.rest.token}\"",
            "Content-Type": "application/json",
        },
        json={
            "messages": [{"role": "user", "content": [{"type": "text", "text": question}]}],
            "semantic_model_file": model_file,
        },
    )
    return response.json()
```

### 3. Cortex Search (RAG)

```sql
-- Create a search service over knowledge base articles
CREATE OR REPLACE CORTEX SEARCH SERVICE knowledge_search
  ON article_text
  ATTRIBUTES category, author, department
  WAREHOUSE = my_warehouse
  TARGET_LAG = '1 hour'
  AS (
    SELECT
      article_id,
      article_text,
      category,
      author,
      department
    FROM knowledge_base
    WHERE status = 'published'
  );
```

**Python Search Client:**
```python
from snowflake.core import Root

def search_knowledge_base(query: str, filters: dict | None = None, limit: int = 5) -> list[dict]:
    """Search the knowledge base using Cortex Search."""
    root = Root(session)
    search_service = root.databases["MY_DB"].schemas["PUBLIC"].cortex_search_services["knowledge_search"]

    search_params = {
        "query": query,
        "columns": ["article_id", "article_text", "category", "author"],
        "limit": limit,
    }
    if filters:
        search_params["filter"] = filters  # e.g., {"@eq": {"category": "billing"}}

    results = search_service.search(**search_params)
    return results.results
```

### 4. Cortex Agents (Combined Structured + Unstructured)

```python
# Cortex Agent combines Analyst (SQL) + Search (RAG) in one agent
import requests

def ask_cortex_agent(question: str) -> dict:
    """Query the Cortex Agent which routes between SQL and RAG automatically."""
    response = requests.post(
        f"https://{account}.snowflakecomputing.com/api/v2/cortex/agent/message",
        headers={"Authorization": f"Snowflake Token=\"{token}\"", "Content-Type": "application/json"},
        json={
            "messages": [{"role": "user", "content": [{"type": "text", "text": question}]}],
            "tools": [
                {"type": "cortex_analyst_text_to_sql", "semantic_model_file": "@stage/model.yaml"},
                {"type": "cortex_search", "name": "knowledge_search"},
            ],
            "model": "claude-3-5-sonnet",
        },
    )
    return response.json()
```

## Anti-Patterns

- Moving data out of Snowflake for LLM processing -- use Cortex LLM functions in-place
- Running unbounded COMPLETE() on large tables -- always LIMIT and estimate token costs
- Skipping semantic model verified queries -- they dramatically improve Analyst accuracy
- Using one model for everything -- match model to task (haiku for classification, sonnet for reasoning)

## References

- [Snowflake Cortex LLM Functions](https://docs.snowflake.com/en/user-guide/snowflake-cortex/llm-functions)
- [Cortex Analyst](https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-analyst)
- [Cortex Search](https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-search/cortex-search-overview)
- [Cortex Agents](https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-agents)

<!-- Source: .faos/custom/skills/integrations/snowflake-cortex/SKILL.md -->

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.