Cortex AISQL Images¶
Com o Cortex AI Images, você pode realizar o seguinte:
Comparar imagens
Gerar legendas para imagens
Classificar imagens
Extrair entidades de imagens
Gerar vetores de incorporação para uso em sistemas de recuperação
Responder a perguntas usando os dados em gráficos e tabelas
Você pode realizar essas tarefas com as seguintes funções:
Requisitos de entrada¶
A multimodal COMPLETE pode processar imagens com as seguintes características:
Requisito |
Valor |
---|---|
Extensões de nome de arquivo |
|
Criptografia de estágio |
Criptografia do lado do servidor |
Tipo de dados |
Nota
Atualmente, o processamento de arquivos de estágios é incompatível com políticas de rede personalizadas.
Criação de um estágio para o processamento de imagens¶
Crie um estágio adequado para armazenar as imagens a serem processadas. O estágio deve ter uma tabela de diretório e criptografia no lado do servidor.
O SQL abaixo cria um estágio interno adequado.
CREATE OR REPLACE STAGE input_stage
DIRECTORY = ( ENABLE = true )
ENCRYPTION = ( TYPE = 'SNOWFLAKE_SSE' );
O SQL a seguir cria um estágio externo no Amazon S3. Também há suporte para os estágios externos do Azure e GCP.
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' );
Nota
Para atualizar automaticamente a tabela de diretórios do estágio externo quando houver arquivos novos ou atualizados disponíveis, passe a opção AUTO_REFRESH = true
ao criar o estágio. Para obter mais informações, consulte CREATE STAGE.
Análise de imagens¶
A função COMPLETE processa uma única imagem ou várias imagens (por exemplo, extraindo diferenças em entidades em várias imagens). A chamada de função especifica o seguinte:
O modelo multimodal a ser usado
Um prompt
O caminho do estágio do(s) arquivo(s) de imagem por meio de um objeto FILE
Exemplo de perguntas e respostas de visão¶
O exemplo a seguir usa o modelo Claude Sonnet 3.5 do Anthropic para resumir um gráfico de pizza science-employment-slide.jpeg
armazenado no estágio @myimages
.

A distribuição das ocupações em que a matemática é considerada “extremamente importante” em 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'));
Resposta:
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.
Exemplo de comparação de imagens¶
Nota
Atualmente, apenas os modelos Anthropic (claude
) e Meta (llama
) podem fazer referência a várias imagens em um único prompt. O suporte a várias imagens para outros modelos poderá estar disponível em um lançamento futuro.
Use a função auxiliar PROMPT para processar várias imagens em uma única chamada COMPLETE. O exemplo a seguir usa o modelo Claude Sonnet 3.5 da Anthropic para comparar dois criativos de anúncios diferentes do estágio @myimages
.

Imagem de dois anúncios de carros elétricos¶
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')
));
Resposta:
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
Exemplo de classificação de imagens¶
O exemplo a seguir usa AI_CLASSIFY para classificar uma imagem de um aplicativo de imóveis.

O SQL a seguir usa a função AI_CLASSIFY para classificar a imagem como uma foto de sala de estar, cozinha, sala de banho, jardim ou quarto principal.
SELECT AI_CLASSIFY(TO_FILE('@my_images', 'REAL_ESTATE_STAGING.PNG'),
['Living Area', 'Kitchen', 'Bath', 'Garden', 'Master Bedroom']) AS room_classification;
Resposta:
{ "labels": [ "Living Area" ] }
O SQL abaixo categoriza os objetos encontrados na imagem acima como sofá, janela, mesa, televisão ou obra de arte.
SELECT AI_CLASSIFY (TO_FILE ('@my_images', 'REAL_ESTATE_STAGING.PNG'),
['Couch', 'Window', 'Table', 'Television', 'Art'], {'output_mode': 'multi'} )
AS living_room_objects;
Resposta:
{
"labels": [
"Art",
"Couch",
"Table",
"Window"
]
}
Pesquisa de imagens¶
Você pode usar AI_EMBED para encontrar imagens semelhantes a uma imagem de destino. Primeiro, use a função AI_EMBED para gerar um vetor de incorporação para a imagem de destino, mapeando suas características visuais em um espaço vetorial abstrato, uma representação numérica das características da imagem. Depois disso, você pode usar funções de similaridade vetorial para comparar esse vetor de incorporação com os de outras imagens, o que produz uma pontuação de similaridade baseada nas características visuais comuns ou semelhantes. Essa pontuação pode ser usada para classificar, pontuar ou filtrar imagens com base na similaridade com a imagem de destino.
![]() |
![]() |
Por exemplo, para cada uma das imagens acima, o SQL a seguir gera um vetor de incorporação e os compara usando a similaridade por cosseno. O resultado, cerca de 0,5, indica que as imagens são de alguma forma semelhantes. Ambas as fotos foram tiradas em um cenário urbano e mostram uma multidão de fundo, mas os elementos principais são diferentes.
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
Para encontrar imagens semelhantes a uma imagem de destino, você pode usar a AI_SIMILARITY. O exemplo a seguir calcula uma pontuação de similaridade para possivelmente milhares de imagens e retorna os criativos de anúncio mais semelhantes ao anúncio da motocicleta abaixo.
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;
A consulta retorna imagens de uma tabela multimodal em que a pontuação de similaridade é maior que 0,50. Uma das imagens identificadas (image_226.jpg
) é a que usamos como referência.
+-----------------------------------------------------------+
| {} 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" }, |
+-----------------------------------------------------------+
Limitações do modelo¶
Todos os modelos disponíveis para o Snowflake Cortex têm limitações quanto ao número total de tokens de entrada e saída, conhecido como a janela de contexto do modelo. O tamanho da janela de contexto é medido em tokens. As entradas que excedem o limite da janela de contexto resultam em um erro.
Para modelos de texto, os tokens geralmente representam aproximadamente quatro caracteres de texto, portanto, a contagem de palavras correspondente a um limite é menor que a contagem de tokens.
Para modelos de imagem, a contagem de tokens por imagem depende da arquitetura do modelo de visão. Os tokens em um prompt (por exemplo, “que animal é esse?”) também contribuem para a janela de contexto do modelo.
Modelo |
Janela de contexto (tokens) |
Tipos de arquivo |
Tamanho do arquivo |
Imagens por 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 |
Considerações sobre custo¶
O faturamento é escalonado de acordo com o número de tokens processados. O número de tokens por imagem depende da arquitetura do modelo de visão.
A fórmula dos modelos antrópicos (
claude
) é aproximadamente: tokens = (largura em pixels × altura em pixels)/750.Os modelos Mistral (
pixtral
) dividem cada imagem em lotes de 16 × 16 pixels e convertem cada lote em um token. O número total de tokens é equivalente a aproximadamente (largura em pixels/16) * (altura em pixels/16).Os modelos Meta (
llama
) tentam colocar a imagem em blocos quadrados. Dependendo da proporção e do tamanho da imagem, o número de blocos pode ser de até 16, cada uma representada por cerca de 153 tokens.Os modelos Open AI redimensionam e quadriculam a imagem. Para
openai-gpt-4.1
, dependendo da proporção e do tamanho da imagem, o número de tokens pode ser 211 (imagens de até 512 x 512px), 352 (imagens não quadradas com comprimento lateral maior que 1.024 px) ou de 630 tokens (imagens quadradas com pelo menos 1.024 x 1.024 px) a 913 tokens (imagens não quadradas com comprimento lateral menor que 1.024 px). Paraopenai-o4-mini
, a lógica de redimensionamento é mais complicada, e o número de tokens varia de 86 (128 x 512 px) a 1.428 (2.048 x 1.024 px), e não segue um padrão linear.O
voyage-multimodal-3
opera em uma matriz de quadrados de imagem com tamanho aproximado de 14 x 14 px. A imagem é redimensionada de maneira que fique coberta por uma grade, que tem um mínimo de 64 e um máximo de 2.500 quadrados. Dois tokens de imagem extras são adicionados, de modo que a entrada varia de 66 a 2.502 tokens, dependendo do tamanho e da proporção da imagem.
Nota
No momento, a função COUNT_TOKENS não é compatível com entradas de imagem.
Escolha de um modelo de visão¶
A função COMPLETE é compatível com vários modelos de capacidade, latência e custo variados. Para obter o melhor desempenho por crédito, escolha um modelo que se alinhe ao tamanho do conteúdo e à complexidade da tarefa.
Modelo |
MMMU |
Mathvista |
ChartQA |
DocVQA |
VQAv2 |
---|---|---|---|---|---|
GPT-4o |
68,6 |
64,6 |
85,1 |
88,9 |
77,8 |
|
75 |
72 |
|||
|
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 |
Os benchmarks são:
MMMU: avalia modelos multimodais em tarefas multidisciplinares que exigem raciocínio de nível universitário.
Mathvista: referência de raciocínio matemático em um contexto visual.
ChartQA: avalia questões de raciocínio complexas sobre gráficos.
DocVQA e VQv2: benchmarks para responder a perguntas visuais em documentos.
Para incorporações multimodais, apenas o modelo voyage-multimodal-3
está disponível no momento. O voyage-multimodal-3
é um modelo de incorporação multimodal de última geração capaz de incorporar texto e imagens. Ele pode extrair as principais características visuais de fontes, como capturas de tela de PDFs, slides, tabelas e figuras, reduzindo a necessidade de fluxos de trabalho de análise de documentos complexos. De acordo com os parâmetros de comparação internos da Voyage AI, o modelo voyage-multimodal-3
supera os da concorrência, como OpenAI CLIP Large, Amazon Titan Multimodal e Cohere Multimodal v3.
Disponibilidade regional¶
O suporte a esse recurso está disponível nativamente para contas nas seguintes regiões do Snowflake:
Modelo
|
AWS US West 2
(Oregon)
|
AWS US East 1
(N. Virginia)
|
AWS Europe Central 1
(Frankfurt)
|
---|---|---|---|
|
✔ |
✔ |
|
|
|||
|
|||
|
|||
|
✔ |
✔ |
✔ |
|
✔ |
||
|
✔ |
||
|
A AI_COMPLETE está disponível em regiões adicionais por meio da inferência entre regiões.
Condições de erro¶
Mensagem |
Explicação |
---|---|
Falha na solicitação da função externa SYSTEM$COMPLETE_WITH_IMAGE_INTERNAL com erro de serviço remoto: 400 “invalid image path” |
A extensão do arquivo ou o próprio arquivo não é aceito pelo modelo. A mensagem também pode significar que o caminho do arquivo está incorreto, ou seja, o arquivo não existe no local especificado. Os nomes de arquivos diferenciam maiúsculas de minúsculas. |
Erro no objeto seguro |
Pode indicar que o estágio não existe. Verifique o nome do estágio e certifique-se de que o estágio exista e esteja acessível. Não se esqueça de usar o sinal de arroba (@) no início do caminho do estágio, como |
Falha na solicitação da função externa _COMPLETE_WITH_PROMPT com erro de serviço remoto: 400 “invalid request parameters: unsupported image format: image/**” |
Formato de imagem não compatível fornecido a |
Falha na solicitação da função externa _COMPLETE_WITH_PROMPT com erro de serviço remoto: 400 “invalid request parameters: Image data exceeds the limit of 5.00 MB” |
A imagem fornecida para |
Jurídico¶
A classificação dos dados de entradas e saídas é definido na tabela a seguir.
Classificação de dados de entrada |
Classificação de dados de saída |
Designação |
---|---|---|
Usage Data |
Customer Data |
As funções disponíveis ao público em geral são recursos de AI cobertos. As funções em versão preliminar são recursos de AI em versão preliminar. [1] |
Para obter informações adicionais, consulte AI e ML Snowflake.