Cortex AISQL Images¶
Avec Cortex AI Images, vous pouvez accomplir les tâches suivantes :
Comparer des images
Ajouter une légende à des images
Classer des images
Extraire des entités à partir d’images
Générer des vecteurs d’intégration à utiliser dans des systèmes de récupération
Répondre aux questions en utilisant des données dans des graphiques et des tables
Vous pouvez effectuer ces tâches à l’aide des fonctions suivantes :
Exigences en matière d’entrées¶
COMPLETE Multimodal peut traiter des images présentant les caractéristiques suivantes :
Exigence |
Valeur |
---|---|
Extensions de noms de fichiers |
|
Chiffrement de la zone de préparation |
Chiffrement côté serveur |
Type de données |
Note
Le traitement des fichiers à partir des zones de préparation est actuellement incompatible avec les politiques réseau personnalisées.
Créer une zone de préparation pour le traitement des images¶
Créez une zone de préparation adaptée au stockage des images à traiter. La zone de préparation doit disposer d’une table de répertoire et d’un chiffrement côté serveur.
Le SQL ci-dessous permet de créer une zone de préparation interne adaptée.
CREATE OR REPLACE STAGE input_stage
DIRECTORY = ( ENABLE = true )
ENCRYPTION = ( TYPE = 'SNOWFLAKE_SSE' );
Le SQL suivant crée une zone de préparation externe sur Amazon S3. Les zones de préparation externes Azure et GCP sont également prises en charge.
CREATE OR REPLACE STAGE input_stage
URL='s3://<s3-path>/'
DIRECTORY = ( ENABLE = true )
CREDENTIALS = (AWS_KEY_ID = <aws_key_id>
AWS_SECRET_KEY = <aws_secret_key>)
ENCRYPTION = ( TYPE = 'AWS_SSE_S3' );
Note
Pour actualiser automatiquement la table de répertoire de la zone de préparation externe lorsque des fichiers nouveaux ou mis à jour sont disponibles, passez l’option AUTO_REFRESH = true
lors de la création de la zone de préparation. Pour plus d’informations, voir CREATE STAGE.
Analyser les images¶
La fonction COMPLETE traite soit une seule image, soit plusieurs images (par exemple, pour extraire les différences entre les entités sur plusieurs images). L’appel de la fonction spécifie ce qui suit :
Le modèle multimodal à utiliser
Un prompt
Le chemin de la zone de préparation du ou des fichiers image via un objet FILE
Exemple de questions-réponses sur la vision¶
L’exemple suivant utilise le modèle Claude Sonnet 3.5 d’Anthropic pour résumer un diagramme circulaire science-employment-slide.jpeg
stocké dans la zone de préparation @myimages
.

Répartition des professions où les mathématiques sont considérées comme « extrêmement importantes » en 2023¶
SELECT AI_COMPLETE('claude-3-5-sonnet',
'Summarize the insights from this pie chart in 100 words',
TO_FILE('@myimages', 'science-employment-slide.jpeg'));
Réponse :
This pie chart shows the distribution of occupations where mathematics is considered "extremely important" in 2023.
Data scientists dominate with nearly half (48.7%) of all such positions, followed by operations research analysts
at 29.6%. The remaining positions are distributed among statisticians (7.8%), actuaries (7.2%), physicists (5.1%),
mathematicians (0.6%), and other mathematical science occupations (1.1%). This distribution highlights the growing
importance of data science in mathematics-intensive careers, while traditional mathematics roles represent a smaller
share of the workforce.
Exemple de comparaison d’images¶
Note
Actuellement, seuls les modèles Anthropic (claude
) et Meta (llama
) peuvent faire référence à plusieurs images dans un seul prompt. La prise en charge de plusieurs images pour d’autres modèles pourrait être disponible dans une prochaine version.
Utilisez la fonction d’aide PROMPT pour traiter plusieurs images en un seul appel COMPLETE. L’exemple suivant utilise le modèle Claude Sonnet 3.5 d’Anthropic pour comparer deux créations publicitaires différentes à partir de la zone de préparation @myimages
.

Image de deux publicités pour des voitures électriques¶
SELECT AI_COMPLETE('claude-3-5-sonnet',
PROMPT('Compare this image {0} to this image {1} and describe the ideal audience for each in two concise bullets no longer than 10 words',
TO_FILE('@myimages', 'adcreative_1.png'),
TO_FILE('@myimages', 'adcreative_2.png')
));
Réponse :
First image ("Discover a New Energy"):
• Conservative luxury SUV buyers seeking a subtle transition to electrification
Second image ("Electrify Your Drive"):
• Young, tech-savvy urbanites attracted to bold, progressive automotive design
Exemple de catégorisation des images¶
l’exemple suivant utilise AI_CLASSIFY pour catégoriser une image pour une application immobilière.

le SQL suivant utilise la fonction AI_CLASSIFY pour catégoriser l’image en tant qu’image d’un espace de vie, d’une cuisine, d’une salle de bain, d’un jardin ou d’une suite parentale.
SELECT AI_CLASSIFY(TO_FILE('@my_images', 'REAL_ESTATE_STAGING.PNG'),
['Living Area', 'Kitchen', 'Bath', 'Garden', 'Master Bedroom']) AS room_classification;
Réponse :
{ "labels": [ "Living Area" ] }
le SQL ci-dessous catégorise les objets trouvés dans l’image ci-dessus comme un canapé, une fenêtre, une table, une télé ou une œuvre d’art.
SELECT AI_CLASSIFY (TO_FILE ('@my_images', 'REAL_ESTATE_STAGING.PNG'),
['Couch', 'Window', 'Table', 'Television', 'Art'], {'output_mode': 'multi'} )
AS living_room_objects;
Réponse :
{
"labels": [
"Art",
"Couch",
"Table",
"Window"
]
}
Rechercher des images¶
Vous pouvez utiliser AI_EMBED pour rechercher des images similaires à une image cible. tout d’abord, utilisez la fonction AI_EMBED pour générer un vecteur d’intégration pour l’image cible, mappant ses caractéristiques visuelles dans un espace vectoriel abstrait, une représentation numérique des caractéristiques de l’image. Vous pouvez ensuite utiliser des fonctions de similarité vectorielle pour comparer ce vecteur d’intégration aux vecteurs d’intégration d’autres images, et produire un score de similarité basé sur leurs caractéristiques visuelles communes ou similaires. Ce score peut être utilisé pour catégoriser, classer ou filtrer les images en fonction de leur similarité avec l’image cible.
![]() |
![]() |
par exemple, au vu des images ci-dessus, le SQL suivant génère un vecteur d’intégration pour chaque image, puis compare les vecteurs à l’aide de la similarité cosinus. Le résultat, environ 0,5, indique que les images sont relativement similaires. Les deux clichés sont pris en ville, et montrent des foules en arrière-plan, mais les sujets principaux sont différents.
WITH ai_image_embeddings as (
SELECT
AI_EMBED('voyage-multimodal-3',
TO_FILE ('@my_images', 'CITY_WALKING1.PNG')) as image1_embeddings,
AI_EMBED('voyage-multimodal-3',
TO_FILE ('@my_images', 'CITY_WALKING2.PNG')) as image2_embeddings
)
SELECT VECTOR_COSINE_SIMILARITY(image1_embeddings,image2_embeddings) as similarity FROM ai_image_embeddings;
0.5359029029
Pour trouver des images similaires à une image cible, vous pouvez utiliser AI_SIMILARITY. L’exemple ci-dessous calcule un score de similarité pour éventuellement des milliers d’images et renvoie les créations publicitaires les plus similaires à la publicité pour les motos ci-dessous.
SELECT
TO_FILE('@ad_images', relative_path) as ALL_ADS
FROM DIRECTORY(@ad_images)
WHERE AI_SIMILARITY(TO_FILE('@ad_images', 'image_226.jpg'), ALL_ADS) >= 0.5;
La requête renvoie les images depuis une table multimodale dont le score de similarité est supérieur à 0,50. Une des images identifiées (image_226.jpg
) est celle que nous avons utilisée comme référence.
+-----------------------------------------------------------+
| {} ALL_ADS |
+-----------------------------------------------------------+
| { "CONTENT_TYPE": "image/jpeg", |
| "ETAG": "686897696a7c876b7e", |
| "LAST_MODIFIED": "Wed, 26 Mar 2025 18:11:45 GMT", |
| "RELATIVE_PATH": "image_226.jpg", |
| "SIZE": 39086, |
| "STAGE": "@ad_images" } |
+-----------------------------------------------------------+
| { "CONTENT_TYPE": "image/jpeg", |
| "ETAG": "e7b678c7a696798686", |
| "LAST_MODIFIED": "Wed, 26 Mar 2025 18:11:57 GMT", |
| "RELATIVE_PATH": "image_441.jpg", |
| "SIZE": 12650, |
| "STAGE": "@ad_images" }, |
+-----------------------------------------------------------+
Limites du modèle¶
Tous les modèles disponibles pour Snowflake Cortex ont des limites sur le nombre total de jetons d’entrée et de sortie. C’est ce que l’on appelle la fenêtre contextuelle du modèle. La taille de la fenêtre contextuelle est mesurée en jetons. Les entrées dépassant la limite de la fenêtre contextuelle entraînent une erreur.
Pour les modèles de texte, les jetons représentent généralement environ quatre caractères de texte, de sorte que le nombre de mots correspondant à une limite est inférieur au nombre de jetons.
Pour les modèles d’image, le nombre de jetons par image dépend de l’architecture du modèle de vision. Les jetons contenus dans un prompt (par exemple, « Quel est cet animal ? ») contribuent également à la fenêtre contextuelle du modèle.
Modèle |
Fenêtre contextuelle (jetons) |
Types de fichiers |
Taille du fichier |
Images par prompt |
---|---|---|---|---|
|
1,047,576 |
.jpg, .jpeg, .png, .webp, .gif |
10MB |
5 |
|
1,047,576 |
.jpg, .jpeg, .png, .webp, .gif |
10MB |
5 |
|
200,000 |
.jpg, .jpeg, .png, .webp, .gif |
3,75 MB [L1] |
20 |
|
200,000 |
.jpg, .jpeg, .png, .webp, .gif |
3,75 MB [L1] |
20 |
|
200,000 |
.jpg, .jpeg, .png, .webp, .gif |
3,75 MB [L1] |
20 |
|
200,000 |
.jpg, .jpeg, .png, .webp, .gif |
3,75 MB [L1] |
20 |
|
128,000 |
.jpg, .jpeg, .png, .webp, .gif, .bmp |
10 MB |
10 |
|
128,000 |
.jpg, .jpeg, .png, .webp, .gif, .bmp |
10 MB |
10 |
|
128,000 |
.jpg, .jpeg, .png, .webp, .gif, .bmp |
10 MB |
1 |
|
32,768 |
.jpg, .png, .pg, .gif, .bmp |
10 MB |
1 |
Considérations relatives aux clients¶
La facturation s’adapte au nombre de jetons traités. Le nombre de jetons par image dépend de l’architecture du modèle de vision.
La formule des modèles d’Anthropic (
claude
) est en gros : jetons = (largeur en pixels x hauteur en pixels) / 750.Les modèles Mistral (
pixtral
) divisent chaque image en lots de 16 x 16 pixels et convertissent chaque lot en jeton. Le nombre total de jetons équivaut approximativement à (Largeur en pixels / 16) * (Hauteur en pixels / 16).Les modèles Meta (
llama
) tentent de couvrir l’image de vignettes carrées. En fonction du format et de la taille de l’image, le nombre de vignettes peut aller jusqu’à 16, chacune étant représentée par environ 153 jetons.Les modèles Open AI redimensionnent l’image et lui superposent des correctifs carrés. pour
openai-gpt-4.1
, en fonction du ratio et de la taille de l’image, le nombre de jetons peut être de 211 (images jusqu’à 512x512 px), 352 (images non carrées avec des côtés plus longs 1024 px), ou de 630 jetons (images carrées d’au moins 1024x1024 px) et de 913 jetons (images non carrées avec une longueur de côté plus courte de 1 024 px). Pouropenai-o4-mini
, la logique de redimensionnement est plus utilisée et le nombre de jetons varie de 86 (128x51 2px) à 1428 (2048x1024 px), et ne suit pas un modèle linéaire.voyage-multimodal-3
cible des correctifs d’images d’une taille d’environ 14x14 px. L’image est redimensionnée de manière à ce qu’elle soit couverte par une grille, qui comporte un minimum de 64 correctifs et un maximum de 2 500 correctifs. Deux jetons d’image supplémentaires sont ajoutés, de sorte que l’entrée va de 66 à 2 502 jetons, en fonction de la taille de l’image et du rapport d’aspect.
Note
La fonction COUNT_TOKENS ne prend pas actuellement en charge les entrées d’images.
Choisir un modèle de vision¶
La fonction COMPLETE prend en charge plusieurs modèles dont la capacité, le temps de latence et le coût varient. Pour obtenir une performance optimale par crédit, choisissez un modèle adapté à la taille du contenu et à la complexité de la tâche.
Modèle |
MMMU |
Mathvista |
ChartQA |
DocVQA |
VQAv2 |
---|---|---|---|---|---|
GPT-4o |
68,6 |
64,6 |
85,1 |
88,9 |
77,8 |
|
75,0 |
72,0 |
|||
|
81,6 |
84,3 |
|||
|
68,0 |
64,4 |
87,6 |
90,3 |
70,7 |
|
73,4 |
73,7 |
90 |
94,4 |
|
|
69,4 |
70,7 |
88,8 |
94,4 |
|
|
64,0 |
69,4 |
88,1 |
85,7 |
67 |
Les critères de comparaison sont les suivants :
MMMU : Évalue les modèles multimodaux sur des tâches multidisciplinaires qui nécessitent un raisonnement de niveau collégial.
Mathvista : Critère de comparaison du raisonnement mathématique dans un contexte visuel.
ChartQA: Évalue des questions de raisonnement complexes sur des graphiques.
DocVQA et VQv2 : Critères de comparaison pour les questions-réponses visuelles sur des documents.
pour les intégrations multimodales, seul le modèle voyage-multimodal-3
est actuellement disponible. voyage-multimodal-3
est un modèle d’intégration multimodale de pointe capable d’intégrer du texte et des images. il permet d’extraire des fonctionnalités visuelles clés à partir de sources telles que des captures d’écran de PDFs, des diapositives, des tables et des diagrammes, réduisant ainsi la nécessité de workflows complexes d’analyse de documents. Selon les benchmarks internes de Voyage AI, le modèle voyage-multimodal-3
est plus performant que les modèles concurrents tels que OpenAI CLIP Large, Amazon Titan Multimodal et Cohere Multimodal v3.
Disponibilité régionale¶
Cette fonction est prise en charge nativement pour les comptes des régions Snowflake suivantes :
Modèle
|
AWS US West 2
(Oregon)
|
AWS US East 1
(Virginie du Nord)
|
AWS Europe Central 1
(Francfort)
|
---|---|---|---|
|
✔ |
✔ |
|
|
|||
|
|||
|
|||
|
✔ |
✔ |
✔ |
|
✔ |
||
|
✔ |
||
|
AI_COMPLETE est disponible dans d’autres régions via l’inférence interrégionale.
Conditions d’erreur¶
Message |
Explication |
---|---|
Échec de la requête pour la fonction externe SYSTEM$COMPLETE_WITH_IMAGE_INTERNAL avec une erreur de service distant : 400 “« invalid image path » |
L’extension du fichier ou le fichier lui-même n’est pas accepté par le modèle. Le message peut également signifier que le chemin d’accès au fichier est incorrect, c’est-à-dire que le fichier n’existe pas à l’emplacement spécifié. Les noms de fichiers sont sensibles à la casse. |
Erreur dans l’objet sécurisé |
Peut indiquer que la zone de préparation n’existe pas. Vérifiez le nom de la zone de préparation et assurez-vous qu’elle existe et est accessible. Veillez à utiliser le signe at (@) au début du chemin de la zone de préparation, par exemple |
Échec de la requête pour la fonction externe _COMPLETE_WITH_PROMPT avec une erreur de service distant : 400 “« paramètres de requête non valides : format d’image non pris en charge : image/** |
Format d’image non pris en charge donné à |
Échec de la requête pour la fonction externe _COMPLETE_WITH_PROMPT avec une erreur de service distant : 400 “« paramètres de requête non valides : Les données de l’image dépassent la limite de 5 MB » |
L’image fournie à |
Juridique¶
La classification des données d’entrées et de sorties est présentée dans la table suivante.
Classification des données d’entrée |
Classification des données de sortie |
Désignation |
---|---|---|
Usage Data |
Customer Data |
Les fonctions généralement disponibles sont des fonctions AI couvertes. Les fonctions d’aperçu sont les fonctions AI d’aperçu. [1] |
Pour plus d’informations, reportez-vous à Snowflake AI et ML.