- Catégories :
Fonctions de chaîne et fonctions binaires (Fonctions AI)
AI_EXTRACT¶
Extrait les informations d’une chaîne ou d’un fichier d’entrée.
Syntaxe¶
Extraire des informations d’une chaîne d’entrée :
AI_EXTRACT( <text>, <responseFormat> )
AI_EXTRACT( text => <text>,
responseFormat => <responseFormat> )
Extraire des informations d’un fichier :
AI_EXTRACT( <file>, <responseFormat> )
AI_EXTRACT( file => <file>,
responseFormat => <responseFormat> )
Arguments¶
textUne chaîne d’entrée pour l’extraction.
fileUn FILE pour l’extraction.
Formats de fichiers pris en charge :
PDF
PNG
PPTX, PPT
EML
DOC, DOCX
JPEG, JPG
HTM, HTML
TEXT, TXT
TIF, TIFF
BMP, GIF, WEBP
MD
La taille des fichiers ne doit pas dépasser 100 MB.
responseFormatInformations à extraire dans l’un des formats de réponse suivants :
Schéma d’objet simple qui mappe l’étiquette et les informations à extraire ; par exemple :
{'name': 'What is the last name of the employee?', 'address': 'What is the address of the employee?'}Tableau de chaînes contenant les informations à extraire, par exemple :
['What is the last name of the employee?', 'What is the address of the employee?']Un tableau de tableaux contenant deux chaînes (l’étiquette et les informations à extraire), par exemple :
[['name', 'What is the last name of the employee?'], ['address', 'What is the address of the employee?']]Un schéma JSON qui définit la structure des informations extraites. Prend en charge l’extraction d’entités et de tables. Par exemple :
{ '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 the document?', 'type': 'string' }, 'employees': { 'description': 'What are the names of employees?', 'type': 'array' } } } }
Note
Vous ne pouvez pas combiner le format de schéma JSON avec d’autres formats de réponse. Si
responseFormatcontient la cléschema, vous devez définir toutes les questions à l’intérieur du schéma JSON. Les clés supplémentaires ne sont pas prises en charge.Le modèle n’accepte que certaines formes de schéma JSON. Le type de niveau supérieur doit toujours être un objet, qui contient des sous-objets extraits indépendamment. Les sous-objets peuvent être une table (objet de listes de chaînes représentant des colonnes), une liste de chaînes ou une chaîne.
Chaîne est actuellement le seul type scalaire pris en charge.
Utilisez le champ
descriptionpour fournir un contexte au modèle ; par exemple, pour aider le modèle à localiser la table droite dans un document. Vous pouvez saisir le nom de l’en-tête de colonne ou décrire la colonne d’une autre manière.Utilisez le champ
column_orderingpour spécifier l’ordre de toutes les colonnes de la table extraite. Le champcolumn_orderingest sensible à la casse et doit correspondre aux noms de colonnes définis dans le champproperties. L’ordre doit refléter l’ordre des colonnes du document.
Renvoie¶
Un objet JSON contenant les informations extraites.
Exemple de sortie qui inclut un tableau, une table et une extraction de valeur unique :
{
"error": null,
"response": {
"employees": [
"Smith",
"Johnson",
"Doe"
],
"income_table": {
"income": ["$120 678","$130 123","$150 998"],
"month": ["February", "March", "April"]
},
"title": "Financial report"
}
}
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é. Pour plus d’informations sur l’octroi de ce privilège, voir Privilèges LLM Cortex.
Notes sur l’utilisation¶
AI_EXTRACT est optimisé pour les documents numériques et numérisés.
Vous ne pouvez pas utiliser les deux paramètres
textetfilesimultanément dans le même appel de fonction.Vous pouvez soit poser des questions en langage naturel, soit décrire les informations à extraire (comme la ville, la route, le code ZIP) ; par exemple :
['address': 'City, street, ZIP', 'name': 'First and last name']Les langues suivantes sont prises en charge :
Arabe
Bengali
Birman
Cebuano
Chinois
Tchèque
Néerlandais
Anglais
Français
Allemand
Hébreu
Hindi
Indonésien
Italien
Japonais
Khmer
Coréen
Lao
Malais
Persan
Polonais
Portugais
Russe
Espagnol
Tagalog
Thaïlandais
Turc
Ourdou
Vietnamien
Les documents ne doivent pas dépasser 125 pages.
Dans un seul appel AI_EXTRACT, vous pouvez poser un maximum de 100 questions pour l’extraction d’entités, et un maximum de 10 questions pour l’extraction de tables.
Une question d’extraction de table est égale à 10 questions d’extraction d’entité. Par exemple, vous pouvez poser 4 questions sur l’extraction de tables et 60 questions sur l’extraction d’entités dans un seul appel AI_EXTRACT.
La longueur de sortie maximale pour l’extraction d’entités est de 512 jetons par question. Pour l’extraction de table, le modèle renvoie des réponses comportant un maximum de 4 096 jetons.
Les zones de préparation chiffrées côté client ne sont pas prises en charge.
Les scores de confiance ne sont pas pris en charge.
Considérations relatives aux clients¶
La fonction Cortex AI_EXTRACT entraîne des coûts de calcul basés sur le nombre de pages par document, de jetons d’invite d’entrée et de jetons de sortie traités.
Pour les formats de fichiers paginés (PDF, DOCX, TIF, TIFF), chaque page est comptée comme 970 jetons.
Pour les formats de fichier image (JPEG, JPG, PNG), chaque fichier image individuel est facturé comme une page et compté comme 970 jetons.
Snowflake recommande d’exécuter les requêtes qui font appel à la fonction Cortex AI_EXTRACT dans un entrepôt plus petit (pas plus grand que MEDIUM). Des entrepôts plus grands n’augmentent pas les performances.
Disponibilité régionale¶
AI_EXTRACT est disponible pour les comptes dans les régions suivantes :
Plateforme Cloud |
Nom de la région |
|---|---|
Amazon Web Services (AWS) |
|
Microsoft Azure |
|
AI_EXTRACT dispose d’une prise en charge interrégionale. pour plus d’informations sur l’activation de la prose en charge interrégionale de cortex AI, consultez Inférence interrégionale.
Conditions d’erreur¶
AI_EXTRACT peut produire les messages d’erreur suivants :
Message |
Explication |
|---|---|
|
Une erreur système s’est produite. Attendez et réessayez. Si le problème persiste, contactez le service d’assistance de Snowflake. |
|
Le fichier n’a pas été trouvé. |
|
Le fichier n’a pas été trouvé. |
|
L’utilisateur actuel ne dispose pas de privilèges suffisants pour accéder au fichier. |
|
Le document n’est pas dans un format pris en charge. |
|
Le document n’est pas stocké dans une zone de préparation avec chiffrement côté serveur. |
|
Aucun paramètre n’a été fourni. |
|
Aucun format de réponse n’a été fourni. |
|
Le format de réponse n’est pas un JSON valide. |
|
Le format de réponse contient un ou plusieurs noms de fonctionnalités en double. |
|
Le nombre de questions dépasse la limite autorisée. |
|
Le document dépasse la limite de 125 pages. |
|
L’image saisie ou la page du document converti dépasse les dimensions prises en charge. |
|
La page dépasse les dimensions prises en charge. |
|
Le document dépasse 100 MB. |
Exemples¶
Extraction à partir d’une chaîne d’entrée¶
L’exemple suivant extrait les informations du texte d’entrée :
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?'} );
L’exemple suivant extrait et analyse les informations contenues dans le texte d’entrée :
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?"}') );
Extraction à partir d’un fichier¶
L’exemple suivant extrait les informations du fichier
document.pdf: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?']] );
L’exemple suivant extrait les informations de tous les fichiers d’un répertoire sur une zone de préparation :
Note
Assurez-vous que la table de répertoire est activée. Pour plus d’informations, voir 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);
L’exemple suivant extrait la valeur
titledu fichierreport.pdf: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' } } } } );
L’exemple suivant extrait le tableau
employeesdu fichierreport.pdf: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' } } } } );
L’exemple suivant extrait la table
income_tabledu fichierreport.pdf: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' } } } } } } );
L’exemple suivant extrait la table (
income_table), la valeur unique (title) et le tableau (employees) du fichierreport.pdf: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' } } } } );
Avis juridiques¶
Reportez-vous à Snowflake AI et ML pour les mentions légales.