- カテゴリ:
文字列とバイナリ関数 (大規模言語モデル)
AI_FILTER¶
自由形式のプロンプト入力をブールに分類します。現在、テキストと画像の両方のフィルターをサポートしています。
リージョンの可用性¶
次の表は、テキストと画像の両方で AI_FILTER 関数を使用できるリージョンを示しています。
データ型
|
AWS US西部2
(オレゴン)
|
AWS US東部1
(N.バージニア)
|
AWSヨーロッパ中部1
(フランクフルト)
|
AWS ヨーロッパ西部1
(アイルランド)
|
AWS AP 南東部2
(シドニー)
|
AWS AP 北東部1
(東京)
|
Azure東部 US 2
(バージニア)
|
Azure西ヨーロッパ
(オランダ)
|
AWS
(リージョン横断)
|
---|---|---|---|---|---|---|---|---|---|
TEXT
|
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
IMAGE
|
✔ |
✔ |
✔ |
✔ |
構文¶
入力文字列に AI_FILTER を適用します。
AI_FILTER( <input> )
単一の画像に AI_FILTER を適用します。
AI_FILTER( <predicate> , <input> )
PROMPT 関数 を活用し、テキストと画像の両方を含む複数の列に AI_FILTER を適用します。
AI_FILTER( PROMPT('<template_string>', <col_1>, … ) )
引数¶
必須:
入力文字列を指定する場合:
input
分類するテキストを含む文字列。
1つのファイルでフィルターをかけている場合:
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?');
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));
複数の列にまたがる形式のテンプレート化をより簡単にするために、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));
+--------------------------+
| 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 ;
+-------------+-------+--------+
| COUNTRY |REGION | RESULT |
|-------------+-------+--------+
| Switzerland |Europe | TRUE |
|-------------+-------+--------+
| Switzerland | Asia | FALSE |
|-------------+-------+--------+
| Korea |Europe | FALSE |
+-------------+-------+--------+
| Korea | Asia | TRUE |
+-------------+-------+--------+
JOIN を使った AI_FILTER の使用¶
JOIN で AI_FILTER を使用すると、 AI が推論できる自然言語プロンプトで2つのテーブルをリンクする式を表現できます。
重要
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));
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);
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));
+--------------------------+
| FILE_PATH |
|--------------------------+
| 2cats.jpg |
+--------------------------+
| cat1.png |
+--------------------------+
| orange_cat.jpg |
+--------------------------+
制限事項¶
Snowflake AI 関数は、動的テーブルのインクリメンタルリフレッシュをサポートしていません。
Snowflake AI 関数は、以下のステージタイプのステージファイルから作成された FILEs では動作しません。
暗号化モード
TYPE = 'SNOWFLAKE_FULL'
付き内部ステージ顧客側の暗号化モードを持つ外部ステージ:
TYPE = 'AWS_CSE'
TYPE = 'AZURE_CSE'
ユーザーステージ、テーブルステージ
名前が二重引用符で囲まれているステージ