Cortex Analyst¶
Vue d’ensemble¶
Cortex Analyst est une fonctionnalité entièrement gérée, alimentée par LLM de Snowflake Cortex qui vous aide à créer des applications capables de répondre de manière fiable aux questions commerciales en fonction de vos données structurées dans Snowflake. Avec Cortex Analyst, les utilisateurs professionnels peuvent poser des questions en langage naturel et recevoir des réponses directes sans écrire en SQL. Disponible en tant que REST API pratique, Cortex Analyst peut être intégré de manière transparente dans n’importe quelle application.
La création d’une solution d’analyse conversationnelle en libre-service de qualité professionnelle nécessite un service qui génère des réponses de texte précises en SQL. Pour la plupart des équipes, développer un service qui équilibre avec succès la précision, la latence et les coûts est une tâche ardue. Cortex Analyst simplifie ce processus en fournissant un système AI sophistiqué et entièrement géré qui prend en charge toutes ces complexités, générant des réponses de texte très précises en SQL. Il vous aide à accélérer la fourniture d’analyses conversationnelles de haute précision et en libre-service aux équipes commerciales, tout en évitant les pertes de temps telles que les modèles de solutions RAG complexes, l’expérimentation de modèles et la planification des capacités GPU. Les requêtes SQL générées sont exécutées sur le moteur évolutif Snowflake, garantissant des performances de prix de pointe et un coût total de possession réduit (TCO).
Astuce
Envie de commencer rapidement avec Cortex Analyst ? Essayez le tutoriel Tutoriel : Répondre aux questions sur les données de revenus des séries chronologiques avec Cortex Analyst.
Fonctionnalités clés¶
Analyses en libre-service via des requêtes en langage naturel. Enchantez vos équipes commerciales et vos utilisateurs non techniques avec des réponses et des informations instantanées à partir de leurs données structurées dans Snowflake. En utilisant Cortex Analyst, vous pouvez créer des applications de chat en aval qui permettent à vos utilisateurs de poser des questions en langage naturel et de recevoir des réponses précises à la volée.
REST API Pratique pour l’intégration dans les flux de travail d’entreprise existants. Cortex Analyst adopte une approche axée sur l’API, vous offrant un contrôle total sur l’expérience de l’utilisateur final. Intégrer facilement Cortex Analyst dans les outils et plateformes commerciales existants, apportant la puissance des informations sur les données là où les utilisateurs professionnels opèrent déjà, tels que les applications Streamlit, Slack, Teams, les interfaces de chat personnalisées, etc.
Alimenté par des modèles de langage volumineux de pointe : Par défaut, Cortex Analyst est alimenté par les derniers modèles Meta Llama et Mistral, qui fonctionnent en toute sécurité à l’intérieur de Snowflake Cortex, le service AI intelligent et entièrement géré de Snowflake. En option, vous pouvez également donner à Cortex Analyst l’accès aux derniers modèles OpenAI GPT hébergés sur Azure. Lors de l’exécution, Cortex Analyst sélectionne la meilleure combinaison de modèles pour garantir la plus grande précision et les meilleures performances pour chaque requête. Pour plus de détails, voir Activation des modèles utilisation Azure OpenAI. À mesure que les LLMs évoluent, Snowflake continuera d’explorer l’ajout de nouveaux modèles pour améliorer davantage les performances et la précision.
Modèle sémantique pour une précision et une exactitude élevées : Les solutions AI génériques rencontrent souvent des difficultés pour effectuer des conversions de texte en SQL lorsqu’elles ne disposent que d’un schéma de base de données, car les schémas manquent de connaissances essentielles telles que les définitions de processus métier et la gestion des métriques. Cortex Analyst surmonte cette limitation en utilisant un modèle sémantique qui comble le fossé entre les utilisateurs professionnels et les bases de données. Capturée dans un fichier YAML léger, la structure globale et les concepts du modèle sémantique sont similaires à ceux des schémas de base de données, mais permettent une description plus riche des informations sémantiques autour des données.
Sécurité et gouvernance. La base de confidentialité de Snowflake et sa sécurité de niveau entreprise garantissent que vous pouvez explorer des cas d’utilisation alimentés par AI en toute confiance, sachant que vos données sont protégées par les normes les plus élevées de confidentialité et de gouvernance.
Cortex Analyst ne s’entraîne pas sur les données client. Nous n’utilisons pas vos données client pour former ou peaufiner un modèle à mettre à disposition de notre clientèle. De plus, pour l’inférence, Cortex Analyst utilise les métadonnées fournies dans le fichier YAML du modèle sémantique (par exemple, les noms de table, les noms de colonne, le type de valeur, les descriptions, etc.) uniquement pour la génération de requêtes SQL. Cette requête SQL est ensuite exécutée dans votre entrepôt virtuel Snowflake pour générer la sortie finale.
Les données restent dans les limites de gouvernance de Snowflake. Par défaut, Cortex Analyst est alimenté par des LLMs hébergés sur Snowflake provenant de Mistral et Meta, garantissant qu’aucune donnée, y compris les métadonnées ou les invites, ne quitte la limite de gouvernance de Snowflake. Si vous choisissez d’utiliser les modèles Azure OpenAI, seules les métadonnées et les invites sont transmises en dehors de la limite de gouvernance de Snowflake.
Intégration transparente avec les fonctionnalités de confidentialité et de gouvernance de Snowflake. Cortex Analyst s’intègre entièrement aux politiques de contrôle d’accès basé sur les rôles (RBAC) de Snowflake, garantissant que les requêtes SQL générées et exécutées respectent tous les contrôles d’accès établis. Cela garantit une sécurité et une gouvernance robustes pour vos données.
Exigences en matière de contrôle d’accès¶
Pour effectuer une requête auprès de Cortex Analyst, vous devez utiliser un rôle auquel le rôle SNOWFLAKE.CORTEX_USER a été attribué.
Pour utiliser Cortex Analyst avec un modèle sémantique, vous devez également disposer des privilèges suivants :
Privilège |
Objet |
---|---|
READ ou WRITE |
Zone de préparation contenant le fichier YAML du modèle sémantique, si le modèle sémantique est téléchargé dans une zone de préparation. |
USAGE |
Les services de Cortex Search mentionnés dans le modèle sémantique. |
SELECT |
Les tables mentionnées dans le modèle sémantique. |
Les requêtes adressées à l’API Cortex Analyst doivent comporter un jeton d’autorisation. Pour plus de détails sur la manière de s’authentifier dans l’API, voir Authentification d”Snowflake REST APIs avec Snowflake.
Notez que l’exemple de cette rubrique utilise un jeton de session pour s’authentifier à un compte Snowflake.
Limiter l’accès à des rôles spécifiques¶
Par défaut, le rôle CORTEX_USER est accordé au rôle PUBLIC. Le rôle PUBLIC est automatiquement accordé à tous les utilisateurs et à tous les rôles. Si vous ne souhaitez pas que tous les utilisateurs disposent de ce privilège, vous pouvez révoquer l’accès au rôle PUBLIC et accorder l’accès à des rôles spécifiques. Pour plus d’informations, voir Privilèges requis.
Pour contrôler l’accès à des modèles sémantiques spécifiques, vous pouvez stocker le fichier YAML dans une étape et contrôler l’accès à cette zone de préparation.
Disponibilité de la région¶
Cortex Analyst est nativement disponible dans les régions suivantes.
AWS ap-nord-est-1 (Tokyo)
AWS ap-southeast-2 (Sydney)
AWS us-east-1 (Virginie)
AWS us-west-2 (Oregon)
AWS eu-central-1 (Francfort)
AWS eu-west-1 (Irlande)
Azure US Est 2 (Virginie)
Azure Europe de l’Ouest (Pays-Bas)
Si votre compte Snowflake se trouve dans une autre région Cloud, vous pouvez toujours utiliser Cortex Analyst en tirant parti de Inférence interrégionale. Une fois l’inférence interrégionale activée, Cortex Analyst traite les demandes dans d’autres régions pour les modèles qui ne sont pas disponibles dans votre région par défaut. Pour des performances optimales, configurez la région croisée avec les régions AWS US.
Problèmes connus et limitations¶
Si vous téléchargez un fichier YAML du modèle sémantique dans une zone de préparation, l’accès à ce modèle sémantique est contrôlé par l’accès à la zone de préparation dans laquelle il est téléchargé. Cela signifie que tout rôle ayant accès à la zone de préparation peut accéder aux modèles sémantiques de cette zone de préparation, même si le rôle n’a pas accès aux tables sous-jacentes.
Par défaut, Cortex Analyst est limité à 20 requêtes par minute, ce qui devrait être suffisant pour la preuve de concept. Contactez votre ingénieur commercial pour demander une limite plus élevée.
Activation des modèles utilisation Azure OpenAI¶
Par défaut, Cortex Analyst est alimenté par des LLMs hébergés par Snowflake. Vous pouvez cependant choisir explicitement d’autoriser Cortex Analyst pour utiliser les derniers modèles OpenAI GPT, hébergés par Microsoft Azure, aux côtés des modèles hébergés par Snowflake. Lors de l’exécution, Cortex Analyst sélectionne la combinaison optimale de modèles pour garantir la plus grande précision et les meilleures performances pour chaque requête.
Note
Si vous optez pour l’utilisation des modèles OpenAI Azure, Cortex Analyst est disponible pour une utilisation dans toutes les régions AWS, Azure, et GCP, à l’exception des déploiements Gov et VPS.
Vous pouvez configurer votre compte pour autoriser l’utilisation des modèles Azure OpenAI GPT avec le paramètre ENABLE_CORTEX_ANALYST_MODEL_AZURE_OPENAI. Par défaut, le paramètre est désactivé et ne peut être défini que par le rôle ACCOUNTADMIN utilisant la commande ALTER ACCOUNT :
USE ROLE ACCOUNTADMIN;
ALTER ACCOUNT SET ENABLE_CORTEX_ANALYST_MODEL_AZURE_OPENAI = TRUE;
Astuce
Pour voir la valeur actuelle de ce paramètre, utilisez l’instruction SQL suivante.
SHOW PARAMETERS LIKE 'ENABLE_CORTEX_ANALYST_MODEL_AZURE_OPENAI' IN ACCOUNT
Voir ENABLE_CORTEX_ANALYST_MODEL_AZURE_OPENAI pour plus de détails.
Lorsque ce paramètre est activé, Cortex Analyst pourrait être alimenté par n’importe quelle combinaison de :
Modèles hébergés par Snowflake, actuellement les modèles Mistral Large et Llama3
Modèles Azure OpenAI, actuellement GPT-4o (nécessite un opt-in explicite)
Note
Cortex Analyst pourrait utiliser des modèles différents à l’avenir pour améliorer encore les performances et la précision.
Considérations¶
Les fichiers de modèles sémantiques sont classés comme des métadonnées. Si vous choisissez d’utiliser des modèles Azure OpenAI dans Cortex Analyst, votre modèle sémantique sera traité par Microsoft Azure, un tiers. Toutefois, les données client ne sont pas partagées ni traitées par Azure.
ENABLE_CORTEX_ANALYST_MODEL_AZURE_OPENAI¶
Le ENABLE_CORTEX_ANALYST_MODEL_AZURE_OPENAI paramètre de compte, si TRUE, permet Cortex Analyst d’utiliser les modèles Azure OpenAI.
Type de paramètre |
Session |
---|---|
Type de données |
BOOLEAN |
Description |
Contrôle si Cortex Analyst peut utiliser les modèles Azure OpenAI pour traiter les requêtes. |
Valeurs |
|
Par défaut |
FALSE |
Conversation à plusieurs tours en Cortex Analyst¶
Cortex Analyst prend en charge les conversations à plusieurs tours pour les questions relatives aux données. Cette fonction permet de poser des questions de suivi qui s’appuient sur les requêtes précédentes, créant ainsi une expérience d’exploration des données plus dynamique et interactive. Par exemple, l’utilisateur demande : « Quelle est la croissance du chiffre d’affaires en glissement mensuel pour 2021 en Asie ? », puis enchaîne avec : « Et en Amérique du Nord ? »
Cortex Analyst reconnaît le suivi, récupère le contexte de la requête initiale et reformule la deuxième question comme suit : « Quelle est la croissance du chiffre d’affaires en glissement mensuel pour 2021 en Amérique du Nord ? » ; Cortex Analyst génère ensuite une requête SQL pour répondre à cette question.
Pour utiliser cette fonction, passez l’historique de la conversion dans le champ messages
:
{
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What is the month over month revenue growth for 2021 in Asia?"
}
]
},
{
"role": "analyst",
"content": [
{
"type": "text",
"text": "We interpreted your question as ..."
},
{
"type": "sql",
"statement": "SELECT * FROM table"
}
]
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "What about North America?"
}
]
},
],
"semantic_model_file": "@my_stage/my_semantic_model.yaml"
}
L’historique des conversations est un tableau de messages classés par ordre chronologique, chaque message ayant un rôle et un contenu. Le rôle peut être "user"
(pour les questions précédentes) ou "analyst"
(pour les réponses précédentes). Les réponses des analystes comportent à la fois du texte et des réponses SQL, comme le montre l’exemple ci-dessus, tandis que les messages des utilisateurs ne comportent que du texte.
Limites connues des conversions à plusieurs tours¶
Certaines des limites suivantes pourraient être prises en compte dans les versions futures de Cortex Analyst.
- Accès aux résultats des requêtes SQL précédentes
Cortex Analyst n’a pas accès aux résultats des requêtes SQL précédentes. Par exemple, si vous demandez d’abord « Quels sont mes produits ? », puis « Quel est le revenu du deuxième produit ? », Cortex Analyst ne peut pas se référer à la liste des produits de la première requête pour obtenir le deuxième produit.
- Informations générales sur les entreprises
Cortex Analyst se limite à répondre aux questions qui peuvent être résolues avec SQL. Il ne génère pas d’informations pour des requêtes plus larges liées à l’entreprise, telles que « Quelles sont les tendances que vous observez ? »
- Longues conversions
Si une conversation comporte trop de tours ou si l’utilisateur change fréquemment d’intention, Cortex Analyst peut avoir du mal à interpréter les questions de suivi. Dans de tels cas, réinitialisez la conversation et recommencez.
Options de démarrage¶
Les développeurs peuvent employer les ressources suivantes pour commencer à utiliser Cortex Analyst :
Exemple de code de base : L”Exemple Cortex Analyst de la section suivante fournit un script simple et facile à lire qui vous aide à créer une application interactive à l’aide de Cortex Analyst.
Choisissez cette option si vous souhaitez un exemple de base fondamental pour commencer, et si vous êtes à l’aise avec l’utilisation de Streamlit et la réalisation de vos propres modifications. Vous pouvez exécuter cet exemple dans Streamlit in Snowflake (SiS) ou localement.
Dépôt d’échantillons Snowflake : Si vous recherchez une implémentation plus complète, la démonstration Cortex Analyst avancée de SiS dans le dépôt d’échantillons Snowflake contient toutes les fonctions et options déjà définies. Ce dépôt est configuré avec diverses fonctions préintégrées qui permettent de déployer Cortex Analyst de manière transparente et robuste.
Choisissez cette option si vous essayez de tester la fonction pour la première fois, ou si vous avez moins de modifications personnalisées à apporter.
Note
Ceci n’est donné qu’à titre d’exemple. Snowflake ne fournit pas de support pour le contenu ci-dessous, et ne garantit pas non plus son exactitude.
Pour en savoir plus, consultez la démonstration Cortex Analyst avancée de SiS dans le dépôt GitHub d’échantillons Snowflake.
Exemple Cortex Analyst¶
Suivez ces étapes pour créer un Streamlit interactif dans Snowflake (SiS) ou une application Streamlit autonome qui utilise Cortex Analyst.
Télécharger le modèle sémantique dans la zone de préparation
Créer et exécuter un Streamlit dans l’application Snowflake
Créer un modèle sémantique¶
UN modèle sémantique est un mécanisme léger qui résout les problèmes liés à la différence de langage entre les utilisateurs professionnels et les définitions de bases de données en permettant la spécification de détails sémantiques supplémentaires sur un ensemble de données. Ces détails sémantiques supplémentaires, comme des noms ou des synonymes plus descriptifs, permettent à Cortex Analyst de répondre aux questions de données de manière beaucoup plus fiable.
Commencez par une liste de questions auxquelles vous aimeriez que Cortex Analyst réponde. Sur cette base, décidez de l’ensemble de données pour votre modèle sémantique.
Créez votre modèle sémantique YAML basé sur la spécification. Pour plus de commodité, essayez le Créer un modèle sémantique à l’aide du générateur de modèles. Assurez-vous également de consulter les conseils pour créer un modèle sémantique.
Télécharger le modèle sémantique¶
Vous pouvez télécharger un fichier YAML du modèle sémantique dans une zone de préparation ou passer le modèle sémantique YAML sous forme de chaîne dans le corps de la requête. Si vous téléchargez un modèle sémantique YAML dans une zone de préparation, l’accès à ce modèle sémantique est contrôlé par l’accès à la zone de préparation dans laquelle il est téléchargé. Cela signifie que tout rôle ayant accès à la zone de préparation peut accéder aux modèles sémantiques de cette zone de préparation même si le rôle n’a pas accès aux tables sur lesquelles les modèles sont basés. Assurez-vous que les rôles autorisés à accéder à une zone de préparation ont un accès SELECT à toutes les tables référencées dans tous les modèles sémantiques de cette zone de préparation.
Vous trouverez ci-dessous un exemple de configuration des zones de préparation contenant les modèles sémantiques. Une zone de préparation (public
) est accessible à tous les membres de l’organisation, tandis qu’une autre zone de préparation (sales
) n’est accessible qu’au rôle sales_analyst
.
Créez la base de données et le schéma pour la zone de préparation. L’exemple suivant crée une base de données nommée semantic_model
avec un schéma nommé definition
mais vous pouvez utiliser n’importe quelle chaîne d’identification valide pour ces noms.
CREATE DATABASE semantic_model;
CREATE SCHEMA semantic_model.definitions;
GRANT USAGE ON DATABASE semantic_model TO ROLE PUBLIC;
GRANT USAGE ON SCHEMA semantic_model.definitions TO ROLE PUBLIC;
USE SCHEMA semantic_model.definitions;
Créez ensuite les zones de préparation de stockage de vos modèles sémantiques :
CREATE STAGE public DIRECTORY = (ENABLE = TRUE);
GRANT READ ON STAGE public TO ROLE PUBLIC;
CREATE STAGE sales DIRECTORY = (ENABLE = TRUE);
GRANT READ ON STAGE sales TO ROLE sales_analyst;
Si vous utilisez Snowsight, vous pouvez actualiser la page et trouver les zones de préparation nouvellement créées dans l’explorateur d’objets de base de données. Vous pouvez ouvrir la page de la zone de préparation dans un nouvel onglet et télécharger vos fichiers YAML dans Snowsight.
Alternativement, vous pouvez utiliser le client Snowflake CLI pour télécharger depuis votre système de fichiers local.
snow stage copy file:///path/to/local/file.yaml @sales
Créez un Streamlit dans l’application Snowflake¶
Cet exemple vous montre comment créer une application Streamlit dans Snowflake qui prend une question en langage naturel comme entrée et appelle Cortex Analyst pour générer une réponse basée sur le modèle sémantique que vous fournissez.
Note
Ceci n’est donné qu’à titre d’exemple. Snowflake ne fournit pas de support pour le contenu ci-dessous, et ne garantit pas non plus son exactitude.
Pour plus d’informations sur la création et l’exécution d’applications Streamlit dans Snowflake, consultez À propos de Streamlit in Snowflake.
Suivez les instructions dans Créer une application Streamlit avec Snowsight pour créer une nouvelle application Streamlit dans Snowsight.
Copiez le code Streamlit de notre dépôt GitHub dans l’éditeur de code.
Remplacez les valeurs par défaut par les détails de votre compte.
Pour prévisualiser l’application, sélectionnez Run pour mettre à jour le contenu dans le volet d’aperçu Streamlit.
Interagissez avec l’application Streamlit¶
Accédez à l’application Streamlit dans votre navigateur ou au volet d’aperçu de Streamlit dans Snowflake.
Commencez à poser des questions sur vos données en langage naturel (par exemple « Quelles questions puis-je poser ? »).
Créez une application Streamlit autonome¶
Vous pouvez également utiliser le code d’exemple pour créer une application autonome.
Note
Ceci n’est donné qu’à titre d’exemple. Snowflake ne fournit pas de support pour le contenu ci-dessous, et ne garantit pas non plus son exactitude.
Installez Streamlit.
Créez un fichier Python appelé localement
analyst_api.py
.Copiez le code Streamlit de notre dépôt GitHub dans le fichier.
Remplacez les valeurs par défaut par les détails de votre compte.
Exécutez l’application Streamlit en utilisant
streamlit run analyst_api.py
.
La base de données et le schéma spécifiés dans le code constituent l’emplacement de la zone de préparation du fichier YAML de modèle sémantique. Le rôle utilisé dans le connecteur Snowflake doit avoir accès aux données sous-jacentes définies dans le modèle sémantique.
Pour une mise en œuvre plus complète, consultez la démonstration Cortex Analyst avancée de SiS dans le dépôt GitHub d’échantillons Snowflake. Ce dépôt est configuré avec diverses fonctions préintégrées qui permettent de déployer Cortex Analyst de manière transparente et robuste.
Désactiver la fonctionnalité Cortex Analyst¶
Si vous ne voulez pas que Cortex Analyst soit disponible sur votre compte, désactivez la fonctionnalité en modifiant le paramètre ENABLE_CORTEX_ANALYST en utilisant le rôle ACCOUNTADMIN :
USE ROLE ACCOUNTADMIN;
ALTER ACCOUNT SET ENABLE_CORTEX_ANALYST = FALSE;
Type de paramètre |
Session |
---|---|
Type de données |
BOOLEAN |
Description |
Contrôle si la fonctionnalité Cortex Analyst est activée sur votre compte. |
Valeurs |
|
Par défaut |
TRUE |
Considérations relatives aux clients¶
L’utilisation du crédit pour Cortex Analyst est basée sur le nombre de messages traités, comme indiqué dans Snowflake Service Consumption Table. Seules les réponses positives (HTTP 200) sont comptabilisées. Le nombre de jetons dans chaque message n’a pas d’incidence sur le coût.
Note
Les frais susmentionnés couvrent les coûts d’AI pour l’envoi de textes àSQL. Des coûts d’entrepôt supplémentaires s’appliquent si vous exécutez la commande SQL générée par Cortex Analyst.
Suivi du coût de Cortex Analyst¶
Pour voir la consommation de crédit de Cortex Analyst, utilisez l”Vue CORTEX_ANALYST_USAGE_HISTORY. Par exemple :
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_ANALYST_USAGE_HISTORY;
L’utilisation de Cortex Analyst apparaît également dans l”Vue METERING_HISTORY du schéma ACCOUNT_USAGE avec un type de service AI_SERVICES.
Avis juridiques¶
Cortex Analyst est alimenté par la technologie machine learning, notamment les modèles Llama 3 et Mistral Large de Meta. Les modèles de fondation Llama 3 sont soumis à la licence communautaire Llama 3 et au copyright (c) Meta Platforms, Inc. Tous droits réservés. Votre utilisation de cette fonction est soumise à la politique d’utilisation acceptable de Meta.
La classification des données d’entrées et de sorties est présentée dans la table suivante.
Classification des données d’entrée |
Classification des données de sortie |
Désignation |
---|---|---|
Usage Data |
Usage Data |
Preview AI Features [1] |
Pour plus d’informations, reportez-vous à Snowflake AI et ML.