カテゴリ:

文字列とバイナリ関数 (大規模言語モデル)

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> )
Copy

単一の画像に AI_FILTER を適用します。

AI_FILTER( <predicate> , <input> )
Copy

PROMPT 関数 を活用し、テキストと画像の両方を含む複数の列に AI_FILTER を適用します。

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

引数

必須:

入力文字列を指定する場合:

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?');
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 の使用

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));
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 関数は、動的テーブルのインクリメンタルリフレッシュをサポートしていません。

  • Snowflake AI 関数は、以下のステージタイプのステージファイルから作成された FILEs では動作しません。

    • 暗号化モード TYPE = 'SNOWFLAKE_FULL' 付き内部ステージ

    • 顧客側の暗号化モードを持つ外部ステージ:

      • TYPE = 'AWS_CSE'

      • TYPE = 'AZURE_CSE'

    • ユーザーステージ、テーブルステージ

    • 名前が二重引用符で囲まれているステージ