Kategorien:

Zeichenfolgen- und Binärfunktionen (AI-Funktionen)

AI_EXTRACT

Extrahiert Informationen aus einer Eingabezeichenfolge oder Datei.

Syntax

Extract information from an input string:

AI_EXTRACT( <text>, <responseFormat> )
AI_EXTRACT( text => <text>,
            responseFormat => <responseFormat> )

Extract information from a file:

AI_EXTRACT( <file>, <responseFormat> )
AI_EXTRACT( file => <file>,
            responseFormat => <responseFormat>,
            [ config => <config_object> ]

Argumente

text

Eine Eingabezeichenfolge für die Extraktion.

file

Eine FILE für die Extraktion.

Unterstützte Dateiformate:

  • PDF

  • PNG

  • PPTX, PPT

  • EML

  • DOC, DOCX

  • JPEG, JPG

  • HTM, HTML

  • TEXT, TXT

  • TIF, TIFF

  • BMP, GIF, WEBP

  • MD

Die Dateien müssen kleiner als 100 MB sein.

responseFormat

Zu extrahierende Informationen. Das Format hängt von der Art der Extraktion ab.

Entitätsextraktionsformate

Extrahieren Sie einzelne Werte, indem Sie eines der folgenden Formate angeben:

  • Einfaches Objektschema, welches das Label und die zu extrahierenden Informationen zuordnet, z. B.:

    {'name': 'What is the last name of the employee?', 'address': 'What is the address of the employee?'}
    
  • Ein Array von Zeichenfolgen, die die zu extrahierenden Informationen enthalten:

    ['What is the last name of the employee?', 'What is the address of the employee?']
    
  • Ein Array von Arrays, die zwei Zeichenfolgen enthalten (Label und die zu extrahierenden Informationen):

    [['name', 'What is the last name of the employee?'], ['address', 'What is the address of the employee?']]
    
  • Ein JSON-Schema mit 'type': 'string' für das Unterobjekt:

    {
      'schema': {
        'type': 'object',
        'properties': {
          'title': {
            'description': 'What is the title of the document?',
            'type': 'string'
          }
        }
      }
    }
    

Listenextraktionsformat

Extrahieren von Arrays von Werten mit einem JSON-Schema mit 'type': 'array' für das Unterobjekt:

{
  'schema': {
    'type': 'object',
    'properties': {
      'employees': {
        'description': 'What are the names of employees?',
        'type': 'array'
      }
    }
  }
}

Tabellenextraktionsformat

Extrahieren von tabellarischen Daten mit einem JSON-Schema mit 'type': 'object' und column_ordering. Jede Spalte ist als verschachtelte Eigenschaft mit 'type': 'array' und description definiert, die mit dem Spaltennamen in der Datei übereinstimmt:

{
  'schema': {
    'type': 'object',
    'properties': {
      'income_table': {
        'description': 'Income for FY2026Q2',
        'type': 'object',
        'column_ordering': ['month', 'income'],
        'properties': {
          'month': {
            'description': 'Month',
            'type': 'array'
          },
          'income': {
            'description': 'Income',
            'type': 'array'
          }
        }
      }
    }
  }
}

Bemerkung

  • Sie können das JSON-Schemaformat nicht mit anderen Antwortformaten kombinieren. Wenn responseFormat den schema-Schlüssel enthält, müssen Sie alle Fragen innerhalb des JSON-Schemas definieren. Zusätzliche Schlüssel werden nicht unterstützt.

  • Das -Modell akzeptiert nur bestimmte Formen des JSON-Schemas. Der Typ der obersten Ebene muss immer ein Objekt sein, das unabhängig voneinander extrahierte Unterobjekte enthält. Unterobjekte können eine Tabelle (Objekt von Listen von Zeichenfolgen, die Spalten darstellen), eine Liste von Zeichenfolgen oder eine Zeichenfolge sein.

    Zeichenfolge ist derzeit der einzige unterstützte Skalartyp.

  • Verwenden Sie das description-Feld, um Kontext für das Modell bereitzustellen; zum Beispiel, um dem Modell zu helfen, die richtige Tabelle in einem Dokument zu lokalisieren. Sie können den Namen der Spaltenüberschrift eingeben oder die Spalte auf andere Weise beschreiben.

  • Verwenden Sie das Feld column_ordering, um die Reihenfolge aller Spalten in der extrahierten Tabelle anzugeben. Im Feld column_ordering wird zwischen Groß- und Kleinschreibung unterschieden, und dieses muss mit den im Feld properties definierten Spaltennamen übereinstimmen. Die Reihenfolge sollte die Reihenfolge der Spalten im Dokument widerspiegeln.

config => config_object

Ein OBJECT-Wert, der die Konfigurationseinstellungen angibt. Sie können eine OBJECT-Konstante verwenden, um dieses Objekt anzugeben.

Sie können die folgenden Schlüssel-Wert-Paare in diesem Objekt angeben:

Schlüssel

Beschreibung

scale_factor

Ein numerischer Wert von 1,0 bis 4,0. Skaliert die Seiten einer Eingabedatei, bevor sie vom zugrunde liegenden Modell verarbeitet werden, was die OCR-Qualität und die Extraktionsergebnisse verbessern kann.

Verwenden Sie scale_factor, wenn Sie in den folgenden Szenarien unerwartete oder unklare Antworten erhalten:

  • Dokumente, deren Seiten größer als A4 sind

  • Dokumente, die kleinen Text, detaillierte visuelle Elemente oder dichte Layouts enthalten

  • Der extrahierte Text enthält Rechtschreibfehler oder OCR-Fehler auf Zeichenebene

Wenn weggelassen, verwendet AI_EXTRACT den Standardwert ('scale_factor': 1.0').

Rückgabewerte

Ein JSON-Objekt, das die extrahierten Informationen enthält. Die Struktur der Antwort hängt vom Typ der Extraktion ab.

Entitätsextraktion

Gibt ein JSON-Objekt mit Schlüssel-Wert-Paaren für jede extrahierte Entität zurück:

{
  "error": null,
  "response": {
    "title": "Financial report"
  }
}

Listenextraktion

Gibt ein JSON-Objekt mit Arrays von extrahierten Werten zurück:

{
  "error": null,
  "response": {
    "employees": [
      "Smith",
      "Johnson",
      "Doe"
    ]
  }
}

Tabellenextraktion

Gibt ein JSON-Objekt mit Spaltenarrays zurück, die die extrahierte Tabelle darstellen:

{
  "error": null,
  "response": {
    "income_table": {
      "income": ["$120 678","$130 123","$150 998"],
      "month": ["February", "March", "April"]
    }
  }
}

Kombinierte Extraktion

Wenn Entitäten, Listen und Tabellen mit einem einzigen Aufruf extrahiert werden, enthält die Antwort alle Extraktionstypen:

{
  "error": null,
  "response": {
    "employees": [
      "Smith",
      "Johnson",
      "Doe"
    ],
    "income_table": {
      "income": ["$120 678","$130 123","$150 998"],
      "month": ["February", "March", "April"]
    },
    "title": "Financial report"
  }
}

Anforderungen an die Zugriffssteuerung

Benutzer müssen eine Rolle verwenden, der die Datenbankrolle SNOWFLAKE.CORTEX_USER zugewiesen wurde: Weitere Informationen zum Erteilen dieser Berechtigung finden Sie unter Cortex LLM-Berechtigungen.

Nutzungshinweise

  • AI_EXTRACT ist sowohl für digital erstellte als auch für gescannte Dokumente optimiert.

  • Sie können im selben Funktionsaufruf nicht beides gleichzeitig verwenden, text- und file-Parameter.

  • Sie können entweder Fragen in natürlicher Sprache stellen oder die zu extrahierenden Informationen beschreiben ( z. B. Stadt, Straße, ZIP-Code), zum Beispiel:

    ['address': 'City, street, ZIP', 'name': 'First and last name']
    
  • Die folgenden Sprachen werden unterstützt:

    • Arabisch

    • Bengalisch

    • Birmanisch

    • Cebuano

    • Chinesisch

    • Tschechisch

    • Holländisch

    • Englisch

    • Französisch

    • Deutsch

    • Hebräisch

    • Hindi

    • Indonesisch

    • Italienisch

    • Japanisch

    • Khmer

    • Koreanisch

    • Lao

    • Malaiisch

    • Persisch

    • Polnisch

    • Portugiesisch

    • Russisch

    • Spanisch

    • Tagalog

    • Thailändisch

    • Türkisch

    • Urdu

    • Vietnamesisch

  • Die Dokumente dürfen nicht mehr als 125 Seiten umfassen.

  • In einem einzigen AI_EXTRACT-Aufruf können Sie maximal 100 Fragen zur Extraktion von Entitäten und maximal 10 Fragen zur Extraktion von Tabellen stellen.

    Eine Frage zur Extraktion von Tabellen entspricht 10 Fragen zur Extraktion von Entitäten. Sie können in einem einzigen AI_EXTRACT-Aufruf zum Beispiel 4 Fragen zur Extraktion von Tabellen und 60 Fragen zur Extraktion von Entitäten auf einmal stellen.

  • Die maximale Ausgabelänge für die Extraktion von Entitäten beträgt 512 Token pro Frage. Bei der Tabellenextraktion liefert das Modell Antworten, die maximal 4.096 Token umfassen.

  • Clientseitig verschlüsselte Stagingbereiche werden nicht unterstützt.

  • Konfidenzwerte werden nicht unterstützt.

Hinweise zu Kosten

  • Die Cortex AI_EXTRACT-Funktion verursacht Kosten, die von der Anzahl der Seiten pro Dokument, den Token der Eingabeaufforderung und den verarbeiteten Ausgabe-Token abhängen.

    • Für seitenbasierte Dateiformate (PDF, DOCX, TIF, TIFF) wird jede Seite als 970 Token gezählt.

    • Für Bilddateiformate (JPEG, JPG, PNG) wird jede einzelne Bilddatei als Seite abgerechnet und als 970 Token gezählt.

  • Die Verwendung des scale_factor-Parameters ändert, wie viele Token verbraucht werden und wie viele Seiten pro Aufruf verarbeitet werden können:

    • Die Anzahl der verbrauchten Eingabe-Token steigt proportional zu scale_factor.

    • Die maximale Anzahl von Seiten pro Dokument, die von AI_EXTRACT verarbeitet werden können, sinkt um den scale_factor.

    Beziehung von scale_factor zur Anzahl der Token und Seiten

    scale_factor-Wert

    Anzahl der Token pro Seite

    Max. Anzahl der Seiten pro Dokument

    2

    970 * 2 = 1940 Token

    125/2 = 62,5 (abgerundet auf 62)

    2.5

    970 * 2,5 = 2425 Token

    125/2

    4

    970 * 4 = 3880 Token

    125/4 = 31,25 (abgerundet auf 31)

  • Snowflake empfiehlt die Ausführung von Abfragen, die die Cortex-Funktion AI_EXTRACT aufrufen, in einem kleineren Warehouse (nicht größer als MEDIUM). Größere Warehouses erhöhen die Leistung nicht.

Regionale Verfügbarkeit

AI_EXTRACT ist für Konten in den folgenden Regionen verfügbar:

Cloudplattform

Name der Region

Amazon Web Services (AWS)

  • US East (N. Virginia)

  • US West (Oregon)

  • Canada (Central)

  • South America (Sao Paulo)

  • EU (Irland)

  • EU (Frankfurt)

  • Asia Pacific (Tokio)

  • Asia Pacific (Sydney)

Microsoft Azure

  • East US 2 (Virginia)

  • West US 2 (Washington)

  • South Central US (Texas)

  • North Europe (Irland)

  • West Europe (Niederlande)

  • Southeast Asia (Singapur)

  • Australia East (New South Wales)

  • Central India (Pune)

  • Japan East (Tokio)

AI_EXTRACT bietet regionenübergreifende Unterstützung. Weitere Informationen zur Aktivierung der regionenübergreifenden Unterstützung von Cortex AI finden Sie unter Regionenübergreifende Inferenz.

Fehlerbedingungen

AI_EXTRACT kann die folgenden Fehlermeldungen erzeugen:

Meldung

Erläuterung

Internal error.

Es ist ein Systemfehler aufgetreten. Warten Sie und versuchen Sie es erneut. Wenn der Fehler weiterhin besteht, wenden Sie sich an den Snowflake-Support.

Not found.

Die Datei wurde nicht gefunden.

Provided file cannot be found.

Die Datei wurde nicht gefunden.

Provided file cannot be accessed.

Der aktuelle Benutzer hat nicht die erforderlichen Berechtigungen für den Zugriff auf die Datei.

The provided file format {file_extension} isn't supported.

Das Dokument hat kein unterstütztes Format.

The provided file isn't in the expected format or is client-side encrypted or is corrupted.

Das Dokument ist nicht in einem Stagingbereich mit serverseitiger Verschlüsselung gespeichert.

Empty request.

Es wurden keine Parameter angegeben.

Missing or empty response format.

Es wurde kein Antwortformat angegeben.

Invalid response format.

Das Antwortformat ist kein gültiges JSON-Format.

Duplicate feature name found: {feature_name}.

Das Antwortformat enthält einen oder mehrere doppelte Feature-Namen.

Too many questions: {number} complex and {number} simple = {number} total, complex question weight {number}.

Die Anzahl der Fragen überschreitet das zulässige Limit.

Maximum number of 125 pages exceeded. The document has {actual_pages} pages.

Das Dokument überschreitet das Limit von 125 Seiten.

Page size in pixels exceeds 10000x10000. The page size is {actual_px} pixels.

Ein eingegebenes Bild oder eine konvertierte Dokumentseite ist größer als die unterstützten Abmessungen.

Page size in inches exceeds 50x50 (3600x3600 pt). The page size is {actual_in} inches ({actual_pt} pt).

Die Seite ist größer als die unterstützten Abmessungen.

Maximum file size of 104857600 bytes exceeded. The file size is {actual_size} bytes.

Das Dokument ist größer als 100 MB.

Beispiele

Entitätsextraktion

  • Das folgende Beispiel extrahiert Entitäten aus dem Eingabetext mithilfe eines einfachen Objektschemas:

    SELECT AI_EXTRACT(
      text => 'John Smith lives in San Francisco and works for Snowflake',
      responseFormat => {'name': 'What is the first name of the employee?', 'city': 'What is the address of the employee?'}
    );
    
  • Im folgenden Beispiel werden Informationen aus dem Eingabetext extrahiert und zurückgegeben:

    SELECT AI_EXTRACT(
      text => 'John Smith lives in San Francisco and works for Snowflake',
      responseFormat => PARSE_JSON('{"name": "What is the first name of the employee?", "address": "What is the address of the employee?"}')
    );
    
  • Das folgende Beispiel extrahiert Entitäten aus der document.pdf-Datei:

    SELECT AI_EXTRACT(
      file => TO_FILE('@db.schema.files','document.pdf'),
      responseFormat => [['name', 'What is the first name of the employee?'], ['city', 'Where does the employee live?']]
    );
    
  • Im folgenden Beispiel werden Entitäten aus allen Dateien in einem Stagingverzeichnis extrahiert:

    Bemerkung

    Stellen Sie sicher, dass die Verzeichnistabelle aktiviert ist. Weitere Informationen dazu finden Sie unter Manage directory tables.

    SELECT AI_EXTRACT(
      file => TO_FILE('@db.schema.files', relative_path),
      responseFormat => [
        'What is the document ID?',
        'What is the address of the company?'
      ]
    ) FROM DIRECTORY (@db.schema.files);
    
  • Im folgenden Beispiel wird die title-Entität der report.pdf-Datei unter Verwendung eines JSON-Schemas extrahiert:

    SELECT AI_EXTRACT(
      file => TO_FILE('@db.schema.files', 'report.pdf'),
      responseFormat => {
        'schema': {
          'type': 'object',
          'properties': {
            'title': {
              'description': 'What is the title of document?',
              'type': 'string'
            }
          }
        }
      }
    );
    

Listenextraktion

Im folgenden Beispiel wird die employees-Liste aus der report.pdf-Datei extrahiert:

SELECT AI_EXTRACT(
  file => TO_FILE('@db.schema.files', 'report.pdf'),
  responseFormat => {
    'schema': {
      'type': 'object',
      'properties': {
        'employees': {
          'description': 'What are the surnames of employees?',
          'type': 'array'
        }
      }
    }
  }
);

Tabellenextraktion

Im folgenden Beispiel wird die income_table-Tabelle aus der report.pdf-Datei extrahiert:

SELECT AI_EXTRACT(
  file => TO_FILE('@db.schema.files', 'report.pdf'),
  responseFormat => {
    'schema': {
      'type': 'object',
      'properties': {
        'income_table': {
          'description': 'Income for FY2026Q2',
          'type': 'object',
          'column_ordering': ['month', 'income'],
          'properties': {
            'month': {
              'description': 'Month',
              'type': 'array'
            },
            'income': {
              'description': 'Income',
              'type': 'array'
            }
          }
        }
      }
    }
  }
);

Kombinierte Extraktion

Im folgenden Beispiel wird eine Tabelle (income_table), Entität (title) und Liste (employees) aus der``report.pdf``-Datei mit einem einzigen Aufruf extrahiert:

SELECT AI_EXTRACT(
  file => TO_FILE('@db.schema.files', 'report.pdf'),
  responseFormat => {
    'schema': {
      'type': 'object',
      'properties': {
        'income_table': {
          'description': 'Income for FY2026Q2',
          'type': 'object',
          'column_ordering': ['month', 'income'],
          'properties': {
            'month': {
              'description': 'Month',
              'type': 'array'
            },
            'income': {
              'description': 'Income',
              'type': 'array'
            }
          }
        },
        'title': {
          'description': 'What is the title of document?',
          'type': 'string'
        },
        'employees': {
          'description': 'What are the surnames of employees?',
          'type': 'array'
        }
      }
    }
  }
);

Extraktion mit einem kundenspezifischen Skalierungsfaktor

Im folgenden Beispiel wird das employees-Array aus der report.pdf-Datei mit einem Skalierungsfaktor von 2,0 extrahiert:

SELECT AI_EXTRACT(
  file => TO_FILE('@db.schema.files', 'report.pdf'),
  responseFormat => {
    'schema': {
      'type': 'object',
      'properties': {
        'employees': {
          'description': 'What are the surnames of employees?',
          'type': 'array'
        }
      }
    }
  },
  config => {'scale_factor': 2.0}
);

Extraktion mit einem Fine-Tuning arctic-extract-Modell

Zur Verwendung des Fine-Tuning arctic-extract-Modells für die Ableitung mit der Funktion AI_EXTRACT geben Sie das Modell mit dem model-Parameter wie im folgenden Beispiel gezeigt an:

SELECT AI_EXTRACT(
  model => 'db.schema.my_tuned_model',
  file => TO_FILE('@db.schema.files','document.pdf')
);

Sie können Fragen, die für das Fine-Tuning verwendet werden, mit dem responseFormat-Parameter überschreiben, wie im folgenden Beispiel gezeigt:

SELECT AI_EXTRACT(
  model => 'db.schema.my_tuned_model',
  file => TO_FILE('@db.schema.files','document.pdf'),
  responseFormat => [['name', 'What is the first name of the employee?'], ['city', 'Where does the employee live?']]
);

Das folgende Beispiel extrahiert Daten aus der invoice.pdf-Datei unter Verwendung eines Fine-Tuning arctic-extract-Modells mit einem Skalierungsfaktor von 2,0:

SELECT AI_EXTRACT(
  model => 'db.schema.my_tuned_model',
  file => TO_FILE('@db.schema.files', 'invoice.pdf'),
  config => {'scale_factor': 2.0}
);

Weitere Informationen dazu finden Sie unter Fine-Tuning von arctic-extract-Modellen.