Progetta un agente SQL basato sull'AI generativa OCI per database e applicazioni

Questa architettura di riferimento delinea un agente SQL progettato per facilitare le interazioni del linguaggio naturale (NL) con un Oracle Database.

Basato sui modelli Oracle Cloud Infrastructure (OCI) e Oracle Cloud Infrastructure Generative AI (OCI Generative AI), l'agente consente agli utenti di eseguire query Text-to-SQL, analisi dei dati e reporting attraverso un sistema solido e scalabile, progettato per gestire schemi con centinaia di tabelle.

L'agente SQL può anche essere integrato in un'architettura più generale, con Retrieval Augmented Generation (RAG), consentendo agli utenti di combinare l'analisi su dati strutturati e non strutturati.

Architettura

Il nucleo della soluzione è costituito da un set di componenti Python, basati sull'SDK di Oracle Cloud Infrastructure per Python e sulla libreria open source LangChain:

  • Router: identifica il tipo di richiesta (generazione SQL e recupero dati o analisi dei dati) e lo indirizza alla pipeline di elaborazione appropriata. Il componente è basato su LLM con un prompt specializzato.
  • Schema Manager: gestisce tutti i metadati correlati allo schema di database. Svolge un ruolo cruciale nel fornire, per ogni richiesta NL, la lista delle tabelle ("schema limitato") da utilizzare per la generazione SQL e tutti i metadati associati. Utilizza un database 23ai e una ricerca semantica all'interno del database per trovare le tabelle pertinenti per la richiesta NL dell'utente.
  • Generatore SQL: converte la richiesta NL in un'istruzione SQL eseguibile nel database "Dati" connesso. Utilizza un ensemble di modelli LLM per migliorare la precisione e aumentare il tasso di successo delle istruzioni SQL generate correttamente. I modelli LLM sono forniti dal servizio OCI Generative AI.
  • Cache SQL: memorizza le istruzioni NL (e i relativi equivalenti SQL) per le richieste più frequenti.
  • Esecutore SQL: abilita la convalida della sintassi dell'istruzione SQL generata ed esegue l'istruzione.
  • Analizzatore dati AI: analizza i dati di conversazione memorizzati per generare risposte per le richieste di analisi o la generazione di report.

Il seguente diagramma illustra l'architettura logica.


Descrizione di oci-genai-sql-agent-logical.png
Descrizione dell'immagine oci-genai-sql-agent-logical.png

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

Una caratteristica distintiva di questa soluzione è la gestione flessibile degli schemi di database, basata su Vector Search e sull'AI generativa.

Durante l'impostazione viene generato un riepilogo completo per ogni tabella di database utilizzando un modello LLM (Large Language Model). Questo riepilogo include lo schema della tabella, le query business pertinenti e i dati di esempio. I riepiloghi vengono memorizzati nel database 23ai insieme AI vettori di incorporamento creati dal modello di incorporamento AI generativa OCI.

Quando un utente sottomette una query, la ricerca semantica identifica le tabelle candidate per la composizione della query e un meccanismo di nuova classificazione ridefinisce l'elenco per garantire risultati ottimali.

L'agente SQL gestisce la cronologia delle conversazioni con l'utente. I messaggi scambiati, collegati tramite un conversation_id, vengono memorizzati utilizzando la Oracle Cloud Infrastructure Cache with Redis (OCI Cache with Redis).

L'agente SQL viene esposto tramite un'interfaccia API REST, è conforme a Open-API e implementato con la libreria FastAPI. Questa interfaccia API REST può connettersi a qualsiasi interfaccia utente (il diagramma suggerisce Oracle Digital Assistant, un'interfaccia utente creata con Oracle APEX o un'interfaccia utente Web generica).

L'integrazione con Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service per la raccolta delle statistiche di utilizzo e dei tempi di risposta per vari componenti OCI si basa sull'approccio documentato nel collegamento Enhancing Observability in RAG Solutions with Oracle Cloud (blog) nella sezione Explore More.

Il diagramma riportato di seguito descrive l'architettura fisica, con tutti i servizi OCI coinvolti.



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

L'architettura presenta i seguenti componenti:

  • AI generativa OCI Integrazione del modello

    Convertire il testo in incorporazioni vettoriali da utilizzare nelle applicazioni per le ricerche semantiche, la classificazione del testo o la configurazione cluster del testo. I modelli di incorporamento dell'AI generativa OCI trasformano ogni frase, frase o paragrafo immesso in un array con 384 (modelli leggeri) o 1024 numeri, a seconda del modello di incorporamento selezionato.

    È possibile utilizzare queste incorporazioni per trovare la somiglianza in frasi simili nel contesto o nella categoria. Gli embeddings sono in genere memorizzati in un database vettoriale. Gli embeddings sono per lo più utilizzati per ricerche semantiche in cui la funzione di ricerca si concentra sul significato del testo che sta cercando piuttosto che trovare risultati basati su parole chiave.

  • OCI Generative AI Modello di chat

    Fai domande e ottieni risposte conversazionali tramite un'interfaccia di chat AI. Richiedi AI modelli di chat AI generativa OCI di generare testo. È possibile porre domande in linguaggio naturale e, facoltativamente, inviare testo come documenti, e-mail e recensioni di prodotti ai modelli di chat e ai motivi di ciascun modello nel testo e fornire risposte intelligenti. Per alcuni modelli, è possibile inviare immagini e porre domande sull'immagine. I modelli di chat mantengono il contesto dei prompt precedenti ed è possibile continuare la chat con domande di follow-up.

  • Monitoraggio delle prestazioni delle applicazioni

    Oracle Cloud Infrastructure Application Performance Monitoring offre una visibilità approfondita delle prestazioni delle applicazioni e offre la possibilità di diagnosticare rapidamente i problemi per fornire un livello di servizio coerente. Ciò include il monitoraggio dei molteplici componenti e della logica dell'applicazione distribuiti tra client, servizi di terze parti e livelli di elaborazione back-end, on-premise o nel cloud.

  • Servizio APEX

    Oracle APEX è una piattaforma di sviluppo low-code che consente di creare applicazioni enterprise scalabili, ricche di funzioni, sicure che possono essere distribuite ovunque sia installato Oracle Database. Non è necessario essere esperti in una vasta gamma di tecnologie per fornire soluzioni sofisticate. Oracle APEX include funzioni incorporate quali i temi dell'interfaccia utente, i controlli di navigazione, gli handler dei form e i report flessibili che accelerano il processo di sviluppo delle applicazioni.

  • Gateway API

    Oracle Cloud Infrastructure API Gateway ti consente di pubblicare le API con endpoint privati accessibili dall'interno della tua rete e che, se necessario, puoi esporre alla rete Internet pubblica. Gli endpoint supportano la convalida delle API, la trasformazione delle richieste e delle risposte, il CORS, l'autenticazione e l'autorizzazione e la limitazione delle richieste.

  • Autonomous Data Warehouse

    Oracle Autonomous Data Warehouse è un servizio di database self-driving, self-securing, self-repairing ottimizzato per i carichi di lavoro di data warehousing. Non è necessario configurare o gestire alcun componente hardware né installare software. Oracle Cloud Infrastructure gestisce la creazione del database, nonché il backup, l'applicazione di patch, l'aggiornamento e l'ottimizzazione del database.

  • Cache con Redis

    Oracle Cloud Infrastructure Cache with Redis è una soluzione di memorizzazione nella cache completa e gestita in memoria basata sull'open source Redis. Questo servizio completamente gestito accelera le operazioni di lettura e scrittura dei dati, migliorando notevolmente i tempi di risposta delle applicazioni e le prestazioni del database per offrire una customer experience migliore.

  • Calcolo

    Con Oracle Cloud Infrastructure Compute, puoi eseguire il provisioning e gestire gli host di computazione nel cloud. Puoi avviare istanze di computazione con forme che soddisfano i requisiti delle risorse per CPU, memoria, larghezza di banda di rete e storage. Dopo aver creato un'istanza di computazione, è possibile accedervi in modo sicuro, riavviarla, collegare e scollegare volumi e arrestarla quando non è più necessaria.

Suggerimenti

Utilizzare i seguenti suggerimenti come punto di partenza. I requisiti dell'utente potrebbero essere diversi dall'architettura descritta qui.
  • Accesso al database

    Questa soluzione dovrebbe essere implementata per consentire solo l'accesso di "sola lettura" ai dati nel database. Anche se è possibile, con le istruzioni nel prompt, vietare le istruzioni DDL e DML, per maggiore sicurezza la connessione al database "Dati" dovrebbe essere effettuata utilizzando un utente di database READ ONLY.

  • Sicurezza

    Utilizza Oracle Cloud Guard per monitorare e gestire la sicurezza delle tue risorse in OCI in modo proattivo. Oracle Cloud Guard utilizza ricette del rilevatore che è possibile definire per esaminare le risorse per individuare eventuali punti deboli della sicurezza e per monitorare operatori e utenti per individuare attività rischiose. Quando viene rilevata una configurazione errata o un'attività non sicura, Oracle Cloud Guard consiglia azioni correttive e aiuta a eseguire tali azioni, in base alle ricette del rispondente che è possibile definire.

    Per le risorse che richiedono una maggiore sicurezza, Oracle consiglia di utilizzare le zone di sicurezza. Una zona di sicurezza è un compartimento associato a una ricetta definita da Oracle dei criteri di sicurezza che si basano sulle best practice. Ad esempio, le risorse in una zona di sicurezza non devono essere accessibili dalla rete Internet pubblica e devono essere cifrate utilizzando chiavi gestite dal cliente. Quando crei e aggiorni le risorse in una zona di sicurezza, OCI convalida le operazioni rispetto ai criteri nella ricetta della zona di sicurezza e nega le operazioni che violano uno qualsiasi dei criteri.

  • Cloud Guard

    Duplica e personalizza le ricette predefinite fornite da Oracle per creare ricette personalizzate del rilevatore e del rispondente. Queste ricette consentono di specificare il tipo di violazione della sicurezza che genera un'avvertenza e le azioni consentite per l'esecuzione. Ad esempio, potresti voler rilevare i bucket di storage degli oggetti con visibilità impostata su Pubblico.

    Applica Cloud Guard a livello di tenancy per coprire l'ambito più ampio e ridurre l'onere amministrativo legato alla gestione di più configurazioni.

    È inoltre possibile utilizzare la funzione Lista gestita per applicare determinate configurazioni ai rilevatori.

  • Zone di sicurezza

    Per le risorse che richiedono una maggiore sicurezza, Oracle consiglia di utilizzare le zone di sicurezza. Una zona di sicurezza è un compartimento associato a una ricetta definita da Oracle dei criteri di sicurezza che si basano sulle best practice. Ad esempio, le risorse in una zona di sicurezza non devono essere accessibili dalla rete Internet pubblica e devono essere cifrate utilizzando chiavi gestite dal cliente. Quando crei e aggiorni le risorse in una zona di sicurezza, Oracle Cloud Infrastructure convalida le operazioni in base ai criteri nella ricetta della zona di sicurezza e nega le operazioni che violano uno qualsiasi dei criteri.

  • Gruppi di sicurezza di rete (NSG)

    Puoi utilizzare i gruppi NSG per definire un set di regole in entrata e in uscita che si applicano a VNIC specifiche. Si consiglia di utilizzare i gruppi NSG anziché gli elenchi di sicurezza, poiché i gruppi NSG consentono di separare l'architettura della subnet della VCN dai requisiti di sicurezza dell'applicazione.

Considerazioni

Quando prevedi di eseguire questa soluzione su OCI, prendi in considerazione i seguenti dettagli di sicurezza.

  • Sicurezza

    In un'impostazione di produzione, tutti i componenti per gli agenti SQL devono essere distribuiti in una rete privata.

    L'accesso all'API REST deve essere fornito solo tramite il gateway API OCI. Il load balancer è stato progettato per consentire la distribuzione di tutti i componenti Python su più VM, per ottenere maggiore affidabilità e scalabilità.

    L'accesso AI servizi OCI Generative AI richiede l'impostazione corretta dei criteri OCI Generative AI.

conferme

  • Autore: Luigi Saetta
  • Collaboratore: Alexandru Negrea