Améliorer la recherche littérale pour améliorer les réponses de Cortex Analyst¶
Cette rubrique décrit les moyens d’améliorer les recherches de chaînes littérales pour aider Cortex Analyst à générer des requêtes SQL plus précises. Écrire la bonne requête SQL pour répondre à une question nécessite parfois de connaître les valeurs littérales exactes sur lesquelles filtrer. Étant donné que ces valeurs ne peuvent pas toujours être extraites directement de la question, une recherche peut être nécessaire.
Par exemple, si un utilisateur pose une question telle que :
What was my overall sales of iced tea in Q1?
Vous pouvez essayer la requête suivante :
SELECT DISTINCT name FROM product WHERE name LIKE '%iced%tea%'
Si vous avez déjà suivi ce processus vous-même, vous saurez que ce n’est pas une solution parfaite. Par exemple, cette requête ne vous montrera aucun produit nommé « Thé glacé », mais elle vous montrera du « thé épicé ».
Cortex Analyst propose deux solutions pour aider à améliorer l’utilisation littérale :
Recherche sémantique sur les valeurs d’échantillon fournies dans votre modèle sémantique.
Recherche sémantique à l’aide des Cortex Search Services.
C’est là que l’intégration avec Cortex Search peut aider. Cortex Search est une fonctionnalité qui permet une recherche « floue » à faible latence et de haute qualité sur des données textuelles. Vous pouvez créer un Cortex Search Service pour effectuer une recherche sémantique sur la colonne de base de données sous-jacente afin de trouver toutes les valeurs littérales nécessaires à Cortex Analyst à utiliser dans la requête SQL qui répond à la question de l’utilisateur.
Recherche sémantique sur des valeurs d’échantillon¶
Pour les dimensions avec une cardinalité relativement faible (environ 1 à 10 valeurs distinctes), il est recommandé d’utiliser une recherche de valeur d’échantillon en spécifiant suffisamment de valeurs d’échantillon pour afficher la structure de la réponse pour la dimension. Cette solution ne nécessite aucun stockage supplémentaire en plus de l’augmentation minimale de la taille du modèle sémantique.
Avant que Cortex Analyst génère une requête SQL pour votre question, il effectue une recherche de similarité sémantique entre votre question et les valeurs d’exemple fournies pour identifier les valeurs littérales appropriées qui peuvent être nécessaires pour écrire votre requête. Notez que la recherche de similarité sémantique peut récupérer des littéraux plus pertinents que l’approche de requête de correspondance de chaîne floue mentionnée ci-dessus.
Seul un ensemble de taille fixe de valeurs d’échantillon récupérées sera présenté au LLM comme des littéraux qui peuvent être nécessaires pour écrire la requête SQL. Cela signifie que l’ajout de valeurs d’échantillon supplémentaires ne vous expose pas au risque de dépasser la fenêtre contextuelle du LLM.
Recherche sémantique à l’aide de Cortex Search Service¶
Pour les dimensions avec une cardinalité plus élevée (plus de 10 valeurs distinctes) ou les dimensions dont les valeurs changent fréquemment, vous pouvez utiliser un Cortex Search Service pour rechercher parmi les littéraux. Cette solution réduit la duplication des données et maintient votre modèle sémantique concis.
Les Cortex Search Services entraînent des coûts de stockage et de calcul supplémentaires. Pour plus de détails, voir Considérations relatives aux clients.
Note
Dans cet aperçu, un seul Cortex Search Service par dimension logique est pris en charge.
Il existe deux options pour créer un Cortex Search Service pour une dimension logique dans votre modèle sémantique Cortex Analyst :
Utilisez l’UI Cortex Analyst pour créer un Cortex Search Service. Il s’agit de l’approche recommandée, car elle est plus simple et moins sujette aux erreurs que la configuration manuelle.
Créez manuellement un Cortex Search Service à l’aide de code SQL. Cette approche est plus souple, mais nécessite l’écriture de code.
Option 1 : Utiliser lUI Cortex Analyst¶
vous pouvez créer un Cortex Search Service dans Snowsight à l’aide de l’UI de création de modèles sémantiques Cortex Analyst. cette approche ne nécessite pas l’écriture ou la modification de SQL ou YAML, et convient à la plupart des utilisations.
Dans Snowsight, accédez à AI/ML > Cortex Analyst > Create new model. Suivez le flux de création du modèle pour créer le modèle sémantique Cortex Analyst. L’écran de configuration des Cortex Search Services se trouve à la fin de ce flux.
lors de la définition de dimensions dans l’UI, sélectionnez les colonnes contenant les valeurs de texte pour lesquelles vous souhaitez améliorer la correspondance littérale. L’assistant sélectionne automatiquement les colonnes à haute cardinalité pour vous, mais vous pouvez choisir d’autres colonnes. ensuite, l’UI vous permet de choisir les paramètres de votre nouveau service, puis crée le service automatiquement lorsque vous terminez le flux.
Le service est fourni dans la base de données et le schéma que vous avez sélectionnés. Une fois créé, le service est automatiquement lié à votre modèle sémantique. (l’assistant génère également le fichier YAML qui relie le service).
Option 2 : créer manuellement un Cortex Search Service¶
Les étapes suivantes montrent comment configurer un Cortex Search Service pour une dimension logique dans votre modèle sémantique Cortex Analyst :
Créer un Cortex Search Service
CREATE OR REPLACE CORTEX SEARCH SERVICE my_logical_dimension_search_service ON my_dimension WAREHOUSE = xsmall TARGET_LAG = '1 hour' AS ( SELECT DISTINCT my_dimension FROM my_logical_dimension_landing_table );`
Incluez le service Cortex Search dans votre modèle sémantique à l’aide de l’extrait YAML suivant :
tables: - name: my_table base_table: database: my_database schema: my_schema table: my_table dimensions: - name: my_dimension expr: my_column cortex_search_service: service: my_logical_dimension_search_service literal_column: my_column # optional database: my_search_database # optional schema: my_search_schema # optional
Les champs suivants sont facultatifs sous
cortex_search_service
:literal_column
: La valeur par défaut est l’index de recherche.database
: La valeur par défaut est la base de données de la table de base spécifiée.schema
: La valeur par défaut est le schéma de la table de base spécifiée.