Snowflake Cortex AISQL (LLM 함수 포함)¶
Snowflake의 Cortex AISQL 를 사용하여 업계 최고의 LLMs, OpenAI, Anthropic, Meta, Mistral AI, DeepSeek 에서 텍스트 및 이미지에 대한 비정형 분석을 실행할 수 있습니다. Cortex AISQL 은 다음과 같은 사용 사례를 지원합니다.
엔터티 추출을 통한 메타데이터 보강 및 유효성 검사 간소화
고객 티켓 전반에서 인사이트 집계하기
자연어로 내용 필터링 및 분류하기
서비스 개선을 위한 감성 및 양상 기반 분석
다국어 내용 변환 및 로컬라이제이션
분석 및 RAG 파이프라인을 위한 문서 구문 분석하기
모든 모델은 Snowflake에서 완전히 호스팅되어 성능, 확장성, 거버넌스를 보장하는 동시에 데이터 보안을 유지합니다.
사용 가능한 함수¶
Snowflake Cortex 기능은 SQL 함수로 제공되며 Python 에서도 사용할 수 있습니다. Cortex AISQL 함수는 다음 카테고리로 그룹화할 수 있습니다.
AISQL 함수¶
작업별 함수는 사용자 정의가 필요 없는 간단한 요약 및 빠른 번역과 같은 일상적인 작업을 자동화하기 위해 특별히 구축되고 관리되는 함수입니다.
AI_COMPLETE: 선택한 LLM 을 사용하여 지정된 텍스트 문자열 또는 이미지에 대한 완성을 생성합니다. 대부분의 생성형 AI 작업에 이 함수를 사용합니다.
COMPLETE (SNOWFLAKE.CORTEX) 의 업데이트 버전입니다.
AI_CLASSIFY: 텍스트 또는 이미지를 사용자 정의 카테고리로 분류합니다.
다중 레이블 및 이미지 분류를 지원하는 CLASSIFY_TEXT(SNOWFLAKE.CORTEX) 의 업데이트 버전입니다.
AI_FILTER: 주어진 텍스트 또는 이미지 입력에 대해 true 또는 false을 반환하여
SELECT
,WHERE
또는JOIN ... ON
절에서 결과를 필터링할 수 있습니다.AI_AGG: 텍스트 열을 집계하고 사용자 정의 프롬프트에 따라 여러 행에 걸쳐 인사이트를 반환합니다. 이 함수는 컨텍스트 윈도우 제한이 적용되지 않습니다.
AI_SUMMARIZE_AGG: 텍스트 열을 집계하여 여러 행에 걸친 요약을 반환합니다. 이 함수는 컨텍스트 윈도우 제한이 적용되지 않습니다.
AI_SIMILARITY: 두 입력 사이의 임베딩 유사도를 계산합니다.
PARSE_DOCUMENT(SNOWFLAKE.CORTEX): 내부 또는 외부 스테이지의 문서에서 텍스트(OCR 모드 사용) 또는 레이아웃 정보가 포함된 텍스트(LAYOUT 모드 사용)를 추출합니다.
TRANSLATE: 지원되는 언어 간에 텍스트를 변환합니다.
SENTIMENT (SNOWFLAKE.CORTEX): 텍스트에서 감성 점수를 추출합니다.
EXTRACT_ANSWER (SNOWFLAKE.CORTEX): 관련 데이터가 존재하는 경우 비정형 데이터에서 질문에 대한 답을 추출합니다.
SUMMARIZE (SNOWFLAKE.CORTEX): 지정한 텍스트의 요약을 반환합니다.
참고
이전에 “LLM 함수”로 불렸던 함수는 “SNOWFLAKE.CORTEX” 네임스페이스에 나열됩니다
도우미 함수¶
도우미 함수는 다른 AISQL 함수를 실행할 때 실패 사례를 줄이기 위해 특별히 제작되고 관리되는 함수로, 예를 들어 입력 프롬프트에서 토큰 수를 가져와 호출이 모델 한도를 초과하지 않도록 하는 등의 역할을 합니다.
COUNT_TOKENS(SNOWFLAKE.CORTEX): 입력 텍스트가 주어지면 지정된 모델 또는 Cortex 함수에 따라 토큰 수를 반환합니다.
TRY_COMPLETE(SNOWFLAKE.CORTEX): COMPLETE 함수와 비슷하게 동작하지만, 함수를 실행할 수 없는 경우 오류 코드 대신 NULL 을 반환합니다.
Cortex Guard¶
Cortex Guard는 언어 모델에서 발생할 수 있는 안전하지 않고 유해한 응답을 필터링하도록 설계된 COMPLETE 함수의 선택 사항입니다. Cortex Guard는 현재 Meta의 Llama Guard 3를 사용하여 빌드되었습니다. Cortex Guard는 언어 모델의 응답을 평가한 후 해당 출력을 애플리케이션으로 반환하여 작동합니다. Cortex Guard를 활성화하면 폭력 범죄, 증오, 성적 내용, 자해 등과 연관이 있는 언어 모델 응답이 자동으로 필터링됩니다. 구문과 예제는 COMPLETE 인자 섹션을 참조하십시오.
참고
Cortex Guard를 사용하면 처리된 입력 토큰 수에 따라 컴퓨팅 요금이 발생합니다.
성능 고려 사항¶
Cortex AISQL 함수는 처리량에 최적화되어 있습니다. 이러한 함수를 사용하여 대규모 SQL 테이블의 텍스트와 같은 수많은 입력을 처리하는 것이 좋습니다. 배치 처리는 일반적으로 AISQL 함수에 더 적합합니다. 지연 시간이 중요한 대화형 사용 사례의 경우 REST API 를 사용하십시오. 단순 추론(Complete API), 임베딩(Embed API) 및 Agent 애플리케이션(Agents API)에 사용할 수 있습니다.
필수 권한¶
SNOWFLAKE 데이터베이스의 CORTEX_USER 데이터베이스 역할은 사용자가 Snowflake Cortex AI 함수를 호출할 수 있는 권한을 포함합니다. 기본적으로 CORTEX_USER 역할은 PUBLIC 역할에 부여됩니다. PUBLIC 역할은 모든 사용자 및 역할에 자동으로 부여되므로 계정의 모든 사용자가 Snowflake Cortex AI 함수를 사용할 수 있습니다.
모든 사용자에게 이 권한을 부여하지 않으려면 PUBLIC 역할에 대한 액세스를 취소하고 특정 역할에 대한 액세스 권한을 부여하면 됩니다.
PUBLIC 역할에서 CORTEX_USER 데이터베이스 역할을 취소하려면 ACCOUNTADMIN 역할을 사용하여 다음 명령을 실행합니다.
REVOKE DATABASE ROLE SNOWFLAKE.CORTEX_USER
FROM ROLE PUBLIC;
REVOKE IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE
FROM ROLE PUBLIC;
그런 다음 특정 역할에 대한 액세스 권한을 선택적으로 제공할 수 있습니다. SNOWFLAKE.CORTEX_USER 데이터베이스 역할을 사용자에게 직접 부여할 수는 없습니다. 자세한 내용은 SNOWFLAKE 데이터베이스 역할 사용하기 섹션을 참조하십시오. ACCOUNTADMIN 역할이 있는 사용자는 사용자 지정 역할에 이 역할을 부여하여 사용자가 Cortex AI 함수에 액세스하도록 허용할 수 있습니다. 다음 예제에서는 ACCOUNTADMIN 역할을 사용하고 이를 위해 생성한 계정 역할 cortex_user_role
을 통해 사용자 CORTEX_USER에 some_user
데이터베이스 역할을 부여합니다.
USE ROLE ACCOUNTADMIN;
CREATE ROLE cortex_user_role;
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE cortex_user_role;
GRANT ROLE cortex_user_role TO USER some_user;
특정 사용자 그룹에서 일반적으로 사용하는 기존 역할을 통해 Snowflake Cortex AI 함수에 대한 액세스 권한을 부여할 수도 있습니다. (사용자 역할 섹션을 참조하십시오.) 예를 들어 조직의 분석가가 기본 역할로 사용하는 analyst
역할을 만든 경우 단일 GRANT 문으로 이러한 사용자에게 Snowflake Cortex AISQL 함수에 대한 액세스 권한을 쉽게 부여할 수 있습니다.
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE analyst;
모델 액세스 제어¶
Snowflake Cortex에서 모델에 대한 액세스를 제어하는 방법에는 두 가지가 있습니다. 광범위한 액세스 제어와 세분화된 액세스 제어를 혼합하여 한 가지 또는 두 가지 방법을 함께 사용할 수 있습니다.
모델 허용 목록
역할 기반 액세스 제어
모델 허용 목록은 계정의 모든 사용자에게 모델에 대한 기본 액세스 수준을 제공하며 CORTEX_MODELS_ALLOWLIST
매개 변수를 사용하여 사용자 지정할 수 있습니다. 역할 기반 액세스 제어는 애플리케이션 역할을 통해 특정 모델 오브젝트에 권한을 부여 또는 취소하여 세분화된 액세스 관리를 가능하게 합니다.
모델 액세스 제어는 다음 서비스에 사용할 수 있습니다.
다음 서비스에는 세분화된 액세스 제어 방법을 사용할 수 없습니다.
Cortex Search
Cortex Analyst
Cortex Copilot
Cortex Agents
문서 AI
모델 허용 목록¶
ALTER ACCOUNT SET
명령에서 CORTEX_MODELS_ALLOWLIST
매개 변수를 사용하여 계정의 모든 사용자에 대한 모델 액세스 권한을 설정합니다. 특정 사용자에게 허용 목록에 지정한 것 이상의 액세스 권한을 제공해야 하는 경우에는 역할 기반 액세스 제어를 사용해야 합니다. 역할 기반 액세스 제어에 대한 자세한 내용은 역할 기반 액세스 제어 섹션을 참조하십시오.
사용자가 요청을 하면 Snowflake Cortex는 매개 변수를 평가하여 사용자가 모델에 액세스할 수 있는지 여부를 결정합니다.
CORTEX_MODELS_ALLOWLIST
매개 변수의 경우 다음 값을 설정할 수 있습니다.
CORTEX_MODELS_ALLOWLIST = 'All'
은 모든 모델에 대한 액세스를 제공합니다.다음 명령은 모든 모델에 대한 사용자 액세스를 제공합니다.
ALTER ACCOUNT SET CORTEX_MODELS_ALLOWLIST = 'All';
CORTEX_MODELS_ALLOWLIST = 'model1,model2,...'
사용자에게 쉼표로 구분된 목록에 지정된 모델에 대한 액세스 권한을 제공합니다.
다음 명령은 사용자에게
mistral-large2
및llama3.1-70b
모델에 대한 액세스를 제공합니다.ALTER ACCOUNT SET CORTEX_MODELS_ALLOWLIST = 'mistral-large2,llama3.1-70b';
CORTEX_MODELS_ALLOWLIST = 'None'
은 사용자가 모든 모델에 액세스하지 못하도록 차단합니다.다음 명령은 사용자가 모든 모델에 액세스하지 못하도록 합니다.
ALTER ACCOUNT SET CORTEX_MODELS_ALLOWLIST = 'None';
역할 기반 액세스 제어¶
각 모델은 관련 애플리케이션 역할이 있는 SNOWFLAKE.MODELS 스키마에 있는 고유한 오브젝트입니다. 모델 오브젝트 및 애플리케이션 역할을 사용하여 모델 오브젝트에 대한 액세스를 관리할 수 있습니다.
최신 모델에 액세스하려면 다음 명령을 사용하십시오.
CALL SNOWFLAKE.MODELS.CORTEX_BASE_MODELS_REFRESH();
다음으로 다음 명령을 사용하여 Snowflake 계정에서 사용 가능한 모델을 목록으로 생성합니다.
SHOW MODELS IN SNOWFLAKE.MODELS;
이 명령은 다음과 같은 모델 목록을 반환합니다.
created_on |
이름 |
model_type |
데이터베이스_이름 |
스키마_이름 |
owner |
---|---|---|---|---|---|
2025-04-22 09:35:38.558 -0700 |
CLAUDE-3-5-SONNET |
CORTEX_BASE |
SNOWFLAKE |
MODELS |
SNOWFLAKE |
2025-04-22 09:36:16.793 -0700 |
LLAMA3.1-405B |
CORTEX_BASE |
SNOWFLAKE |
MODELS |
SNOWFLAKE |
2025-04-22 09:37:18.692 -0700 |
SNOWFLAKE-ARCTIC |
CORTEX_BASE |
SNOWFLAKE |
MODELS |
SNOWFLAKE |
다음 명령을 사용하여 이러한 모델의 애플리케이션 역할을 나열합니다.
SHOW APPLICATION ROLES IN APPLICATION SNOWFLAKE;
이 명령은 다음과 같은 애플리케이션 역할 목록을 반환합니다.
created_on |
이름 |
owner |
comment |
owner_role_type |
---|---|---|---|---|
2025-04-22 09:35:38.558 -0700 |
CORTEX-MODEL-ROLE-ALL |
SNOWFLAKE |
MODELS |
APPLICATION |
2025-04-22 09:36:16.793 -0700 |
CORTEX-MODEL-ROLE-LLAMA3.1-405B |
SNOWFLAKE |
MODELS |
APPLICATION |
2025-04-22 09:37:18.692 -0700 |
CORTEX-MODEL-ROLE-SNOWFLAKE-ARCTIC |
SNOWFLAKE |
MODELS |
APPLICATION |
중요
모델 또는 관련 애플리케이션 역할이 보이지 않는 경우 CALL SNOWFLAKE.MODELS.CORTEX_BASE_MODELS_REFRESH()
에서 최신 모델에 액세스할 수 있습니다.
특정 모델에 대한 액세스 권한을 부여하려면 해당 모델의 애플리케이션 역할을 사용자 역할에 부여합니다. 예를 들어, SNOWFLAKE.MODELS."LLAMA3.1-70B"
에 대한 CORTEX-MODEL-ROLE-LLAMA3.1-70B
애플리케이션 역할을 사용자 역할에 부여할 수 있습니다. 다음 명령은 CORTEX-MODEL-ROLE-LLAMA3.1-70B
애플리케이션 역할을 MY_ROLE
사용자 역할에 부여합니다.
GRANT APPLICATION ROLE SNOWFLAKE."CORTEX-MODEL-ROLE-LLAMA3.1-70B" TO ROLE MY_ROLE;
추론 호출을 하려면 정규화된 모델 이름을 사용하십시오. 다음은 사용자가 할 수 있는 호출의 예입니다.
SELECT AI_COMPLETE('SNOWFLAKE.MODELS."LLAMA3.1-70B"', 'Hello');
중요
사용자가 요청을 하면 먼저 역할 기반 액세스 제어를 사용하여 사용자가 모델에 액세스할 수 있는지 여부를 결정합니다. 사용자에게 액세스 권한이 없는 경우 Snowflake Cortex는 CORTEX_MODELS_ALLOWLIST 를 평가하여 모델에 대한 액세스 권한을 확인합니다. 모델이 허용 목록에 있는 경우(또는 허용 목록의 값이 'All'
로 설정된 경우) 사용자에게 모델에 대한 액세스 권한이 부여됩니다. 모델에 대한 세분화된 액세스를 사용하려면 CORTEX_MODELS_ALLOWLIST 에서 모델 이름을 제거하거나 'None'
으로 설정합니다.
가용성¶
Snowflake Cortex AI 함수는 현재 다음 리전에서 사용할 수 있습니다. 목록에 없는 리전에서 LLMs 에 액세스하려면 리전 간 추론 매개 변수 를 사용합니다.
참고
TRY_COMPLETE 함수는 COMPLETE와 동일한 리전에서 사용할 수 있습니다.
COUNT_TOKENS 함수는 모든 리전에서 사용할 수 있지만, 모델 추론은 테이블에 따라 리전별로 다릅니다.
함수
(모델)
|
AWS US
(리전 간)
|
AWS US 서부 2
(오리건)
|
AWS US 동부 1
(북부 버지니아)
|
AWS 유럽 중부 1
(프랑크푸르트)
|
AWS 유럽 서부 1
(아일랜드)
|
AWS AP 동남부 2
(시드니)
|
AWS AP 북동부 1
(도쿄)
|
AWS US 동부
(상용 정부 - 북버지니아)
|
Azure 동부 US 2
(버지니아)
|
Azure 서유럽
(네덜란드)
|
AWS EU
(리전 간)
|
AWS AWS_APJ
(리전 간)
|
Azure US
(리전 간)
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
COMPLETE
(
claude-4-sonnet ) |
✔ |
||||||||||||
COMPLETE
(
claude-4-opus ) |
미리 보기에서 |
||||||||||||
COMPLETE
(
claude-3-7-sonnet ) |
✔ |
||||||||||||
COMPLETE
(
claude-3-5-sonnet ) |
✔ |
✔ |
✔ |
||||||||||
COMPLETE
(
llama4-maverick ) |
✔ |
✔ |
|||||||||||
COMPLETE
(
llama4-scout ) |
✔ |
✔ |
|||||||||||
COMPLETE
(
llama3.2-1b ) |
✔ |
✔ |
|||||||||||
COMPLETE
(
llama3.2-3b ) |
✔ |
✔ |
|||||||||||
COMPLETE
(
llama3.1-8b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
COMPLETE
(
llama3.1-70b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
COMPLETE
(
llama3.3-70b ) |
✔ |
✔ |
|||||||||||
COMPLETE
(
snowflake-llama-3.3-70b ) |
✔ |
✔ |
|||||||||||
COMPLETE
(
llama3.1-405b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|||||||
COMPLETE
(
openai-gpt-4.1 ) |
미리 보기에서 |
미리 보기에서 |
|||||||||||
COMPLETE
(
openai-o4-mini ) |
미리 보기에서 |
미리 보기에서 |
|||||||||||
COMPLETE
(
snowflake-llama-3.1-405b ) |
✔ |
✔ |
|||||||||||
COMPLETE
(
snowflake-arctic ) |
✔ |
✔ |
✔ |
✔ |
|||||||||
COMPLETE
(
deepseek-r1 ) |
✔ |
✔ |
|||||||||||
COMPLETE
(
reka-core ) |
✔ |
✔ |
✔ |
||||||||||
COMPLETE
(
reka-flash ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|||||||
COMPLETE
(
mistral-large2 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|
COMPLETE
(
mixtral-8x7b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
COMPLETE
(
mistral-7b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
COMPLETE
(
jamba-instruct ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
||||||
COMPLETE
(
jamba-1.5-mini ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
||||||
COMPLETE
(
jamba-1.5-large ) |
✔ |
✔ |
✔ |
||||||||||
COMPLETE
(
gemma-7b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
||||
EMBED_TEXT_768
(
e5-base-v2 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
||
EMBED_TEXT_768
(
snowflake-arctic-embed-m ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|
EMBED_TEXT_768
(
snowflake-arctic-embed-m-v1.5 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|
EMBED_TEXT_1024
(
snowflake-arctic-embed-l-v2.0 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|
EMBED_TEXT_1024
(
nv-embed-qa-4 ) |
✔ |
✔ |
|||||||||||
EMBED_TEXT_1024
(
multilingual-e5-large ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|
EMBED_TEXT_1024
(
voyage-multilingual-2 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|
AI_CLASSIFY TEXT
|
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
AI_CLASSIFY IMAGE
|
✔ |
✔ |
✔ |
✔ |
|||||||||
AI_FILTER TEXT
|
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
AI_FILTER IMAGE
|
✔ |
✔ |
✔ |
✔ |
|||||||||
AI_AGG
|
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
AI_SIMILARITY TEXT
|
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
AI_SIMILARITY IMAGE
|
✔ |
✔ |
✔ |
✔ |
|||||||||
AI_SUMMARIZE_AGG
|
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
EXTRACT_ANSWER |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
SENTIMENT |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
ENTITY_SENTIMENT |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
||
SUMMARIZE |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
TRANSLATE |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
현재 다음 확장 리전에서는 다음과 같은 Snowflake Cortex AI 함수를 사용할 수 있습니다.
함수
(모델)
|
AWS US 동부 2
(오하이오)
|
AWS CA 중부 1
(중부)
|
AWS SA 동부 1
(상파울루)
|
AWS 유럽 서부 2
(런던)
|
AWS 유럽 중부 1
(프랑크푸르트)
|
AWS 유럽 북부 1
(스톡홀름)
|
AWS AP 북동부 1
(도쿄)
|
AWS AP 남부 1
(뭄바이)
|
AWS AP 동남부 2
(시드니)
|
AWS AP 동남부 3
(자카르타)
|
Azure 중남부 US
(텍사스)
|
Azure 서부 US 2
(워싱턴)
|
Azure UK 남부
(런던)
|
Azure 북유럽
(아일랜드)
|
Azure 스위스 북부
(취리히)
|
Azure 인도 중부
(푸네)
|
Azure 일본 동부
(도쿄, 사이타마)
|
Azure 동남아시아
(싱가포르)
|
Azure 호주 동부
(뉴사우스웨일즈)
|
GCP 유럽 서부 2
(런던)
|
GCP 유럽 서부 4
(네덜란드)
|
GCP US 중부 1
(아이오와)
|
GCP US 동부 4
(북부 버지니아)
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
EMBED_TEXT_768
(
snowflake-arctic-embed-m-v1.5 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
EMBED_TEXT_768
(
snowflake-arctic-embed-m ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
EMBED_TEXT_1024
(
multilingual-e5-large ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
다음 테이블에는 레거시 모델이 나열되어 있습니다. 이제 막 시작하는 경우 이전 테이블의 모델부터 시작하십시오.
함수
(모델)
|
AWS US 서부 2
(오리건)
|
AWS US 동부 1
(북부 버지니아)
|
AWS 유럽 중부 1
(프랑크푸르트)
|
AWS 유럽 서부 1
(아일랜드)
|
AWS AP 동남부 2
(시드니)
|
AWS AP 북동부 1
(도쿄)
|
Azure 동부 US 2
(버지니아)
|
Azure 서유럽
(네덜란드)
|
---|---|---|---|---|---|---|---|---|
COMPLETE
(
llama2-70b-chat ) |
✔ |
✔ |
✔ |
✔ |
✔ |
|||
COMPLETE
(
llama3-8b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
||
COMPLETE
(
llama3-70b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
|||
COMPLETE
(
mistral-large ) |
✔ |
✔ |
✔ |
✔ |
✔ |
비용 고려 사항¶
Snowflake Cortex AI 함수는 처리된 토큰 수를 기준으로 컴퓨팅 비용이 발생합니다. 백만 토큰당 크레딧으로 표시되는 각 함수의 비용은 Snowflake 서비스 사용 테이블 을 참조하십시오.
토큰은 Snowflake Cortex AI 함수가 처리하는 가장 작은 텍스트 단위로, 대략 4자에 해당합니다. 원시 입력 또는 출력 텍스트와 토큰의 동등성은 모델에 따라 다를 수 있습니다.
응답(AI_COMPLETE, AI_CLASSIFY, AI_FILTER, AI_AGG, AI_SUMMARIZE 및 TRANSLATE)에서 새 텍스트를 생성하는 함수의 경우 입력 및 출력 토큰이 모두 계산됩니다.
CORTEX GUARD의 경우 입력 토큰만 계산됩니다. 입력 토큰의 수는 COMPLETE 함수에 사용된 LLM 모델당 출력 토큰의 수를 기준으로 합니다.
AI_SIMILARITY 의 경우 EMBED_* 함수, 입력 토큰만 계산됩니다.
EXTRACT_ANSWER의 경우 청구 가능한 토큰 수는
from_text
및question
필드에 있는 토큰 수의 합계입니다.AI_CLASSIFY, AI_FILTER, AI_AGG, AI_SUMMARIZE_AGG, SUMMARIZE, TRANSLATE, EXTRACT_ANSWER, ENTITY_SENTIMENT, SENTIMENT 는 응답을 생성하기 위해 입력 텍스트에 프롬프트를 추가합니다. 결과적으로 입력한 토큰 수가 공급자가 제공한 텍스트의 토큰 수보다 많습니다.
AI_CLASSIFY 레이블, 설명 및 예제는 AI_CLASSIFY 호출마다 한 번씩이 아니라 처리된 각 레코드에 대한 입력 토큰으로 계산됩니다.
PARSE_DOCUMENT(SNOWFLAKE.CORTEX)의 경우 청구는 처리된 문서 페이지 수를 기준으로 합니다.
TRY_COMPLETE(SNOWFLAKE.CORTEX)에서는 오류 처리를 위한 비용이 발생하지 않습니다. 즉, TRY_COMPLETE(SNOWFLAKE.CORTEX) 함수가 NULL 을 반환하면 비용이 발생하지 않습니다.
COUNT_TOKENS(SNOWFLAKE.CORTEX)에서는 함수를 실행하기 위한 컴퓨팅 비용만 발생합니다. 추가적인 토큰 기반 비용은 발생하지 않습니다.
더 큰 웨어하우스는 성능을 향상시키지 못하므로 Snowflake Cortex AISQL 함수 또는 더 작은(MEDIUM 보다 크지 않은) Cortex PARSE_DOCUMENT 함수를 호출하는 쿼리를 실행할 것을 권장합니다. Snowflake Cortex LLM 함수를 호출하는 쿼리를 실행할 때 웨어하우스를 활성 상태로 유지하는 것과 관련된 비용이 계속 적용됩니다. 컴퓨팅 비용에 대한 일반적인 정보는 컴퓨팅 비용 이해하기 섹션을 참조하십시오.
AI 서비스 비용 추적¶
계정에서 LLM Functions를 포함한 AI 서비스에 사용된 크레딧을 추적하려면 METERING_HISTORY 뷰 를 사용합니다.
SELECT *
FROM SNOWFLAKE.ACCOUNT_USAGE.METERING_DAILY_HISTORY
WHERE SERVICE_TYPE='AI_SERVICES';
AISQL 함수에 대한 크레딧 소비 추적¶
각 AISQL 함수 호출에 대한 크레딧과 토큰 소비를 뷰로 보려면 CORTEX_FUNCTIONS_USAGE_HISTORY 뷰 를 사용하십시오.
SELECT *
FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_FUNCTIONS_USAGE_HISTORY;
또한 Snowflake 계정 내에서 각 쿼리의 크레딧과 토큰 소비량을 볼 수 있습니다. 각 쿼리의 크레딧 및 토큰 소비량을 뷰로 확인하면 가장 많은 크레딧과 토큰을 소비하는 쿼리를 식별하는 데 도움이 됩니다.
다음 예제 쿼리는 CORTEX_FUNCTIONS_QUERY_USAGE_HISTORY 뷰 를 사용하여 계정 내 모든 쿼리에 대한 크레딧과 토큰 소비량을 표시합니다.
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_FUNCTIONS_QUERY_USAGE_HISTORY;
동일한 뷰를 사용하여 특정 쿼리에 대한 크레딧 및 토큰 소비량을 확인할 수도 있습니다.
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_FUNCTIONS_QUERY_USAGE_HISTORY
WHERE query_id='<query-id>';
참고
REST API 를 통한 요청에 대해서는 세분화된 사용량 정보를 얻을 수 없습니다.
쿼리 사용 기록은 쿼리에 사용된 모델별로 그룹화됩니다. 예를 들어, 달리는 경우
SELECT AI_COMPLETE('mistral-7b', 'Is a hot dog a sandwich'), AI_COMPLETE('mistral-large', 'Is a hot dog a sandwich');
쿼리 사용 기록에는 mistral-7b
및 mistral-large
에 대한 두 행이 표시됩니다.
사용 할당량¶
모든 Snowflake 고객이 LLM 기능에 액세스할 수 있도록 하기 위해 사용량이 많은 기간에는 Snowflake Cortex AI 함수에 대한 액세스가 제한될 수 있습니다. 사용 할당량은 계정 수준에는 적용되지 않습니다.
제한 요청은 오류 응답 을 받게 되며 나중에 다시 시도해야 합니다.
참고
유효한 결제 방법이 없는 주문형 Snowflake 계정(예: 평가판 계정)은 Snowflake Cortex LLM 함수 사용 시 하루에 대략 1크레딧으로 제한됩니다. 이 제한을 제거하려면 평가판 계정을 유료 계정으로 전환하십시오.
비용 관리 및 제한하기¶
Snowflake는 Snowflake Cortex AISQL 함수를 호출하는 경우에는 MEDIUM을 초과하는 웨어하우스 크기를 사용하지 않는 것이 좋습니다. 필요한 것보다 더 큰 웨어하우스를 사용해도 성능은 향상되지 않지만 불필요한 비용이 발생하고 제한 위험이 더 높아질 수 있습니다. 이 권장 사항은 향후 제품 업데이트로 인해 향후에 적용되지 않을 수 있습니다.
모델 제한 사항¶
Snowflake Cortex에서 사용하는 모델에는 아래 테이블에 설명된 대로 크기 제한이 있습니다. 크기는 토큰 단위로 주어집니다. 토큰은 일반적으로 4자 정도의 텍스트를 나타내므로, 한계에 해당하는 단어의 개수는 토큰의 개수보다 적습니다. 제한을 초과하는 값을 입력하면 오류가 발생합니다.
모델이 생성할 수 있는 출력의 최대 크기는 다음에 의해 제한됩니다.
모델의 출력 토큰 제한입니다.
모델이 입력 토큰을 소비한 후 컨텍스트 윈도우에서 사용 가능한 공간입니다.
예를 들어, claude-3-5-sonnet
에는 200,000 토큰의 컨텍스트 윈도우를 있습니다. 입력에 100,000개의 토큰을 사용하는 경우 모델은 최대 8,192개의 토큰을 생성할 수 있습니다. 그러나 195,000개의 토큰을 입력으로 사용하는 경우 모델은 총 200,000개의 토큰에 대해 최대 5,000개까지만 토큰을 생성할 수 있습니다.
중요
AWS AP 남동부 2(시드니) 리전:
llama3-8b
및mistral-7b
의 컨텍스트 윈도우는 4,096 토큰입니다.llama3.1-8b
의 컨텍스트 윈도우는 16,384 토큰입니다.SUMMARIZE 함수의 Snowflake 관리 모델에 대한 컨텍스트 윈도우는 4,096 토큰입니다.
AWS 유럽 서부 1(아일랜드) 리전:
llama3.1-8b
의 컨텍스트 윈도우는 16,384 토큰입니다.mistral-7b
의 컨텍스트 윈도우는 4,096 토큰입니다.
함수 |
모델 |
컨텍스트 윈도우(토큰) |
최대 출력 AISQL 함수(토큰) |
---|---|---|---|
COMPLETE |
|
128,000 |
8,192 |
|
128,000 |
8,192 |
|
|
4,096 |
8,192 |
|
|
32,768 |
8,192 |
|
|
200,000 |
32,000 |
|
|
200,000 |
64,000 |
|
|
200,000 |
8,192 |
|
|
200,000 |
8,192 |
|
|
32,000 |
8,192 |
|
|
128,000 |
8,192 |
|
|
1,047,576 |
32,768 |
|
|
200,000 |
100,000 |
|
|
100,000 |
8,192 |
|
|
32,000 |
8,192 |
|
|
256,000 |
8,192 |
|
|
256,000 |
8,192 |
|
|
256,000 |
8,192 |
|
|
32,000 |
8,192 |
|
|
4,096 |
8,192 |
|
|
8,000 |
8,192 |
|
|
8,000 |
8,192 |
|
|
128,000 |
8,192 |
|
|
128,000 |
8,192 |
|
|
128,000 |
8,192 |
|
|
8,000 |
8,192 |
|
|
128,000 |
8,192 |
|
|
8,000 |
8,192 |
|
|
128,000 |
8,192 |
|
|
128,000 |
8,192 |
|
|
32,000 |
8,192 |
|
|
8,000 |
8,192 |
|
EMBED_TEXT_768 |
|
512 |
해당 없음 |
|
512 |
해당 없음 |
|
EMBED_TEXT_1024 |
|
512 |
해당 없음 |
|
512 |
해당 없음 |
|
|
32,000 |
해당 없음 |
|
AI_FILTER |
Snowflake 관리형 모델 |
128,000 |
해당 없음 |
AI_CLASSIFY / CLASSIFY_TEXT |
Snowflake 관리형 모델 |
128,000 |
해당 없음 |
AI_AGG |
Snowflake 관리형 모델 |
행당 128,000
여러 행에 걸쳐 사용할 수 있습니다
|
8,192 |
AI_SUMMARIZE_AGG |
Snowflake 관리형 모델 |
행당 128,000
여러 행에 걸쳐 사용할 수 있습니다
|
8,192 |
ENTITY_SENTIMENT |
Snowflake 관리형 모델 |
2,048 |
해당 없음 |
EXTRACT_ANSWER |
Snowflake 관리형 모델 |
텍스트의 경우 2,048
질문의 경우 64
|
해당 없음 |
SENTIMENT |
Snowflake 관리형 모델 |
512 |
해당 없음 |
SUMMARIZE |
Snowflake 관리형 모델 |
32,000 |
4,096 |
TRANSLATE |
Snowflake 관리형 모델 |
4,096 |
해당 없음 |
모델 선택하기¶
Snowflake Cortex COMPLETE 함수는 다양한 기능, 대기 시간, 비용의 여러 모델을 지원합니다. 이러한 모델은 일반적인 고객 사용 사례에 맞게 신중하게 선택되었습니다. 최고의 크레딧당 성능 을 달성하려면 콘텐츠 크기와 작업의 복잡성에 잘 맞는 모델을 선택하십시오. 사용 가능한 모델에 대한 간략한 개요는 다음과 같습니다.
Large 모델¶
어디서부터 시작해야 할지 잘 모르겠다면 가장 성능이 뛰어난 모델을 먼저 사용해 다른 모델을 평가할 수 있는 기준을 설정하십시오. claude-3-7-sonnet
, reka-core
, mistral-large2
는 Snowflake Cortex에서 제공하는 가장 성능이 뛰어난 모델이며, 최신 모델이 어떤 기능을 제공하는지에 대한 좋은 ID어를 제공합니다.
Claude 3-7 Sonnet
은 일반 추론 및 멀티모달 기능의 선두주자입니다. 다양한 영역과 양식에 걸쳐 추론이 필요한 작업에서 이전 버전보다 뛰어난 성능을 발휘합니다. 대용량의 출력 용량을 사용하여 정형 쿼리 또는 비정형 쿼리에서 더 많은 정보를 얻을 수 있습니다. 추론 기능과 큰 컨텍스트 윈도우를 갖추고 있어 에이전트 워크플로에 매우 적합합니다.deepseek-r1
은 감독된 미세 조정(SFT)없이 대규모 강화 학습(RL)을 사용하여 학습된 기초 모델입니다. 수학, 코드, 추론 작업 전반에서 높은 성능을 제공할 수 있습니다. 모델에 액세스하려면 리전 간 추론 매개 변수 를AWS_US
로 설정합니다.mistral-large2
는 최상위 계층의 추론 기능을 갖춘 Mistral AI의 가장 진보된 대규모 언어 모델입니다. 이는mistral-large
에 비해 코드 생성, 수학, 추론 능력이 훨씬 뛰어나며 다국어 지원도 훨씬 강력합니다. 합성 텍스트 생성, 코드 생성, 다국어 텍스트 분석과 같이 대규모 추론 기능이 필요하거나 고도로 전문화된 복잡한 작업에 이상적입니다.llama3.1-405b
는 128K의 대형 컨텍스트 윈도우가 있는 Meta의llama3.1
모델 제품군의 오픈 소스 모델입니다. 긴 문서 처리, 다국어 지원, 합성 데이터 생성 및 모델 증류에 탁월합니다.snowflake-llama3.1-405b
는 오픈 소스 llama3.1 모델에서 파생된 모델입니다. Snowflake AI 연구팀에서 개발한<SwiftKV optimizations https://www.snowflake.com/en/blog/up-to-75-lower-inference-cost-llama-meta-llm/>
을 사용하여 추론 비용을 최대 75%까지 절감할 수 있습니다. SwiftKV 는 정확도 손실을 최소화하면서 더 높은 처리량 성능을 달성합니다.
Medium 모델¶
llama3.1-70b
는 채팅 애플리케이션, 콘텐츠 제작, 엔터프라이즈 애플리케이션에 이상적인 최신 성능을 보여주는 오픈 소스 모델입니다. 이는 128K 컨텍스트 윈도우로 다양한 사용 사례를 지원하는 고성능, 비용 효율적인 모델입니다.llama3-70b
는 계속해서 지원되며 컨텍스트 창은 8K입니다.snowflake-llama3.3-70b
는 오픈 소스 llama3.3 모델에서 파생된 모델입니다. Snowflake AI 연구팀이 개발한<SwiftKV optimizations https://www.snowflake.com/en/blog/up-to-75-lower-inference-cost-llama-meta-llm/>
을 사용하여 추론 비용을 최대 75%까지 절감할 수 있습니다. SwiftKV 는 정확도 손실을 최소화하면서 더 높은 처리량 성능을 달성합니다.snowflake-arctic
은 엔터프라이즈에 초점을 맞춘 Snowflake의 최고 수준의 LLM입니다. Arctic은 SQL 생성, 코딩, 벤치마크에 따른 지침과 같은 엔터프라이즈 작업에서 탁월한 성능을 발휘합니다.mixtral-8x7b
는 텍스트 생성, 분류, 질문 응답에 이상적입니다. Mistral 모델은 낮은 메모리 요구 사항과 낮은 지연 시간에 최적화되어 있어 엔터프라이즈 사용 사례에서 더 높은 처리량을 제공합니다.jamba-Instruct
모델은 기업의 요구 사항을 효율적으로 충족하기 위해 AI21 Labs에서 개발한 모델입니다. 이는 낮은 비용과 지연 시간으로 256,000개의 토큰 컨텍스트 윈도우를 제공하도록 최적화되어 있어 긴 문서와 광범위한 기술 자료에 대한 요약, Q&A, 엔터티 추출과 같은 작업에 이상적입니다.AI21 Jamba 1.5 모델 제품군은 파운데이션 모델에 이어 최신 하이브리드 SSM 변환기 지침을 따릅니다. 컨텍스트 길이가 256K인
jamba-1.5-mini
및jamba-1.5-large
는 정형 출력(JSON) 및 그라운딩을 사용한 생성과 같은 사용 사례를 지원합니다.
Small 모델¶
llama3.2-1b
및llama3.2-3b
모델은 128K 토큰의 컨텍스트 길이를 지원하며 요약, 지침 따르기, 재작성 작업과 같은 사용 사례에 적합한 동급 최강의 최신 모델입니다. Llama 3.2 모델은 영어, 독일어, 프랑스어, 이탈리아어, 포르투갈어, 힌디어, 스페인어 및 태국어를 지원하는 다국어 기능을 제공합니다.llama3.1-8b
는 중간 정도의 추론이 필요한 작업에 이상적입니다. 이는 컨텍스트 윈도우가 128K인 초고속 경량 모델입니다.llama3-8b
및llama2-70b-chat
은 계속해서 지원되는 모델이지만, 컨텍스트 윈도우가 더 작고 정확도가 상대적으로 낮습니다.mistral-7b
는 가장 간단한 요약, 정형화, 질문 답변 등 빠르게 처리해야 하는 작업에 이상적입니다. 32K 컨텍스트 윈도우를 통해 여러 페이지의 텍스트에 대해 낮은 지연 시간과 높은 처리량 처리를 제공합니다.gemma-7b
는 간단한 코드 및 텍스트 완성 작업에 적합합니다. 8,000개 토큰의 컨텍스트 윈도우가 있지만 그 한도 내에서 놀라울 정도로 성능이 뛰어나고 상당히 비용 효율적입니다.
다음 테이블에는 Snowflake Cortex COMPLETE에서 제공하는 모델과 기타 인기 모델 등 다양한 벤치마크에서 인기 모델의 성능에 대한 정보를 제공합니다.
모델 |
컨텍스트 윈도우
(토큰)
|
MMLU
(추론)
|
HumanEval
(코딩)
|
GSM8K
(산술 추론)
|
Spider 1.0
(SQL)
|
---|---|---|---|---|---|
128,000 |
88.7 |
90.2 |
96.4 |
- |
|
200,000 |
88.3 |
92.0 |
96.4 |
- |
|
128,000 |
88.6 |
89 |
96.8 |
- |
|
32,000 |
83.2 |
76.8 |
92.2 |
- |
|
128,000 |
86 |
80.5 |
95.1 |
- |
|
128,000 |
84 |
92 |
93 |
- |
|
100,000 |
75.9 |
72 |
81 |
- |
|
128,000 |
73 |
72.6 |
84.9 |
- |
|
32,000 |
70.6 |
40.2 |
60.4 |
- |
|
256,000 |
68.2 |
40 |
59.9 |
- |
|
256,000 |
69.7 |
- |
75.8 |
- |
|
256,000 |
81.2 |
- |
87 |
- |
|
4,096 |
67.3 |
64.3 |
69.7 |
79 |
|
128,000 |
49.3 |
- |
44.4 |
- |
|
128,000 |
69.4 |
- |
77.7 |
- |
|
8,000 |
64.3 |
32.3 |
46.4 |
- |
|
32,000 |
62.5 |
26.2 |
52.1 |
- |
|
GPT 3.5 Turbo* |
4,097 |
70 |
48.1 |
57.1 |
- |
이전 모델 버전¶
Snowflake Cortex COMPLETE 함수는 다음과 같은 이전 모델 버전도 지원합니다. 이 테이블에 나열된 버전 대신 최신 모델 버전을 사용하는 것이 좋습니다.
모델 |
컨텍스트 윈도우
(토큰)
|
MMLU
(추론)
|
HumanEval
(코딩)
|
GSM8K
(산술 추론)
|
Spider 1.0
(SQL)
|
---|---|---|---|---|---|
32,000 |
81.2 |
45.1 |
81 |
81 |
|
4,096 |
68.9 |
30.5 |
57.5 |
- |
오류 조건¶
Snowflake Cortex AI 함수는 다음과 같은 오류 메시지를 생성할 수 있습니다.
메시지 |
설명 |
---|---|
|
과도한 시스템 부하로 인해 요청이 거부되었습니다. 요청을 다시 시도해 주십시오. |
|
함수에 전달된 |
|
모델 소비 예산이 초과되었습니다. |
|
지정한 모델이 존재하지 않습니다. |
|
지정된 언어는 TRANSLATE 함수에서 지원되지 않습니다. |
|
요청이 모델에서 지원하는 최대 토큰 수를 초과했습니다(모델 제한 사항 참조). |
|
사용률이 높아 요청이 제한되었습니다. 나중에 다시 시도하십시오. |
|
지정된 카테고리 수가 AI_CLASSIFY 의 한도를 초과합니다. |
|
지정된 카테고리 유형은 AI_CLASSIFY에서 지원되지 않습니다. |
|
AI_CLASSIFY에 대한 입력은 빈 문자열 또는 null입니다. |
Python으로 Snowflake Cortex AISQL 사용하기¶
Snowpark Python API 의 Snowflake Cortex AISQL 함수를 사용할 수 있습니다. API 에서 함수를 사용하여 텍스트와 이미지 데이터를 분류, 요약, 필터링할 수 있습니다.
이러한 함수에는 다음이 포함됩니다.
ai_agg()
- 자연어 지침을 사용하여 텍스트 열을 집계합니다. 자세한 내용은 AI_AGG 섹션을 참조하십시오.ai_classify()
- 텍스트 또는 이미지를 사용자 지정 카테고리로 분류합니다. 자세한 내용은 AI_CLASSIFY 섹션을 참조하십시오.ai_filter()
- 자연어를 사용하여 데이터를 필터링합니다. 자세한 내용은 AI_FILTER 섹션을 참조하십시오.
ai_agg()
함수는 분석가에게 그룹화되거나 그룹화되지 않은 데이터에서 결과를 요약하거나 추출하도록 요청하는 것과 유사한 방식으로 자연어 지침을 사용하여 텍스트 열을 집계합니다.
다음 예는 ai_agg()
함수를 사용하여 각 제품에 대한 고객 리뷰를 요약한 것입니다. 이 함수는 텍스트 열과 자연어 지침을 사용하여 리뷰를 요약합니다.
from snowflake.snowpark.functions import ai_agg, col
df = session.create_dataframe([
[1, "Excellent product!"],
[1, "Great battery life."],
[1, "A bit expensive but worth it."],
[2, "Terrible customer service."],
[2, "Won’t buy again."],
], schema=["product_id", "review"])
# Summarize reviews per product
summary_df = df.group_by("product_id").agg(
ai_agg(col("review"), "Summarize the customer reviews in one sentence.")
)
summary_df.show()
참고
사용 사례를 중심으로 상세하게 작업 설명을 작성하십시오. 예를 들어, “Summarize the customer feedback for an investor report”를 입력합니다.
ai_classify()
함수는 텍스트 또는 이미지를 가져와서 정의한 카테고리로 분류합니다.
다음 예제에서는 여행 후기를 “travel” 및 “cooking” 등의 카테고리로 분류합니다. 이 함수는 텍스트 열과 텍스트를 분류할 카테고리 목록을 받습니다.
from snowflake.snowpark.functions import ai_classify
df = session.create_dataframe([
["I dream of backpacking across South America."],
["I made the best pasta yesterday."],
], schema=["sentence"])
df = df.select(
"sentence",
ai_classify("sentence", ["travel", "cooking"]).alias("classification")
)
df.show()
참고
최대 500개의 카테고리를 제공할 수 있습니다. 텍스트와 이미지를 모두 분류할 수 있습니다.
ai_filter()
함수는 자연어 조건을 평가하여 TRUE
또는 FALSE
를 반환합니다. 행을 필터링하거나 태그하는 데 사용할 수 있습니다.
from snowflake.snowpark.functions import ai_filter, prompt, col
df = session.create_dataframe(["Canada", "Germany", "Japan"], schema=["country"])
filtered_df = df.select(
"country",
ai_filter(prompt("Is {0} in Asia?", col("country"))).alias("is_in_asia")
)
filtered_df.show()
참고
문자열과 파일 모두에서 필터링할 수 있습니다. 동적 프롬프트의 경우 prompt() 함수를 사용합니다. 자세한 내용은 Snowpark Python 참조 를 참조하십시오.
기존 Snowpark ML 함수는 Snowpark ML 버전 1.1.2 이상에서 계속 지원됩니다. Snowpark ML 설정에 대한 지침은 로컬에서 Snowflake ML 사용하기 섹션을 참조하십시오.
Snowflake 외부에서 Python 스크립트를 실행하는 경우 이러한 함수를 사용하려면 Snowpark 세션을 생성해야 합니다. 지침을 Snowflake에 연결하기 섹션을 참조하십시오.
다음 Python 예제에서는 단일 값에 대해 Snowflake Cortex AI 함수를 호출하는 방법을 보여줍니다.
from snowflake.cortex import Complete, ExtractAnswer, Sentiment, Summarize, Translate
text = """
The Snowflake company was co-founded by Thierry Cruanes, Marcin Zukowski,
and Benoit Dageville in 2012 and is headquartered in Bozeman, Montana.
"""
print(Complete("llama2-70b-chat", "how do snowflakes get their unique patterns?"))
print(ExtractAnswer(text, "When was snowflake founded?"))
print(Sentiment("I really enjoyed this restaurant. Fantastic service!"))
print(Summarize(text))
print(Translate(text, "en", "fr"))
COMPLETE 함수를 사용할 때 모델의 하이퍼파라미터에 영향을 주는 옵션을 전달할 수 있습니다. 다음 Python 예제는 모델이 생성할 수 있는 최대 출력 토큰 수를 수정하여 COMPLETE 함수를 호출하는 것을 보여줍니다.
from snowflake.cortex import Complete,CompleteOptions
model_options1 = CompleteOptions(
{'max_tokens':30}
)
print(Complete("llama3.1-8b", "how do snowflakes get their unique patterns?", options=model_options1))
아래와 같이 테이블 열에서 AI 함수를 호출할 수도 있습니다. 이 예에서는 세션 오브젝트(session
에 저장됨)와 텍스트 열 abstract_text
가 포함된 테이블 articles
가 필요하며 추상 요약이 포함된 새 열 abstract_summary
를 생성합니다.
from snowflake.cortex import Summarize
from snowflake.snowpark.functions import col
article_df = session.table("articles")
article_df = article_df.withColumn(
"abstract_summary",
Summarize(col("abstract_text"))
)
article_df.collect()
참고
COMPLETE의 고급 채팅 스타일(다중 메시지) 형식은 현재 Python에서 지원되지 않습니다.
Snowflake Cortex AI 함수를 Snowflake CLI 와 함께 사용하기¶
Snowflake Cortex AISQL 은 Snowflake CLI 버전 2.4.0 이상에서 사용 가능합니다. Snowflake CLI 사용에 대한 자세한 내용은 Snowflake CLI 소개 섹션을 참조하십시오.
다음 예제에서는 단일 값에 대해 snow cortex
명령을 사용하는 방법을 설명합니다. -c
매개 변수는 사용할 연결을 지정합니다.
참고
COMPLETE의 고급 채팅 스타일(다중 메시지) 형식은 현재 Snowflake CLI 에서 지원되지 않습니다.
snow cortex complete "Is 5 more than 4? Please answer using one word without a period." -c "snowhouse"
snow cortex extract-answer "what is snowflake?" "snowflake is a company" -c "snowhouse"
snow cortex sentiment "Mary had a little Lamb" -c "snowhouse"
snow cortex summarize "John has a car. John's car is blue. John's car is old and John is thinking about buying a new car. There are a lot of cars to choose from and John cannot sleep because it's an important decision for John."
snow cortex translate herb --to pl
명령에 사용할 텍스트가 포함된 파일을 사용할 수도 있습니다. 이 예제에서는 about_cortex.txt
파일에 다음과 같은 내용이 포함되어 있다고 가정합니다.
Snowflake Cortex gives you instant access to industry-leading large language models (LLMs) trained by researchers at companies like Anthropic, Mistral, Reka, Meta, and Google, including Snowflake Arctic, an open enterprise-grade model developed by Snowflake.
Since these LLMs are fully hosted and managed by Snowflake, using them requires no setup. Your data stays within Snowflake, giving you the performance, scalability, and governance you expect.
Snowflake Cortex features are provided as SQL functions and are also available in Python. The available functions are summarized below.
COMPLETE: Given a prompt, returns a response that completes the prompt. This function accepts either a single prompt or a conversation with multiple prompts and responses.
EMBED_TEXT_768: Given a piece of text, returns a vector embedding that represents that text.
EXTRACT_ANSWER: Given a question and unstructured data, returns the answer to the question if it can be found in the data.
SENTIMENT: Returns a sentiment score, from -1 to 1, representing the detected positive or negative sentiment of the given text.
SUMMARIZE: Returns a summary of the given text.
TRANSLATE: Translates given text from any supported language to any other.
그런 다음과 같이 --file
매개 변수를 사용해 파일 이름을 전달하여 snow cortex summarize
명령을 실행할 수 있습니다.
snow cortex summarize --file about_cortex.txt
Snowflake Cortex offers instant access to industry-leading language models, including Snowflake Arctic, with SQL functions for completing prompts (COMPLETE), text embedding (EMBED\_TEXT\_768), extracting answers (EXTRACT\_ANSWER), sentiment analysis (SENTIMENT), summarizing text (SUMMARIZE), and translating text (TRANSLATE).
이러한 명령에 대한 자세한 내용은 snow cortex 명령 섹션을 참조하십시오.
법적 고지¶
입력 및 출력의 데이터 분류는 다음 테이블과 같습니다.
입력 데이터 분류 |
출력 데이터 분류 |
지정 |
---|---|---|
Usage Data |
Customer Data |
일반적으로 사용 가능한 함수는 Covered AI 기능입니다. 미리 보기 함수는 Preview AI 기능입니다. [1] |
자세한 내용은 Snowflake AI 및 ML 섹션을 참조하십시오.