Segments de la Génération de requête couche sémantique
Les segments sont des conditions de filtre prédéfinies qui mappent la terminologie métier à des filtres de requête spécifiques, ce qui aide la couche sémantique à traduire les questions en langage naturel en requêtes de base de données précises.
Les segments fournissent un contexte non évident pour aider la couche sémantique à sélectionner l’entité, la dimension et les valeurs correctes. Par exemple, dans l’énoncé « Combien y a-t-il de demandes de changement d’urgence ouvertes ? », un segment identifie que « ouvert » signifie « actif = vrai » et « urgence » est un type et non une priorité.
Lorsqu’un utilisateur pose une question, le moteur de génération de requêtes recherche les segments correspondants et inclut ses filtres dans l’invite LLM afin que le modèle puisse les réutiliser pour construire des requêtes précises.
Il existe deux types de segments :
- Segments automatisés
- Généré par le système à partir de rapports, de tableaux de bord, de filtres, de modules et de sources d’indicateurs. Les noms sont souvent techniques, par exemple, « Incidents.Open ».
- Segments manuels
- Créé par les administrateurs via la table Configuration manuelle des segments. Les noms sont conviviaux, par exemple « incidents ouverts critiques ». Les segments manuels utilisent un modèle de données à deux tables avec synchronisation automatique et peuvent être fournis avec les applications via des modules d’extension.
| Segments manuels | Segments automatisés | |
|---|---|---|
| Créé par | Admin, expédié via l’ensemble de mises à jour | Généré par le système à partir de rapports, tableaux de bord, filtres, modules |
| Qualité du nom | Convivial, adapté à la recherche | Souvent technique, par exemple, « Incidents.Open » |
| Priorité de recherche | Augmentation de 5 % par rapport à l’automatisationsn_query_gen.segments.manual_segment_scale_factor (réglable) | Notation standard |
| Traitement LLM | Conserver tous les filtres, sauf s’ils ne sont pas pertinents. | Critiquez chaque filtre individuellement |
| Étiquette d’invite | user_defined_segment |
automated_segment |
| Cycle de vie | Entièrement contrôlé par l’administrateur | Lié à l’activité/l’utilisation de l’enregistrement source |
| Livré avec l’application | Oui (ensemble de mises à jour) | Non (généré lors de l’exécution) |
Fonctionnement des segments
Le système utilise Recherche IA pour trouver des segments qui sont sémantiquement similaires à la requête de l’utilisateur. Recherche IA indexe les champs Nom, Description, Entité et Filtre de la table Segments, en les comparant à la requête de l’utilisateur pour produire un sous-ensemble de segments pertinents.
Dans l’appel LLM, le système transmet le nom, la description, l’entité et les filtres. Le LLM utilise les segments comme blocs de construction pour générer une nouvelle requête. Par exemple, si un utilisateur demande « Incidents non affectés situés à San Diego » et que le segment « Incidents non affectés » est transmis au LLM, le LLM utilise le filtre du segment comme point de départ et joint le filtre d’emplacement « San Diego » au-dessus du segment.
| Étape | Objectif | Sortie |
|---|---|---|
| 1 : Entrée | Capturer la requête en langage naturel de l’utilisateur | Texte brut de la requête |
| 2 : Recherche | Rechercher des segments prédéfinis sémantiquement similaires | Sous-ensemble des segments pertinents |
| 3 : Notation | Classer l’ensemble des segments pertinents en fonction de leurs scores de similarité sémantique | Sous-ensemble des segments pertinents, maintenant classés et triés |
| 4 : Contexte | Fournir des métadonnées de segment au LLM | Données de segment structurées |
| 5 : Générer | Combiner la logique de segment avec de nouvelles conditions | Terminer la requête exécutable |
Fonctionnement des segments manuels
Les segments manuels remplissent deux rôles au moment de la requête :
- Découverte d’entité
- Lors des premières requêtes sans contexte préalable, les correspondances de segments peuvent ajouter ou renforcer des entités dans la liste des entités. Une correspondance avec un nom de segment manuel permet d’identifier l’entité prévue en l’ajoutant ou en la renforçant dans la liste des candidats. Si un utilisateur demande « Montrez-moi les incidents ouverts critiques » et qu’un segment manuel nommé « Incidents ouverts critiques » existe dans la table Incident [incident], l’entité de
l’incidentest valorisée dans les résultats. - Mise en service du filtre
- Les segments correspondants sont formatés dans le contexte d’invite LLM. Le LLM voit :
Le LLM décide ensuite s’il faut réutiliser totalement ou partiellement les filtres du segment lors de la construction de la requête. Les segments manuels sont étiquetés**Related Segments**: - **Critical Open Incidents** (user_defined_segment) - description : High priority incidents that are open and unresolved - entity : incident - filter : { conditions : [{"field":"incident.priority","operator":"=","value":"1"}, ...] }user_defined_segmentdans l’invite, qui indique au LLM de conserver tous les filtres, sauf s’ils ne sont pas complètement pertinents.
Boost de notation de segment manuel
Les segments manuels reçoivent un boost de priorité. Lorsque le moteur recherche des segments pertinents, il note chaque résultat en fonction de la similarité sémantique, c’est-à-dire dans quelle mesure le nom et la description du segment correspondent à la question de l’utilisateur. Par défaut, les segments manuels reçoivent un boost de 5 % appliqué en plus de leur score de similarité brut.
Le facteur d’amplification est configurable via la propriété sn_query_gen.segments.manual_segment_scale_factorsystème . L’augmenter, par exemple à 1,10, élève plus fortement les segments manuels. Le régler sur 1.0 supprime complètement le boost.
En pratique, les segments automatisés ont souvent des noms qui correspondent partiellement aux énoncés de l’utilisateur. Par exemple, un rapport intitulé « Incidents ouverts » peut obtenir des résultats similaires à ceux d’un segment manuel appelé « Incidents ouverts critiques ». Le boost garantit que vos segments faits à la main, réglés sur le domaine, apparaissent avant ceux générés par le système lorsque les deux sont proches.
Fonctionnement de la notation de segment
- Recherche IA Renvoie un score de similarité sémantique brut (0,0 à 1,0) pour chaque segment candidat.
- Les segments en dessous du seuil de correspondance (
0,70par défaut) sont ignorés. - Les scores de segment manuels sont multipliés par le facteur d’échelle (
1,05par défaut). - Les résultats sont triés par score boosté et plafonnés à la limite de résultat.
Sources de segments automatiques
Le système génère automatiquement des segments à partir de sources de données existantes selon un calendrier. La Génération de requête tâche Synchroniser les segments crée automatiquement des segments qui s’exécutent au moment de l’installation, puis toutes les semaines par défaut.
| Source | Ce qu’il extrait |
|---|---|
| Rapports enregistrés (sys_report) | Filtres de rapport à partir des rapports récemment consultés |
| Sources des rapports (sys_report_source) | Filtres de sources de données d’analyse |
| Indicateurs PA (pa_cubes) | Conditions de l’indicateur Analyse des performances |
| Filtres enregistrés (sys_filter) | Filtres enregistrés globaux uniquement (à l’exclusion des filtres spécifiques à l’utilisateur et au groupe) |
| Modules d’application (sys_app_module) | Filtres de vue de liste au niveau du module |
Règles de segment automatisées
Pour réduire le bruit des segments obsolètes et non pertinents, le travail suit des règles spécifiques. Les segments basés sur des rapports, des sources de rapport ou des sources d’indicateurs ne sont actifs que si les enregistrements répondent à certains critères :
- Les rapports doivent être partagés, créés par un utilisateur disposant d’un rôle de gestionnaire d’analyse (administrateur, dashboard_admin, report_admin, pa_admin ou viz_admin) et avoir été exécutés récemment (dans les 180 jours par défaut).
- Les sources de rapport doivent être incluses dans une visualisation de données ou utilisées dans un rapport exécuté récemment.
- Les sources d’indicateurs doivent être liées à des indicateurs dont les scores ont récemment changé.
Pour les rapports, « Exécuter récemment » est défini par la sn_query_gen.segments.reports.last_viewed_threshold_days propriété système. La valeur par défaut est 180 jours.
Pour les sources d’indicateurs, la période pour « récemment modifié » dépend de la fréquence de l’indicateur :
- Quotidien : 7 derniers jours
- Hebdomadaire : 30 derniers jours
- Deux fois par semaine : 30 derniers jours
- Mensuel : 90 derniers jours
- Quatre semaines : 90 derniers jours
- Deux fois par mois : 90 derniers jours
- Trimestriel : 180 derniers jours
- Trimestre fiscal : 180 derniers jours
- Six mois : 12 derniers mois
- Annuel : 24 derniers mois
- Exercice fiscal : 24 derniers mois
Vous pouvez modifier les intervalles de temps pour les sources d’indicateurs en appliquant un multiplicateur à l’aide de la sn_query_gen.segments.indicator.inactivity_threshold_multiplier propriété système. La valeur doit être un nombre entier, ce qui signifie que vous ne pouvez qu’allonger les points, pas les raccourcir.
Désactivation des sources de segments
Vous pouvez désactiver complètement la création de segments ou pour des types de sources individuels. Vous pouvez désactiver la génération de segments pour dépanner ou si les segments d’une source sont « bruyants ». Chaque type de source a une propriété système correspondante sn_query_gen.segments.disable.* . Désactivez les segments pour cette source en définissant la propriété système correspondante sur vrai. Tous les segments existants créés à partir de sources de ce type sont exclus des résultats de Explorateur IA de données recherche. Aucun nouveau segment de ce type n’est créé. Lors de la tâche de synchronisation des segments suivante, tous les segments de ce type sont désactivés. Pour plus d'informations, consultez Propriétés de la génération de requête.