- 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> )
Application de AI_FILTER à une seule image :
AI_FILTER( <predicate> , <input> )
Appliquer AI_FILTER à plusieurs colonnes contenant à la fois du texte et des images, en utilisant Fonction PROMPT :
AI_FILTER( PROMPT('<template_string>', <col_1>, … ) )
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
ouFALSE
.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?');
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 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));
+--------------------------+
| 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.
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));
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 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