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

[Cortex_AI_5] 텍스트 분류+필터링 삼총사: AI_CLASSIFY, AI_FILTER, AI_EXTRACT

포스 삼촌 2026. 7. 20. 21:12
AI 함수들 중에서 텍스트 분류, 필터링과 관련된 함수 3가지에요.

얘네들 역시 Snowflake의 '완전관리형' 함수들로서 각 경우에 맞게 최적화된 함수입니다.

독스(공식 문서)를 보고 사용 Use Case를 확인한 후 알맞는 곳에 사용하는게 좋습니다.

공식 Snowflake docs : https://docs.snowflake.com/ko/sql-reference/functions/ai_classify

 

2. AI_CLASSIFY

AI_CLASSIFY( <input> , <list_of_categories> [, <config_object> ] [, <return_error_details> ] )

 

  • label (필수 사항): 카테고리의 이름입니다.
  • description (선택 사항): 카테고리를 25단어 이내로 설명합니다.
[2-1] 기본 단일 라벨 분류
    SELECT AI_CLASSIFY(
        '서버의 응답시간이 300% 증가했습니다.',
        ['Performance Issue', 'Security Alert', 'Feature Request', 'Bug Report']
    );

    

결과 : {"labels": ["Performance Issue"]} 
분류 대상의 내용이 제시한 카테고리 중 어디에 해당되는 건지 반환해요. 재미난 점은 위 예시처럼 분류 대상 메세지가 '한글'이고, 카테고리는 '영어'이지만 번역 작업은 알아서 처리된다는 점입니다.

 

 [2-2] 멀티 라벨 분류 (output_mode: 'multi')
    SELECT AI_CLASSIFY(
        '더 빠른 쿼리와 더 나은 접근 관리가 필요합니다.',
        ['Performance', 'Security', 'Cost', 'Usability'],
        {'output_mode': 'multi'}
    );


반환 결과 : {"labels": ["Performance", "Security"]}

아웃풋 모드를 멀티로 설정하면 카테고리에 해당되는 걸 멀티로 출력하네요~^^

 

[2-3] task_description + label description (정확도 향상)
    SELECT AI_CLASSIFY(
        '지난 달 청구 금액이 $500이었는데, 이번 달은 $2000으로 급증했습니다.',
        [
            {'label': 'Cost Anomaly', 'description': 'Unexpected increase in spending'},
            {'label': 'Normal Usage', 'description': 'Expected cost fluctuation'},
            {'label': 'Billing Error', 'description': 'Incorrect charge or invoice'}
        ],
        {'task_description': 'Classify the support ticket by issue type'}
    );

 

반환 결과 :   {  "labels": [    "Cost Anomaly"  ]}

제시한 분류의 카테고리 중에 설명에 해당되는 걸 찾아주네요.

task_description 옵션은  50 단어 이내로 분류의 설명을 기재. 모델의 분류 정확성을 높여준다고 합니다.
위 예제는 입력 값의 내용이 어떤 이슈의 티켓인지 해당되는걸 추스려 주는 것이네요.

 

-- [2-4] few-shot examples (정확도 향상)
    SELECT AI_CLASSIFY(
        'My warehouse is consuming too many credits',   -- 입력값
        ['Cost', 'Performance', 'Access'],  -- 입력값을 이 3가지 카테고리로 분류해라.
        {
            'task_description': 'Classify Snowflake support issues',
            'examples': [   --여기가 few shot을 알려주는 부분
                {
                    'input': 'Query takes 10 minutes to run', --분류할 텍스트 예시
                    'labels': ['Performance'], -- 입력에 대한 올바른 카테고리 값
                    'explanation': 'Slow query is a performance issue'  -- 입력이 해당 카테고리인 이유를 설명
                }
            ]
        }
    );
    
    --    {  "labels": [    "Cost"  ] }
    

 

 

 

AI_FILTER

 

 

 

 

AI_EXTRACT