์นดํ…Œ๊ณ ๋ฆฌ:

๋ฌธ์ž์—ด ๋ฐ ์ด์ง„ ํ•จ์ˆ˜ (๋Œ€๊ทœ๋ชจ ์–ธ์–ด ๋ชจ๋ธ)

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 ๋กœ ์ „์†ก๋œ ์—ด์— 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 ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” JOIN ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ JOIN ์˜ ๊ฐ ํ…Œ์ด๋ธ”์€ 500ํ–‰์„ ์ดˆ๊ณผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋” ํฐ ๊ทœ๋ชจ์˜ ์กฐ์ธ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ณ„์ • ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋ฌธ์˜ํ•˜์—ฌ ์ ์‘ํ˜• ์ตœ์ ํ™” ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.

๋‹ค์Œ ์˜ˆ์—์„œ๋Š” 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'

    • ์‚ฌ์šฉ์ž ์Šคํ…Œ์ด์ง€, ํ…Œ์ด๋ธ” ์Šคํ…Œ์ด์ง€

    • ํฐ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์ธ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์Šคํ…Œ์ด์ง€