Catégories :

Fonctions de chaîne et fonctions binaires (Large Language Model)

AI_FILTER

Classifie les entrées de forme libre en booléen. Il prend actuellement en charge le filtrage des textes et des images.

Disponibilité de la région

La table suivante indique les régions où vous pouvez utiliser la fonction AI_FILTER pour le texte et les images :

Type de données
AWS US West 2
(Oregon)
AWS US East 1
(Virginie du Nord)
AWS Europe Central 1
(Francfort)
AWS Europe Ouest 1
(Irlande)
AWS AP Sud-Est 2
(Sydney)
AWS AP Nord-Est 1
(Tokyo)
Azure Est US 2
(Virginie)
Azure Europe de l’Ouest
(Pays-Bas)
AWS
(inter-régionale)
TEXT

IMAGE

Syntaxe

Application de AI_FILTER à une chaîne d’entrée :

AI_FILTER( <input> )
Copy

Application de AI_FILTER à une seule image :

AI_FILTER( <predicate> , <input> )
Copy

Appliquer AI_FILTER à plusieurs colonnes contenant à la fois du texte et des images, en utilisant Fonction PROMPT :

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

Arguments

Obligatoire :

Si vous spécifiez une chaîne d’entrée :

input

Une chaîne contenant le texte à classer.

Si vous filtrez sur un fichier :

predicate

Une chaîne contenant les instructions pour classer l’entrée du fichier comme TRUE ou FALSE.

file

La colonne dans laquelle le fichier est classé en fonction des instructions spécifiées à l’adresse predicate. Vous pouvez utiliser IMAGE FILE comme entrée de la fonction AI_FILTER.

Si vous utilisez la fonction PROMPT() pour définir le format des entrées :

Pour les prompts plus compliqués, en particulier avec plusieurs colonnes de fichiers, vous pouvez utiliser Fonction PROMPT pour vous aider à créer une input.

La fonction PROMPT() prend en charge le formatage des chaînes et des types de données FILE. Pour une utilisation détaillée, voir Exemples.

Renvoie

Renvoie une valeur booléenne qui indique si l’instruction correspond à TRUE ou FALSE pour le texte spécifié.

Exigences en matière de contrôle d’accès

Les utilisateurs doivent utiliser un rôle auquel le rôle de base de données SNOWFLAKE.CORTEX_USER a été accordé. Voir Privilèges requis pour plus d’informations sur ce privilège.

Notes sur l’utilisation

Pour des performances optimales, suivez ces directives :

  • Assurez-vous que les colonnes envoyées à AI_FILTER ne contiennent pas de valeurs NULL.

  • Utilisez du texte brut en anglais pour la chaîne d’entrée ou pour les arguments de PROMPT().

  • Fournissez des détails sur l’instruction du texte d’entrée. Par exemple, au lieu d’une instruction telle que « semble satisfait », utilisez « Dans la transcription d’assistance suivante, le client semble satisfait ».

  • Pensez à formuler l’entrée sous forme de question. Par exemple : « Dans la transcription d’assistance suivante, le client semble-t-il satisfait ? »

Exemples

AI_FILTER : texte

Peut être appelée comme une simple fonction booléenne scalaire sur des constantes de chaîne.

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

Vous pouvez CONCAT , || des instructions avec des colonnes de texte pour utiliser cette fonction :

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

Pour faciliter le formatage sur plusieurs colonnes, Snowflake propose Fonction PROMPT, par exemple :

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. |
+--------------------------+

Lors de l’évaluation de la qualité de AI_FILTER, il peut être utile de comparer les prédicats candidats d’une colonne à l’autre.

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   |
+-------------+-------+--------+

Utilisation de AI_FILTER avec JOIN

Vous pouvez utiliser AI_FILTER avec JOIN pour exprimer le lien entre deux tables à l’aide d’un prompt en langue naturelle sur lequel l’AI peut raisonner.

Important

Lors des opérations JOIN qui utilisent la fonction AI_FILTER, chaque table dans JOIN ne peut pas dépasser 500 lignes.

Pour permettre des jointures à plus grande échelle, contactez votre gestionnaire de compte pour activer l’aperçu de l’optimisation adaptative.

L’exemple suivant joint la table RESUMES à la table JOBS en utilisant un prompt avec la fonction AI_FILTER.

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 : images

Les exemples suivants filtrent les fichiers images en fonction d’une instruction.

Filtrez les images en fournissant un prédicat d’instruction et la colonne du fichier image :

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      |
+--------------------------+

Limitations

  • Les fonctions AI de Snowflake ne prennent pas en charge l’actualisation incrémentielle des tables dynamiques.

  • Les fonctions AI de Snowflake ne fonctionnent pas sur des FILEs créés à partir de fichiers de préparation provenant des types de zones de préparation suivantes :

    • Zones de préparation interne avec mode de chiffrement TYPE = 'SNOWFLAKE_FULL'

    • Zones de préparation externe avec n’importe quel mode de chiffrement côté client :

      • TYPE = 'AWS_CSE'

      • TYPE = 'AZURE_CSE'

    • Zone de préparation de l’utilisateur, zone de préparation de table

    • Zone de préparation avec des noms entre guillemets doubles