카테고리:

문자열 및 이진 함수 (AI 함수)

AI_FILTER

자유 형식 프롬프트 입력을 부울로 분류합니다. 현재 텍스트 및 이미지 필터링을 모두 지원합니다.

리전 가용성

다음 표에서는 텍스트와 이미지 모두에 AI_FILTER 함수를 사용할 수 있는 리전을 보여줍니다.

데이터 타입
AWS US 서부 2
(오리건)
AWS US 동부 1
(북부 버지니아)
AWS 유럽 중부 1
(프랑크푸르트)
AWS 유럽 서부 1
(아일랜드)
AWS AP 동남부 2
(시드니)
AWS AP 북동부 1
(도쿄)
Azure 동부 US 2
(버지니아)
Azure 서유럽
(네덜란드)
AWS
(리전 간)
TEXT

IMAGE

구문

AI_FILTER 를 입력 문자열에 적용:

AI_FILTER( <input> )
Copy

AI_FILTER 를 단일 이미지에 적용:

AI_FILTER( <predicate> , <input> )
Copy

PROMPT 를 활용하여 텍스트와 이미지가 모두 포함된 여러 열에 AI_FILTER 적용:

AI_FILTER( PROMPT('<template_string>',  <col_1>,  ) )
Copy

인자

필수:

입력 문자열을 지정하는 경우:

input

분류할 텍스트가 포함된 문자열입니다.

하나의 파일을 필터링하는 경우:

predicate

입력된 파일을 TRUE 또는 FALSE 로 분류하는 지침이 포함된 문자열입니다.

file

predicate 에 지정된 지침에 따라 파일이 분류되는 열입니다. AI_FILTER 함수에 대한 입력으로 IMAGE FILE 을 사용할 수 있습니다.

PROMPT() 함수를 사용하여 입력 형식을 지정하는 경우:

특히 여러 파일 열이 있는 더 복잡한 프롬프트의 경우 PROMPT 를 사용하여 input 을 만들 수 있습니다.

PROMPT() 함수는 문자열과 FILE 데이터 타입에서 모두 형식 지정을 지원합니다. 자세한 사용법은 섹션을 참조하십시오.

반환

문이 지정된 텍스트에 대해 TRUE 또는 FALSE 로 평가되는지 여부를 나타내는 부울 값을 반환합니다.

액세스 제어 요구 사항

사용자는 SNOWFLAKE.CORTEX_USER 데이터베이스 역할 이 부여된 역할을 사용해야 합니다. 이 권한에 대한 자세한 내용은 필수 권한 섹션을 참조하십시오.

성능 및 비용 최적화

기본적으로 AI_FILTER에는 적격 쿼리에 대한 기본 제공 성능 최적화가 포함됩니다. 이 최적화는 품질에 미치는 영향을 최소화하면서 2~10배 더 빠른 성능과 최대 60% 더 낮은 토큰 사용량을 제공할 수 있습니다.

이 최적화는 쿼리 엔진이 적절한 패턴을 감지하면 자동으로 트리거됩니다. 다른 쿼리 최적화와 마찬가지로, Snowflake는 이러한 최적화가 모든 쿼리에 적용된다고 보장하지 않습니다. 엔진은 가능한 경우 보다 효율적인 AI 작업을 실행하기 위해 적응형 라우팅과 컨텍스트 인식 재작성을 활용합니다.

계정에서 이 최적화를 비활성화하려면 계정 관리자에게 문의하세요.

사용법 노트

최적의 성능을 위해 다음 지침을 따르십시오.

  • AI_FILTER 로 전송된 열에 NULL 값이 포함되어 있지 않은지 확인하십시오.

  • 입력 문자열 또는 PROMPT() 인자에 영어 일반 텍스트를 사용합니다.

  • 입력 텍스트 지침에 대한 세부 정보를 입력합니다. 예를 들어 “만족하는 것 같습니다”와 같은 문 대신 “다음 지원 기록에서 고객이 만족하는 것 같습니다”를 사용하십시오.

  • 입력을 질문 형식으로 표현하는 것도 고려해 보십시오. 예를 들어 “다음 지원 기록에서 고객이 만족하는 것 같나요?”라고 질문할 수 있습니다.

AI_FILTER: 텍스트

문자열 상수에 대한 간단한 스칼라 부울 함수로 호출할 수 있습니다.

SELECT AI_FILTER('Is Canada in North America?');
Copy
TRUE

텍스트 열이 있는 지침을 CONCAT , || 하여 이 함수를 사용할 수 있습니다.

WITH reviews AS (
            SELECT 'Wow... Loved this place.' AS review
  UNION ALL SELECT 'The pizza is not good.'
)
SELECT * FROM reviews
WHERE AI_FILTER(CONCAT('The reviewer enjoyed the restaurant: ', review));
Copy

여러 열에 걸쳐 보다 쉽게 템플릿 형식을 지정할 수 있도록 Snowflake는 PROMPT 를 제공하며, 예를 들면 다음과 같습니다.

WITH reviews AS (

SELECT 'Wow... Loved this place.' AS review
UNION ALL SELECT 'The pizza is not good.'
)
SELECT * FROM reviews
WHERE AI_FILTER(PROMPT('The reviewer enjoyed the restaurant: {0}', review));
Copy
+--------------------------+
| REVIEW                   |
|--------------------------+
| Wow... Loved this place. |
+--------------------------+

AI_FILTER 의 품질을 평가하는 동안 여러 열에서 후보 조건자를 비교하는 것이 도움이 될 수 있습니다.

WITH country AS (
          SELECT 'Switzerland' AS country,
UNION ALL SELECT 'Korea'
),
region AS (
            SELECT 'Asia' AS region,
  UNION ALL SELECT 'Europe'
)
SELECT country,
      region,
      AI_FILTER(PROMPT('{0} is in {1}', country, region)) AS result
FROM country CROSS JOIN region ;
Copy
+-------------+-------+--------+
| COUNTRY     |REGION | RESULT |
|-------------+-------+--------+
| Switzerland |Europe | TRUE   |
|-------------+-------+--------+
| Switzerland | Asia  | FALSE  |
|-------------+-------+--------+
| Korea       |Europe | FALSE  |
+-------------+-------+--------+
| Korea       | Asia  | TRUE   |
+-------------+-------+--------+

JOIN 과 함께 AI_FILTER 사용하기

AI_FILTER 와 JOIN 을 사용하여 AI 가 추론할 수 있는 자연어 프롬프트를 통해 두 테이블을 연결하는 식을 표현할 수 있습니다.

다음 예에서는 AI_FILTER 함수를 사용하여 RESUMES 테이블을 JOBS 테이블과 조인합니다.

SELECT *
FROM RESUMES
JOIN JOBS
ON AI_FILTER(PROMPT('Evaluate if this resume {0} fits this job description {1}', RESUME.contents, JOBS.jd));
Copy

AI_FILTER: 이미지

다음 예에서는 지침에 따라 이미지 파일을 필터링합니다.

지침 조건자와 이미지 파일 열을 제공하여 이미지를 필터링합니다.

WITH pictures AS (
  SELECT
      TO_FILE(file_url) AS img
  FROM DIRECTORY(@file_stage)
)
SELECT
FL_GET_RELATIVE_PATH(img) AS file_path FROM pictures
WHERE AI_FILTER('Is this a picture of a cat?', img);
Copy
WITH pictures AS (
  SELECT
      TO_FILE(file_url) AS img
  FROM DIRECTORY(@file_stage)
)
SELECT
    FL_GET_RELATIVE_PATH(img) AS file_path FROM pictures
WHERE AI_FILTER(PROMPT('{0} is a cat picture', img));
Copy
+--------------------------+
|        FILE_PATH         |
|--------------------------+
|        2cats.jpg         |
+--------------------------+
|        cat1.png          |
+--------------------------+
|      orange_cat.jpg      |
+--------------------------+

제한 사항

  • Snowflake AI 함수는 동적 테이블 증분 새로 고침을 지원하지 않습니다.

  • 다음 스테이지 유형의 스테이지 파일로 만든 FILEs 에서는 Snowflake AI 함수가 작동하지 않습니다.

    • 암호화 모드 TYPE = 'SNOWFLAKE_FULL' 이 있는 내부 스테이지

    • 고객 측에서 암호화된 모드가 있는 외부 스테이지:

      • TYPE = 'AWS_CSE'

      • TYPE = 'AZURE_CSE'

    • 사용자 스테이지, 테이블 스테이지

    • 큰따옴표로 묶인 이름을 가진 스테이지