Concevoir un agent SQL optimisé par OCI Generative AI pour les bases de données et les applications

Cette architecture de référence décrit un agent SQL conçu pour faciliter les interactions en langage naturel (NL) avec Oracle Database.

Basé sur les modèles Oracle Cloud Infrastructure (OCI) et Oracle Cloud Infrastructure Generative AI (OCI Generative AI), l'agent permet aux utilisateurs d'effectuer des requêtes texte-SQL, des analyses de données et des rapports via un système robuste et évolutif, conçu pour gérer des schémas avec des centaines de tables.

L'agent SQL peut également être intégré dans une architecture plus générale, avec la génération augmentée de récupération (RAG), permettant aux utilisateurs de combiner des analyses sur des données structurées et non structurées.

Architecture

Le cœur de la solution est constitué d'un ensemble de composants Python, basé sur le kit SDK Oracle Cloud Infrastructure pour Python et la bibliothèque open source LangChain :

  • Routeur : identifie le type de demande (génération SQL et extraction de données ou analyse de données) et le dirige vers le pipeline de traitement approprié. Le composant est basé sur LLM avec une invite spécialisée.
  • Gestionnaire de schémas : gère toutes les métadonnées associées au schéma de base de données. Il joue un rôle crucial en fournissant, pour chaque demande NL, la liste des tables ("schéma restreint") à utiliser pour la génération SQL et toutes les métadonnées associées. Il tire parti d'une base de données 23ai et de la recherche sémantique au sein de la base de données pour trouver les tables pertinentes pour la demande NL utilisateur.
  • Générateur SQL : convertit la demande NL en instruction SQL exécutable sur la base de données "données" connectée. Il utilise un ensemble de modèles de LLM pour améliorer la précision et augmenter le taux de réussite des instructions SQL correctement générées. Les modèles de LLM sont fournis par le service OCI Generative AI.
  • Cache SQL : stocke les instructions NL (et leurs équivalents SQL) pour les demandes les plus fréquentes.
  • Exécuteur SQL : active la validation de syntaxe de l'instruction SQL générée et exécute l'instruction.
  • Analyseur de données AI : analyse les données conversationnelles stockées afin de générer des réponses pour les demandes d'analyse ou la génération de rapports.

Le schéma suivant illustre l'architecture logique.


Description de l'image oci-genai-sql-agent-logical.png
Description de l'illustration oci-genai-sql-agent-logical.png

oci-genai-sql-agent-logical-oracle.zip

Une caractéristique distinctive de cette solution est sa gestion flexible des schémas de base de données, optimisée par la recherche vectorielle et l'IA générative.

Lors de la configuration, un récapitulatif complet est généré pour chaque table de base de données à l'aide d'un modèle LLM (Large Language Model). Ce récapitulatif inclut le schéma de table, les requêtes métier pertinentes et des exemples de données. Les récapitulatifs sont stockés dans la base de données 23ai, ainsi que les vecteurs d'intégration créés par le modèle d'intégration OCI Generative AI.

Lorsqu'un utilisateur soumet une requête, la recherche sémantique identifie les tables candidates pour la composition de la requête et un mécanisme de classement affine cette liste pour garantir des résultats optimaux.

L'agent SQL gère l'historique des conversations avec l'utilisateur. Les messages échangés, liés via un élément conversation_id, sont stockés à l'aide d'Oracle Cloud Infrastructure Cache with Redis (OCI Cache with Redis).

L'agent SQL est exposé via une API REST, est compatible Open-API et implémenté avec la bibliothèque FastAPI. Cette API REST peut se connecter à n'importe quelle interface utilisateur (le diagramme suggère Oracle Digital Assistant, une interface utilisateur créée avec Oracle APEX ou une interface utilisateur Web générique).

L'intégration à Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service pour la collecte de statistiques d'utilisation et de temps de réponse pour divers composants OCI est basée sur l'approche documentée dans le lien Améliorer l'observabilité dans les solutions RAG avec Oracle Cloud (blog) de la section En savoir plus.

Le diagramme suivant décrit l'architecture physique, avec tous les services OCI impliqués.



oci-genai-sql-agent-arch-oracle.zip

L'architecture comprend les composants suivants :

  • OCI Generative AI Modèle d'intégration

    Convertissez du texte en plongements vectoriels à utiliser dans des applications à des fins de recherche sémantique, de classification de texte ou de clustering de texte. Les modèles d'intégration OCI Generative AI transforment chaque phrase, phrase ou paragraphe que vous entrez en tableau avec des nombres de 384 (modèles légers) ou de 1024, selon le modèle d'intégration que vous sélectionnez.

    Vous pouvez utiliser ces plongements pour rechercher des similarités dans des expressions dont le contexte ou la catégorie est similaire. Les incorporations sont généralement stockées dans une base de données vectorielle. Les plongements sont principalement utilisés pour les recherches sémantiques, où la fonction de recherche se concentre sur le sens du texte recherché plutôt que sur les résultats basés sur des mots-clés.

  • OCI Generative AI Modèle de discussion

    Posez des questions et obtenez des réponses conversationnelles via une interface de discussion IA. Invitez les modèles de discussion OCI Generative AI à générer du texte. Vous pouvez poser des questions en langage naturel et éventuellement soumettre des textes tels que des documents, des e-mails et des critiques de produits aux modèles de discussion et chaque motif de modèle sur le texte et fournit des réponses intelligentes. Pour certains modèles, vous pouvez soumettre des images et poser des questions sur l'image. Les modèles de discussion conservent le contexte de vos invites précédentes et vous pouvez poursuivre la discussion avec des questions de suivi.

  • Surveillance des performances des applications

    Oracle Cloud Infrastructure Application Performance Monitoring offre une visibilité étendue sur les performances des applications et permet de diagnostiquer rapidement les problèmes afin de fournir un niveau de service cohérent. Cela inclut la surveillance des multiples composants et la répartition de la logique d'application entre les clients, les services tiers et les niveaux de calcul de back-end, sur site ou dans le cloud.

  • Service APEX

    Oracle APEX est une plate-forme de développement low-code qui vous permet de construire des applications d'entreprise évolutives, riches en fonctionnalités, sécurisées et pouvant être déployées partout où Oracle Database est installé. Vous n'avez pas besoin d'être un expert dans une vaste gamme de technologies pour fournir des solutions sophistiquées. Oracle APEX inclut des fonctionnalités intégrées telles que des thèmes d'interface utilisateur, des contrôles de navigation, des gestionnaires de panneaux et des rapports flexibles qui accélèrent le processus de développement d'application.

  • API Gateway

    Oracle Cloud Infrastructure API Gateway vous permet de publier des API avec des adresses privées accessibles à partir de votre réseau. Vous pouvez les rendre visibles sur le réseau Internet public si nécessaire. Les adresses prennent en charge la validation d'API, la transformation des demandes et des réponses, CORS, l'authentification et l'autorisation, ainsi que la limitation des demandes.

  • Autonomous Data Warehouse

    Oracle Autonomous Data Warehouse est un service de base de données à pilotage, sécurité et réparation automatiques optimisé pour les charges de travail d'entreposage de données. Vous n'avez pas à configurer ni à gérer le matériel, ni à installer de logiciel. Oracle Cloud Infrastructure gère la création, ainsi que la sauvegarde, la mise à niveau et le réglage de la base de données.

  • Cache avec Redis

    Oracle Cloud Infrastructure Cache with Redis est une solution complète de mise en cache en mémoire gérée qui s'appuie sur Redis open source. Ce service entièrement géré accélère les lectures et écritures de données, améliorant considérablement les temps de réponse des applications et les performances de la base de données pour offrir une expérience client améliorée.

  • Compute

    Avec Oracle Cloud Infrastructure Compute, vous pouvez provisionner et gérer des hôtes de calcul dans le cloud. Vous pouvez lancer des instances de calcul avec des formes qui répondent à vos besoins en ressources pour l'UC, la mémoire, la bande passante réseau et le stockage. Après avoir créé une instance de calcul, vous pouvez y accéder en toute sécurité, la redémarrer, attacher et détacher des volumes, et y mettre fin lorsque vous n'en avez plus besoin.

Recommandations

Utilisez les recommandations suivantes comme point de départ. Vos exigences peuvent être différentes de l'architecture décrite ici.
  • Accès à la base de données

    Cette solution doit être implémentée pour permettre uniquement l'accès en lecture seule aux données de la base de données. Même s'il est possible, avec des instructions dans l'invite, d'interdire les instructions DDL et DML, pour plus de sécurité, la connexion à la base de données "Data" doit être effectuée à l'aide d'un utilisateur de base de données READ ONLY.

  • Sécurité

    Utilisez Oracle Cloud Guard pour surveiller et maintenir la sécurité de vos ressources dans OCI de manière proactive. Oracle Cloud Guard utilise des recettes de détecteur que vous pouvez définir pour examiner vos ressources afin de détecter les faiblesses de sécurité et pour surveiller les opérateurs et les utilisateurs afin de détecter les activités à risque. Lorsqu'une erreur de configuration ou une activité non sécurisée est détectée, Oracle Cloud Guard recommande des actions correctives et aide à effectuer ces actions, en fonction des recettes de répondeur que vous pouvez définir.

    Pour les ressources nécessitant une sécurité maximale, Oracle vous recommande d'utiliser des zones de sécurité. Une zone de sécurité est un compartiment associé à une recette de stratégies de sécurité définie par Oracle qui repose sur les meilleures pratiques. Par exemple, les ressources d'une zone de sécurité ne doivent pas être accessibles à partir du réseau Internet public et doivent être cryptées à l'aide de clés gérées par le client. Lorsque vous créez et mettez à jour des ressources dans une zone de sécurité, OCI valide les opérations par rapport aux stratégies de la recette de zone de sécurité et refuse les opérations qui enfreignent l'une des stratégies.

  • Cloud Guard

    Cloner et personnaliser les recettes par défaut fournies par Oracle afin de créer des recettes de détecteur et de répondeur personnalisées. Ces recettes vous permettent de spécifier le type de violation de sécurité qui génère un avertissement et les actions autorisées à y être exécutées. Par exemple, vous pouvez détecter les buckets Object Storage dont la visibilité est définie sur Public.

    Appliquez Cloud Guard au niveau de la location pour couvrir la portée la plus large et réduire la charge administrative liée à la maintenance de plusieurs configurations.

    Vous pouvez également utiliser la fonction Liste gérée pour appliquer certaines configurations aux détecteurs.

  • Security Zones

    Pour les ressources nécessitant une sécurité maximale, Oracle vous recommande d'utiliser des zones de sécurité. Une zone de sécurité est un compartiment associé à une recette de stratégies de sécurité définie par Oracle qui repose sur les meilleures pratiques. Par exemple, les ressources d'une zone de sécurité ne doivent pas être accessibles à partir du réseau Internet public et doivent être cryptées à l'aide de clés gérées par le client. Lorsque vous créez et mettez à jour des ressources dans une zone de sécurité, Oracle Cloud Infrastructure valide les opérations par rapport aux stratégies de la recette de zone de sécurité et refuse les opérations qui enfreignent l'une des stratégies.

  • Groupes de sécurité réseau

    Vous pouvez utiliser des groupes de sécurité réseau pour définir un ensemble de règles entrantes et sortantes qui s'appliquent à des cartes d'interface réseau virtuelles spécifiques. Nous vous recommandons d'utiliser des groupes de sécurité réseau plutôt que des listes de sécurité, car ces derniers vous permettent de séparer l'architecture de sous-réseau du VCN des exigences de sécurité de votre application.

Points à prendre en compte

Lorsque vous prévoyez d'exécuter cette solution sur OCI, tenez compte des détails de sécurité suivants.

  • Sécurité

    Dans un paramètre de production, tous les composants des agents SQL doivent être déployés sur un réseau privé.

    L'accès à l'API REST doit être fourni uniquement via OCI API Gateway. L'équilibreur de charge est conçu pour permettre le déploiement de tous les composants Python sur plusieurs machines virtuelles, afin d'améliorer la fiabilité et l'évolutivité.

    L'accès aux services OCI Generative AI nécessite la configuration appropriée des stratégies OCI Generative AI.

Accusés de réception

  • Auteur : Luigi Saetta
  • Contributeur : Alexandru Negrea