- 카테고리:
문자열 및 이진 함수 (대규모 언어 모델)
AI_CLASSIFY¶
참고
AI_CLASSIFY 은 CLASSIFY_TEXT(SNOWFLAKE.CORTEX) 의 업데이트된 버전입니다. 최신 기능의 경우 AI_CLASSIFY 를 사용하십시오.
텍스트 또는 이미지를 지정한 카테고리로 분류합니다.
리전 가용성¶
다음 표에서는 텍스트와 이미지 모두에 AI_CLASSIFY 함수를 사용할 수 있는 리전을 보여줍니다.
데이터 타입
|
AWS US 서부 2
(오리건)
|
AWS US 동부 1
(북부 버지니아)
|
AWS 유럽 중부 1
(프랑크푸르트)
|
AWS 유럽 서부 1
(아일랜드)
|
AWS AP 동남부 2
(시드니)
|
AWS AP 북동부 1
(도쿄)
|
Azure 동부 US 2
(버지니아)
|
Azure 서유럽
(네덜란드)
|
AWS
(리전 간)
|
---|---|---|---|---|---|---|---|---|---|
TEXT
|
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
IMAGE
|
✔ |
✔ |
✔ |
✔ |
구문¶
AI_CLASSIFY( <input> , <list_of_categories> [, <config_object>] )
인자¶
필수:
input
분류하려는 문자열, 이미지 또는 프롬프트 오브젝트입니다.
텍스트 분류의 경우 입력 문자열은 대/소문자를 구분합니다. 결과는 대/소문자에 따라 달라질 수 있습니다.
list_of_categories
최소 1개에서 최대 500개의 고유 값을 가진 카테고리로 구성된 배열입니다. 카테고리는 대/소문자를 구분합니다.
카테고리는 단순한 문자열 또는 동일한 유형의 SQL 오브젝트일 수 있습니다. 오브젝트를 사용하는 경우 하나 이상의 카테고리에 대한 설명을 제공하여 분류 정확도를 높일 수 있습니다.
각 카테고리에 대해 다음을 지정합니다.
label
(필수 사항): 카테고리의 이름입니다.description
(선택 사항): 카테고리를 25단어 이내로 설명합니다.
참고
설명은 입력 토큰으로 계산되므로 분류 작업 비용이 증가합니다. 자세한 내용은 비용 고려 사항 섹션을 참조하십시오.
선택 사항:
config_object
키-값 페어로 지정된 구성 설정. 지원되는 키:
task_description
: 50단어 이하의 분류 작업에 대한 설명입니다. 이는 모델이 분류 작업의 맥락을 이해하고 정확도를 높이는 데 도움이 될 수 있습니다.output_mode
: 다중 레이블 분류의 경우'multi'
로 설정합니다. 단일 레이블 분류의 경우 기본값은'single'
입니다.examples
: 퓨샷 학습을 위한 예제 오브젝트 목록입니다. 각 예제에는 다음이 포함되어야 합니다.input
: 분류할 텍스트 예시입니다.labels
: 입력에 대한 올바른 카테고리 목록입니다.explanation
: 입력이 해당 카테고리에 매핑되는 이유에 대한 설명입니다.
반환¶
직렬화된 오브젝트를 반환합니다. 오브젝트의 labels
필드는 입력이 속한 카테고리의 목록을 지정하는 배열입니다.
단일 레이블 분류의 경우 labels
배열에는 정확히 하나의 요소가 있습니다. 다중 레이블 분류의 경우 labels
필드에 여러 요소가 있을 수 있습니다.
인자에 유효하지 않은 값을 지정하면 함수는 오류를 반환합니다. 발생 가능한 오류 목록은 오류 조건 섹션을 참조하십시오.
액세스 제어 요구 사항¶
사용자는 SNOWFLAKE.CORTEX_USER 데이터베이스 역할 을 가진 역할을 사용해야 합니다. 이 권한에 대한 자세한 내용은 필수 권한 섹션을 참조하십시오.
사용법 노트¶
최상의 결과를 얻으려면 다음 가이드라인을 따르십시오.
input
및list_of_categories
에는 영문 일반 텍스트를 사용합니다.코드 스니펫, 로그 또는 영어가 아닌 텍스트는 포함하지 마십시오.
텍스트에 오픈 소스가 아닌 코드나 형식(예: 독점 언어 또는 형식)을 사용하지 마십시오. 기본 언어 모델은 독점 형식에 대해 학습되지 않습니다.
카테고리 레이블에는 약어, 특수 문자 또는 전문 용어를 사용하지 마십시오.
설명형 카테고리를 사용합니다. ‘Xa4s3’ 또는 ‘카테고리 1’과 같은 카테고리 이름을 사용하지 마십시오.
상호 배타적인 카테고리를 사용합니다.
입력과 카테고리 간의 관계가 불분명하거나 복잡한 경우 작업을 명확하게 설명하면 정확도를 높일 수 있습니다.
레이블 설명을 추가하면 특히 레이블이 모호하거나 특정 선택 기준이 필요한 경우 정확도를 높일 수 있습니다. 각 레이블이 다른 레이블과 구별되는 점을 명확하게 강조하는 설명을 작성합니다.
각 레이블, 설명 및 예제는 AI_CLASSIFY 호출마다 입력 토큰 수를 증가시켜 비용에 영향을 줍니다.
예제를 통해 정확도를 높일 수 있습니다.
예¶
다음 예제에서는 요구 사항 인자만 포함된 AI_CLASSIFY 함수를 사용합니다.
AI_CLASSIFY: 텍스트¶
다음 예에서는 프롬프트를 여행 또는 요리라는 두 가지 카테고리 중 하나로 분류합니다.
SELECT AI_CLASSIFY('One day I will see the world', ['travel', 'cooking']),
'{
"labels": ["travel"]
}';
다음 예에서는 다중 레이블 분류를 사용합니다.
SELECT AI_CLASSIFY('One day I will see the world and learn to cook my favorite dishes', ['travel', 'cooking', 'reading', 'driving'], {'output_mode': 'multi'}),
'{
"labels": ["travel", "cooking"]
}';
다음 예제에서는 작업 설명, 레이블 설명 및 퓨샷 예시를 전달합니다.
SELECT AI_CLASSIFY(
'One day I will see the world and learn to cook my favorite dishes',
[
{'label': 'travel', 'description': 'content related to traveling'},
{'label': 'cooking'},
{'label': 'reading'},
{'label': 'driving'}
],
{
'task_description': 'Determine topics related to the given text',
'output_mode': 'multi',
'examples': [
{
'input': 'i love traveling with a good book',
'labels': ['travel', 'reading'],
'explanation': 'the text mentions traveling and a good book which relates to reading'
}
]
}),
'{
"labels": ["travel", "cooking"]
}';
'{
"labels": ["travel", "cooking"]
}'
다음 예제에서는 텍스트 열과 해당 텍스트의 가능한 카테고리를 위한 열이 포함된 text_classification_table
을 만듭니다. AI_CLASSIFY 함수는 테이블의 각 행에서 호출되어 텍스트 열의 문자열을 분류합니다.
CREATE OR REPLACE TEMPORARY TABLE text_classification_table AS
SELECT 'France' AS input, ['North America', 'Europe', 'Asia'] AS classes
UNION ALL
SELECT 'Singapore', ['North America', 'Europe', 'Asia']
UNION ALL
SELECT 'one day I will see the world', ['travel', 'cooking', 'dancing']
UNION ALL
SELECT 'my lobster bisque is second to none', ['travel', 'cooking', 'dancing'];
SELECT input,
classes,
AI_CLASSIFY(input, classes):labels AS classification
FROM text_classification_table;
AI_CLASSIFY: 이미지¶
단일 파일 입력 사용:
WITH food_pictures AS (
SELECT
TO_FILE(file_url) AS img
FROM DIRECTORY(@file_stage)
)
SELECT
*,
AI_CLASSIFY(img, ['dessert', 'drink', 'main dish', 'side dish']):labels AS classification
FROM food_pictures;
PROMPT()로 구성된 프롬프트 오브젝트 사용:
WITH food_pictures AS (
SELECT
TO_FILE(file_url) AS img
FROM DIRECTORY(@file_stage)
)
SELECT
*,
AI_CLASSIFY(PROMPT('Please help me classify the food within this image {0}', img),
['dessert', 'drink', 'main dish', 'side dish']):labels AS classification
FROM food_pictures;
제한 사항¶
Snowflake AI 함수는 동적 테이블 증분 새로 고침을 지원하지 않습니다.
다음 종류의 파일로 만든 FILE 오브젝트에서는 Snowflake AI 함수가 작동하지 않습니다.
암호화 모드
TYPE = 'SNOWFLAKE_FULL'
이 있는 내부 스테이지고객 측에서 암호화된 모드가 있는 외부 스테이지:
TYPE = 'AWS_CSE'
TYPE = 'AZURE_CSE'
사용자 스테이지
테이블 스테이지
큰따옴표로 묶인 이름을 가진 스테이지