Cortex AISQL Images¶
Cortex AI Images를 사용하면 다음을 수행할 수 있습니다.
- 이미지 비교 
- 캡션 이미지 
- 이미지 분류 
- 이미지에서 엔터티 추출하기 
- 검색 시스템에서 사용하기 위한 임베딩 벡터 생성 
- 그래프와 차트의 데이터를 활용하여 질문에 답하기 
다음 함수를 사용하여 이러한 작업을 수행할 수 있습니다.
입력 요구 사항¶
COMPLETE 멀티모달은 다음과 같은 특성을 가진 이미지를 처리할 수 있습니다.
| 요구 사항 | 값 | 
|---|---|
| 파일 이름 확장자 | 
 | 
| 스테이지 암호화 | 서버 측 암호화: | 
| 데이터 타입 | 
참고
스테이지에서 파일을 처리하는 기능은 현재 사용자 정의 네트워크 정책과 호환되지 않습니다.
이미지 처리를 위한 스테이지 만들기¶
처리할 이미지를 저장하기에 적합한 스테이지를 생성합니다. 스테이지에는 디렉터리 테이블과 서버 측 암호화가 있어야 합니다.
아래 SQL 에서 적절한 내부 스테이지를 생성합니다.
CREATE OR REPLACE STAGE input_stage
    DIRECTORY = ( ENABLE = true )
    ENCRYPTION = ( TYPE = 'SNOWFLAKE_SSE' );
다음의 SQL은 Amazon S3에 외부 스테이지를 생성합니다. Azure 및 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' );
참고
새 파일이나 업데이트된 파일이 가용할 때 외부 스테이지의 디렉터리 테이블을 자동으로 새로 고치려면 스테이지를 만들 때 AUTO_REFRESH = true 옵션을 전달하십시오. 자세한 내용은 CREATE STAGE 섹션을 참조하십시오.
이미지 분석¶
COMPLETE 함수는 단일 이미지 또는 여러 이미지를 처리합니다(예: 여러 이미지에서 엔터티의 차이점을 추출하는 경우). 함수 호출은 다음을 지정합니다.
- 사용할 멀티모달 모델 
- 프롬프트 
- FILE 오브젝트를 통한 이미지 파일의 스테이지 경로입니다 
비전 Q&A 예시¶
다음 예는 Anthropic의 Claude Sonnet 3.5 모델을 사용하여 @myimages 스테이지에 저장된 파이 차트 science-employment-slide.jpeg 를 요약한 것입니다.
 
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'));
응답:
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.
이미지 비교 예시¶
참고
현재 Anthropic(claude) 및 Meta(llama) 모델만 단일 프롬프트에서 여러 이미지를 참조할 수 있습니다. 다른 모델에 대한 다중 이미지 지원은 향후 릴리스에서 가용성이 향상될 수 있습니다.
PROMPT 도우미 함수 를 사용하여 한 번의 COMPLETE 호출로 여러 이미지를 처리할 수 있습니다. 다음 예시에서는 Anthropic의 Claude Sonnet 3.5 모델을 사용하여 @myimages 스테이지의 서로 다른 두 광고 크리에이티브를 비교합니다.
 
전기 자동차 광고 2개의 이미지¶
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')
));
응답:
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
이미지 분류 예시¶
다음 예시에서는 부동산 애플리케이션에서 이미지를 분류하기 위해 AI_CLASSIFY를 사용합니다.
 
다음의 SQL은 AI_CLASSIFY 함수를 사용하여 이미지를 거실, 주방, 욕실, 정원 또는 안방 침실 이미지로 분류합니다.
SELECT AI_CLASSIFY(TO_FILE('@my_images', 'REAL_ESTATE_STAGING.PNG'),
    ['Living Area', 'Kitchen', 'Bath', 'Garden', 'Master Bedroom']) AS room_classification;
응답:
{ "labels": [ "Living Area" ] }
아래의 SQL은 위 이미지에서 발견된 오브젝트를 소파, 창문, 테이블, 텔레비전 또는 예술 작품으로 분류합니다.
SELECT AI_CLASSIFY (TO_FILE ('@my_images', 'REAL_ESTATE_STAGING.PNG'),
    ['Couch', 'Window', 'Table', 'Television', 'Art'],  {'output_mode': 'multi'} )
    AS living_room_objects;
응답:
{
  "labels": [
    "Art",
    "Couch",
    "Table",
    "Window"
  ]
}
이미지 검색¶
AI_EMBED를 사용하면 대상 이미지와 유사한 이미지를 찾을 수 있습니다. 먼저, AI_EMBED 함수를 사용하여 대상 이미지의 임베딩 벡터를 생성하고, 대상 이미지의 시각적 특징을 추상적인 벡터 공간, 즉 이미지 특징의 수치적 표현으로 매핑합니다. 그런 다음, 벡터 유사성 함수를 사용하여 이 임베딩 벡터를 다른 이미지의 임베딩 벡터와 비교하여 공통적이거나 유사한 시각적 특징을 기반으로 한 유사성 점수를 산출할 수 있습니다. 이 점수는 대상 이미지와의 유사성에 따라 이미지를 분류, 순위 지정 또는 필터링하는 데 사용할 수 있습니다.
|   |   | 
예를 들어, 위의 이미지가 주어졌을 때, 다음의 SQL은 각 이미지에 대한 임베딩 벡터를 생성한 다음, 코사인 유사도를 사용하여 벡터들을 비교합니다. 결과값 약 0.5는 이미지들이 어느 정도 유사함을 나타냅니다. 두 사진 모두 도시 환경에서 촬영되었으며 배경에 군중이 등장하지만, 주요 피사체는 서로 다릅니다.
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
대상 이미지와 유사한 이미지를 찾으려면 AI_SIMILARITY를 사용할 수 있습니다. 아래 예시는 수천 장의 이미지에 대해 유사성 점수를 계산하고, 아래 오토바이 광고와 가장 유사한 광고 크리에이티브를 반환합니다.
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;
이 쿼리는 유사성 점수가 0.50보다 큰 다중 모달 테이블의 이미지를 반환합니다. 확인된 이미지 중 하나(image_226.jpg)는 우리가 참조용으로 사용한 이미지입니다.
+-----------------------------------------------------------+
| {} 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" },                               |
+-----------------------------------------------------------+
모델 제한 사항¶
Snowflake Cortex에서 사용 가능한 모든 모델에는 모델의 컨텍스트 윈도우 로 알려진 총 입력 및 출력 토큰 수에 제한이 있습니다. 컨텍스트 윈도우 크기는 토큰 단위로 측정됩니다. 컨텍스트 윈도우 제한을 초과하는 입력은 오류가 발생합니다.
텍스트 모델의 경우 토큰은 일반적으로 약 4문자의 텍스트를 나타내므로 제한에 해당하는 단어 수는 토큰 수보다 적습니다.
이미지 모델의 경우 이미지당 토큰 수는 비전 모델의 아키텍처에 따라 달라집니다. 프롬프트 내의 토큰(예: “what animal is this?”)도 모델의 컨텍스트 윈도우에 기여합니다.
| 모델 | 컨텍스트 윈도우(토큰) | 파일 유형 | 파일 크기 | 프롬프트별 이미지 | 
|---|---|---|---|---|
| 
 | 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 | 
비용 고려 사항¶
청구는 처리된 토큰 수에 따라 조정됩니다. 이미지당 토큰 수는 비전 모델의 아키텍처에 따라 다릅니다.
- 인트로픽( - claude) 모델의 공식은 대략 토큰 = (너비(픽셀) x 높이(픽셀)) / 750입니다.
- Mistral( - pixtral) 모델은 각 이미지를 16x16픽셀 배치로 나누고 각 배치를 토큰으로 변환합니다. 토큰의 총 개수는 대략 (너비(픽셀)/16) * (높이(픽셀)/16)에 해당합니다.
- Meta ( - llama) 모델은 이미지를 정사각형 타일로 타일링하려고 합니다. 이미지의 가로 세로 비율과 크기에 따라 타일의 수는 최대 16개까지 가능하며, 각 타일은 약 153개의 토큰으로 표현됩니다.
- Open AI 모델은 이미지 크기를 재조정하고 정사각형 패치로 타일화합니다. ``openai-gpt-4.1``의 경우, 이미지 비율과 크기에 따라 토큰 수는 211개(최대 512x512px 이미지), 352개(긴 변의 길이가 1024px인 직사각형 이미지), 또는 630개(최소 1024x1024px 정사각형 이미지)부터 913개(짧은 변의 길이가 1024px인 직사각형 이미지)까지 가능합니다. ``openai-o4-mini``의 경우, 재조정 로직이 더 복잡하며 토큰 수는 86개(128x512px)부터 1428개(2048x1024px)까지 다양하고 선형 패턴을 따르지 않습니다. 
- ``voyage-multimodal-3``은 약 14x14px 크기의 이미지 패치 배열을 대상으로 작동합니다. 이미지는 최소 64개 패치에서 최대 2500개 패치로 구성된 격자에 덮이도록 재조정됩니다. 이미지 크기와 종횡비에 따라 입력 토큰 수는 66개에서 2502개까지 변동되며, 여기에 추가로 두 개의 이미지 토큰이 더해집니다. 
참고
COUNT_TOKENS 함수는 현재 이미지 입력을 지원하지 않습니다.
비전 모델 선택하기¶
COMPLETE 함수는 다양한 함수, 지연 시간 및 비용의 여러 모델을 지원합니다. 크레딧당 성능을 최적화하려면 내용 크기와 작업 복잡도에 맞는 모델을 선택하십시오.
| 모델 | 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 | 
벤치마크는 다음과 같습니다.
- MMMU: 대학 수준의 추론이 필요한 다학제적 작업에 대한 멀티모달 모델을 평가합니다. 
- Mathvista: 시각적 컨텍스트 내 수학적 추론 벤치마크. 
- ChartQA: 차트에 대한 복잡한 추론 문제를 평가합니다. 
- DocVQA 및 VQv2: 문서의 시각적 질문에 대한 답변 벤치마크. 
다중 모달 임베딩의 경우, 현재는 voyage-multimodal-3 모델만 이용 가능합니다. voyage-multimodal-3``은 텍스트와 이미지를 임베딩할 수 있는 최첨단 다중 모달 임베딩 모델입니다. 이는 PDFs의 스크린샷, 슬라이드, 테이블, 그림 등의 소스에서 핵심 시각적 특징을 추출할 수 있어 복잡한 문서 파싱 워크플로의 필요성을 줄여줍니다. Voyage AI 내부 벤치마크에 따르면, ``voyage-multimodal-3 모델은 OpenAI CLIP Large, Amazon Titan Multimodal, Cohere Multimodal v3 등 경쟁 모델들을 능가하는 성능을 보입니다.
리전 가용성¶
이 기능에 대한 지원은 다음 Snowflake 리전에 있는 계정에서 기본적으로 사용할 수 있습니다.
| 모델 | AWS US 서부 2 (오리건) | AWS US 동부 1 (북부 버지니아) | AWS 유럽 중부 1 (프랑크푸르트) | 
|---|---|---|---|
| 
 | ✔ | ✔ | |
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | ✔ | ✔ | ✔ | 
| 
 | ✔ | ||
| 
 | ✔ | ||
| 
 | 
AI_COMPLETE는 :doc:`리전 간 추론</user-guide/snowflake-cortex/cross-region-inference>`을 통해 추가 리전에서 이용 가능합니다.
오류 조건¶
| 메시지 | 설명 | 
|---|---|
| 원격 서비스 오류로 외부 함수 SYSTEM$COMPLETE_WITH_IMAGE_INTERNAL 요청에 실패: 400 ‘“invalid image path” | 파일 확장자 또는 파일 자체가 모델에서 허용되지 않습니다. 이 메시지는 파일 경로가 잘못되었음을 의미할 수도 있습니다. 즉, 파일이 지정된 위치에 존재하지 않습니다. 파일 이름은 대/소문자를 구분합니다. | 
| 보안 오브젝트에 오류 발생 | 스테이지가 존재하지 않음을 나타낼 수 있습니다. 스테이지 이름을 확인하고 해당 스테이지가 존재하고 액세스할 수 있는지 확인합니다.  | 
| 외부 함수 _COMPLETE_WITH_PROMPT 에 대한 요청이 원격 서비스 오류로 인해 실패: 400 ‘“invalid request parameters: unsupported image format: image/** | 
 | 
| 외부 함수 _COMPLETE_WITH_PROMPT 에 대한 요청이 원격 서비스 오류로 인해 실패: 400 ‘“invalid request parameters: Image data exceeds the limit of 5.00 MB” | 
 | 
법적 고지 사항¶
입력 및 출력의 데이터 분류는 다음 테이블과 같습니다.
| 입력 데이터 분류 | 출력 데이터 분류 | 지정 | 
|---|---|---|
| Usage Data | Customer Data | 일반적으로 사용 가능한 함수는 Covered AI 기능입니다. 미리 보기 함수는 Preview AI 기능입니다. [1] | 
자세한 내용은 Snowflake AI 및 ML 섹션을 참조하십시오.
