Cortex, c'est le plus gros ajout de la certification snowpro COF-C03 et c'est pas un hasard. Snowflake pousse l'IA au coeur de la plateforme. Mais entre savoir que ça existe pour une certif et comprendre comment l'utiliser au quotidien, c'est pas la même chose. Cet article comble cet écart en détaillant les fonctions, la syntaxe SQL, les cas d'usage et la facturation.

Ce que Cortex contient

Cortex, c'est un nom global qui regroupe plusieurs briques. Pour bien comprendre, il faut les séparer en catégories :

1. Les fonctions AI SQL : des fonctions LLM que tu appelles en SQL pour analyser du texte, des images, des documents (résumer, traduire, classifier, extraire du sentiment, etc...)

2. Les fonctions ML : des modèles de machine learning pré-entraînés pour faire du forecast, de la détection d'anomalies et de la classification sur des données structurées.

3. Cortex Search : de la recherche sémantique (RAG) sur des documents et du texte non structuré.

4. Cortex Analyst : de la traduction langage naturel vers SQL sur des tables structurées.

5. Cortex Agents : c'est le mix des agents Search et Analyst pour répondre à des questions qui mélangent données structurées et non structurées.

Les fonctions AI SQL

C'est le coeur de Cortex pour la plupart des utilisateurs. Ce sont des fonctions que tu appelles en SQL, qui utilisent des LLMs (OpenAI, Llama, Mistral, Claude, DeepSeek, etc...).

Tu n'as pas besoin de choisir un modèle pour la majorité des fonctions. Snowflake s'en charge. La seule exception, c'est AI_COMPLETE où tu dois choisir explicitement le modèle.

Voici les fonctions principales :

AI_COMPLETE

C'est la fonction la plus flexible. Tu lui donnes un prompt et un modèle, elle te renvoie du texte généré. Tu peux l'utiliser pour résumer, classifier, extraire, reformuler... tout ce que tu veux.

-- Classifier des tickets de support
SELECT
    ticket_id,
    ticket_text,
    AI_COMPLETE(
        'mistral-large2',
        'Classifie ce ticket en une seule catégorie parmi : Bug, Demande, Réclamation, Autre. Ticket : ' || ticket_text
    ) AS categorie
FROM support_tickets;
-- Extraire des infos structurées d'un texte libre
SELECT
    AI_COMPLETE(
        'llama3.1-70b',
        'Extrais le nom du client, le montant et la date de cette facture. Réponds en JSON. Facture : ' || facture_text
    ) AS extraction
FROM factures_brutes;

Quelques modèles disponibles selon la région et la configuration du compte : mistral-large2, llama3.1-8b, llama3.1-70b, claude-3-5-sonnet, deepseek-r1, et bien d'autres...

💡
Tous les modèles ne sont pas égaux en terme de vitesse, qualité et coût

AI_SENTIMENT : analyser le sentiment

Renvoie un score entre -1 (très négatif) et 1 (très positif).

SELECT
    comment_text,
    AI_SENTIMENT(comment_text) AS sentiment_score
FROM customer_feedback;

Pas besoin de spécifier un modèle. C'est une fonction managée, Snowflake gère tout.

AI_CLASSIFY : classer du texte ou des images

Tu définis toi-même les catégories, et Snowflake classe chaque ligne.

SELECT
    email_subject,
    AI_CLASSIFY(
        email_body,
        ['Commande', 'Réclamation', 'Question produit', 'Spam']
    ) AS categorie
FROM emails_entrants;

AI_TRANSLATE : traduire

SELECT
    AI_TRANSLATE(description_produit, 'fr', 'en') AS description_en
FROM produits;

AI_SUMMARIZE_AGG : résumer sur plusieurs lignes

C'est une fonction d'agrégation. Elle résume le contenu de plusieurs lignes d'un coup, sans être limitée par la fenêtre de contexte du modèle.

SELECT
    product_id,
    AI_SUMMARIZE_AGG(review_text) AS resume_avis
FROM product_reviews
GROUP BY product_id;

AI_PARSE_DOCUMENT : lire des PDF et documents

Extrait le texte d'un document (PDF, image) stocké dans un stage Snowflake. Supporte aussi le mode LAYOUT (qui conserve la structure du document).

SELECT AI_PARSE_DOCUMENT(
    TO_FILE('@mon_stage', 'facture_001.pdf'),
    {'mode': 'LAYOUT'}
) AS contenu_extrait;

AI_REDACT : masquer les données personnelles (PII)

SELECT
    AI_REDACT(commentaire_client) AS commentaire_anonymise
FROM feedback;

Les autres fonctions

Il y en a d'autres qui méritent d'être mentionnées :

  • AI_FILTER : renvoie True/False sur un texte ou une image, utile dans un WHERE pour filtrer en langage naturel
  • AI_AGG : comme AI_SUMMARIZE_AGG mais avec un prompt libre (tu définis toi-même ce que tu veux extraire de l'agrégation)
  • AI_EMBED : génère un vecteur d'embedding pour la recherche sémantique
  • AI_SIMILARITY : calcule la similarité entre deux embeddings
  • AI_TRANSCRIBE : transcrit des fichiers audio et vidéo stockés dans un stage
  • AI_EXTRACT : extrait des informations précises d'un texte à partir d'une question

Les fonctions ML (Machine Learning)

C'est une catégorie différente des fonctions AI. Ici, on ne parle pas de LLMs mais de modèles de machine learning classiques pour analyser des données structurées.

L'avantage est que tu n'as pas besoin d'être data scientist pour l'utiliser. Tu entraînes un modèle en SQL, tu l'appelles en SQL.

FORECAST : prédire des séries temporelles

Tu as des ventes par jour et tu veux prévoir les 30 prochains jours ? C'est exactement à ça que sert FORECAST.

-- Étape 1 : créer et entraîner le modèle
CREATE SNOWFLAKE.ML.FORECAST sales_forecast(
    INPUT_DATA => TABLE(SELECT date, revenue FROM daily_sales),
    TIMESTAMP_COLNAME => 'DATE',
    TARGET_COLNAME => 'REVENUE'
);

-- Étape 2 : générer les prévisions
CALL sales_forecast!FORECAST(FORECASTING_PERIODS => 30);

Le modèle gère automatiquement la saisonnalité (jour de la semaine, mois de l'année, etc...) et les tendances. Tu peux aussi ajouter des variables exogènes (jours fériés, promotions, etc..) pour améliorer la précision.

ANOMALY_DETECTION : détecter les anomalies

Le modèle génère une prévision et compare avec les données réelles pour identifier les points anormaux.

-- Entraîner le modèle
CREATE SNOWFLAKE.ML.ANOMALY_DETECTION cost_anomaly_model(
    INPUT_DATA => TABLE(SELECT date, daily_cost FROM cloud_costs),
    TIMESTAMP_COLNAME => 'DATE',
    TARGET_COLNAME => 'DAILY_COST'
);

-- Détecter les anomalies sur de nouvelles données
CALL cost_anomaly_model!DETECT_ANOMALIES(
    INPUT_DATA => TABLE(SELECT date, daily_cost FROM cloud_costs_recent),
    TIMESTAMP_COLNAME => 'DATE',
    TARGET_COLNAME => 'DAILY_COST'
);

Le résultat contient une colonne IS_ANOMALY (True/False) et un PERCENTILE qui indique à quel point la valeur est inhabituelle.

Cas d'usage simple => surveiller les coûts Snowflake, détecter des pics de trafic inhabituels ou identifier des anomalies dans les ventes.

CLASSIFICATION : classer des données structurées

Contrairement aux deux précédentes, CLASSIFICATION ne nécessite pas de séries temporelles. Elle classe des lignes en catégories à partir de features numériques et catégorielles.

-- Entraîner le modèle
CREATE SNOWFLAKE.ML.CLASSIFICATION churn_model(
    INPUT_DATA => TABLE(SELECT * FROM training_data),
    TARGET_COLNAME => 'IS_CHURNED'
);

-- Prédire sur de nouvelles données
SELECT * FROM TABLE(churn_model!PREDICT(
    INPUT_DATA => TABLE(SELECT * FROM new_customers)
));
💡
Les fonctions ML créent des objets de type modèle dans ton schéma. Tu peux les réentraîner périodiquement avec une Task pour garder tes prédictions à jour.

Cortex Search : la recherche sémantique (RAG)

Cortex Search, c'est de la recherche hybride (sémantique + mots-clés) sur du texte non structuré. Tu crées un service de recherche sur une colonne texte, et Snowflake gère l'indexation, les embeddings et la recherche.

Le cas d'usage classique est par exemple utiliser des documents internes (manuels, procédures etc...) et permettre à tes utilisateurs de poser des questions en langage naturel pour trouver l'info pertinente.

C'est la brique qui permet de faire du RAG (Retrieval-Augmented Generation) directement dans Snowflake.

Cortex Analyst : du langage naturel au SQL

Cortex Analyst fait l'inverse de Cortex Search. Au lieu de chercher dans des documents, il traduit une question en langage naturel en requête SQL sur tes tables structurées.

L'utilisateur pose une question comme "Quel est le chiffre d'affaires par région ce trimestre ?" et Cortex Analyst génère et exécute la requête SQL correspondante.

Pour que ça fonctionne, tu dois fournir un fichier YAML (semantic model) qui décrit tes tables, colonnes, métriques et relations. C'est ce fichier qui donne le contexte au modèle pour générer du SQL correct.

💡
La distinction à retenir : Cortex Search = documents et texte (non structuré). Cortex Analyst = tables SQL (structuré).

Cortex Agents : le meilleur des deux mondes

Les Agents orchestrent Cortex Search et Cortex Analyst dans une seule conversation. Ils décident automatiquement s'il faut chercher dans des documents ou requêter des tables SQL selon la question posée.

Snowflake positionne cette couche comme la brique centrale de agentic AI, car ce sont des agents IA capables de chercher, analyser et agir d'une manière globale.

Les Agents supportent aussi le MCP (Model Context Protocol) pour se connecter à des outils externes (Slack, Jira, Github etc...).

Facturation : comment c'est facturé ?

La facturation dépend du type de fonction :

Type Facturation
Fonctions AI SQL (AI_COMPLETE, AI_SENTIMENT, etc.) Par token (input + output), coût variable selon le modèle
Fonctions ML (FORECAST, ANOMALY_DETECTION, CLASSIFICATION) En crédits de compute (virtual warehouse)
Cortex Search Par requête de recherche
Cortex Analyst Par requête

Pour les fonctions AI SQL, le coût varie selon le modèle. Un modèle léger comme llama3.1-8b coûte beaucoup moins cher qu'un modèle puissant comme claude-3-5-sonnet. C'est à toi de trouver le bon compromis qualité/coût selon le use case.

Depuis mars 2026, Snowflake fournit la vue CORTEX_AI_FUNCTIONS_USAGE_HISTORY dans Account Usage pour suivre la consommation par fonction, par modèle, par utilisateur et par rôle. Tu peux même mettre en place des alertes et des limites de dépenses par utilisateur.

Droits d'accès : qui peut utiliser Cortex ?

Pour utiliser les fonctions AI SQL, un utilisateur a besoin de deux choses :

  • Le database role SNOWFLAKE.CORTEX_USER (ou AI_FUNCTIONS_USER), qui est attribué à PUBLIC par défaut, donc accessible à tous sauf si un admin l'a révoqué,
  • Le privilège de compte USE AI FUNCTIONS.

Si tu veux restreindre l'accès, tu peux révoquer le rôle CORTEX_USER de PUBLIC et le donner uniquement aux rôles qui en ont besoin.

Aller plus loin : Formation Snowflake

J'ai regroupé tous mes articles Snowflake dans un parcours complet.

👉 Accéder à la Formation Snowflake

Tu veux que je t'accompagne sur ton projet data (Snowflake, ingestion, modélisation, performance, coûts, gouvernance) ?

👉 Réserver un appel de 30 minutes

Tu prépares la certification SnowPro ? Entraîne-toi avec 700+ questions d'examens blancs chronométrés, corrections détaillées et suivi de progression.

👉 S'entraîner sur DataCertification.fr