Entwicklung eines OCI Generative AI-gestützten SQL-Agents für Datenbanken und Anwendungen
Diese Referenzarchitektur beschreibt einen SQL-Agent, der Natural Language-(NL-)Interaktionen mit einer Oracle Database erleichtert.
Der Agent basiert auf Oracle Cloud Infrastructure-(OCI-) und Oracle Cloud Infrastructure Generative AI-(OCI Generative AI-)Modellen und ermöglicht es Benutzern, Text-to-SQL-Abfragen, Datenanalysen und Berichte über ein robustes, skalierbares System auszuführen, das für die Verarbeitung von Schemas mit Hunderten von Tabellen entwickelt wurde.
Der SQL-Agent kann auch in eine allgemeinere Architektur mit Retrieval Augmented Generation (RAG) integriert werden, sodass Benutzer Analysen zu strukturierten und unstrukturierten Daten kombinieren können.
Architektur
Der Kern der Lösung besteht aus einer Reihe von Python-Komponenten, die auf dem Oracle Cloud Infrastructure-SDK für Python und der Open-Source-Bibliothek LangChain basieren:
- Router: Gibt den Anforderungstyp (SQL-Generierung und Datenabruf oder Datenanalyse) an und leitet ihn an die entsprechende Verarbeitungspipeline weiter. Die Komponente basiert auf LLM mit einer speziellen Eingabeaufforderung.
- Schema Manager: Verwaltet alle Metadaten für das Datenbankschema. Es spielt eine entscheidende Rolle, wenn es darum geht, für jede NL-Anforderung die Liste der Tabellen ("eingeschränktes Schema") bereitzustellen, die für die SQL-Generierung und alle zugehörigen Metadaten verwendet werden sollen. Es nutzt eine 23ai-Datenbank und eine semantische Suche in der Datenbank, um die für die Benutzer-NL-Anforderung relevanten Tabellen zu finden.
- SQL-Generator: Übersetzt die NL-Anforderung in eine ausführbare SQL-Anweisung in der verbundenen "Data"-Datenbank. Es verwendet ein Ensemble von LLM-Modellen, um die Genauigkeit zu verbessern und die Erfolgsrate korrekt generierter SQL-Anweisungen zu erhöhen. Die LLM-Modelle werden vom OCI Generative AI-Service bereitgestellt.
- SQL-Cache: Speichert NL-Anweisungen (und deren SQL-Äquivalente) für die häufigsten Anforderungen.
- SQL Executor: Aktiviert die Syntaxvalidierung der generierten SQL-Anweisung und führt die Anweisung aus.
- AI Data Analyzer: Analysiert gespeicherte Konversationsdaten, um Antworten für Analyseanforderungen oder Berichtsgenerierung zu generieren.
Das folgende Diagramm veranschaulicht die logische Architektur.
Beschreibung der Abbildung oci-genai-sql-agent-logical.png
oci-genai-sql-agent-logical-oracle.zip
Eine Besonderheit dieser Lösung ist die flexible Verwaltung von Datenbankschemas, die von Vector Search und generativer KI unterstützt wird.
Während der Einrichtung wird eine umfassende Zusammenfassung für jede Datenbanktabelle mit einem Large Language Model (LLM) generiert. Diese Übersicht enthält das Tabellenschema, relevante Geschäftsabfragen und Beispieldaten. Die Zusammenfassungen werden in der 23ai-Datenbank zusammen mit dem Einbettungsvektor gespeichert, der vom OCI Generative AI-Einbettungsmodell erstellt wurde.
Wenn ein Benutzer eine Abfrage weiterleitet, identifiziert die semantische Suche Kandidatentabellen für die Abfragezusammensetzung, und ein Reranking-Mechanismus verfeinert diese Liste, um optimale Ergebnisse sicherzustellen.
Der SQL-Agent verwaltet die Unterhaltungshistorie mit dem Benutzer. Die ausgetauschten Nachrichten, die über eine conversation_id verknüpft sind, werden mit Oracle Cloud Infrastructure Cache with Redis (OCI Cache with Redis) gespeichert.
Der SQL-Agent wird über eine REST-API bereitgestellt, ist Open-API-konform und wird mit der FastAPI-Library implementiert. Diese REST-API kann eine Verbindung zu jeder Benutzeroberfläche herstellen (im Diagramm wird Oracle Digital Assistant, eine mit Oracle APEX erstellte UI oder eine generische Web-UI vorgeschlagen).
Die Integration mit Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service zum Erfassen von Nutzungsstatistiken und Reaktionszeiten für verschiedene OCI-Komponenten basiert auf dem Ansatz, der unter dem Link Verbesserte Beobachtbarkeit in RAG-Lösungen mit Oracle Cloud (Blog) im Abschnitt Weitere Informationen dokumentiert ist.
Im folgenden Diagramm wird die physische Architektur mit allen beteiligten OCI-Services beschrieben.
oci-genai-sql-agent-arch-oracle.zip
Die Architektur umfasst die folgenden Komponenten:
- OCI Generative AI Einbettungsmodell
Konvertieren Sie Text in Vektoreinbettungen, die Sie in Anwendungen für semantische Suche, Textklassifizierung oder Text-Clustering verwenden können. Die OCI Generative AI-Einbettungsmodelle wandeln je nach ausgewähltem Einbettungsmodell jede Eingabe in ein Array mit 384 (Lichtmodelle) oder 1024 Zahlen um.
Mit diesen Einbettungen können Sie nach Ähnlichkeiten in Wortgruppen mit ähnlichem Kontext oder ähnlicher Kategorie suchen. Einbettungen werden in der Regel in einer Vektordatenbank gespeichert. Einbettungen werden hauptsächlich für semantische Suchen verwendet, bei denen sich die Suchfunktion auf die Bedeutung des durchsuchten Textes konzentriert, anstatt Ergebnisse basierend auf Schlüsselwörtern zu finden.
- OCI Generative AI Chatmodell
Stellen Sie Fragen und erhalten Sie Gesprächsantworten über eine KI-Chatschnittstelle. Fordern Sie die OCI Generative AI-Chatmodelle auf, Text zu generieren. Sie können Fragen in natürlicher Sprache stellen und optional Text wie Dokumente, E-Mails und Produktbewertungen an die Chatmodelle und jeden Modellgrund über den Text übermitteln und intelligente Antworten bereitstellen. Bei einigen Modellen können Sie Bilder einreichen und Fragen zum Bild stellen. Die Chatmodelle behalten den Kontext Ihrer vorherigen Eingabeaufforderungen bei, und Sie können den Chat mit Nachfassfragen fortsetzen.
- Application Performance Monitoring
Oracle Cloud Infrastructure Application Performance Monitoring bietet einen tiefen Einblick in die Performance von Anwendungen sowie die Möglichkeit, Probleme schnell zu diagnostizieren, um ein konsistentes Serviceniveau zu gewährleisten. Dazu gehört die Überwachung der verschiedenen Komponenten und der Anwendungslogik, die auf Clients, Drittdienste und Backend-Computing-Tiers verteilt sind, vor Ort oder in der Cloud.
- APEX-Service
Oracle APEX ist eine Low-Code-Entwicklungsplattform, mit der Sie skalierbare, funktionsreiche, sichere Unternehmens-Apps entwickeln und überall dort bereitstellen können, wo Oracle Database installiert ist. Sie müssen kein Experte für eine Vielzahl von Technologien sein, um anspruchsvolle Lösungen bereitzustellen. Oracle APEX umfasst integrierte Features, wie Benutzeroberflächen-Themes, Navigationskontrollen, Formularbearbeitung und flexible Berichte, die den Anwendungsentwicklungsprozess beschleunigen.
- API-Gateway
Mit Oracle Cloud Infrastructure API Gateway können Sie APIs mit privaten Endpunkten veröffentlichen, auf die Sie über Ihr Netzwerk zugreifen können, und die Sie bei Bedarf im öffentlichen Internet verfügbar machen können. Die Endpunkte unterstützen API-Validierung, Anforderungs- und Antworttransformation, CORS, Authentifizierung und Autorisierung sowie Anforderungsbegrenzung.
- Autonomous Data Warehouse
Oracle Autonomous Data Warehouse ist ein selbststeuernder, selbstsichernder und selbstreparierender Datenbankservice, der für Data Warehousing-Workloads optimiert ist. Sie müssen keine Hardware konfigurieren oder verwalten oder Software installieren. Oracle Cloud Infrastructure übernimmt das Erstellen der Datenbank sowie Backup, Patching, Upgrade und Optimierung der Datenbank.
- Cache mit Redis
Oracle Cloud Infrastructure Cache with Redis ist eine umfassende, verwaltete In-Memory-Caching-Lösung, die auf der Grundlage von Open Source Redis basiert. Dieser vollständig verwaltete Service beschleunigt das Lesen und Schreiben von Daten und verbessert die Reaktionszeiten von Anwendungen und die Datenbankleistung erheblich, um ein besseres Kundenerlebnis zu bieten.
- Compute
Mit Oracle Cloud Infrastructure Compute können Sie Compute-Hosts in der Cloud bereitstellen und verwalten. Sie können Compute-Instanzen mit Ausprägungen starten, die Ihre Ressourcenanforderungen für CPU, Speicher, Netzwerkbandbreite und Speicher erfüllen. Nach dem Erstellen einer Compute-Instanz können Sie sicher darauf zugreifen, die Compute-Instanz neu starten, Volumes zuordnen und trennen und die Compute-Instanz beenden, wenn Sie sie nicht mehr benötigen.
Empfehlungen
- Datenbankzugriff
Diese Lösung sollte implementiert werden, um nur "schreibgeschützten" Zugriff auf die Daten in der Datenbank zu ermöglichen. Selbst wenn es mit Anweisungen in der Eingabeaufforderung möglich ist, DDL- und DML-Anweisungen zu verbieten, sollte für zusätzliche Sicherheit die Verbindung zur Datenbank "Daten" mit einem Datenbankbenutzer READ ONLY hergestellt werden.
- Sicherheit
Mit Oracle Cloud Guard können Sie die Sicherheit Ihrer Ressourcen in OCI proaktiv überwachen und verwalten. Oracle Cloud Guard verwendet Detektorrezepte, die Sie definieren können, um Ihre Ressourcen auf Sicherheitsschwächen zu untersuchen und Operatoren und Benutzer auf riskante Aktivitäten zu überwachen. Wenn eine falsche Konfiguration oder unsichere Aktivität erkannt wird, empfiehlt Oracle Cloud Guard Korrekturmaßnahmen und unterstützt Sie bei der Ausführung dieser Aktionen basierend auf Responder-Rezepten, die Sie definieren können.
Für Ressourcen, die maximale Sicherheit erfordern, empfiehlt Oracle die Verwendung von Sicherheitszonen. Eine Sicherheitszone ist ein Compartment, das mit einem von Oracle definierten Rezept von Sicherheits-Policys verknüpft ist, die auf Best Practices basieren. Beispiel: Die Ressourcen in einer Sicherheitszone dürfen nicht über das öffentliche Internet zugänglich sein und müssen mit vom Kunden verwalteten Schlüsseln verschlüsselt werden. Wenn Sie Ressourcen in einer Sicherheitszone erstellen und aktualisieren, validiert OCI die Vorgänge anhand der Policys im Rezept der Sicherheitszone und lehnt Vorgänge ab, die eine der Policys verletzen.
- Cloud Guard
Klonen und passen Sie die von Oracle bereitgestellten Standardrezepte an, um benutzerdefinierte Detektorrezepte und Responder-Rezepte zu erstellen. Mit diesen Rezepten können Sie angeben, welche Art von Sicherheitsverletzungen eine Warnung generieren und welche Aktionen für sie ausgeführt werden dürfen. Beispiel: Sie möchten Objektspeicher-Buckets ermitteln, deren Sichtbarkeit auf "Öffentlich" gesetzt ist.
Wenden Sie Cloud Guard auf Mandantenebene an, um den breitesten Geltungsbereich abzudecken und den Verwaltungsaufwand für die Verwaltung mehrerer Konfigurationen zu reduzieren.
Sie können auch das Feature "Verwaltete Liste" verwenden, um bestimmte Konfigurationen auf Detektoren anzuwenden.
- Sicherheitszonen
Für Ressourcen, die maximale Sicherheit erfordern, empfiehlt Oracle die Verwendung von Sicherheitszonen. Eine Sicherheitszone ist ein Compartment, das mit einem von Oracle definierten Rezept von Sicherheits-Policys verknüpft ist, die auf Best Practices basieren. Beispiel: Die Ressourcen in einer Sicherheitszone dürfen nicht über das öffentliche Internet zugänglich sein und müssen mit vom Kunden verwalteten Schlüsseln verschlüsselt werden. Wenn Sie Ressourcen in einer Sicherheitszone erstellen und aktualisieren, validiert Oracle Cloud Infrastructure die Vorgänge anhand der Policys im Rezept der Sicherheitszone und lehnt Vorgänge ab, die gegen eine der Policys verstoßen.
- Netzwerksicherheitsgruppen (NSGs)
Mit NSGs können Sie eine Gruppe von Ingress- und Egress-Regeln definieren, die für bestimmte VNICs gelten. Wir empfehlen die Verwendung von NSGs und nicht von Sicherheitslisten, da NSGs es Ihnen ermöglichen, die Subnetzarchitektur des VCN von den Sicherheitsanforderungen Ihrer Anwendung zu trennen.
Hinweise
Berücksichtigen Sie bei der Planung der Ausführung dieser Lösung auf OCI die folgenden Sicherheitsdetails.
- Sicherheit
In einer Produktionseinstellung müssen alle Komponenten für die SQL-Agents in einem privaten Netzwerk bereitgestellt werden.
Der Zugriff auf die REST-API darf nur über das OCI-API-Gateway bereitgestellt werden. Der Load Balancer wurde entwickelt, um das Deployment aller Python-Komponenten auf mehreren VMs zu ermöglichen, um eine höhere Zuverlässigkeit und Skalierbarkeit zu erreichen.
Für den Zugriff auf OCI Generative AI-Services ist das ordnungsgemäße Setup der OCI Generative AI-Policys erforderlich.