Cortex AISQL Images

Cortex AI Images를 사용하면 다음을 수행할 수 있습니다.

  • 이미지 비교

  • 캡션 이미지

  • 이미지 분류

  • 이미지에서 엔터티 추출하기

  • 검색 시스템에서 사용하기 위한 임베딩 벡터 생성

  • 그래프와 차트의 데이터를 활용하여 질문에 답하기

다음 함수를 사용하여 이러한 작업을 수행할 수 있습니다.

입력 요구 사항

COMPLETE 멀티모달은 다음과 같은 특성을 가진 이미지를 처리할 수 있습니다.

요구 사항

파일 이름 확장자

.jpg, .jpeg, .png, .webp, .gif

스테이지 암호화

서버 측 암호화:

데이터 타입

FILE

참고

스테이지에서 파일을 처리하는 기능은 현재 사용자 정의 네트워크 정책과 호환되지 않습니다.

이미지 처리를 위한 스테이지 만들기

처리할 이미지를 저장하기에 적합한 스테이지를 생성합니다. 스테이지에는 디렉터리 테이블과 서버 측 암호화가 있어야 합니다.

아래 SQL 에서 적절한 내부 스테이지를 생성합니다.

CREATE OR REPLACE STAGE input_stage
    DIRECTORY = ( ENABLE = true )
    ENCRYPTION = ( TYPE = 'SNOWFLAKE_SSE' );
Copy

다음의 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' );
Copy

참고

새 파일이나 업데이트된 파일이 가용할 때 외부 스테이지의 디렉터리 테이블을 자동으로 새로 고치려면 스테이지를 만들 때 AUTO_REFRESH = true 옵션을 전달하십시오. 자세한 내용은 CREATE STAGE 섹션을 참조하십시오.

이미지 분석

COMPLETE 함수는 단일 이미지 또는 여러 이미지를 처리합니다(예: 여러 이미지에서 엔터티의 차이점을 추출하는 경우). 함수 호출은 다음을 지정합니다.

  • 사용할 멀티모달 모델

  • 프롬프트

  • FILE 오브젝트를 통한 이미지 파일의 스테이지 경로입니다

비전 Q&A 예시

다음 예는 Anthropic의 Claude Sonnet 3.5 모델을 사용하여 @myimages 스테이지에 저장된 파이 차트 science-employment-slide.jpeg 를 요약한 것입니다.

2023년에 수학이 '매우 중요'하다고 여겨지는 직업의 분포를 보여주는 원형 차트

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'));
Copy

응답:

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개의 이미지

전기 자동차 광고 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')
));
Copy

응답:

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;
Copy

응답:

{ "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;
Copy

응답:

{
  "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;
Copy
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;
Copy

이 쿼리는 유사성 점수가 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?”)도 모델의 컨텍스트 윈도우에 기여합니다.

모델

컨텍스트 윈도우(토큰)

파일 유형

파일 크기

프롬프트별 이미지

openai-gpt-4.1

1,047,576

.jpg, .jpeg, .png, .webp, .gif

10MB

5

openai-o4-mini

1,047,576

.jpg, .jpeg, .png, .webp, .gif

10MB

5

claude-4-opus

200,000

.jpg, .jpeg, .png, .webp, .gif

3.75 MB [L1]

20

claude-4-sonnet

200,000

.jpg, .jpeg, .png, .webp, .gif

3.75 MB [L1]

20

claude-3-7-sonnet

200,000

.jpg, .jpeg, .png, .webp, .gif

3.75 MB [L1]

20

claude-3-5-sonnet

200,000

.jpg, .jpeg, .png, .webp, .gif

3.75 MB [L1]

20

llama4-maverick

128,000

.jpg, .jpeg, .png, .webp, .gif, .bmp

10 MB

10

llama-4-scout

128,000

.jpg, .jpeg, .png, .webp, .gif, .bmp

10 MB

10

pixtral-large

128,000

.jpg, .jpeg, .png, .webp, .gif, .bmp

10 MB

1

voyage-multimodal-3

32,768

.jpg, .png, .pg, .gif, .bmp

10 MB

1

[L1] (1,2,3,4)

이미지는 8000x8000픽셀보다 작아야 합니다. 제한 사항은 각 개별 이미지에 적용됩니다.

비용 고려 사항

청구는 처리된 토큰 수에 따라 조정됩니다. 이미지당 토큰 수는 비전 모델의 아키텍처에 따라 다릅니다.

  • 인트로픽(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

openai-gpt-4.1

75.0

72.0

openai-o4-mini

81.6

84.3

claude-3-5-sonnet

68.0

64.4

87.6

90.3

70.7

llama-4-maverick

73.4

73.7

90

94.4

llama-4-scout

69.4

70.7

88.8

94.4

pixtral-large

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
(프랑크푸르트)

claude-3-5-sonnet

claude-3-7-sonnet [A1]

claude-4-sonnet [A1]

claude-4-opus [A1]

pixtral-large

llama4-maverick

llama4-scout

voyage-multimodal-3 [A1]

[A1] (1,2,3,4)

모델은 리전 간 추론을 통해서만 사용할 수 있습니다.

AI_COMPLETE는 :doc:`리전 간 추론</user-guide/snowflake-cortex/cross-region-inference>`을 통해 추가 리전에서 이용 가능합니다.

오류 조건

메시지

설명

원격 서비스 오류로 외부 함수 SYSTEM$COMPLETE_WITH_IMAGE_INTERNAL 요청에 실패: 400 ‘“invalid image path”

파일 확장자 또는 파일 자체가 모델에서 허용되지 않습니다. 이 메시지는 파일 경로가 잘못되었음을 의미할 수도 있습니다. 즉, 파일이 지정된 위치에 존재하지 않습니다. 파일 이름은 대/소문자를 구분합니다.

보안 오브젝트에 오류 발생

스테이지가 존재하지 않음을 나타낼 수 있습니다. 스테이지 이름을 확인하고 해당 스테이지가 존재하고 액세스할 수 있는지 확인합니다. @myimages 같이 스테이지 경로의 시작 부분에 앳(@) 기호를 사용해야 합니다.

외부 함수 _COMPLETE_WITH_PROMPT 에 대한 요청이 원격 서비스 오류로 인해 실패: 400 ‘“invalid request parameters: unsupported image format: image/**

claude-3-5-sonnet 에 제공된 지원되지 않는 이미지 형식(예: .jpeg, .png, .webp 또는 .gif 이외의 형식)입니다.

외부 함수 _COMPLETE_WITH_PROMPT 에 대한 요청이 원격 서비스 오류로 인해 실패: 400 ‘“invalid request parameters: Image data exceeds the limit of 5.00 MB”

claude-3-5-sonnet 에 제공된 이미지가 5 MB 를 초과합니다.