Main Quest - Snowflake/[시리즈] Cortex AI Functions

AI_COMPLETE: 멀티모달 모델로 이미지 분석하기

포스 삼촌 2026. 7. 12. 17:55

AI_COMPLETE를 이용해서 평면 스케치를 분석한 나연

 

 

 

스테이지에 올려 놓은 이미지는, 나연이가 2호점 오픈을 준비하면서 고민했던 센터 평면도 스케치입니다.

나연의 요가 스튜디오 2호점 스케치

 

단일 이미지 분석 쿼리에요. 

 

구문: AI_COMPLETE( <model>, <prompt>, <file_object> )

-- [1-7] 멀티모달: 이미지 분석 (Single image)

SELECT AI_COMPLETE(
    'gemini-3.1-pro',
    '이 이미지에 무엇이 보이는지 설명해줘.',
    TO_FILE('@STG_NY_IMG', 'sketch10.png')
);

위와 같이 실행하면 지정한 제미나이 3.1 프로 모델 (멀티 모달)이 해당 이미지를 살펴보고 설명을 해줍니다.

 

답변은 아래와 같이 나왔네요. AI는 매번 약간씩 답변이 달라질 수 있어요^^

 

이 이미지는 "NYU Yoga Studio - 2nd Branch"라는 제목의 요가 스튜디오 평면도 스케치입니다. 모눈종이 위에 그려져 있으며, 여러 공간과 메모가 포함되어 있습니다.
주요 공간은 다음과 같습니다:
1.  STUDIO (스튜디오): 가장 넓은 공간으로, 요가 매트가 여러 개 깔려 있습니다. 위쪽 벽에는 창문이 있는 것으로 보이며, "Spacious, Natural Light!" (넓고 자연광!)이라는 메모가 화살표와 함께 적혀 있습니다.
2.  SHOWER ROOM (샤워실): 스튜디오 아래쪽에 위치하며, 개별 샤워 부스가 8개 그려져 있습니다. 옆에는 빨간색 글씨로 "1호점 불만 해결! 개별 부스 8개!!"라는 메모가 있습니다.
3.  LOCKER ROOM (탈의실): 샤워실 아래쪽에 위치해 있습니다.
4.  LOUNGE (라운지): 오른쪽 아래에 위치하며, 원형 테이블과 의자 4개, 식물, 선반 등이 그려져 있습니다.
5.  INFORMATION DESK (안내 데스크): 오른쪽 위 입구 근처에 위치해 있습니다.
6.  SUPPLIES EXHIBITION / YOGA SHELITS (용품 전시 / 요가 용품): 라운지 오른쪽에 위치하며, 요가복, 매트 등 다양한 용품이 전시된 선반이 그려져 있습니다.

기타 특징:
*   스튜디오와 라운지 사이의 복도에 파란색 화살표와 함께 "복도폭: 1m"라고 적혀 있습니다.
*   종이 곳곳에 커피 자국이나 얼룩 같은 디테일이 있어 실제 스케치북 느낌을 줍니다.

 

어떤가요? 위 실제 이미지의 내용을 거의 정확하게 분석해주고 있습니다. 

이는 뛰어난 멀티모달 LLM인 제미나이 3.1 프로의 능력이지만, Snowflake에서는 쿼리 1줄로 위와 같은 작업을 진행할 수 있어요~^^

 


 

그 다음 활용 방법은 PROMPT() 함수로 여러개의 이미지에 대한 비교 분석을 한번 해보겠습니다.

PROMPT() 함수: 텍스트 + 파일을 조합하는 헬퍼

-- [1-8] 멀티모달: PROMPT() 함수로 복합 입력

SELECT AI_COMPLETE(
    'gemini-3.1-pro',
    PROMPT('이 두 이미지를 비교해줘: {0} 그리고 {1}',
        TO_FILE('@my_stage', 'before.png'),
        TO_FILE('@my_stage', 'after.png')
    )
);

 

더 많은 수량의 이미지도 가능하지만, 이미지가 추가되면 input token 소비량이 늘어나니 실무에서는 비용과 성능 체크를 꼭 해야 합니다.

 

또한 PROMPT() 함수를  때는 placeholder가  필수입니다. 

위 쿼리에서 {0} 그리고 {1} 부분이죠.

PROMPT()의 역할이 정확히 "텍스트 템플릿 + 파일 인자를 위치 기반으로 바인딩"하는 거라서, placeholder가 없으면 파일이 프롬프트에 끼워지지 않아요. 

 

위에서 비교한 이미지 2개는 아래와 같아요.  열심히 2호점 오픈을 준비하는 나연이의 모습이어요^^

 

위 쿼리로 gemini 3.1 pro는 아래와 같은 답변을 했습니다.

 

두 이미지는 거의 동일한 배경과 구도를 가지고 있지만, 몇 가지 눈에 띄는 차이점이 있습니다.

가장 큰 차이점은 여성의 표정과 자세입니다.

첫 번째 이미지
: 여성은 턱에 손을 괴고 무언가 고민하거나 생각하는 듯한 진지한 표정을 짓고 있습니다. 시선은 위쪽을 향하고 있습니다.
두 번째 이미지: 여성은 활짝 웃으며 기뻐하는 표정입니다. 한쪽 팔을 들어 주먹을 쥐고 파이팅하는 듯한 활기찬 자세를 취하고 있습니다. 볼에는 홍조가 띠어 있습니다.

중략

요약하자면, 첫 번째 이미지는 고민하거나 집중하는 상황을, 두 번째 이미지는 무언가를 성취하거나 기뻐하는 상황을 묘사하고 있으며, 배경의 꽃과 목걸이 유무로 디테일의 차이를 주었습니다.

 

 

어떤가요~ 개인적으로 사용하는 것과 동일한 LLM 모델이니 잘 대답해주리라는 기대는 있었지만, 나연이의 업무를 도와주는 시스템인 Data Platform에서 어떤 식으로 활용해야 하는지 좀 감을 잡을 수 있었어요.

 

 

AI_COMPLETE의 이미지 분석 기능을 사용하려 할 때는, 지정하는 LLM이 이미지 분석을 지원하는지 파악하는게 필요합니다.

Snowflake에서 멀티모달 지원 모델:

모델 이미지 오디오 비디오
gemini-3.1-pro O O O
gemini-3.1-flash O O O
claude-sonnet-4-6 O X X
pixtral-large O X X

텍스트 전용 모델(mistral-large2, llama 계열 등)에 TO_FILE() 이미지를 넘기면 에러 납니다.

그래서 실무에서 멀티모달  때는:

  • 이미지/문서  gemini-3.1-pro 또는 claude-sonnet-4-6
  • 오디오/비디오  gemini-3.1-pro (현재 유일)

Gemini가 멀티모달 커버리지가 가장 넓고, 한국어 오디오까지  처리하니까 멀티모달 작업에서는 사실상 1픽으로 느껴지고 있습니다.

 

 

에러 핸들링에 대해서는 다음 포스팅 - AI_COMPLETE 에러 핸들링 - 에서 다루어보아요~

 

공식 문서는 아래 링크입니다. 오늘은 여기까지~^^

 

 

docs : https://docs.snowflake.com/ko/sql-reference/functions/ai_complete-single-file