- Kategorien:
Zeichenfolgen- und Binärfunktionen (Large Language Model)
AI_FILTER¶
Klassifiziert Freiform-Prompt-Eingaben in einen booleschen Wert. Derzeit werden sowohl Text- als auch Bildfilter unterstützt.
Regionsverfügbarkeit¶
Die folgende Tabelle zeigt die Regionen, in denen Sie die Funktion AI_FILTER sowohl für Text als auch für Bilder verwenden können:
Datentyp
|
AWS US West 2
(Oregon)
|
AWS US East 1
(N. Virginia)
|
AWS Europe Central 1
(Frankfurt)
|
AWS Europe West 1
(Ireland)
|
AWS AP Southeast 2
(Sydney)
|
AWS AP Northeast 1
(Tokio)
|
Azure East US 2
(Virginia)
|
Azure West Europe
(Niederlande)
|
AWS
(Regionsübergreifend)
|
---|---|---|---|---|---|---|---|---|---|
TEXT
|
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
IMAGE
|
✔ |
✔ |
✔ |
✔ |
Syntax¶
Anwenden von AI_FILTER auf eine Eingabezeichenfolge:
AI_FILTER( <input> )
Anwenden von AI_FILTER auf ein einzelnes Bild:
AI_FILTER( <predicate> , <input> )
Anwenden von AI_FILTER auf mehrere Spalten mit Text und Bildern und Nutzen der Funktion PROMPT:
AI_FILTER( PROMPT('<template_string>', <col_1>, … ) )
Argumente¶
Benötigt:
Wenn Sie eine Eingabezeichenfolge angeben:
input
Eine Zeichenfolge, die den zu klassifizierenden Text enthält.
Wenn Sie nach einer Datei filtern:
predicate
Eine Zeichenfolge, die die Anweisungen enthält, um die Dateieingabe entweder als
TRUE
oderFALSE
zu klassifizieren.file
Die Spalte, nach der die Datei auf der Grundlage der in
predicate
angegebenen Anweisungen klassifiziert wird. Sie können IMAGE FILE als Eingabe für die Funktion AI_FILTER verwenden.
Wenn Sie die Funktion PROMPT() zum Formatieren der Eingaben verwenden:
Für kompliziertere Prompts, insbesondere mit mehreren Dateispalten, können Sie die Funktion PROMPT als Hilfe bei der Erstellung einer input
verwenden.
Die Funktion PROMPT() unterstützt die Formatierung sowohl von Zeichenfolgen als auch von FILE-Datentypen. Für die detaillierte Verwendung siehe Beispiele.
Rückgabewerte¶
Gibt einen booleschen Wert zurück, der angibt, ob die Anweisung für den angegebenen Text TRUE oder FALSE ergibt.
Anforderungen an die Zugriffssteuerung¶
Benutzer müssen eine Rolle verwenden, der die Datenbankrolle SNOWFLAKE.CORTEX_USER zugewiesen wurde: Weitere Informationen zu dieser Berechtigung finden Sie unter Erforderliche Berechtigungen.
Nutzungshinweise¶
Um eine optimale Leistung zu erzielen, befolgen Sie diese Richtlinien:
Stellen Sie sicher, dass die an AI_FILTER gesendeten Spalten keine NULL-Werte enthalten.
Verwenden Sie Klartext in englischer Sprache für die Eingabezeichenfolge oder für PROMPT()-Argumente.
Geben Sie die Details für die Eingabetextanweisung ein. Verwenden Sie zum Beispiel statt einer Aussage wie „klingt zufrieden“ die Formulierung „Im folgenden Support-Transkript klingt der Kunde zufrieden“.
Ziehen Sie in Erwägung, die Eingabe in Form einer Frage zu formulieren. Zum Beispiel: „Klingt der Kunde im folgenden Support-Transkript zufrieden?“
Beispiele¶
AI_FILTER: Text¶
Kann als einfache skalare boolesche Funktion für Zeichenfolgenkonstanten aufgerufen werden.
SELECT AI_FILTER('Is Canada in North America?');
TRUE
Sie können CONCAT, ||-Anweisungen mit Textspalten verwenden, um diese Funktion zu nutzen:
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));
Für eine einfachere Formatierung mit Vorlagen über mehrere Spalten hinweg bietet Snowflake Funktion PROMPT; zum Beispiel:
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. |
+--------------------------+
Bei der Bewertung der Qualität von AI_FILTER kann es hilfreich sein, Kandidatenprädikate spaltenübergreifend zu vergleichen.
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 |
+-------------+-------+--------+
Verwendung von AI_FILTER mit einem JOIN¶
Sie können AI_FILTER mit einem JOIN verwenden, um die Verknüpfung zweier Tabellen mit einem Prompt in natürlicher Sprache auszudrücken, den die AI nutzen kann.
Wichtig
Wenn Sie JOIN-Operationen durchführen, die die Funktion AI_FILTER verwenden, darf jede Tabelle im JOIN nicht mehr als 500 Zeilen umfassen.
Wenden Sie sich an Ihren Konto-Manager, um die adaptive Optimierungsvorschau zu aktivieren, wenn Sie umfassendere Joins ermöglichen möchten.
Das folgende Beispiel verknüpft die Tabelle RESUMES mit der Tabelle JOBS unter Verwendung eines Prompts mit der Funktion 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: Bilder¶
Die folgenden Beispiele filtern Bilddateien auf der Grundlage einer Anweisung.
Filtern Sie Bilder, indem Sie ein Anweisungsprädikat und die Spalte für die Bilddatei angeben:
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 |
+--------------------------+
Einschränkungen¶
Die Funktionen von Snowflake AI unterstützen keine inkrementelle Aktualisierung von dynamischen Tabellen.
Die AI-Funktionen von Snowflake funktionieren nicht mit FILEs, die aus Stagingdateien aus den folgenden Stagingbereichstypen erstellt wurden:
Interne Stagingbereiche mit Verschlüsselungsmodus
TYPE = 'SNOWFLAKE_FULL'
Externe Stagingbereiche mit einem kundenseitigen Verschlüsselungsmodus:
TYPE = 'AWS_CSE'
TYPE = 'AZURE_CSE'
Benutzer-Stagingbereich, Tabellen-Stagingbereich
Stagingbereich mit Namen in doppelten Anführungszeichen