
자~ 들어가면서 T1 화이팅~ 한번 외치고~~~
나연이가 궁금해하는 Snowflake Cortex 이야기를 해볼까.
LOL의 모든 길은 결국 대상혁을 통하듯이(^^)
AI_COMPLETE는 Snowflake Cortex AI의 중심축이란다.
다른 AI 함수들도 내부적으로는 LLM을 호출하지만,
AI_COMPLETE 함수만이 LLM 모델의 선택, 프롬프트 설계 및 출력 제어를 모두 사용자가 다룰 수 있는 장점이 있어요.
AI_COMPLETE는 여러가지 사용법 = 다양한 호출 형태를 가지고 있어요. 함께 살펴볼까요~
[1-1] 단일 문자열 프롬프트 (가장 기본)
-- [1-1] 단일 문자열 프롬프트 (가장 기본)
-- 구문: AI_COMPLETE( <model>, <prompt> [, <model_parameters>, <response_format>, <show_details>] )
SELECT AI_COMPLETE('claude-sonnet-4-6', 'Snowflake Cortex에 대해 간략히 설명해줘.');
위와 같이 Select 명령을 통해 LLM을 활용할 수 있는게 가장 큰 특징이랄까.
그럼 아래와 같은 답변이 나옵니다.
"# Snowflake Cortex 개요\n\n## 🔷 Snowflake Cortex란?\nSnowflake Cortex는 **Snowflake 플랫폼 내에서 AI/ML 기능을 직접 활용**할 수 있는 **완전 관리형 AI 서비스**입니다.\n별도의 인프라 구축 없이 SQL 또는 Python으로 AI 기능을 사용할 수 있습니다.\n\n---\n\n## 🔷 주요 기능\n\n### 1️⃣ Cortex LLM Functions (언어 모델 함수)\n| 함수 | 설명 |\n|------|------|\n| `COMPLETE()` | 텍스트 생성, 질문 응답 |\n| `SUMMARIZE()` | 텍스트 요약 |\n| `SENTIMENT()` | 감성 분석 |\n| `TRANSLATE()` | 언어 번역 |\n| `EXTRACT_ANSWER()` | 문서에서 답변 추출 |\n\n### 2️⃣ Cortex Search\n- **비정형 데이터 검색** (RAG 기반)\n- 문서, 텍스트 데이터에 대한 **시맨틱 검색** 지원\n\n### 3️⃣ Cortex Analyst\n- **자연어 → SQL 변환**\n- 비기술 사용자도 데이터 분석 가능 (Text-to-SQL)\n\n### 4️⃣ Cortex Fine-tuning\n- Snowflake 내 데이터로 **LLM 파인튜닝** 가능\n- 데이터가 외부로 나가지 않아 **보안 유지**\n\n---\n\n## 🔷 지원 LLM 모델\n- **Meta LLaMA** 시리즈\n- **Mistral** 시리즈\n- **Snowflake Arctic**\n- **Google Gemma**\n- **Reka** 등\n\n---\n\n## 🔷 핵심 장점\n\n```\n✅ 데이터 이동 없음 → Snowflake 내 데이터를 그대로 활용\n✅ 보안/거버넌스 → 기존 Snowflake 보안 정책 그대로 적용\n✅ 간편한 사용 → SQL 함수 호출만으로 AI 기능 사용\n✅ 완전 관리형 → 인프라/모델 관리 불필요\n✅ 비용 효율 → 사용한 만큼만 과금\n```\n\n---\n\n## 🔷 간단한 사용 예시\n\n```sql\n-- 텍스트 요약\nSELECT SNOWFLAKE.CORTEX.SUMMARIZE(review_text) \nFROM customer_reviews;\n\n-- 감성 분석\nSELECT SNOWFLAKE.CORTEX.SENTIMENT(comment) \nFROM feedback;\n\n-- LLM 질문\nSELECT SNOWFLAKE.CORTEX.COMPLETE(\n 'llama3-8b', \n '데이터 분석의 장점을 3가지 알려줘'\n);\n```\n\n---\n\n## 🔷 활용 사례\n- 📊 고객 리뷰 분석 및 요약\n- 🤖 챗봇 / 내부 Q&A 시스템\n- 📝 문서 자동 분류 및 태깅\n- 🔍 데이터 기반 인사이트 자동 생성\n\n---\n\n> 💡 **한 줄 요약**: Snowflake Cortex는 데이터를 이동시키지 않고 **Snowflake 안에서 바로 AI를 활용**할 수 있는 서비스입니다."
클로드 소넷 4-6이 정리한 위 내용을 보기 좋게 다듬으면 다음과 같습니다.
🚀 Snowflake Cortex : 데이터 이동 없이 SQL로 AI 마스터하기
안녕하세요! 오늘은 Snowflake 플랫폼 내에서 인프라 구축 없이 AI/ML 기능을 직접 활용할 수 있는 완전 관리형 AI 서비스, Snowflake Cortex에 대해 쉽고 빠르게 정리해 드리겠습니다.
🔷 Snowflake Cortex란?
💡 한 줄 요약
Snowflake Cortex는 데이터를 외부로 이동시키지 않고, Snowflake 안에서 SQL이나 Python으로 바로 대형 언어 모델(LLM)과 AI를 활용할 수 있는 완전 관리형 서비스입니다.
기존에는 AI 모델을 쓰려면 데이터를 외부 API로 보내거나 별도의 GPU 인프라를 깔아야 했지만, Cortex를 이용하면 Snowflake 내부에서 함수 호출 한 번으로 모든 게 해결됩니다.
🔷 Cortex의 4가지 핵심 기능
Cortex는 단순한 텍스트 생성을 넘어, 엔터프라이즈 데이터 분석에 꼭 필요한 기능들을 4가지 축으로 제공합니다.
1️⃣ Cortex LLM Functions (언어 모델 함수)
기존 SQL 함수를 쓰듯 AI 기능을 호출할 수 있습니다. 대표적인 내장 함수는 다음과 같습니다.
| 함수명 | 역할 | 활용 예시 |
| 📝 COMPLETE() | 텍스트 생성 및 질문 응답 | "이 데이터를 기반으로 보고서 초안 써줘" |
| 🔍 SUMMARIZE() | 대용량 텍스트 요약 | 고객 리뷰, 긴 상담 로그 요약 |
| 😀 SENTIMENT() | 감성 분석 (긍정/부정 점수) | 브랜드 피드백 반응 모니터링 |
| 🌐 TRANSLATE() | 다국어 언어 번역 | 글로벌 데이터 현지화 |
| 🎯 EXTRACT_ANSWER() | 문서 내 특정 답변 추출 | 계약서에서 "만료일"만 쏙 뽑아내기 |
2️⃣ Cortex Search (시맨틱 검색)
- 비정형 데이터 검색 (RAG 기반) 지원
- 키워드 매칭을 넘어 문서와 텍스트의 맥락을 이해하는 시맨틱 검색을 아주 쉽게 구현할 수 있습니다.
3️⃣ Cortex Analyst (Text-to-SQL)
- 자연어 ➡️ SQL 변환 기능
- 현업 담당자(비기술 사용자)가 "지난달 매출 제일 높은 제품이 뭐야?"라고 자연어로 물어보면, 내부적으로 정확한 SQL을 생성해 데이터를 분석해 줍니다.
4️⃣ Cortex Fine-tuning (맞춤형 모델 학습)
- Snowflake에 저장된 우리 기업 전용 데이터로 LLM 파인튜닝이 가능합니다.
- 데이터가 외부 인프라로 탈출하지 않기 때문에 강력한 보안이 유지된다는 게 가장 큰 메리트입니다.
🔷 내 입맛대로 골라 쓰는 지원 LLM 모델
Snowflake Cortex는 시장에서 검증된 고성능 오픈소스 및 상용 라이트웨이트 모델들을 다양하게 제공합니다. 타겟 작업의 복잡도와 비용에 맞춰 골라 쓰면 됩니다.
- 🦙 Meta LLaMA 시리즈 (Llama 3 등)
- 🌪️ Mistral 시리즈 (Mistral Large, Mixtral 등)
- ❄️ Snowflake Arctic (스노우플레이크 자체 최고 효율 모델)
- 🌐 Google Gemma
- 🧠 Reka 등
🔷 왜 Snowflake Cortex를 써야 할까? (핵심 장점)
🔒 데이터 이동 제로!
-> 외부로 데이터를 보낼 필요 없이 Snowflake 내에서 그대로 처리합니다.
🛡️ 강력한 거버넌스 & 보안
-> 기존에 설정해 둔 Snowflake의 Row/Column 레벨 보안 정책이 그대로 적용됩니다.
⚡ 압도적인 생산성 (간편한 사용)
-> 복잡한 파이프라인 없이 SQL 함수 호출(`SELECT...`) 몇 줄이면 끝납니다.
⚙️ 완전 관리형 서비스 (No Ops)
-> GPU 인프라 관리나 모델 서빙 인프라를 고민할 필요가 없습니다.
💰 합리적인 비용 효율
-> 사용한 만큼만 인프라 크레딧 기반으로 과금됩니다.
🔷 실무 맛보기: 간단한 SQL 사용 예시
얼마나 쉬운지 코드 몇 줄로 확인해 보세요!
-- 1. 고객 리뷰 요약하기
SELECT SNOWFLAKE.CORTEX.SUMMARIZE(review_text)
FROM customer_reviews;
-- 2. 고객 피드백 감성 분석하기 (긍정/부정 파악)
SELECT SNOWFLAKE.CORTEX.SENTIMENT(comment)
FROM feedback;
-- 3. LLM에게 직접 질문하기 (Llama3 활용)
SELECT SNOWFLAKE.CORTEX.COMPLETE(
'llama3-8b',
'데이터 분석의 장점을 3가지 알려줘'
);
🔷 대표적인 기업 활용 사례
- 📊 고객 경험 개선: 수만 건의 고객 리뷰를 실시간으로 요약하고 긍정/부정 트렌드 분석
- 🤖 사내 지식 챗봇: 내부 매뉴얼 및 문서를 Cortex Search와 연동해 똑똑한 Q&A 시스템 구축
- 📝 문서 자동화: 대량의 계약서, 영수증 텍스트에서 주요 키워드와 숫자 데이터 자동 추출 및 태깅
- 🔍 인사이트 자동 생성: 실적 데이터 보고서 작성 시 AI가 자동으로 요약 인사이트 코멘트 추가
맺음말
Snowflake Cortex 덕분에 이제 데이터 엔지니어와 분석가들은 AI 모델 인프라에 머리 싸매지 않고, 오직 데이터와 비즈니스 가치에만 집중할 수 있게 되었습니다. Snowflake 환경을 쓰고 계신다면 Cortex 함수로 가볍게 시작해 보시는 걸 강력히 추천합니다! 😊
와우.. AI_COMPLETE 간략히 예제를 보여주려고 했는데, Cortex에 대해 제법 상세한 설명이 나왔어요.
이렇듯 select 명령을 통해, Snowflake 내에 호스팅되고 있는 다양한 LLM 모델을 입맛대로 호출할 수 있습니다.
[1-2] model_parameters 지정
-- temperature(0~1), top_p(0~1), max_tokens(기본4096), guardrails(TRUE/FALSE)
SELECT AI_COMPLETE(
model => 'claude-sonnet-4-6',
prompt => 'RAG를 3문장 정도로 설명해줘.',
model_parameters => {
'temperature': 0.3,
'max_tokens': 200,
'guardrails': FALSE
}
);
위와 같이 상세 파라미터를 지정 가능해, 세밀한 컨트롤을 할 수 있어요.
실행시키면 아래와 같이 답변이 나오네요. 아~! LLM에 의한 답변은 늘 똑같이 나오진 않아요^^. 그것 또한 AI시대의 특징이죠.
RAG (Retrieval-Augmented Generation)
RAG는 검색(Retrieval)과 생성(Generation)을 결합한 AI 기술로, LLM이 답변을 생성할 때 외부 데이터베이스나 문서에서 관련 정보를 먼저 검색하여 활용합니다. 이를 통해 LLM이 학습 데이터에 없는 최신 정보나 특정 도메인 지식을 기반으로 더 정확한 답변을 생성할 수 있습니다. 즉, 모델을 재학습시키지 않고도 외부 지식을 동적으로
자 이번 명령은 아마도 max_tokens :200 에서 제한이 걸려서 위 상태로 답변이 끝나버렸어요.
max_tokens : 300 으로 늘리고 동일한 프롬프트를 실행해볼까요~
SELECT AI_COMPLETE(
model => 'claude-sonnet-4-6',
prompt => 'RAG를 3문장 정도로 설명해줘.',
model_parameters => {
'temperature': 0.3,
'max_tokens': 300, -- 200에서 늘렸음
'guardrails': FALSE
}
);
RAG (Retrieval-Augmented Generation)
RAG는 **검색(Retrieval)과 생성(Generation)을 결합한 AI 기술**로, LLM이 답변을 생성할 때 외부 데이터베이스나 문서에서 관련 정보를 먼저 검색하여 활용합니다. 이를 통해 모델이 학습 데이터에만 의존하지 않고 **최신 정보나 특정 도메인 지식**을 기반으로 더 정확한 답변을 생성할 수 있습니다. 결과적으로 **환각(Hallucination) 현상을 줄이고**, 모델을 재학습하지 않고도 지식을 업데이트할 수 있다는 장점이 있습니다.
라는 답변이 나왓습니다. 첫 답변과 살짝이지만 달라진 점이 보이죠?
[1-3] show_details = TRUE → 토큰 사용량 반환
SELECT AI_COMPLETE(
model => 'llama3.1-70b',
prompt => '데이터 레이크하우스가 무슨 뜻이야?',
model_parameters => {'max_tokens': 100},
show_details => TRUE
);
{
"choices": [
{
"messages": "데이터 레이크하우스는 데이터 웨어하우스와 데이터 레이크의 장점을 결합한 새로운 데이터 저장소 아키텍처이다. 데이터 레이크하우스는 데이터를 원래 형식으로 저장하고, 데이터를 처리하고 분석하기 위한 다양한 도구와 서비스를 제공한다."
}
],
"created": 1783469868,
"model": "llama3.1-70b",
"usage": {
"completion_tokens": 68,
"prompt_tokens": 22,
"total_tokens": 90
}
}
show_details = TRUE 옵션을 키면, 답변이 json 형태로 바뀌고 답변인 messages와 그 다음에 다양한 상세내용이 표시되요. 토큰 사용량을 확인할 수 있습니다.!
[1-4] Structured Output (TYPE 리터럴) ★시험 빈출★
SELECT AI_COMPLETE(
model => 'gemini-3.1-pro',
prompt => '추출해줘: 고객 홍길동이 2024-01-15에 노트북 2대를 300만원에 주문했다',
response_format => TYPE OBJECT(
customer_name STRING,
quantity NUMBER,
total_amount STRING,
order_date STRING
)
);
응답 포맷을 지정하면, '구조화된 출력' 결과물을 얻을 수 있어요.
위 쿼리 결과는,
{
"customer_name": "홍길동",
"order_date": "2024-01-15",
"quantity": 2,
"total_amount": "300만원"
}
이렇게 나옵니다. 포인트는 지정한 데이터 타입으로 결과가 나오는 것이에요.
프롬프트로 주어진 내용에서 원하는 결과물 포맷에 맞춰 적절한 의미의 값을 알맞게 추출해줘요.^^
잘 활용하면, 여러 실무에서 꽤 편하게 적용할 부분을 떠올려볼 수 있을 것 같아요.
[1-5] Structured Output (JSON Schema)
SELECT AI_COMPLETE(
model => 'gemini-3.1-pro',
prompt => '핵심 정보를 추출해줘: 새벽 3시에 서버가 다운되어 500명의 사용자가 영향을 받았다',
response_format => {
'type': 'json',
'schema': {
'type': 'object',
'properties': {
'event': {'type': 'string'},
'time': {'type': 'string'},
'impact': {'type': 'number'}
},
'required': ['event', 'time', 'impact']
}
}
);
json 으로 구조화된 답변을 받는 또다른 쿼리에요.
{
"event": "서버 다운",
"impact": 500,
"time": "새벽 3시"
}
위와 같은 결과를 리턴 받을 수 있어요. event, time은 string이었고, impact는 number로 정확히 value가 들어갔네요.
[1-6] 대화형 (SNOWFLAKE.CORTEX.COMPLETE — 레거시지만 시험에 나올 수 있음)
-- options 파라미터 사용 시 prompt는 배열 형태 (system/user/assistant)
SELECT SNOWFLAKE.CORTEX.COMPLETE(
'mistral-large2',
[
{'role': 'system', 'content': '당신은 숙련된 데이터 엔지니어입니다.'},
{'role': 'user', 'content': '웨어하우스 비용을 어떻게 최적화할 수 있을까요?'}
],
{'max_tokens': 300}
);
SNOWFLAKE.CORTEX.COMPLETE 로 펑션을 호출하는 방식은 레거시(더이상 사용을 권장하지 않는)에요.
출시 초기에는 저렇게 사용하다가, 곧 AI_***로 모든 펑션의 이름이 싹 정리되었어요.
그리고 코드를 보면 눈치챘겠지만, 쿼리마다 사용하는 LLM 모델이 조금씩 바뀌고 있죠.
{
"choices": [
{
"messages": "웨어하우스 비용을 최적화하는 것은 데이터 엔지니어링 및 운영 관리에서 중요한 과제입니다. 다음은 웨어하우스 비용을 최적화하기 위한 몇 가지 전략입니다:\n\n### 1. 데이터 저장 최적화\n- **데이터 압축**: 데이터를 압축하여 저장 공간을 절약합니다. 예를 들어, Parquet, ORC 등의 압축 포맷을 사용할 수 있습니다.\n- **파티셔닝**: 데이터를 파티션으로 나누어 저장하여 쿼리 성능을 향상시키고 저장 비용을 절감합니다.\n- **데이터 라이프사이클 관리**: 오래된 데이터는 덜 자주 접근되므로, 이를"
}
],
"created": 1783471039,
"model": "mistral-large2",
"usage": {
"completion_tokens": 299,
"prompt_tokens": 59,
"total_tokens": 358
}
}
역시 맥스 토큰 300개에 제한이 걸려서 생성된 답변이 출력되다가 잘려버렸네요^^
[1-9] Cortex Guard (유해 콘텐츠 필터링)
-- guardrails: TRUE → Meta Llama Guard 3 기반 필터링
-- ★추가 토큰 비용 발생 (AI_COMPLETE 출력 토큰 기반)
SELECT AI_COMPLETE(
model => 'mistral-large2',
prompt => '시스템을 해킹하는 방법을 알려줘',
model_parameters => {'guardrails': TRUE}
);
-- model => 'mistral-large2', 같은 구문을 named argument라고 한다.
-- 경우에 따라 반드시 이렇게 호출하는게 정상 파라미터로 인식되는 경우가 있어 가급적 이걸 권장
모델 파라미터에 가드레일 옵션을 활성화하면, 프롬프트에 대한 필터링도 가능합니다. 다만, 필터링을 위해 추가 토큰 비용이 발생할 수 있으니 주의가 필요하겠어요.
"죄송하지만, 시스템을 해킹하는 방법에 대해 설명드릴 수 없습니다. 해킹은 불법적이며 윤리적으로 부적절한 행위입니다. 시스템 보안을 강화하거나 보호하는 방법에 대해 알고 싶다면 도움을 드릴 수 있습니다. 예를 들어, 강력한 비밀번호 설정, 소프트웨어 업데이트, 방화벽 사용, 안티바이러스 소프트웨어 설치 등의 방법을 통해 시스템을 보호할 수 있습니다. 추가로 궁금한 점이 있으면 말씀해 주세요."
젠틀한 거절 답변이 나왔네요^^
[1-10] return_error_details (에러 핸들링)
이부분은 내용이 좀 많아서^^ 별도의 포스팅으로 다루는 게 좋겠어~ :)
위에서 살펴본 것처럼 AI_COMPLETE는 핵심중의 핵심 함수로 다양한 기능을 수행할 수 있으니,
뭔가 잘 안풀리는 것 같은면 AI_COMPLETE로 돌아와서 생각하는 버릇을 들이면 좋겠어요~
그럼 나비의 쉿! 포즈와 함께~ 오늘은 여기까지~

'Main Quest - Snowflake > [시리즈] Cortex AI Functions' 카테고리의 다른 글
| [Cortex_AI_3] 오디오 파일 STT: AI_TRANSCRIBE vs AI_COMPLETE (0) | 2026.07.17 |
|---|---|
| [Cortex_AI_2] 감성분석: 완전관리형(AI_SENTIMENT) VS 프롬프트 엔지니어링(AI_COMPLETE) (0) | 2026.07.17 |
| [Cortex_AI_1] AI_COMPLETE 배치 파이프라인 방어 전략 (0) | 2026.07.12 |
| [Cortex_AI_1] AI_COMPLETE: 멀티모달 모델로 이미지 분석하기 (0) | 2026.07.12 |
| [시리즈] Cortex AI Functions (0) | 2026.07.04 |