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

Anwenden von AI_FILTER auf ein einzelnes Bild:

AI_FILTER( <predicate> , <input> )
Copy

Anwenden von AI_FILTER auf mehrere Spalten mit Text und Bildern und Nutzen der Funktion PROMPT:

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

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

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

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

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