Concevoir un agent SQL alimenté par l'intelligence artificielle générative OCI 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 du langage naturel (NL) avec Oracle Database.

Fondé 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 interrogations de texte à SQL, des analyses de données et des rapports au moyen d'un système robuste et évolutif, conçu pour gérer les schémas contenant 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 d'extraction (RAG), permettant aux utilisateurs de combiner l'analyse sur des données structurées et non structurées.

Architecture

Le cœur de la solution se compose d'un jeu de composants Python, basés sur la trousse SDK Oracle Cloud Infrastructure pour Python et sur la bibliothèque à code source libre 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 le LLM avec une invite spécialisée.
  • Gestionnaire de schéma : Gère toutes les métadonnées lié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 utilise une base de données 23ai et une recherche sémantique dans la base de données pour trouver les tables pertinentes pour la demande NL utilisateur.
  • Générateur SQL : Convertit la demande NL en un énoncé SQL exécutable dans la base de données "Données" connectée. Il utilise un ensemble de modèles LLM pour améliorer la précision et augmenter le taux de réussite des énoncés SQL générés correctement. Les modèles LLM sont fournis par le service d'intelligence artificielle générative OCI.
  • Mémoire cache SQL : Stocke les instructions NL (et leurs équivalents SQL) pour les demandes les plus fréquentes.
  • Exécuteur SQL : Active la validation de la syntaxe de l'énoncé SQL généré et exécute l'instruction.
  • Analyseur de données IA : 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 diagramme suivant illustre l'architecture logique.


Une description de oci-genai-sql-agent-logical.png suit
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, alimentée par la recherche vectorielle et l'IA générative.

Au cours de la configuration, un sommaire complet est généré pour chaque table de base de données à l'aide d'un modèle LLLM (Large Language Model). Ce sommaire comprend le schéma de la table, les interrogations d'affaires pertinentes et des exemples de données. Les sommaires sont stockés dans la base de données 23ai avec des vecteurs d'intégration créés par le modèle d'intégration de l'intelligence artificielle générative OCI.

Lorsqu'un utilisateur soumet une interrogation, la recherche sémantique identifie les tables candidates pour la composition de l'interrogation, et un mécanisme de reclassement 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 au moyen d'un lien conversation_id, sont stockés à l'aide de la mémoire cache Oracle Cloud Infrastructure Cache with Redis (Mémoire cache OCI avec Redis).

L'agent SQL est exposé au moyen d'une API REST, est conforme à l'API ouverte et mis en oeuvre 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 intégrée à 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 (blogue) de la section Explorer 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 :

  • Intelligence artificielle générative OCI Modèle d'intégration

    Convertissez le texte en plongements vectoriels à utiliser dans les applications pour les recherches sémantiques, la classification de texte ou le regroupement de texte. Les modèles d'intégration de l'IA générative OCI transforment chaque phrase, phrase ou paragraphe que vous entrez dans un tableau avec 384 (modèles légers) ou 1024 chiffres, selon le modèle d'intégration que vous sélectionnez.

    Vous pouvez utiliser ces intégrations pour rechercher des similarités avec des expressions dont le contexte ou la catégorie sont similaires. Les intégrations sont généralement stockées dans une base de données vectorielle. Les plongements sont principalement utilisés pour les recherches sémantiques, dans lesquelles la fonction de recherche se concentre sur la signification du texte recherché, plutôt que sur l'obtention de résultats basés sur des mots clés.

  • Intelligence artificielle générative OCI Modèle de clavardage

    Posez des questions et obtenez des réponses conversationnelles au moyen d'une interface de clavardage avec l'IA. Invitez les modèles de clavardage de l'IA générative OCI à générer du texte. Vous pouvez poser des questions en langage naturel et éventuellement soumettre des textes tels que des documents, des courriels et des évaluations de produits aux modèles de clavardage 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 clavardage conservent le contexte de vos invites précédentes et vous pouvez poursuivre le clavardage avec des questions de suivi.

  • Surveillance de la performance des applications

    Oracle Cloud Infrastructure Application Performance Monitoring offre une visibilité complète de la performance des applications et permet de diagnostiquer rapidement les problèmes afin d'offrir un niveau de service uniforme. Cela inclut la surveillance des multiples composants et de la logique d'application répartis entre les clients, les services tiers et les niveaux de calcul dorsaux, sur place ou dans le nuage.

  • Service APEX

    Oracle APEX est une plate-forme de développement à code réduit qui permet de créer des applications d'entreprise évolutives, riches en fonctions et sécurisées qui peuvent ê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 comprend des fonctions intégrées, telles que des thèmes d'interface utilisateur, des contrôles de navigation, des programmes de traitement de formulaires et des rapports flexibles, qui accélèrent le processus de développement d'applications.

  • Passerelle d'API

    Oracle Cloud Infrastructure API Gateway vous permet de publier des API avec des points d'extrémité privés qui sont accessibles à partir de votre réseau, et que vous pouvez exposer à l'Internet public si nécessaire. Les points d'extrémité prennent en charge la validation, la transformation des demandes et des réponses, la spécification CORS, l'authentification et l'autorisation, ainsi que la limitation des demandes pour les API.

  • Autonomous Data Warehouse

    Oracle Autonomous Data Warehouse est un service de base de données entièrement géré, autosécurisé et autoréparable qui est optimisé pour les charges de travail d'entreposage de données. Il n'est pas nécessaire de configurer ou de gérer du matériel ni d'installer des logiciels. Oracle Cloud Infrastructure gère la création de la base de données, ainsi que la sauvegarde, l'application de correctifs, la mise à niveau et la mise au point de la base de données.

  • Cache avec Redis

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

  • Calcul

    Avec le service Calcul pour Oracle Cloud Infrastructure, vous pouvez provisionner et gérer des hôtes pour les calculs dans le nuage. Vous pouvez lancer des instances de calcul avec des formes qui répondent à vos besoins en ressources d'UC, de mémoire, de bande passante de réseau et de 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, puis y mettre fin lorsque vous n'en avez plus besoin.

Recommandations

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

    Cette solution doit être mise en oeuvre pour permettre uniquement l'accès en lecture seule aux données de la base. Même s'il est possible, avec des instructions dans l'invite, d'interdire les instructions DDL et DML, pour une sécurité supplémentaire, 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 à la recherche de faiblesses en matière de sécurité et pour surveiller les opérateurs et les utilisateurs à la recherche d'activités risquées. Lorsqu'une mauvaise 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épondant que vous pouvez définir.

    Pour les ressources qui nécessitent une sécurité maximale, Oracle recommande d'utiliser des zones de sécurité. Une zone de sécurité est un compartiment associé à une recette de politiques de sécurité définie par Oracle et basée sur les meilleures pratiques. Par exemple, les ressources d'une zone de sécurité ne doivent pas être accessibles par l'Internet public et elles doivent être chiffré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 en fonction des politiques de la recette de zone de sécurité et refuse les opérations qui violent l'une des politiques.

  • Protection d'infrastructure en nuage

    Cloner et personnaliser les recettes par défaut fournies par Oracle pour créer des recettes de détecteur et de répondant personnalisées. Ces recettes vous permettent de spécifier quel type de violations de sécurité génèrent un avertissement et quelles actions sont autorisées pour elles. Par exemple, vous pouvez détecter des seaux de stockage d'objets dont la visibilité est réglée à Public.

    Appliquez le service de protection d'infrastructure en nuage au niveau de la location pour couvrir la portée la plus large et réduire le fardeau administratif lié à la maintenance de plusieurs configurations.

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

  • Zones de sécurité

    Pour les ressources qui nécessitent une sécurité maximale, Oracle recommande d'utiliser des zones de sécurité. Une zone de sécurité est un compartiment associé à une recette de politiques de sécurité définie par Oracle et basée sur les meilleures pratiques. Par exemple, les ressources d'une zone de sécurité ne doivent pas être accessibles par l'Internet public et elles doivent être chiffrées à l'aide de clés gérées par le client. Lors de la création et de la mise à jour de ressources dans une zone de sécurité, Oracle Cloud Infrastructure valide les opérations en fonction des politiques de la recette de zone de sécurité et refuse les opérations qui violent l'une des politiques.

  • Groupes de sécurité de réseau

    Vous pouvez utiliser des groupes de sécurité de réseau pour définir un jeu de règles de trafic entrant et sortant qui s'appliquent à des cartes vNIC spécifiques. Nous vous recommandons d'utiliser des groupes plutôt que des listes de sécurité, car ils vous permettent de séparer l'architecture de sous-réseau du VCN des exigences de sécurité de votre application.

Points à considérer

Lors de la planification de l'exécution de cette solution sur OCI, tenez compte des détails de sécurité suivants.

  • Sécurité

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

    L'accès à l'API REST doit être fourni uniquement au moyen de la passerelle d'API OCI. L'équilibreur de charge est conçu pour permettre le déploiement de tous les composants Python sur plusieurs machines virtuelles afin d'obtenir une fiabilité et une extensibilité supérieures.

    L'accès aux services d'IA générative OCI nécessite la configuration appropriée des politiques d'IA générative OCI.

Confirmation

  • Auteur : Luigi Saetta
  • Contributeur : Alexandru Negrea