Catégories :

Fonctions de chaîne et fonctions binaires (Fonctions AI)

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> [, <return_error_details> ] )

Application de AI_FILTER à une seule image :

AI_FILTER( <predicate> , <input> [, <return_error_details> ] )

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

AI_FILTER( PROMPT('<template_string>',  <col_1>,  ) [, <return_error_details> ] )

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

Facultatif :

return_error_details

Un indicateur BOOLEAN qui indique s’il faut renvoyer les détails de l’erreur en cas d’erreur. Lorsqu’il est défini sur TRUE, la fonction renvoie un OBJECT qui contient la valeur et le message d’erreur, dont l’un est NULL selon que la fonction réussit ou échoue. Consultez Comportement d’erreur pour plus de détails.

Renvoie

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

Comportement d’erreur

Par défaut, si AI_FILTER ne peut pas traiter l’entrée, la fonction renvoie NULL. Si la requête traite plusieurs lignes, les lignes contenant des erreurs renvoient NULL et n’empêchent pas l’achèvement de la requête.

La valeur de retour sur l’erreur dépend de l’argument return_error_details. La table suivante indique la valeur de retour basée sur l’argument return_error_details :

return_error_details

Valeur de retour

Description

FALSE

Non transmise

NULL

TRUE

OBJECT avec les champs value et error

value : Une valeur BOOLEAN indiquant le résultat du filtre, ou NULL si une erreur s’est produite.

error : Une valeur VARCHAR qui contient le message d’erreur si une erreur s’est produite, ou NULL si la fonction a fonctionné.

Pour plus d’informations sur le traitement des erreurs pour les fonctions AI, consultez Snowflake Cortex AI Function: Multirow error handling improvements.

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 LLM Cortex pour plus d’informations sur ce privilège.

Optimisation des performances et des coûts

Par défaut, AI_FILTER inclut une optimisation des performances intégrée dans les requêtes éligibles. Cette optimisation peut fournir des performances 2 à 10 fois plus rapides et jusqu’à 60 % d’utilisation de jetons en moins, avec un impact minimal sur la qualité.

Cette optimisation est déclenchée automatiquement lorsque le moteur de requête détecte un modèle approprié. Comme pour d’autres optimisations de requête, Snowflake ne garantit pas que cette optimisation sera appliquée à chaque requête. Le moteur s’appuie sur le routage adaptatif et la réécriture contextuelle pour exécuter plus efficacement les opérations AI lorsque cela est possible.

Pour désactiver cette optimisation pour votre compte, contactez votre gestionnaire de compte.

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

Pour faciliter le formatage sur plusieurs colonnes, Snowflake propose 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));
+--------------------------+
| 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 ;
+-------------+-------+--------+
| 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.

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

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

Limitations

  • 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