Kategorien:

Zeichenfolgen- und Binärfunktionen (Large Language Model)

AI_CLASSIFY

Bemerkung

AI_CLASSIFY ist die aktualisierte Version von CLASSIFY_TEXT (SNOWFLAKE.CORTEX). Die neueste Funktionalität finden Sie unter AI_CLASSIFY.

Klassifiziert Text oder Bilder in Kategorien, die Sie angeben.

Regionsverfügbarkeit

Die folgende Tabelle zeigt die Regionen, in denen Sie die Funktion AI_CLASSIFY 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

AI_CLASSIFY( <input> , <list_of_categories> [, <config_object>] )
Copy

Argumente

Benötigt:

input

Die Zeichenfolge, das Bild oder Prompt-Objekt, das Sie klassifizieren wollen.

Bei der Textklassifizierung wird bei der Eingabe die Groß- und Kleinschreibung beachtet. Die Ergebnisse können je nach Groß- und Kleinschreibung variieren.

list_of_categories

Ein Array von Kategorien mit mindestens einem und höchstens 500 eindeutigen Werten. Bei Kategorien wird zwischen Groß- und Kleinschreibung unterschieden.

Kategorien können einfache Zeichenfolgen oder SQL-Objekte desselben Typs sein. Wenn Sie Objekte verwenden, können Sie eine Beschreibung für eine oder mehrere Kategorien angeben, um die Klassifizierungsgenauigkeit zu verbessern.

Geben Sie für jede Kategorie Folgendes an:

  • label (Erforderlich): Der Name der Kategorie.

  • description (Optional): Beschreibt die Kategorie in nicht mehr als 25 Wörtern.

Bemerkung

Beschreibungen zählen als Eingabetoken, was die Kosten für die Klassifizierungsoperation erhöht. Weitere Informationen dazu finden Sie unter Hinweise zu Kosten.

Optional:

config_object

Konfigurationseinstellungen, die als Schlüssel/Wertpaare angegeben werden. Unterstützte Schlüssel:

  • task_description: Eine Erklärung der Klassifizierungsaufgabe, die höchstens 50 Wörter umfasst. Dies kann dem Modell helfen, den Kontext der Klassifizierungsaufgabe zu verstehen und die Genauigkeit zu verbessern.

  • output_mode: Setzen Sie diese Option auf 'multi' für die Klassifizierung mit mehreren Labels. Die Standardeinstellung ist 'single' für die Klassifizierung mit einzelnen Labels.

  • examples: Eine Liste von Beispielobjekten für das Few-Shot-Learning. Jedes Beispiel muss Folgendes enthalten:

    • input: Beispieltext zum Klassifizieren.

    • labels: Liste der richtigen Kategorien für die Eingabe.

    • explanation: Erklärung, warum die Eingabe diesen Kategorien zugeordnet wird.

Rückgabewerte

Ein Serienobjekt. Das Feld labels des Objekts ist ein Array, das die Liste der Kategorien angibt, zu denen die Eingabe gehört.

Bei der Klassifizierung eines einzelnen Labels hat das Array labels genau ein Element. Bei einer Klassifizierung mit mehreren Labels kann das Feld labels mehrere Elemente enthalten.

Wenn Sie ungültige Werte für die Argumente angeben, gibt die Funktion einen Fehler zurück. Eine Liste der möglichen Fehler finden Sie unter Fehlerbedingungen.

Anforderungen an die Zugriffssteuerung

Benutzer müssen eine Rolle verwenden, die die Datenbankrolle SNOWFLAKE.CORTEX_USER besitzt. Weitere Informationen zu dieser Berechtigung finden Sie unter Erforderliche Berechtigungen.

Nutzungshinweise

Die besten Ergebnisse erzielen Sie, wenn Sie diese Richtlinien befolgen:

  • Verwenden Sie für input und list_of_categories einfachen Text in englischer Sprache.

  • Vermeiden Sie die Aufnahme von Codeausschnitten, Protokollen oder nicht-englischem Text.

  • Vermeiden Sie die Verwendung von Nicht-Open-Source-Code oder -Formatierungen (wie z. B. proprietäre Sprachen oder Formate) im Text. Das zugrunde liegende Sprachmodell wird nicht auf proprietären Formaten trainiert.

  • Verwenden Sie keine Abkürzungen, Sonderzeichen oder Fachausdrücke in den Kategoriebezeichnungen.

  • Verwenden Sie beschreibende Kategorien. Vermeiden Sie die Verwendung von Kategorienamen wie „Xa4s3“ oder „Kategorie 1“.

  • Verwenden Sie sich gegenseitig ausschließende Kategorien.

  • Eine klare Aufgabenbeschreibung kann die Genauigkeit verbessern, wenn die Beziehung zwischen der Eingabe und den Kategorien unklar oder komplex ist.

  • Das Hinzufügen von Labels kann die Genauigkeit verbessern, insbesondere wenn die Labels mehrdeutig sind oder bestimmte Auswahlkriterien erfordern. Schreiben Sie Beschreibungen, die deutlich hervorheben, was die einzelnen Labels von den anderen unterscheidet.

  • Jedes Label, jede Beschreibung und jedes Beispiel erhöht die Anzahl der Eingabe-Token für jeden Aufruf von AI_CLASSIFY, was sich auf die Kosten auswirkt.

  • Beispiele können helfen, die Genauigkeit zu verbessern.

Beispiele

Die folgenden Beispiele verwenden die Funktion AI_CLASSIFY mit nur den erforderlichen Argumenten.

AI_CLASSIFY: Text

Das folgende Beispiel ordnet den Prompt einer von zwei Kategorien zu – Reisen oder Kochen:

SELECT AI_CLASSIFY('One day I will see the world', ['travel', 'cooking']),

'{
  "labels": ["travel"]
 }';
Copy

Das folgende Beispiel verwendet eine Klassifizierung mit mehreren Labels:

SELECT AI_CLASSIFY('One day I will see the world and learn to cook my favorite dishes', ['travel', 'cooking', 'reading', 'driving'], {'output_mode': 'multi'}),

'{
  "labels": ["travel", "cooking"]
 }';
Copy

Das folgende Beispiel fügt eine Aufgabenbeschreibung, Label-Beschreibungen und einige Beispiele ein:

SELECT AI_CLASSIFY(
  'One day I will see the world and learn to cook my favorite dishes',
  [
    {'label': 'travel', 'description': 'content related to traveling'},
    {'label': 'cooking'},
    {'label': 'reading'},
    {'label': 'driving'}
  ],
  {
    'task_description': 'Determine topics related to the given text',
    'output_mode': 'multi',
    'examples': [
      {
        'input': 'i love traveling with a good book',
        'labels': ['travel', 'reading'],
        'explanation': 'the text mentions traveling and a good book which relates to reading'
      }
    ]
  }),
  '{
  "labels": ["travel", "cooking"]
}';
Copy
'{
  "labels": ["travel", "cooking"]
 }'

Das folgende Beispiel erstellt eine text_classification_table, die eine Spalte für Text und eine Spalte für mögliche Kategorien für diesen Text enthält. Die Funktion AI_CLASSIFY wird in jeder Zeile der Tabelle aufgerufen, um die Zeichenfolge in der Textspalte zu klassifizieren.

CREATE OR REPLACE TEMPORARY TABLE text_classification_table AS
SELECT 'France' AS input, ['North America', 'Europe', 'Asia'] AS classes
UNION ALL
SELECT 'Singapore', ['North America', 'Europe', 'Asia']
UNION ALL
SELECT 'one day I will see the world', ['travel', 'cooking', 'dancing']
UNION ALL
SELECT 'my lobster bisque is second to none', ['travel', 'cooking', 'dancing'];

SELECT input,
    classes,
    AI_CLASSIFY(input, classes):labels AS classification
FROM text_classification_table;
Copy

AI_CLASSIFY: Bilder

Mit der Eingabe einer einzelnen Datei:

WITH food_pictures AS (
  SELECT
      TO_FILE(file_url) AS img
  FROM DIRECTORY(@file_stage)
)
SELECT
*,
AI_CLASSIFY(img, ['dessert', 'drink', 'main dish', 'side dish']):labels AS classification
FROM food_pictures;
Copy

Mit einem Prompt-Objekt, das mit PROMPT() erstellt wurde:

  WITH food_pictures AS (
  SELECT
      TO_FILE(file_url) AS img
  FROM DIRECTORY(@file_stage)
)
SELECT
*,
AI_CLASSIFY(PROMPT('Please help me classify the food within this image {0}', img),
  ['dessert', 'drink', 'main dish', 'side dish']):labels AS classification
FROM food_pictures;
Copy

Einschränkungen

  • Die Funktionen von Snowflake AI unterstützen keine inkrementelle Aktualisierung von dynamischen Tabellen.

  • Die Funktionen von Snowflake AI funktionieren nicht bei FILE-Objekten, die aus Dateien in den folgenden Stagingbereichen 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