SQL aus Eingabeaufforderungen in natürlicher Sprache mit Select AI generieren

Autonome KI-Datenbank auf dedizierter Exadata-Infrastruktur Mit der ausgewählten KI können Sie Ihre Daten in natürlicher Sprache abfragen.

Mit dem Feature "KI auswählen" kann autonome KI-Datenbank generative KI mit Large Language Models (LLMs) verwenden, um den Eingabetext des Benutzers in Oracle SQL zu konvertieren. Select AI verarbeitet die Eingabeaufforderung in natürlicher Sprache, ergänzt die Eingabeaufforderung mit Metadaten und generiert dann eine SQL-Abfrage und führt sie aus.

Informationen zu Select AI

Verwenden Sie natürliche Sprache, um mit Ihrer Datenbank und Ihren LLMs über SQL zu interagieren, um die Benutzerproduktivität zu verbessern und KI-basierte Anwendungen zu entwickeln. Select AI vereinfacht und automatisiert die Verwendung generativer KI, unabhängig davon, ob SQL aus einer Eingabeaufforderung in natürlicher Sprache generiert, ausgeführt und erklärt wird. Dabei wird die Retrieval Augmented Generation mit Vektorspeichern verwendet, synthetische Daten generiert oder mit dem LLM gechattet.

Wenn Sie Select AI verwenden, verwaltet Autonomous AI Database den Prozess der Konvertierung natürlicher Sprache in SQL. Dies bedeutet, dass Sie eine Eingabeaufforderung in natürlicher Sprache anstelle von SQL-Code für die Interaktion mit Ihren Daten bereitstellen können. Select AI dient als Produktivitäts-Tool für SQL-Benutzer und -Entwickler und ermöglicht es nicht erfahrenen SQL-Benutzern, nützliche Erkenntnisse aus ihren Daten abzuleiten, ohne Datenstrukturen oder technische Sprachen verstehen zu müssen.

Select AI automatisiert auch den Retrieval Augmented Generation (RAG)-Prozess von der Generierung von Vektoreinbettungen bis zum Abrufen relevanter Inhalte basierend auf Ihrem Prompt durch die semantische Ähnlichkeitssuche mit Ihrem Vektorspeicher. Weitere Features sind die Generierung synthetischer Daten, die Unterstützung der Chathistorie für Unterhaltungen und andere Funktionen über eine SQL-Schnittstelle.

Das DBMS_CLOUD_AI-Package ermöglicht die Integration mit einem benutzerdefinierten LLM zur Generierung von SQL-Code mit Eingabeaufforderungen in natürlicher Sprache. Für die Generierung von natürlicher Sprache in SQL stellt dieses Package einen erweiterten Prompt für das LLM bereit, der die relevanten Metadaten des Datenbankschemas enthält. Auf diese Weise können Sie SQL-Abfragen basierend auf Eingabeaufforderungen in natürlicher Sprache generieren, ausführen und erklären. Es erleichtert auch die Retrieval Augmented Generation mit Vektorspeichern, synthetische Datengenerierung und ermöglicht das Chatten mit dem LLM. Das DBMS_CLOUD_AI-Package arbeitet mit KI-Providern zusammen, die unter Select your AI Provider and LLMs aufgeführt sind.

Hinweis:

  • Sie müssen über einen Account beim AI-Provider verfügen und die Zugangsdaten über DBMS_CLOUD_AI-Objekte bereitstellen, die von der Autonomous AI Database verwendet werden.

  • Sie können Prompts in mehreren Sprachen weiterleiten. Die Qualität des Ergebnisses hängt von den Fähigkeiten des spezifischen LLM oder des verwendeten Einbettungsmodells (Transformer) ab. Prüfen Sie Ihre LLM- oder Einbettungsmodelldokumentation, um mehrsprachige Unterstützung zu erhalten.

Unterstützte Plattform

Select AI wird auf der serverlosen Autonomous AI Database und der Autonomous AI Database auf der dedizierten Exadata-Infrastruktur und der Cloud bei Kunden unterstützt.

  • Autonome KI-Datenbank Serverlos
  • Autonome KI-Datenbank auf dedizierter Exadata-Infrastruktur
  • Region Autonome KI-Datenbank auf dedizierter Exadata-Infrastruktur
  • Autonome KI-Datenbank Cloud@Customer

Zugehörige Terminologie

Es ist wichtig, die verschiedenen Begriffe zu verstehen, die mit Select AI verwendet werden, bevor Sie sie verwenden.

Die folgenden Begriffe beziehen sich auf das Feature "AI auswählen":

Begriff Definition
Unterhaltungen

Unterhaltungen in Select AI stellen einen interaktiven Austausch zwischen dem Benutzer und dem System dar, der es Benutzern ermöglicht, die Datenbank über eine Reihe von Eingabeaufforderungen in natürlicher Sprache abzufragen oder mit ihr zu interagieren. Select AI integriert sessionbasierte kurzfristige Unterhaltungen, um kontextbezogene Antworten für den aktuellen Prompt basierend auf früheren Interaktionen zu generieren. Bis zu 10 vorherige Prompts werden mit kurzfristigen Unterhaltungen in die aktuelle Anforderung integriert, wodurch ein erweiterter Prompt erstellt wird, der an das LLM gesendet wird. Select AI unterstützt die Verwendung anpassbarer langfristiger Unterhaltungen, sodass Sie Select AI mit verschiedenen Themen verwenden können, ohne Kontext zu mischen. Diese können über Unterhaltungs-APIs aus dem DBMS_CLOUD_AI-Package konfiguriert werden. Weitere Informationen finden Sie unter Unterhaltungen verwenden und anpassen.

Datenbankzugangsdaten

Datenbankzugangsdaten sind Authentifizierungszugangsdaten für den Zugriff auf und die Interaktion mit Datenbanken. Sie bestehen in der Regel aus einem Benutzernamen und einem Kennwort, manchmal ergänzt durch zusätzliche Authentifizierungsfaktoren wie Sicherheitstoken. Diese Zugangsdaten werden verwendet, um eine sichere Verbindung zwischen einer Anwendung oder einem Benutzer und einer Datenbank herzustellen und sicherzustellen, dass nur autorisierte Personen oder Systeme auf die in der Datenbank gespeicherten Daten zugreifen und diese bearbeiten können.

Halluzination im LLM

Halluzination im Kontext von Large Language Models bezieht sich auf ein Phänomen, bei dem das Modell Text generiert, der falsch, unsinnig oder nicht mit der Eingabeaufforderung verknüpft ist. Obwohl es ein Ergebnis des Versuchs des Modells ist, kohärenten Text zu erzeugen, können diese Fälle Informationen enthalten, die fabriziert, irreführend oder rein fantasievoll sind. Halluzinationen können aufgrund von Verzerrungen in Trainingsdaten, mangelndem Kontextverständnis oder Einschränkungen im Trainingsprozess des Modells auftreten.

IAM Mit Oracle Cloud Infrastructure Identity and Access Management (IAM) können Sie den Zugriff auf Ihre Cloud-Ressourcen kontrollieren. Sie können den Zugriffstyp einer Benutzergruppe kontrollieren und festlegen, für welche spezifischen Ressourcen der Zugriff gilt. Weitere Informationen finden Sie unter Überblick über Identity and Access Management.

Natural Language Prompts

Natural Language Prompts sind menschenlesbare Anweisungen oder Anforderungen, die zur Anleitung generativer KI-Modelle wie Large Language Models bereitgestellt werden. Anstatt bestimmte Programmiersprachen oder Befehle zu verwenden, können Benutzer mit diesen Modellen interagieren, indem sie Eingabeaufforderungen in einer dialogorientierteren oder natürlichen Sprachform eingeben. Die Modelle generieren dann die Ausgabe basierend auf dem angegebenen Prompt.

Network Access Control-Liste (ACL)

Eine Netzwerkzugriffssteuerungsliste ist eine Gruppe von Regeln oder Berechtigungen, die definieren, welcher Netzwerkverkehr durch ein Netzwerkgerät wie einen Router, eine Firewall oder ein Gateway geleitet werden darf. ACLs werden verwendet, um eingehenden und ausgehenden Datenverkehr basierend auf verschiedenen Kriterien wie IP-Adressen, Portnummern und Protokollen zu steuern und zu filtern. Sie spielen eine entscheidende Rolle bei der Netzwerksicherheit, indem sie es Administratoren ermöglichen, den Netzwerkverkehr zu verwalten und einzuschränken, um unbefugten Zugriff, potenzielle Angriffe und Datenschutzverletzungen zu verhindern.

Ähnlichkeitssuche

Die Ähnlichkeitssuche identifiziert und ruft Datenpunkte ab, die einer bestimmten Abfrage entsprechen, indem Featurevektoren in einem Vektorspeicher verglichen werden.

Vektorabstände

Vektorabstände messen die Ähnlichkeit oder Unähnlichkeit zwischen Merkmalvektoren, indem sie den Abstand zwischen ihnen in einem mehrdimensionalen Raum berechnen.

Vektorindex

Ein Vektorindex organisiert und speichert Featurevektoren, um eine effiziente Ähnlichkeitssuche und das Abrufen verwandter Daten zu ermöglichen.

Vektoren

Ein Vektorspeicher umfasst Systeme, die semantische Ähnlichkeitssuche mit Vektoreinbettungen speichern, verwalten und ermöglichen. Dazu gehören Standalone-Vektordatenbanken und Oracle Database 23ai AI Vector Search.

KI-Anwendungsfälle auswählen

Select AI verbessert die Dateninteraktion und ermöglicht es Entwicklern, KI-gesteuerte Anwendungen direkt aus SQL zu erstellen, Eingabeaufforderungen in natürlicher Sprache in SQL-Abfragen und Textantworten zu transformieren, die Chatinteraktion mit LLMs zu unterstützen, die Reaktionsgenauigkeit mit aktuellen Daten mit RAG zu verbessern und synthetische Daten zu generieren.

Zu den Anwendungsfällen gehören:

  • SQL aus Eingabeaufforderungen in natürlicher Sprache generieren

    Entwicklerproduktivität: Select AI verbessert die Entwicklerproduktivität erheblich, indem es schnell "starter" SQL-Abfragen bereitstellt. Entwickler können Eingabeaufforderungen in natürlicher Sprache eingeben. Select AI generiert SQL basierend auf den Tabellen und Views Ihres Datenbankschemas. Dies reduziert den Zeit- und Arbeitsaufwand, der erforderlich ist, um komplexe Abfragen von Grund auf neu zu erstellen, sodass sich Entwickler auf die Verfeinerung und Optimierung der generierten Abfragen für ihre spezifischen Anforderungen konzentrieren können.

    Abfragen in natürlicher Sprache für Endbenutzer: Mit der ausgewählten KI können Endbenutzer mithilfe von Abfragen in natürlicher Sprache mit den zugrunde liegenden Datentabellen und -ansichten Ihrer Anwendung interagieren. Diese Funktionalität ermöglicht es Benutzern ohne SQL-Kenntnisse, Fragen zu stellen und Daten direkt abzurufen. Dadurch wird der Datenzugriff intuitiver und benutzerfreundlicher in Bezug auf die Funktionen des verwendeten LLM und die Qualität der verfügbaren Schemametadaten.

    Weitere Funktionen für die SQL-Generierung: Die folgenden hervorgehobenen Funktionen werden auch für die Generierung von natürlicher Sprache in SQL unterstützt:

    • Schema oder Tabellen oder Views angeben: Mit Select AI können Sie eine Objektliste angeben, die aus Schema und optional Tabellen oder Views innerhalb dieses Schemas besteht.

    • Relevante Tabellenmetadaten automatisch erkennen: Select AI erkennt automatisch relevante Tabellen und sendet Metadaten nur für diese spezifischen Tabellen, die für die Abfrage relevant sind, in Oracle Database 26ai.

    • Tabellenzugriff einschränken: Mit Select AI können Sie den Tabellenzugriff einschränken, indem Sie nur die Tabellen berücksichtigen, die in den AI-Profilattributen für die SQL-Generierung aufgeführt sind.
    • Geben Sie die Groß-/Kleinschreibung für Spalten an: Mit Select AI kann der Benutzer die Groß-/Kleinschreibung festlegen, sodass das LLM Antworten ohne Berücksichtigung der Groß-/Kleinschreibung aus der Datenbank und dem LLM erstellt.
  • Unterhaltungen

    Aktivieren Sie Chatbot-ähnliche Funktionen mit Select AI, sodass Benutzer natürliche Unterhaltungen zum Abfragen von Daten und zum Ausführen von Aktionen führen können. Diese chats können den kontext verfolgen und nachfassantworten geben, die ursprüngliche fragen klären oder erweitern. Dieses Szenario steigert das Engagement und erleichtert komplizierte Abfragen durch Gespräche.

  • Agent-Workflows mit Select AI Agent

    Mit Select AI Agent können Sie Agents, Tools (SQL, RAG, Websearch, Notifications) und Aufgaben für mehrstufige Szenarios wie Datenabruf und Benachrichtigung koordinieren. Weitere Informationen finden Sie unter Autonome Agents mit ausgewähltem KI-Agent erstellen.

  • Kundenspezifische Mediengenerierung

    Select AI kann verwendet werden, um personalisierte Medieninhalte wie E-Mails zu generieren, die auf individuelle Kundendetails zugeschnitten sind. Beispiel: In Ihrer Eingabeaufforderung können Sie das LLM anweisen, eine freundliche und optimierte E-Mail zu erstellen, in der ein Kunde aufgefordert wird, eine Reihe empfohlener Produkte auszuprobieren. Diese Empfehlungen können auf demografischen Daten des Kunden oder anderen spezifischen Informationen basieren, die in Ihrer Datenbank verfügbar sind. Diese Anpassungsebene verbessert die Kundenbindung, indem relevante und ansprechende Inhalte direkt an den Kunden übermittelt werden.

  • Codegenerierung

    Mit der Aktion "AI auswählen chat" können Sie Select AI verwenden, um Ihr angegebenes LLM zu bitten, Code aus Eingabeaufforderungen in natürlicher Sprache zu generieren. Diese Funktion unterstützt verschiedene Programmiersprachen wie SQL, Python, R und Java. Beispiele:

    • Python-Code: "Schreiben Sie den Python-Code, um eine Verwechslungsmatrix über eine DataFrame mit den Spalten ACTUAL und PREDICTED zu berechnen."
    • SQL-DDL: "Schreiben Sie die DDL für eine SQL-Tabelle mit Spaltenname, Alter, Einkommen und Land."
    • SQL-Abfrage: "Schreiben Sie die SQL-Abfrage, die das datenbankinterne Oracle Machine Learning-Modell mit dem Namen CHURN_DT_MODEL verwendet, um vorherzusagen, welche Kunden abwandern und mit welcher Wahrscheinlichkeit."
  • Retrieval Augmented Generation (RAG)

    Verwenden Sie Vektorspeicherinhalt für die semantische Ähnlichkeitssuche, um die Schnellgenauigkeit und Relevanz in LLM-Antworten zu verbessern.

  • Synthetische Datengenerierung

    Generieren Sie synthetische Daten mit LLMs, die Ihrem Schema für Lösungstests, Proofs of Concept und andere Anwendungen entsprechen. Synthetische Daten können ein besseres Testen Ihrer Anwendungen ohne echte Daten unterstützen, was zur Gesamtqualität Ihrer Anwendung führt.

Verwendungsrichtlinien

Enthält Verwendungsrichtlinien, die eine effektive und ordnungsgemäße Verwendung von Eingabeaufforderungen in natürlicher Sprache für die SQL-Generierung gewährleisten, um eine verbesserte Benutzererfahrung zu gewährleisten.

Verwendungszweck

Dieses Feature ist für die Generierung und Ausführung von SQL-Abfragen gedacht, die sich aus vom Benutzer bereitgestellten Eingabeaufforderungen in natürlicher Sprache ergeben. Es automatisiert, was ein Benutzer manuell basierend auf seinen Schemadaten in Kombination mit einem Large Language Model (LLM) seiner Wahl ausführen kann.

Während jede Eingabeaufforderung bereitgestellt werden kann, einschließlich derer, die sich nicht auf die Erstellung von SQL-Abfrageergebnissen beziehen, konzentriert sich Select AI auf die Generierung von SQL-Abfragen. Mit "AI auswählen" können allgemeine Anforderungen mit der Aktion chat weitergeleitet werden.

Prompt-Erweiterungsdaten

Die Datenbank erweitert den benutzerdefinierten Prompt um Datenbankmetadaten, um Halluzinationen aus dem LLM zu mildern. Die erweiterte Eingabeaufforderung wird dann an das benutzerdefinierte LLM gesendet, um die Abfrage zu erstellen.

Die Datenbank ergänzt die Eingabeaufforderung nur mit Schemametadaten. Diese Metadaten können Schemadefinitionen, Tabellen- und Spaltenkommentare sowie im Data Dictionary und Katalog verfügbare Inhalte enthalten. Für die Zwecke der SQL-Generierung stellt die Datenbank beim Erweitern der Eingabeaufforderung keinen Tabellen- oder View-Inhalt (tatsächliche Zeilen- oder Spaltenwerte) bereit.

Die Aktion narrate liefert jedoch das Ergebnis der Abfrage, die Datenbankdaten enthalten kann, an das benutzerdefinierte LLM, aus dem Text in natürlicher Sprache generiert werden soll, der die Abfrageergebnisse beschreibt.

WARNUNG:

Große Sprachmodelle (LLMs) wurden auf einer breiten Palette von Textdokumentationen und Inhalten trainiert, in der Regel aus dem Internet. Infolgedessen haben LLMs möglicherweise Muster aus ungültigen oder böswilligen Inhalten integriert, einschließlich SQL-Injection. LLMs sind zwar in der Lage, nützliche und relevante Inhalte zu generieren, können jedoch auch falsche und falsche Informationen generieren, einschließlich SQL-Abfragen, die zu ungenauen Ergebnissen führen und/oder die Sicherheit Ihrer Daten beeinträchtigen.

Die vom benutzerdefinierten LLM-Provider in Ihrem Namen generierten Abfragen werden in Ihrer Datenbank ausgeführt. Ihre Nutzung dieser Funktion erfolgt ausschließlich auf eigene Gefahr und stellt ungeachtet anderer Geschäftsbedingungen im Zusammenhang mit den von Oracle bereitgestellten Services Ihre Zustimmung zu diesem Risiko dar und schließt ausdrücklich die Verantwortung oder Haftung von Oracle für Schäden aus, die sich aus dieser Nutzung ergeben.

Wählen Sie Ihren KI-Anbieter und Ihre LLMs

Wählen Sie einen KI-Anbieter und ein LLM, das Ihre Sicherheitsstandards erfüllt und Ihren spezifischen Anforderungen entspricht, wie Text- oder Codegenerierung.

Verschiedene LLMs übertreffen verschiedene Aufgaben basierend auf ihren Trainingsdaten und dem beabsichtigten Zweck. Einige Modelle eignen sich hervorragend für die Textgenerierung, können aber bei der Codegenerierung nicht gut funktionieren, während andere speziell für Codierungsaufgaben optimiert sind. Wählen Sie ein LLM, das Ihren Bedürfnissen am besten entspricht.

KI-Provider LLMs Einbettungsmodell für RAG Zweck

OCI Generative AI

  • meta.llama-3.3-70b-Instanz (Standard)
  • meta.llama-3.2-90b-vision-instruct
  • meta.llama-3.2-11b-vision-instruct
  • meta.llama-3.1-70b-instruct
  • meta.llama-3.1-405b-instruct
  • cohere.command-r-08-2024
  • cohere.command-r-plus-08-2024
  • cohere.command-r-16k (veraltet)
  • cohere.command–r-plus (veraltet)
  • xai.grok-3
  • xai.grok-3-fast
  • cohere.embed-english-v3.0 (Standard)
  • cohere.embed-mehrsprachig-v3.0
  • cohere.embed-englisch-light-v3.0
  • cohere.embed-mehrsprachig-licht-v3.0

Siehe Informationen zum Einbetten von Modellen in generative KI.

Die OCI Generative AI-Chatmodelle werden für alle SELECT AI-Aktionen unterstützt, wie runsql, showsql, explainsql, narrate und chat.

Die OCI-Textmodelle "Generieren" werden nur für die Aktion SELECT AI chat unterstützt.

Informationen zum Konfigurieren Ihrer Profilattribute finden Sie unter Profilattribute.

Azure OpenAI-Service

  • GPT-4o
  • GPT-4
  • GPT-4 Turbo mit Vision
  • GPT-3.5-Turbo

text-embedding-ada-002

Am besten geeignet für die Generierung von SQL aus Eingabeaufforderungen in natürlicher Sprache, chat-Aktion und AI-RAG auswählen.

OpenAI

  • gpt-3.5-turbo (Standard)
  • gpt-4o
  • gpt-4o-mini
  • Gpt-4
  • gpt-4-0613
  • gpt-4-32k
  • gpt-4-32k-0613
  • gpt-3.5-turbo-0613
  • gpt-3.5-turbo-16k
  • gpt-3.5-turbo-16k-0613

text-embedding-ada-002

Am besten geeignet für die Generierung von SQL aus Eingabeaufforderungen in natürlicher Sprache, chat-Aktion und AI-RAG auswählen.

OpenAI-kompatibel

Modelle von OpenAI-kompatiblen Providern wie:
  • Feuerwerk AI
  • xAI
  • Andere
Einbetten von Modellen von OpenAI-kompatiblen Anbietern. Beispiel: Siehe Fireworks AI-Einbettungsmodelle.

Unterstützt eine Vielzahl von Anwendungsfällen.

Cohere

  • Befehl (Standard)
  • Kommando-Nacht (experimentell)
  • Befehl-r
  • Befehl-r-plus
  • Befehlslicht
  • Kommando-Licht-Nacht (experimentell)
  • Benutzerdefinierte Modelle

embed-englisch-v2.0

Am besten geeignet für chat-Aktion.

Google

  • gemini-1.5-flash (Standard)
  • gemini-1.5-pro
  • gemini-1.0-pro
text-embedding-004 (Standard)

Am besten geeignet für die Generierung von SQL aus Eingabeaufforderungen in natürlicher Sprache, chat-Aktion und AI-RAG auswählen.

Anthrop

  • claude-3-5-sonnet-20240620 (Standard)
  • claude-3-opus-20240229
  • claude-3-sonnet-20240229
  • claude-3-haiku-20240307
-

Am besten geeignet für die Generierung von SQL aus Eingabeaufforderungen in natürlicher Sprache, chat-Aktion und AI-RAG auswählen.

Hugging Face

  • Mixtral-8x7B-Instruct-v0.1 (Standard)
  • Meta-Llama-3-70B-Instruct
  • Qwen1.5-1.8B
  • Andere Chat-Modelle
-

Am besten geeignet für die Generierung von SQL aus Eingabeaufforderungen in natürlicher Sprache, chat-Aktion und AI-RAG auswählen.

AWS

  • amazon.titan-eingebettet-Text-v1
  • amazon.titan-embed-text-v2:0
  • cohere.embed-deutsch-v3

Unterstützt eine Vielzahl von Anwendungsfällen.

Hinweis:

  • Geben Sie den OpenAI-kompatiblen Provider über provider_endpoint anstelle des Parameters provider an. Siehe Profilattribute.

  • Für Modelle, die Images akzeptieren, verwenden Sie meta.llama-3.2-90b-vision-instruct. Dieses Modell wird speziell für Vision und Bilder trainiert. Obwohl es für die Text- und SQL-Generierung verwendet werden kann, eignet sich das Modell am besten für Bilder. Weitere Informationen finden Sie unter Chat in OCI Generative AI.

    Das Modell meta.llama-3.2-11b-vision-instruct bietet robuste multimodale Funktionen.

  • Einbettungsmodelle werden auch als Transformatormodelle bezeichnet.

AI-Profile mit DBMS_CLOUD_AI konfigurieren

Autonome KI-Datenbank verwendet KI-Profile, um den Zugriff auf ein LLM zu erleichtern und zu konfigurieren und um SQL basierend auf Eingabeaufforderungen in natürlicher Sprache zu generieren, auszuführen und zu erläutern. Es erleichtert auch die Retrieval Augmented Generation mit Einbettungsmodellen und Vektorindizes und ermöglicht das Chatten mit dem LLM.

AI-Profile umfassen Datenbankobjekte, die das Ziel für Abfragen in natürlicher Sprache sind. Metadaten, die von diesen Zielen verwendet werden, können Datenbanktabellennamen, Spaltennamen, Spaltendatentypen und Kommentare enthalten. AI-Profile werden mit den Prozeduren DBMS_CLOUD_AI.CREATE_PROFILE und DBMS_CLOUD_AI.SET_PROFILE erstellt und konfiguriert.

Voraussetzungen für DBMS_CLOUD_AI

Zur Ausführung von DBMS_CLOUD_AI ist Folgendes erforderlich:

  • Zugriff auf einen Oracle Cloud Infrastructure-Cloud-Account und eine Autonomous AI Database-Instanz.
  • Ein kostenpflichtiger API-Account für einen unterstützten KI-Provider, einer der folgenden:
    • OpenAI: Um OpenAI zu ermöglichen, SQL aus Prompts in natürlicher Sprache zu generieren, rufen Sie API-Schlüssel aus Ihrem kostenpflichtigen OpenAI-Account ab.

      Sie finden den Secret-API-Schlüssel in Ihren Benutzereinstellungen.

    • Cohere: Um Cohere die Generierung von SQL aus Eingabeaufforderungen in natürlicher Sprache zu ermöglichen, rufen Sie API-Schlüssel von Ihrem kostenpflichtigen Cohere-Konto ab.

      Klicken Sie auf Dashboard und dann in der linken Navigation auf API-Schlüssel. Kopieren Sie den Standard-API-Schlüssel, oder erstellen Sie einen anderen Schlüssel. Weitere Informationen finden Sie unter API-Schlüssel.

    • Azure OpenAI Service: So aktivieren Sie Azure OpenAI Service, SQL aus Eingabeaufforderungen in natürlicher Sprache zu generieren, konfigurieren und erteilen Zugriff auf den AI-Provider.

      Führen Sie die folgenden Schritte aus, um Azure OpenAI Service zu verwenden:

      1. Rufen Sie Ihre geheimen API-Schlüssel ab. Sie finden Ihre API-Schlüssel im Abschnitt "Resource Management" Ihres Azure-Portals. Klicken Sie auf der Ressourcenseite für Azure OpenAI-Service auf Schlüssel und Endpunkt. Sie können entweder KEY1 oder KEY2 kopieren.
      2. Erstellen Sie eine Azure OpenAI-Serviceressource, und stellen Sie ein Modell bereit: Azure OpenAI-Serviceressource erstellen und bereitstellen.

        Tipp:

        • Beachten Sie den Ressourcennamen und den Deployment-Namen, da diese Parameter zur Bereitstellung der Netzwerkzugriffsberechtigung und zum Erstellen des Azure OpenAI Service-Profils mit der Prozedur DBMS_CLOUD_AI.CREATE_PROFILE verwendet werden.
        • Weitere Informationen zu Ratenlimits für Token pro Minute in einem Modell finden Sie unter Azure OpenAI-Servicequotas und -limits.
      3. Zugriff auf Azure OpenAI Service zulassen:
    • OCI Generative AI: Siehe So generieren Sie den API-Signaturschlüssel.
    • Google: Um Google AI Studio zu ermöglichen, SQL- und Textantworten auf Ihre Eingabeaufforderungen in natürlicher Sprache zu generieren, beziehen Sie API-Schlüssel aus Ihrem kostenpflichtigen Google AI Studio-Konto.
      1. Gehen Sie zu Google AI Studio.
      2. Klicken Sie auf "Bei Google AI Studio anmelden".
      3. Klicken Sie im Prompt-Fenster auf "API-Schlüssel abrufen".
      4. Wählen Sie auf der nächsten Seite alle zutreffenden Optionen aus.
      5. Klicken Sie auf "API-Schlüssel erstellen".
      6. Klicken Sie im neuen Projekt auf API-Schlüssel erstellen.

        Auf dem Bildschirm wird der Fortschritt angezeigt und ein API-Schlüssel generiert. Kopieren Sie den Schlüssel, und speichern Sie ihn.

    • Anthropisch: Damit Anthropic Developer Console SQL- und Textantworten für Eingabeaufforderungen in natürlicher Sprache generieren kann, rufen Sie API-Schlüssel aus Ihrem kostenpflichtigen Anthropic Developer Console-Konto ab.
      1. Rufen Sie die Anthropic Developer Console auf.
      2. Registrieren Sie sich für ein Konto, wenn Sie noch kein Konto haben.
      3. Navigieren Sie nach der Anmeldung zum API-Abschnitt oder zum Dashboard.
      4. Suchen Sie nach einer Option zum Generieren oder Anzeigen von API-Schlüsseln.
      5. Klicken Sie auf diese Option, um einen neuen API-Schlüssel zu erstellen.
      6. Kopieren Sie den generierten API-Schlüssel, und speichern Sie ihn.

        Die Claude API ist ein kostenpflichtiger Service. Sie müssen Ihrem Konto Guthaben hinzufügen, bevor Sie den API-Schlüssel verwenden können.

    • Hugging Face: Um Hugging Face als KI-Provider zum Generieren von SQL- und Textantworten auf Ihre Eingabeaufforderungen in natürlicher Sprache zu aktivieren, erhalten Sie API-Schlüssel aus Ihrem kostenpflichtigen Hugging Face-Konto.
      1. Gehen Sie zu Umarmung.
      2. Registrieren Sie sich für ein Konto, wenn Sie noch kein Konto haben.
      3. Navigieren Sie zu Ihren Kontoeinstellungen.
      4. Suchen Sie im Navigationsmenü die Zugriffstoken.
      5. Klicken Sie auf diese Option, um einen neuen API-Schlüssel zu erstellen.
      6. Kopieren Sie den generierten API-Schlüssel, und speichern Sie ihn.
    • AWS: Um AWS zu aktivieren, rufen Sie Ihren API-Schlüssel und Ihre Modell-ID ab.

      Rufen Sie Ihren API-Schlüssel ab, und verwenden Sie ihn, um Zugangsdaten über DBMS_CLOUD.CREATE_CREDENTIAL zu erstellen.

      Führen Sie den folgenden Prozess aus, um Ihren API-Schlüssel und Modellnamen abzurufen:

      1. Melden Sie sich für ein AWS-Konto an, wenn Sie noch keines haben.
      2. Erstellen Sie Ihre Zugriffstasten und Secret Keys in der AWS Bedrock-Konsole.
      3. Kopieren Sie die generierten Schlüssel, und speichern Sie sie.
      4. Fordern Sie Zugriff auf ihre Basismodelle an. Siehe Auf Amazon Bedrock-Grundlagenmodelle zugreifen.
      5. Rufen Sie die Modell-ID ab. Sie benötigen die Modell-ID in der Prozedur DBMS_CLOUD_AI.CREATE_PROFILE. Die Modell-ID hängt von den verwendeten Ressourcen ab. Wenn Sie verwenden:

        Hinweis:

        Das importierte Modell wird mit der Bedrock Converse API nicht unterstützt.

      Informationen zur Verwendung von AWS als Provider finden Sie unter Beispiel: KI mit AWS auswählen.

  • Netzwerk-ACL-Berechtigungen für den Zugriff auf Ihren externen AI-Provider.

    Hinweis:

    Netzwerk-ACL ist für OCI Generative AI nicht anwendbar.
  • Zugangsdaten, die Zugriff auf den AI-Provider ermöglichen.
So konfigurieren Sie DBMS_CLOUD_AI:
  1. Erteilen Sie dem Benutzer, der Select AI verwenden möchte, die Berechtigung EXECUTE für das Package DBMS_CLOUD_AI.

    Standardmäßig wird nur ADMIN-Benutzern die Berechtigung EXECUTE erteilt. Der ADMIN-Benutzer kann anderen Benutzern die Berechtigung EXECUTE erteilen.

    Das folgende Beispiel erteilt ADB_USER die Berechtigung EXECUTE:
    grant execute on DBMS_CLOUD_AI to ADB_USER;

    Im folgenden Beispiel wird ADB_USER die Berechtigung zur Verwendung des Endpunkts api.openai.com erteilt.

    BEGIN  
        DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
             host => 'api.openai.com',
             ace  => xs$ace_type(privilege_list => xs$name_list('http'),
                                 principal_name => 'ADB_USER',
                                 principal_type => xs_acl.ptype_db)
       );
    END;
    /
    
  2. Erteilen Sie dem Benutzer, der Select AI verwenden möchte, und dem AI-Providerendpunkt Netzwerk-ACL-Zugriff.

    Der ADMIN-Benutzer kann Netzwerk-ACL-Zugriff erteilen. Weitere Informationen finden Sie unter Prozedur APPEND_HOST_ACE in Oracle Database 19c PL/SQL-Packages and Types Reference oder Oracle Database 26ai PL/SQL Packages and Types Reference.

  3. Erstellen Sie Zugangsdaten, um den Zugriff auf Ihren AI-Provider zu ermöglichen.

    Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.

    Im Folgenden finden Sie ein Beispiel für das Erstellen von Zugangsdaten, um den Zugriff auf OpenAI zu ermöglichen.

    EXEC DBMS_CLOUD.CREATE_CREDENTIAL('OPENAI_CRED', 'OPENAI', 'your_api_token');

APPEND_HOST_ACE-Funktionsparameter

Parameter Beschreibung

host

Der Host, bei dem es sich um den Namen oder die IP-Adresse des Hosts handeln kann. Sie können einen Platzhalter verwenden, um eine Domain oder ein IP-Subnetz anzugeben. Beim Host- oder Domainnamen ist die Groß-/Kleinschreibung nicht zu beachten.

Verwenden Sie für OpenAI api.openai.com.

Verwenden Sie für Cohere api.cohere.ai.

Verwenden Sie für Azure OpenAI Service <azure_resource_name>.openai.azure.com. Weitere Informationen zu azure_resource_name finden Sie unter Profilattribute.

Für Google verwenden Sie generativelanguage.googleapis.com.

Verwenden Sie für Anthropic api.anthropic.com.

Um das Gesicht zu umarmen, verwenden Sie api-inference.huggingface.co.

ace

Die Access Control-Einträge (ACE). Der Typ XS$ACE_TYPE wird angegeben, um jeden ACE-Eintrag für die ACL zu erstellen. Weitere Informationen finden Sie unter Creating ACLs and ACEs in Oracle Database 19c Real Application Security Administrator's and Developer's Guide oder Oracle Database 26ai Real Application Security Administrator's and Developer's Guide.

DBMS_CLOUD.CREATE_CREDENTIAL-Parameter

Parameter Beschreibung

credential_name

Der Name der zu speichernden Zugangsdaten. Der Parameter credential_name muss den Oracle-Konventionen für Objektnamen entsprechen, die keine Leerzeichen oder Bindestriche zulassen.

username

Mit den Argumenten username und password werden Ihre Zugangsdaten für AI-Provider angegeben.

username ist ein benutzerdefinierter Benutzername.

password

Mit den Argumenten username und password werden Ihre Zugangsdaten für AI-Provider angegeben.

Die password ist Ihr Secret-API-Schlüssel für KI-Provider und hängt vom Provider ab, d.h. OpenAI, Cohere, Azure OpenAI Service, OCI, Google, Anthropic oder Hugging Face. Einzelheiten hierzu finden Sie unter .

AI-Profil erstellen und festlegen

Beschreibt die Schritte zum Erstellen und Aktivieren eines AI-Profils.

Verwenden Sie DBMS_CLOUD_AI.CREATE_PROFILE, um ein AI-Profil zu erstellen. Starten Sie als Nächstes DBMS_CLOUD_AI.SET_PROFILE, um das AI-Profil zu aktivieren, sodass Sie SELECT AI mit einer Eingabeaufforderung in natürlicher Sprache verwenden können.

Hinweis:

Sie müssen DBMS_CLOUD_AI.SET_PROFILE in jeder neuen Datenbanksession (Verbindung) ausführen, bevor Sie SELECT AI verwenden.

Im folgenden Beispiel mit dem OpenAI-Provider wird ein AI-Profil mit dem Namen OPENAI erstellt und das OPENAI-Profil für die aktuelle Benutzersession festgelegt.

-- Create AI profile
--
SQL> BEGIN
  DBMS_CLOUD_AI.create_profile(
      'OPENAI',
      '{"provider": "openai",
        "credential_name": "OPENAI_CRED",
        "object_list": [{"owner": "SH", "name": "customers"},
                        {"owner": "SH", "name": "sales"},
                        {"owner": "SH", "name": "products"},
                        {"owner": "SH", "name": "countries"}]
       }');
END;
/
 
PL/SQL procedure successfully completed.
 
--
-- Enable AI profile in current session
--
SQL> EXEC DBMS_CLOUD_AI.set_profile('OPENAI');
 
PL/SQL procedure successfully completed.

Eingabeaufforderungen mit AI-Schlüsselwort eingeben

Verwenden Sie AI als Schlüsselwort in einer SELECT-Anweisung für die Interaktion mit der Datenbank mit Eingabeaufforderungen in natürlicher Sprache.

Das Schlüsselwort AI in einer SELECT-Anweisung weist die SQL-Ausführungs-Engine an, mit dem im aktiven AI-Profil angegebenen LLM die natürliche Sprache zu verarbeiten und SQL zu generieren.

Sie können das Schlüsselwort AI in einer Abfrage mit Oracle-Clients wie SQL Developer, OML-Notizbüchern und Tools von Drittanbietern verwenden, um mit der Datenbank in natürlicher Sprache zu interagieren.

Hinweis:

Mit dem Schlüsselwort AI können Sie keine PL/SQL-Anweisungen, DDL-Anweisungen oder DML-Anweisungen ausführen.

Syntax

Die Syntax zum Ausführen der AI-Eingabeaufforderung lautet:
SELECT AI action natural_language_prompt

Parameter

Die folgenden Parameter sind für den Parameter action verfügbar:
Parameter Beschreibung

runsql

Führen Sie den angegebenen SQL-Befehl mit einer Eingabeaufforderung in natürlicher Sprache aus. Dies ist die Standardaktion. Sie können diesen Parameter optional angeben.

showsql

Zeigt die SQL-Anweisung für einen Prompt in natürlicher Sprache an.

narrate

Die Ausgabe der Eingabeaufforderung wird in natürlicher Sprache erklärt. Diese Option sendet das SQL-Ergebnis an den AI-Provider, um eine Übersicht in natürlicher Sprache zu erstellen.

chat

Generiert eine Antwort direkt aus dem LLM basierend auf dem Prompt. Wenn conversation in der Funktion DBMS_CLOUD_AI.CREATE_PROFILE auf true gesetzt ist, enthält diese Option Inhalt aus früheren Interaktionen oder Prompts, möglicherweise einschließlich Schemametadaten.

explainsql

Die aus der Eingabeaufforderung generierte SQL wird in natürlicher Sprache erläutert. Diese Option sendet die generierte SQL an den AI-Provider, um eine Erklärung in natürlicher Sprache zu erstellen.

Verwendungshinweise

  • Die Option AI wird in Database Actions oder im APEX-Service nicht unterstützt. Sie können nur die Funktion DBMS_CLOUD_AI.GENERATE verwenden.

  • Das Schlüsselwort AI wird nur in einer SELECT-Anweisung unterstützt.

  • Mit dem Schlüsselwort AI können Sie keine PL/SQL-Anweisungen, DDL-Anweisungen oder DML-Anweisungen ausführen.

  • Die Sequenz lautet SELECT, gefolgt von AI. Bei diesen Schlüsselwörtern wird nicht zwischen Groß- und Kleinschreibung unterschieden. Nachdem eine DBMS_CLOUD_AI.SET_PROFILE konfiguriert wurde, ist der Text nach SELECT AI eine Eingabeaufforderung in natürlicher Sprache. Wenn kein AI-Profil festgelegt ist, meldet SELECT AI den folgenden Fehler:

    ORA-00923: FROM keyword not found where expected
    00923. 00000 -  "FROM keyword not found where expected"
  • Für die Verwendung von Sonderzeichen gelten die Oracle-Richtlinien. Verwenden Sie beispielsweise zwei einfache Anführungszeichen, wenn Sie ein Apostroph in einem Satz verwenden.

    select ai how many customers in SF don''t own their own home
  • LLMs unterliegen Halluzinationen, und die Ergebnisse sind nicht immer korrekt:

    • Möglicherweise kann SELECT AI die generierte SQL für eine bestimmte Eingabeaufforderung in natürlicher Sprache nicht ausführen.

    • Möglicherweise kann SELECT AI keine SQL für eine bestimmte Eingabeaufforderung in natürlicher Sprache generieren.

    In einem solchen Szenario antwortet SELECT AI mit Informationen, die Sie beim Generieren von gültigem SQL unterstützen.

  • Verwenden Sie die Aktion chat mit SELECT AI chat, um mehr über SQL-Konstrukte zu erfahren. Um bessere Ergebnisse mit der Aktion chat zu erzielen, verwenden Sie Datenbankansichten oder Tabellen mit kontextbezogenen Spaltennamen, oder fügen Sie Spaltenkommentare hinzu, die Werte erläutern, die in den Spalten gespeichert sind.

  • Informationen zum Zugriff auf DBA- oder USER-Ansichten finden Sie unter DBMS_CLOUD_AI-Ansichten.

Unterhaltungen verwenden und anpassen

Unterhaltungen in Select AI beziehen sich auf den interaktiven Dialog zwischen dem Benutzer und dem System, in dem eine Folge von vom Benutzer bereitgestellten Eingabeaufforderungen in natürlicher Sprache gespeichert und verwaltet wird, um das Langzeitgedächtnis für LLM-Interaktionen zu unterstützen.

Select AI unterstützt kurzfristige, sitzungsbasierte Unterhaltungen, die im AI-Profil aktiviert sind, sowie langfristige, benannte Unterhaltungen, die mit bestimmten Prozeduren oder Funktionen und Unterhaltungs-IDs aktiviert werden.

Hinweis:

Die Unterstützung für ausgewählte KI-Unterhaltungen ist ab Version 19.30 in Oracle Database 19c und ab Version 23.26.1 in Oracle Database 26ai verfügbar.

Unterhaltungstypen

Select AI unterstützt Session-basierte Kurzzeitgespräche und anpassbare Unterhaltungen.

Sessionbasierte kurzfristige Unterhaltungen: Die ausgewählte KI umfasst sessionbasierte kurzfristige Unterhaltungen, um kontextbezogene Antworten für den aktuellen Prompt basierend auf vorherigen Interaktionen zu generieren.

Sie können es aktivieren, indem Sie das Attribut conversation in Ihrem AI-Profil auf true|false setzen. Im Gegensatz zur Funktion für mehrere Unterhaltungen speichern sessionbasierte Unterhaltungen Prompts nur für die Dauer der Session. Prompts werden in einer temporären Tabelle gespeichert und nach Beendigung der Session automatisch gelöscht. Sie können nicht wiederverwendet und zwischen Unterhaltungen gewechselt werden.

Anpassbare langfristige Unterhaltungen: Die Auswahl von KI unterstützt das Erstellen und Verwenden anpassbarer Unterhaltungen, mit denen Sie Select AI mit verschiedenen Themen verwenden können, ohne Kontext zu kombinieren. Dadurch werden Flexibilität und Effizienz verbessert. Sie können Unterhaltungen über die DBMS_CLOUD_AI-Unterhaltungsprozeduren und -funktionen erstellen, festlegen, löschen und aktualisieren. Wenn Sie Unterhaltungen aktivieren, ruft Select AI die Prompt-Historie ab und sendet sie an das LLM, um eine Antwort für den aktuellen Prompt zu generieren. Diese Antworten werden zur späteren Verwendung in einer persistenten Tabelle gespeichert.

Hinweis:

Die Option "KI-Unterhaltungen" unterstützt die folgenden Aktionen: runsql, showsql, explainsql, narrate und chat.

Benutzerdefinierbare Unterhaltungen verwenden

Sie können Select AI für anpassbare Unterhaltungen wie folgt verwenden:

  • Legen Sie die Unterhaltungs-ID in der Session mit der Prozedur DBMS_CLOUD_AI.SET_CONVERSATION_ID fest, und führen Sie SELECT AI <ACTION> <PROMPT> aus.

  • Übergeben Sie die conversation_id im Argument params der Funktion DBMS_CLOUD_AI.GENERATE.

Hinweis:

Wenn Sie sowohl mehrere Unterhaltungen als auch die Einstellung conversation: [true|false] verwenden, ignoriert das System die Einstellung conversation.

Im Kontext der Generierung von SQL-Abfragen (NL2SQL) ermöglichen Unterhaltungen eine intuitivere und zugänglichere Möglichkeit, mit Ihren Daten zu arbeiten. So können Benutzer einfacher Erkenntnisse gewinnen und Aufgaben ausführen, ohne umfassende technische Kenntnisse über SQL zu benötigen. Unterhaltungen können auch mit Chat- und RAG-Funktionen von Select AI verwendet werden.

Unterhaltungen bieten beispielsweise eine intuitive Möglichkeit, Daten zu analysieren:
  • Stellen Sie eine Frage wie "Wie hoch ist die Gesamtzahl der Kunden?"
  • Nachfassen mit kontextbezogenen Fragen wie:
    • "Anzahl der Kunden nach Ländern"
    • "Welche Altersgruppe ist am häufigsten?"
    • "Behalten Sie die Top 5-Kunden und ihr Land durch ihre Einkäufe und geben Sie einen Rang in das Ergebnis ein"

Ein vollständiges Beispiel finden Sie unter Beispiel: Unterhaltungen in "KI auswählen" aktivieren.

Sessionbasierte Unterhaltungen ggü. anpassbaren Unterhaltungen

In der folgenden Tabelle werden die sessionbasierte Unterhaltung und die anpassbaren Unterhaltungen in Select AI verglichen:

Fragen Sessionbasierte kurzfristige Unterhaltungen Anpassbare langfristige Unterhaltungen

Wann verwende ich?

Am besten für schnelle, temporäre Chats, bei denen sich das Modell die letzten Fragen und Antworten während einer einzigen Sitzung merken soll. Es ist nützlich, wenn Sie die Unterhaltung nicht speichern oder später wiederverwenden müssen.

Entwickelt für längere oder laufende Gespräche, die sich über mehrere Sitzungen erstrecken können. Sie ist nützlich, wenn Sie die Unterhaltungshistorie verfolgen, prüfen oder verwalten möchten oder wenn verschiedene Teile einer Anwendung im Laufe der Zeit auf denselben Unterhaltungskontext zugreifen müssen.

Wie aktiviere ich?

Legen Sie {"conversation": true or false} in Ihrem AI-Profil fest.

Verwenden Sie die Prozedur DBMS_CLOUD_AI.SET_CONVERSATION_ID oder die Prozedur DBMS_CLOUD_AI.GENERATE

Wie viele Gespräche sind erlaubt?

Eins.

Sie können mehrere Unterhaltungen erstellen.

Wenn Sie Konversationskennungen explizit angeben, können Sie zwischen ihnen wechseln, um Prompts den entsprechenden Konversationen nach Bedarf zuzuordnen.

Wo werden Prompts gespeichert und wie lange?

Prompts werden in einer temporären Tabelle gespeichert und nach Beendigung der Session gelöscht.

Prompts werden in einer permanenten Tabelle gespeichert.

Prompts werden in der Datenbank für die Anzahl der Tage aufbewahrt, die der Parameter retention_days in der Prozedur DBMS_CLOUD_AI.CREATE_CONVERSATION angegeben hat. Nach dem Aufbewahrungszeitraum werden die Unterhaltung und ihre Prompts automatisch gelöscht. Sie können Prompts auch manuell mit der Prozedur DBMS_CLOUD_AI.DELETE_CONVERSATION_PROMPT löschen.

Wie viele Prompts werden gespeichert und wie viele Prompts werden an das LLM gesendet?

Es werden maximal 10 Prompts gespeichert und an das LLM gesendet. Sie können dieses Limit nicht anpassen.

Alle Prompts werden gespeichert.

Standardmäßig sendet das System die 10 neuesten Prompts an das LLM. Sie können dies mit dem Parameter conversation_length anpassen. Siehe CREATE_CONVERSATION Attribute.

Kann ich einzelne Prompts löschen?

Nein, Sie können einzelne Prompts nicht manuell löschen.

Sie können bestimmte einzelne Prompts löschen, indem Sie die in der USER_CLOUD_AI_CONVERSATION_PROMPTS-Ansicht angegebene Prompt-ID verwenden und die Prozedur DBMS_CLOUD_AI.DELETE_CONVERSATION_PROMPT verwenden.

Werden KI-Profile zum Abrufen von Unterhaltungen verwendet?

Ja, "KI auswählen" ruft Prompts und Antworten ab, die zuvor mit demselben KI-Profil generiert wurden.

Nein, Select AI verfolgt das KI-Profil, das beim Speichern von Prompts und Antworten verwendet wird, schränkt den Abruf jedoch nicht auf Basis dieses Profils ein. Es sendet alle Unterhaltungshistorien an das LLM, um die Antwortgenerierung zu leiten, unabhängig vom Profil, mit dem sie generiert wurden.

Wo kann ich die Historie von Prompts prüfen?

Prompts werden in einer temporären Tabelle unter CLOUD USER gespeichert, können jedoch nicht abgefragt werden.

Sie können Unterhaltungen und Prompts über die Unterhaltungsansichten DBMS_CLOUD_AI abfragen und prüfen. Weitere Informationen finden Sie unter DBMS_CLOUD_AI Views.

Feedback zur Verbesserung von LLMs geben

Mit Select AI können Sie Feedback geben, um die Fähigkeit Ihres ausgewählten LLM zu verbessern, genauere SQL-Abfragen zu generieren.

Hinweis:

Diese Funktion ist nur in Oracle Database 23ai verfügbar. Sie können sie zusammen mit den vorhandenen Select AI-Aktionen verwenden: runsql, showsql und explainsql. Stellen Sie sicher, dass Ihr AI-Profil für die NL2SQL-Generierung und nicht für RAG konfiguriert ist.

Sie können Feedback geben, um die Genauigkeit der generierten SQL über die Aktion feedback oder die Prozedur DBMS_CLOUD_AI.FEEDBACK zu verbessern. Wählen Sie "KI" aus, um einen Standardvektorindex namens <profile_name>_FEEDBACK_VECINDEX mit Standardattributen zu erstellen, wenn Sie das Feedbackfeature zum ersten Mal verwenden. Mit diesem Index können Sie zukünftig generierte SQL basierend auf dem Feedback verfeinern. Weitere Informationen finden Sie unter Vector-Index für FEEDBACK.

Tipp:

Verwenden Sie die Prozedur DBMS_CLOUD_AI.FEEDBACK, wenn das angegebene LLM die korrekte SQL-Abfrage nicht generieren kann oder nicht das erwartete Ergebnis aus einer der NL2SQL SELECT AI-Aktionen zurückgibt. Sie können auch die Prozedur DBMS_CLOUD_AI.FEEDBACK verwenden, um die korrekte SQL direkt zur Vektortabelle hinzuzufügen. Dies hilft bei der zukünftigen SQL-Generierung, indem es als Referenz für ähnliche Prompts dient.

Die folgenden Feedbacktypen werden akzeptiert:
  • Positives Feedback: Sie genehmigen und bestätigen die Richtigkeit des generierten SQL. Das System speichert die bestätigte Abfrage zur späteren Referenz.

  • Negatives Feedback: Wenn die Ergebnisse Ihrer NL2SQL SELECT AI-Aktion nicht die richtige SQL generieren, können Sie die erforderlichen SQL-Abfrageverbesserungen mit SELECT AI feedback <feedback> oder der DBMS_CLOUD_AI.FEEDBACK-Prozedur bereitstellen, indem Sie Fehler in der Abfrage identifizieren oder Anleitungen dazu geben, was in Prosa erwartet wurde. Das System verfeinert die Abfrage mit einem LLM und speichert die verfeinerte Version für die zukünftige Generierung von Select AI-Abfragen. Die gespeicherten verfeinerten Abfragen werden dann als Hints verwendet und als Teil der erweiterten Eingabeaufforderung an das LLM gesendet.

Vorteile der Verwendung von Feedback

Mit der Feedbackaktion und -prozedur in Select AI wird ein Prompt Tuning-Mechanismus eingeführt, der die Genauigkeit der SQL-Abfragegenerierung verbessert.

Der Eigentümer des KI-Profils kann Feedback für generierte SQL-Abfragen geben, und das Select AI-System lernt von der Benutzerinteraktion im Laufe der Zeit. Bei dieser Schulung wird ein Repository mit Prompts und Feedbackinhalten zusammengefasst, in dem die Vektorsuche verwendet wird, um Prompts zu identifizieren, die Ihrer aktuellen Eingabeaufforderung ähneln. Die Top-Matching-Beispiele werden als Metadaten für das LLM als Teil der erweiterten Eingabeaufforderung bereitgestellt. Die folgenden Vorteile sind:
  • Kann die Genauigkeit von SQL-Abfragen verbessern.
  • Ermöglicht es dem Eigentümer des KI-Profils, Feedback zu geben, indem er die richtigen Abfragen bestätigt oder Korrekturen vorschlägt, indem er die semantische Absicht oder Geschäftsdefinitionen bereitstellt, um eine korrekte Abfrage zu erstellen.
  • Verwendet historisches Feedback als Hinweise für die zukünftige Abfragegenerierung und passt sich damit Ihren Anforderungen an.

Wie man Feedback gibt

Mit "KI auswählen" können Sie Feedback geben, indem Sie die Aktion feedback verwenden oder die Prozedur DBMS_CLOUD_AI.FEEDBACK aufrufen.

Achtung:

Verwenden Sie die Feedbackaktion nicht in Anwendungen, in denen mehrere Benutzer Datenbanksessions unter einem einzelnen Datenbankbenutzer teilen, der Eigentümer des KI-Profils ist. Der Eigentümer des KI-Profils sollte erst Feedback geben, nachdem er bestätigt hat, dass die korrigierte Abfrage für alle Benutzer dieses Profils geeignet ist.

Sie können Feedback geben, indem Sie Folgendes angeben:
  • SQL_TEXT: Nehmen Sie das Feedback in Anführungszeichen für die aktuelle SQL-Abfrage auf, oder Sie können die SQL_TEXT für eine bestimmte Abfrage abrufen, indem Sie die V$MAPPED_SQL-Ansicht abfragen.

  • SQL_ID: Sie können die SQL_ID abrufen, indem Sie die V$MAPPED_SQL-Ansicht abfragen.

  • Verwenden Sie die zuletzt generierte SQL: Geben Sie Ihr Feedback in natürlicher Sprache an.

    Hinweis:

    Um die letzte SQL zu verwenden, stellen Sie sicher, dass die Serverausgabe in Oracle SQL*Plus oder Oracle SQLcl deaktiviert ist. Sie benötigen die Berechtigung READ für die Tabellen sys.v_$session und v_$mapped_sql.
    GRANT READ ON SYS.V_$MAPPED_SQL TO ADB_USER;
    GRANT READ ON SYS.V_$SESSION TO ADB_USER;

Weitere Informationen finden Sie unter FEEDBACK-Prozedur und Beispiel: KI-FEEDBACK auswählen.

Diagrammdaten mit Eigenschaftsdiagrammen abfragen

Select AI generiert Property Graph Query (PGQ) in Oracle Property Graphs in natürlicher Sprache. Damit können Benutzer Diagrammdaten mit minimalem SQL-Kenntnis über den Operator GRAPH_TABLE abfragen.

Select AI erweitert seine natürliche Sprache auf die SQL-Funktion (NL2SQL), um Strukturen zu grafisieren, mit denen Sie SQL-Eigenschaftsdiagramme in natürlicher Sprache abfragen können. Select AI wendet den Operator GRAPH_TABLE an, um Beziehungen und Attribute in grafisch strukturierten Daten zu interpretieren. Er generiert SQL- oder PGQ-Diagrammabfragen basierend auf den im AI-Profil definierten Datenobjekten. Wenn ein Eigenschaftsdiagramm im KI-Profil enthalten ist, verwendet Select AI generative KI, um eine PGQ-Abfrage zu erstellen, die das Diagramm über den Operator GRAPH_TABLE referenziert. Das LLM empfängt automatisch die Metadaten des Diagrammobjekts, wie CREATE PROPERTY GRAPH-Anweisungen, um genaue Abfragen zu generieren. Wenn eine Tabelle, eine View oder ein relationales Objekt angegeben wird, generiert Select AI eine SQL-Abfrage. Diese Funktion vereinfacht Musterabgleichsabfragen zu Diagrammdaten, die in Oracle AI Database gespeichert sind, und reduziert die Abhängigkeit vom manuellen Erstellen von SQL-Abfragen.

Wenn Sie ein AI-Profil mit mindestens einem Eigenschaftsdiagramm erstellen, das im Attribut object_list definiert ist, interpretiert das im AI-Profil definierte LLM Prompts anhand des Kontexts der angegebenen Eigenschaftsdiagramme. Select AI erstellt einen erweiterten Prompt, der Folgendes umfasst:
  • Anweisungen zum Erstellen von PGQ-Abfragen.

  • Metadaten, in denen die angegebenen Eigenschaftsdiagramme beschrieben werden (aus ihren CREATE PROPERTY GRAPH-Anweisungen).

Dieser erweiterte Prompt wird an das LLM gesendet. Select AI führt die Abfrage aus und gibt Ergebnisse zurück. Wenn ein Eigenschaftsdiagramm zusammen mit anderen Objekttypen wie Tabellen, Schemas oder Views im AI-Profil angegeben wird, löst Select AI einen Fehler aus.

SQL im Vergleich zu PGQ

Bei Select AI hängt der Typ der generierten Abfrage von den Objekten ab, die im Attribut object_list Ihres AI-Profils definiert sind.
  • SQL-Abfrage: verwendet relationale Daten wie Schema, Tabellen oder Views.

  • PGQ-Abfrage: verwendet Eigenschaftsdiagramme und wendet den Operator GRAPH_TABLE für den Musterabgleich an.

Weitere Informationen finden Sie unter SQL-Eigenschaftsdiagramm und SQL-GRAPH-Abfragen.

Vorteile der Verwendung ausgewählter KI in Eigenschaftsdiagrammen

Datenbankbenutzer können Eigenschaftsdiagramme mit Select AI abfragen, um Diagrammabfragen in natürlicher Sprache zu generieren, wodurch manuelle Arbeit reduziert und das Verständnis von Diagrammbeziehungen verbessert wird.

Hauptvorteile:
  • NL2SQL: Die NL2SQL-Funktion von AI wird jetzt auf Diagrammabfragen erweitert, mit denen Benutzer Eingabeaufforderungen in natürlicher Sprache schreiben können, wie "Kunden suchen, die ein Kleid gekauft haben".

  • SQL oder PGQ: Je nach Datenobjekt generiert Select AI automatisch eine SQL- oder PGQ-Abfrage.

  • Produktivität: Reduziert Zeit und Aufwand beim Erstellen von Diagrammabfragen mit dem Operator GRAPH_TABLE.

  • Unterhaltungen: Behält Unterhaltungskontext bei und fragt ein Eigenschaftsdiagramm ab.

Einschränkungen

Die Option "AI für Eigenschaftsdiagramme auswählen" unterstützt die folgenden Funktionen nicht:

So verwenden Sie ausgewählte KI in Eigenschaftsdiagrammen

Mit "KI auswählen" können Sie Diagrammdaten mit der Funktion DBMS_CLOUD_AI.GENERATE oder mit Select AI <action> <prompt> untersuchen.

Nachdem Sie Eigenschaftsdiagramme im Attribut object_list Ihres AI-Profils definiert haben, können Sie Folgendes verwenden:
  • SELECT AI <ACTION> <PROMPT> in der SQL-Befehlszeile, um eine Ausgabe zu generieren.

  • DBMS_CLOUD_AI.GENERATE-Funktion und geben Sie den Prompt innerhalb der Funktion an.

Die folgenden Aktionen werden unterstützt: runsql, showsql, explainsql, narrate und showpropmt. Select AI for Property Graph unterstützt auch sessionbasierte kurzfristige und anpassbare langfristige Unterhaltungen.

Weitere Informationen finden Sie unter Beispiel: AI für Eigenschaftsdiagramme auswählen und Beispiel: Beispiel-Prompts für Eigenschaftsdiagramme.

Beispiele für die Verwendung von Select AI

Erfahren Sie, wie Sie die Select AI von Oracle mit verschiedenen unterstützten KI-Providern integrieren, um SQL aus Eingabeaufforderungen in natürlicher Sprache zu generieren, auszuführen und zu erklären oder mit dem LLM zu chatten.

Beispiel: AI-Aktionen auswählen

Das folgende Beispiel zeigt Aktionen wie runsql (Standard), showsql, narrate, chat, explainsql, feedback und summarize, die Sie mit SELECT AI ausführen können. In diesen Beispielen wird das Schema sh mit AI-Provider- und Profilattributen verwendet, die in der Funktion DBMS_CLOUD_AI.CREATE_PROFILE angegeben sind. Verwenden Sie "AI-Aktionen auswählen", nachdem Sie Ihr AI-Profil mit der Prozedur DBMS_CLOUD_AI.SET_PROFILE in der aktuellen Session festgelegt haben.

Um eine Übersicht über den Text zu generieren, verwenden Sie SELECT AI SUMMARIZE <TEXT>.

SQL> select ai how many customers exist;
 
CUSTOMER_COUNT
--------------
         55500
 
SQL> select ai showsql how many customers exist;
 
RESPONSE
----------------------------------------------------
SELECT COUNT(*) AS total_customers
FROM SH.CUSTOMERS
 
 
SQL> select ai narrate how many customers exist;
 
RESPONSE
------------------------------------------------------
There are a total of 55,500 customers in the database.
 
SQL> select ai chat how many customers exist;
 
RESPONSE
--------------------------------------------------------------------------------
It is impossible to determine the exact number of customers that exist as it con
stantly changes due to various factors such as population growth, new businesses
, and customer turnover. Additionally, the term "customer" can refer to individu
als, businesses, or organizations, making it difficult to provide a specific num
ber.


SQL> select ai explainsql how many customers in San Francisco are married;
 
RESPONSE
--------------------------------------------------------------------------------
SELECT COUNT(*) AS customer_count
FROM SH.CUSTOMERS AS c
WHERE c.CUST_STATE_PROVINCE = 'San Francisco' AND c.CUST_MARITAL_STATUS = 'Married';
 
Explanation:
- We use the 'SH' table alias for the 'CUSTOMERS' table for better readability.
- The query uses the 'COUNT(*)' function to count the number of rows that match the given conditions.
- The 'WHERE' clause is used to filter the results:
  - 'c.CUST_STATE_PROVINCE = 'San Francisco'' filters customers who have 'San Francisco' as their state or province.
  - 'c.CUST_MARITAL_STATUS = 'Married'' filters customers who have 'Married' as their marital status.
The result of this query will give you the count of customers in San Francisco who are married, using the column alias 'customer_count' for the result.
 
Remember to adjust the table and column names based on your actual schema if they differ from the example.
 
Feel free to ask if you have more questions related to SQL or database in general.

-- Feedback on SQL Text
-- Negative feedback example:
SQL > select ai feedback for query "select ai showsql how many watch histories in total", please use sum instead of count;
-- Positive feedback example:
SQL > select ai feedback for query "select ai showsql how many watch histories in total", the sql query generated is correct;
 
-- Feedback on SQL ID
-- Negative feedback example:
SQL > select ai feedback please use sum instead of count for sql_id  1v1z68ra6r9zf;
-- Positive feedback example:
SQL > select ai feedback sql query result is correct for sql_id  1v1z68ra6r9zf;
 
-- If not specified, use default LASTAI SQL
-- To use default LASTAI sql, make sure that set server output off;
-- Negative feedback example:
SQL > select ai feedback please use ascending sorting for ranking;
-- Positive feedback example:
SQL > select ai feedback the result is correct;

SQL> SELECT AI SUMMARIZE
Like countless other people around the globe, I stream music, and like more
than six hundred million of them I mainly use Spotify. Streaming currently
accounts for about eighty per cent of the American recording industry’s
revenue, and in recent years Spotify’s health is often consulted as a measure
for the health of the music business over all. Last spring, the International
Federation of the Phonographic Industry reported global revenues of $28.6
billion, making for the ninth straight year of growth. All of this was
unimaginable in the two-thousands, when the major record labels appeared
poorly equipped to deal with piracy and the so-called death of physical media.
On the consumer side, the story looks even rosier. Adjusted for inflation, a
 
... (skipped 1000 rows in the middle)
 
Pelly writes of some artists, in search of viral fame, who surreptitiously use
social media to effectively beta test melodies and motifs, basically putting
together songs via crowdsourcing. Artists have always fretted about the
pressure to conform, but the data-driven, music-as-content era feels
different. “You are a Spotify employee at that point,” Daniel Lopatin, who
makes abstract electronic music as Oneohtrix Point Never, told Pelly. “If your
art practice is so ingrained in the brutal reality that Spotify has outlined
for all of us, then what is the music that you’re not making? What does the
music you’re not making sound like?” Listeners might wonder something similar.
What does the music we’re not hearing sound like?;
 
 
RESPONSE
------------------------------------------------------------------------------
The music streaming industry, led by Spotify, has revolutionized the way
people consume music, with streaming accounting for 80% of the American
recording industry's revenue. However, this shift has also complicated the
lives of artists, who struggle to survive in a hyper-abundant present where
music is often valued for its convenience rather than its artistic merit.
Spotify's algorithms prioritize popularity and profitability over artistic
diversity, leading to a homogenization of music and a devaluation of the
labor that goes into creating it. Meanwhile, the company's executives reap
enormous profits, with CEO Daniel Ek's net worth rivaling that of the
wealthiest musicians. As music critic Liz Pelly argues, the streaming economy
raises important questions about autonomy, creativity, and the value of art
in a world where everything is readily available and easily accessible.

Beispiel: AI mit AWS auswählen

Dieses Beispiel zeigt, wie Sie mit AWS SQL aus Eingabeaufforderungen in natürlicher Sprache generieren, ausführen und erklären oder mit den mit AWS verfügbaren Modellen chatten können.

Das folgende Beispiel zeigt, wie AWS als KI-Anbieter mit Amazon Bedrock und seinen Basismodellen verwendet wird. Das Beispiel zeigt das Erstellen von AWS-Zugangsdaten, das Bereitstellen von Netzwerkzugriff, das Erstellen eines KI-Profils und die Verwendung von Select AI-Aktionen, um SQL-Abfragen aus Eingabeaufforderungen in natürlicher Sprache zu generieren und mit den AWS-Grundlagenmodellen zu chatten.

Um AWS zu verwenden, rufen Sie den Zugriffsschlüssel, die Secret Keys und die Modell-ID ab. Siehe hier. Verwenden Sie die Modell-ID als Attribut model in der Prozedur DBMS_CLOUD_AI.CREATE_PROFILE. Sie müssen das Attribut model explizit angeben, da kein Standardmodell angegeben ist.

--Grant EXECUTE privilege to ADB_USER
GRANT EXECUTE on DBMS_CLOUD_AI to ADB_USER; 

--
-- Create Credential for AI provider
--
BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'AWS_CRED',
        username    => '<your_AWS_access_key>',
        password    => '<your_AWS_secret_key>'
      );
END;
/
 
PL/SQL procedure successfully completed.
 
 
--
-- Grant Network ACL for AWS
--
BEGIN
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => 'bedrock-runtime.us-east-1.amazonaws.com',
        ace  => xs$ace_type(privilege_list => xs$name_list('http'),
                    principal_name => 'ADB_USER',
                    principal_type => xs_acl.ptype_db)
       );
END;
/
 
PL/SQL procedure successfully completed.
 


--
-- Create AI profile 
--
BEGIN
      DBMS_CLOUD_AI.CREATE_PROFILE(
        profile_name =>'AWS',
        attributes   =>'{"provider": "aws",
          "credential_name": "AWS_CRED",
          "object_list": [{"owner": "SH", "name": "customers"},                
                        {"owner": "SH", "name": "countries"},                
                        {"owner": "SH", "name": "supplementary_demographics"},
                        {"owner": "SH", "name": "profits"},                  
                        {"owner": "SH", "name": "promotions"},               
                        {"owner": "SH", "name": "products"}],
           "model" : "anthropic.claude-v2",
           "conversation" : "true"
          }');
END;
/
 
 
PL/SQL procedure successfully completed.


--
-- Enable AI profile in current session
--
EXEC DBMS_CLOUD_AI.SET_PROFILE('AWS');

PL/SQL procedure successfully completed.
 
--
-- Use AI
--

SELECT AI how many customers exist;
"RESPONSE"
"COUNT(*)"
55500


SELECT AI how many customers in San Francisco are married;
"RESPONSE"
"COUNT(*)"
46

SELECT AI showsql how many customers in San Francisco are married;
"RESPONSE"
"SELECT COUNT(*) AS "Number of Married Customers in San Francisco"
FROM "SH"."CUSTOMERS" C
WHERE UPPER(C."CUST_CITY") = UPPER('San Francisco')
AND UPPER(C."CUST_MARITAL_STATUS") = UPPER('Married')"

SELECT AI explainsql how many customers in San Francisco are married;

"RESPONSE""SELECT 
COUNT(*) AS "Number of Married Customers in San Francisco"
FROM "SH"."CUSTOMERS" C
WHERE C."CUST_CITY" = 'San Francisco'
AND C."CUST_MARITAL_STATUS" = 'Married'

Explanation:
- Used table alias C for CUSTOMERS table
- Used easy to read column names like CUST_CITY, CUST_MARITAL_STATUS
- Enclosed table name, schema name and column names in double quotes 
- Compared string values in WHERE clause without UPPER() since the values are not in double quotes
- Counted number of rows satisfying the condition and aliased the count as "Number of Married Customers in San Francisco""

SELECT AI narrate what are the top 3 customers in San Francisco;
"RESPONSE"
The top 3 customers in San Francisco ordered by credit limit in descending order are:

1. Bert Katz
2. Madallyn Ladd  
3. Henrietta Snodgrass

SELECT AI chat what is Autonomous AI Database;
"RESPONSE"
"An Autonomous AI Database is a cloud database service provided by Oracle Corporation. Some key features of Oracle Autonomous AI Database include:

- Fully automated and self-driving - The database automatically upgrades, patches, tunes, and backs itself up without any human intervention required.

- Self-securing - The database uses machine learning to detect threats and automatically apply security updates.

- Self-repairing - The database monitors itself and automatically recovers from failures and errors without downtime.

- Self-scaling - The database automatically scales compute and storage resources up and down as needed to meet workload demands. 

- Serverless - The database is accessed as a cloud service without having to manually provision any servers or infrastructure.

- High performance - The database uses Oracle's advanced automation and machine learning to continuously tune itself for high performance.

- Multiple workload support - Supports transaction processing, analytics, graph processing, etc in a single converged database.

- Fully managed - Oracle handles all the management and administration of the database. Users just load and access their data.

- Compatible - Supports common SQL and Oracle PL/SQL for easy migration from on-prem Oracle databases.

So in summary, an Oracle Autonomous AI Database is a fully automated, self-driving, self-securing, and self-repairing database provided as a simple cloud service. The automation provides high performance, elasticity, and availability with minimal human labor required."

--
--Clear the profile
--
BEGIN
   DBMS_CLOUD_AI.CLEAR_PROFILE;
END;
/
PL/SQL procedure successfully completed.

--
--Drop the profile
--
EXEC DBMS_CLOUD_AI.DROP_PROFILE('AWS');
 
PL/SQL procedure successfully completed.

Beispiel: Unterhaltungen in ausgewählter KI aktivieren

Diese Beispiele veranschaulichen das Aktivieren von Unterhaltungen in Select AI.

Hinweis:

Ein Benutzer mit Administratorberechtigungen (ADMIN) muss EXECUTE erteilen und die Network Access Control List (ACL) aktivieren.

Sessionbasierte Unterhaltungen

Erstellen Sie Ihr KI-Profil. Setzen Sie das Attribut conversation im Profil auf true. Diese Aktion enthält Inhalt aus vorherigen Interaktionen oder Prompts, möglicherweise einschließlich Schemametadaten, und legen Sie Ihr Profil fest. Sobald das Profil aktiviert ist, können Sie mit Unterhaltungen mit Ihren Daten beginnen. Verwenden Sie natürliche Sprache, um Fragen zu stellen und nach Bedarf zu folgen.


--Grants EXECUTE privilege to ADB_USER
--
SQL> grant execute on DBMS_CLOUD_AI to ADB_USER;

-- Grant Network ACL for OpenAI endpoint
--
SQL> BEGIN  
     DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
         host => 'api.openai.com',
         ace  => xs$ace_type(privilege_list => xs$name_list('http'),
                             principal_name => 'ADB_USER',
                             principal_type => xs_acl.ptype_db)
     );
    END;
    /
 
PL/SQL procedure successfully completed.
 
--
-- Create Credential for AI provider
--
EXEC
DBMS_CLOUD.CREATE_CREDENTIAL(
CREDENTIAL_NAME   => 'OPENAI_CRED', 
username          =>  'OPENAI', 
password          =>  '<your_api_token>');
 
PL/SQL procedure successfully completed.
 
--
-- Create AI profile
--
BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
  profile_name   => 'OPENAI',
  attributes     =>'{"provider": "openai",                                                                   
        "credential_name": "OPENAI_CRED",                                     
        "object_list": [{"owner": "SH", "name": "customers"},                
                        {"owner": "SH", "name": "countries"},                
                        {"owner": "SH", "name": "supplementary_demographics"},
                        {"owner": "SH", "name": "profits"},                  
                        {"owner": "SH", "name": "promotions"},               
                        {"owner": "SH", "name": "products"}],
        "conversation": "true"                
       }');                                                                  
     END;                                                                         
     / 
 
PL/SQL procedure successfully completed.
 
--
-- Enable AI profile in current session
--
SQL> EXEC DBMS_CLOUD_AI.SET_PROFILE('OPENAI');
 
PL/SQL procedure successfully completed.
 
--
-- Get Profile in current session
--
SQL> SELECT DBMS_CLOUD_AI.get_profile() from dual;
 
DBMS_CLOUD_AI.GET_PROFILE()
--------------------------------------------------------------------------------
"OPENAI"
 
--
-- Use AI
--
what are the total number of customers;
 
CUSTOMER_COUNT
--------------
         55500
 
break out count of customers by country;   
 
RESPONSE
-----------------
COUNTRY_NAME 			CUSTOMER_COUNT
Italy 				7780
Brazil 				832
Japan 				624
United Kingdom 			7557
Germany 			8173
United States of America 	18520
France 				3833
Canada 				2010
Spain 				2039
China 				712
Singapore 			597
New Zealand 			244
Poland 	708
Australia 			831
Argentina 			403
Denmark 			383
South Africa 			88
Saudi Arabia 			75
Turkey 				91

  
what age group is most common;
 
RESPONSE
--------------------------------------------------------------------------------
AGE_GROUP 	CUSTOMER_COUNT
65+ 		28226
 
select ai keep the top 5 customers and their country by their purchases and include a rank in the result;
 
RESPONSE
--------------------------------------------------------------------------------
RANK 	CUSTOMER_NAME 		COUNTRY 	PURCHASES
1 	Abigail Ruddy 		Japan 		276
2 	Abigail Ruddy 		Italy 		168
3 	Abigail Ruddy 		Japan 		74
3 	Abner Robbinette 	Germany 	74
5 	Abner Everett 		France 		68
 
 
SQL> EXEC DBMS_CLOUD_AI.DROP_PROFILE('OPENAI');
 
PL/SQL procedure successfully completed.

Anpassbare Unterhaltungen

Die folgenden Beispiele zeigen die Verwendung der Unterhaltungsmanagement-API, die anpassbare Unterhaltungen unterstützt. So verwenden Sie Select AI für mehrere Unterhaltungen:
  1. Konversation erstellen
  2. Konversation in der aktuellen Benutzersession festlegen
  3. Verwenden Sie Select AI <action> <prompt>
Sie können die Unterhaltung wie folgt erstellen und festlegen:
  • Verwenden Sie die Funktion DBMS_CLOUD_AI.CREATE_CONVERSATION, und legen Sie die Unterhaltung dann mit DBMS_CLOUD_AI.SET_CONVERSATION_ID fest.
  • Rufen Sie die Prozedur DBMS_CLOUD_AI.CREATE_CONVERSATION direkt auf, um die Unterhaltung in einem Schritt zu erstellen und festzulegen.
Beispiel: Anpassbare Unterhaltungen erstellen und festlegen

Das folgende Beispiel zeigt, wie Sie eine Unterhaltung mit der Funktion DBMS_CLOUD_AI.CREATE_CONVERSATION erstellen und mit der Prozedur DBMS_CLOUD_AI.SET_CONVERSATION_ID festlegen.

SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION;  -- in 19c, run SELECT DBMS_CLOUD_AI.create_conversation FROM dual;
  
 
CREATE_CONVERSATION
------------------------------------
30C9DB6E-EA4D-AFBA-E063-9C6D46644B92
 
 
EXEC DBMS_CLOUD_AI.SET_CONVERSATION_ID('30C9DB6E-EA4D-AFBA-E063-9C6D46644B92');
 
PL/SQL procedure successfully completed

Im folgenden Beispiel wird gezeigt, wie Sie die Prozedur DBMS_CLOUD_AI.CREATE_CONVERSATION ausführen, um die conversation_id direkt zu erstellen und festzulegen.

EXEC DBMS_CLOUD_AI.create_conversation;
 
PL/SQL procedure successfully completed.

Sie können auch die Unterhaltungsattribute wie die Attribute title, description, retention_days und conversation_length anpassen.

SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION(
            attributes => '{"title":"My first conversation", 
			"description":"this is my first conversation", 
			"retention_days":5, 
			"conversation_length":5}');
  
 
CREATE_CONVERSATION
------------------------------------
38F8B874-7687-2A3F-E063-9C6D4664EC3A

Sie können anzeigen, ob eine bestimmte Unterhaltung vorhanden ist, indem Sie die DBA/USER_CLOUD_AI_CONVERSATIONS-Ansicht abfragen.

-- Verify the setup
SELECT conversation_id, conversation_title, description, retention_days, 
conversation_length FROM DBA_CLOUD_AI_CONVERSATIONS WHERE 
conversation_id = '38F8B874-7687-2A3F-E063-9C6D4664EC3A';
 
CONVERSATION_ID                      	CONVERSATION_TITLE                              DESCRIPTION                        RETENTION_DAYS                 CONVERSATION_LENGTH
------------------------------------ 	----------------------------------------------- ---------------------------------- ------------------------------ -------------------
38F8B874-7687-2A3F-E063-9C6D4664EC3A 	My first conversation                           this is my first conversation     +00005 00:00:00.000000         5

Sie können auch prüfen, ob eine Unterhaltung festgelegt ist, indem Sie die Funktion DBMS_CLOUD_AI.GET_CONVERSATION_ID aufrufen.

SELECT DBMS_CLOUD_AI.GET_CONVERSATION_ID;
 
 
--------------------------------------------------------------------------------
30C9DB6E-EA4F-AFBA-E063-9C6D46644B92
Beispiel: Anpassbare Unterhaltungen mit Select AI verwenden

Nachdem Sie die Unterhaltung erstellt und festgelegt und Ihr KI-Profil aktiviert haben, können Sie mit Ihren Daten interagieren. Verwenden Sie natürliche Sprache, um Fragen zu stellen und nach Bedarf zu folgen.

Verwenden Sie SELECT AI <ACTION> <PROMPT>.

SELECT AI CHAT What is the difference in weather between Seattle and San Francisco?;
 
RESPONSE
--------------------------------------------------------------------------------
Seattle and San Francisco are both located on the West Coast of the United State
s, but they have distinct weather patterns due to their unique geography and cli
mate conditions. Here are the main differences:
 
1. **Rainfall**: Seattle is known for its rainy reputation, with an average annu
al rainfall of around 37 inches (94 cm). San Francisco, on the other hand, recei
ves significantly less rainfall, with an average of around 20 inches (51 cm) per
 year.
2. **Cloud Cover**: Seattle is often cloudy, with an average of 226 cloudy days
per year. San Francisco is also cloudy, but to a lesser extent, with an average
of 165 cloudy days per year.
 
......
 
 
SELECT AI CHAT Explain the difference again in one paragraph only.;
 
RESPONSE
--------------------------------------------------------------------------------
Seattle and San Francisco have different weather patterns despite both experienc
ing a mild oceanic climate. San Francisco tends to be slightly warmer, with aver
age temperatures ranging from 45?F to 67?F, and receives less rainfall, around 2
0 inches per year, mostly during winter. In contrast, Seattle is cooler, with te
mperatures ranging from 38?F to 64?F, and rainier, with around 37 inches of rain
fall per year, distributed throughout the year. San Francisco is also known for
its fog, particularly during summer, and receives more sunshine, around 160 sunn
y days per year, although it's often filtered through the fog. Overall, San Fran
cisco's weather is warmer and sunnier, with more pronounced seasonal variations,
 while Seattle's is cooler and rainier, with more consistent temperatures throug
hout the year.
Beispiel: Mit der Funktion GENERATE zwei Unterhaltungen vergleichen

Das folgende Beispiel zeigt, wie zwei Unterhaltungen austauschbar verwendet werden, um Fragen zu stellen und genaue Antworten zu prüfen. Jede Unterhaltung beginnt mit einer anderen Frage, die sich auf den Vergleich konzentriert. Wenn Sie später in beiden Unterhaltungen dieselbe Nachfassfrage stellen, gibt jeder eine andere Antwort basierend auf seinem vorherigen Kontext zurück.

-- First conversation
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION;
 
 
CREATE_CONVERSATION
------------------------------------
30C9DB6E-EA4D-AFBA-E063-9C6D46644B92



-- Second conversation
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION;
 
 
CREATE_CONVERSATION
------------------------------------
30C9DB6E-EA4E-AFBA-E063-9C6D46644B92


-- Call generate using the first conversation.
SELECT DBMS_CLOUD_AI.GENERATE(
        prompt       =>  'What is the difference in weather between Seattle and San Francisco?',
        profile_name =>  'GENAI',
        action       =>  'CHAT',
        params       =>  '{"conversation_id":"30C9DB6E-EA4D-AFBA-E063-9C6D46644B92"}') AS RESPONSE;
 
 
RESPONSE
--------------------------------------------------------------------------------
Seattle and San Francisco, both located in the Pacific Northwest and Northern Ca
lifornia respectively, experience a mild oceanic climate. However, there are som
e notable differences in their weather patterns:
 
1. **Temperature**: San Francisco tends to be slightly warmer than Seattle, espe
cially during the summer months. San Francisco's average temperature ranges from
 45?F (7?C) in winter to 67?F (19?C) in summer, while Seattle's average temperat
ure ranges from 38?F (3?C) in winter to 64?F (18?C) in summer.
 
2. **Rainfall**: Seattle is known for its rainy reputation, with an average annu
al rainfall of around 37 inches (94 cm). San Francisco receives less rainfall, w
ith an average of around 20 inches (51 cm) per year. However, San Francisco's ra
infall is more concentrated during the winter months, while Seattle's rainfall i
s more evenly distributed throughout the year.
 
......

-- Call generate using the second conversation.
SELECT DBMS_CLOUD_AI.GENERATE(
        prompt       =>  'How does the cost of living compare between New York and Los Angeles?',
        profile_name =>  'GENAI',
        action       =>  'CHAT',
        params       =>  '{"conversation_id":"30C9DB6E-EA4E-AFBA-E063-9C6D46644B92"}') AS RESPONSE;
 
 
RESPONSE
--------------------------------------------------------------------------------
The cost of living in New York and Los Angeles is relatively high compared to ot
her cities in the United States. However, there are some differences in the cost
 of living between the two cities. Here's a comparison of the cost of living in
New York and Los Angeles:
 
1. Housing: The cost of housing is significantly higher in New York than in Los
Angeles. The median home price in New York is around $999,000, while in Los Ange
les it's around $849,000. Rent is also higher in New York, with the average rent
 for a one-bedroom apartment being around $3,000 per month, compared to around $
2,400 per month in Los Angeles.
 
2. Food: The cost of food is relatively similar in both cities, with some variat
ion in the cost of certain types of cuisine. However, eating out in New York can
 be more expensive, with the average cost of a meal at a mid-range restaurant be
ing around $15-20 per person, compared to around $12-18 per person in Los Angele
s.
 
......


-- Call generate using the first conversation.
SELECT DBMS_CLOUD_AI.GENERATE(
        prompt       =>  'Explain the difference again in one paragraph only.',
        profile_name =>  'GENAI',
        action       =>  'CHAT',
        params       =>  '{"conversation_id":"30C9DB6E-EA4D-AFBA-E063-9C6D46644B92"}') AS RESPONSE;
 
 
RESPONSE
--------------------------------------------------------------------------------
Seattle and San Francisco have different weather patterns despite both experienc
ing a mild oceanic climate. San Francisco tends to be slightly warmer, with aver
age temperatures ranging from 45?F to 67?F, and receives less rainfall, around 2
0 inches per year, mostly during winter. In contrast, Seattle is cooler, with te
mperatures ranging from 38?F to 64?F, and rainier, with around 37 inches of rain
fall per year, distributed throughout the year. San Francisco is also known for
its fog, particularly during summer, and receives more sunshine, around 160 sunn
y days per year, although it's often filtered through the fog. Overall, San Fran
cisco's weather is warmer and sunnier, with more pronounced seasonal variations,
 while Seattle's is cooler and rainier, with more consistent temperatures throug
hout the year.


-- Call generate using the second conversation.
SELECT DBMS_CLOUD_AI.GENERATE(
        prompt       =>  'Explain the difference again in one paragraph only.',
        profile_name =>  'GENAI',
        action       =>  'CHAT',
        params       =>  '{"conversation_id":"30C9DB6E-EA4E-AFBA-E063-9C6D46644B92"}') AS RESPONSE;
 
 
RESPONSE
--------------------------------------------------------------------------------
The cost of living in New York is approximately 20-30% higher than in Los Angele
s, mainly due to the higher cost of housing and transportation. New York has a m
edian home price of around $999,000 and average rent of $3,000 per month for a o
ne-bedroom apartment, compared to Los Angeles' median home price of $849,000 and
 average rent of $2,400 per month. While the cost of food and utilities is relat
ively similar in both cities, the cost of transportation is higher in Los Angele
s due to its car-centric culture, but the cost of public transportation is highe
r in New York. Overall, the total monthly expenses for a single person in New Yo
rk can range from $4,600, compared to around $4,050 in Los Angeles, making New Y
ork the more expensive city to live in.

Sie können die Funktion DBMS_CLOUD_AI.GENERATE aufrufen, ohne eine Unterhaltung anzugeben. In solchen Fällen sollte jedoch keine sinnvolle Antwort erwartet werden.

-- Ask SELECT AI using the second conversation.
SELECT DBMS_CLOUD_AI.GENERATE(
        prompt       =>  'Explain the difference again in one paragraph only.',
        profile_name =>  'GENAI',
        action       =>  'CHAT') AS RESPONSE;
 
 
RESPONSE
--------------------------------------------------------------------------------
There is no previous explanation to draw from, as this is the beginning of our c
onversation. If you would like to ask a question or provide a topic, I would be
happy to explain the differences related to it in one paragraph.
Beispiel: Unterhaltungen über DBMS_CLOUD_AI-Ansichten prüfen

Sie können die DBMS_CLOUD_AI-Unterhaltungsansichten abfragen, um Konversations- und Prompt-Details zu prüfen. Weitere Informationen finden Sie unter .

Hinweis:

Die

Ansichten mit dem Präfix DBA_ sind nur für Benutzer mit Administratorberechtigungen (ADMIN) verfügbar.

SELECT conversation_id, conversation_title, description FROM dba_cloud_ai_conversations;
 
CONVERSATION_ID
------------------------------------
CONVERSATION_TITLE
----------------------------------------------------------------------------------------------------
DESCRIPTION
--------------------------------------------------------------------------------
30C9DB6E-EA4D-AFBA-E063-9C6D46644B92
Seattle vs San Francisco Weather
The conversation discusses the comparison of weather patterns between Seattle an
d San Francisco, focusing on the differences in temperature, rainfall, fog, suns
hine, and seasonal variation between the two cities.
 
30C9DB6E-EA4E-AFBA-E063-9C6D46644B92
NY vs LA Cost Comparison
The conversation discusses and compares the cost of living in New York and Los A
ngeles, covering housing, food, transportation, utilities, and taxes to provide
an overall view of the expenses in both cities.

SELECT conversation_id, count(*) FROM dba_cloud_ai_conversation_prompts
     GROUP BY conversation_id;
 
CONVERSATION_ID                COUNT(*)
------------------------------------ ----------
30C9DB6E-EA4D-AFBA-E063-9C6D46644B92          2
30C9DB6E-EA4E-AFBA-E063-9C6D46644B92          2
Beispiel: Unterhaltungsdetails aktualisieren

Sie können die title, description und retention_days einer Unterhaltung mit der Prozedur DBMS_CLOUD_AI.UPDATE_CONVERSATION aktualisieren. Sie können die Aktualisierung prüfen, indem Sie die Unterhaltungsansicht DBMS_CLOUD_AI abfragen.

-- Update the second conversation's title, description and retention_days
SQL> EXEC DBMS_CLOUD_AI.update_conversation(conversation_id => '30C9DB6E-EA4E-AFBA-E063-9C6D46644B92', 
											attributes => '{"retention_days":20, 
														"description":"This a description", 
														"title":"a title", 
														"conversation_length":20}');
 
PL/SQL procedure successfully completed.
 
 
-- Verify the information for the second conversation
SQL> SELECT conversation_title, description, retention_days
FROM dba_cloud_ai_conversations
WHERE conversation_id = '30C9DB6E-EA4E-AFBA-E063-9C6D46644B92';
 
CONVERSATION_TITLE         DESCRIPTION                          RETENTION_DAYS         LENGTH
-------------------------- ------------------------------------ -------------- --------------
a title                    This a description                   20                         20
Beispiel: Prompt löschen

Sie können eine einzelne Eingabeaufforderung aus Ihren Unterhaltungen löschen und die Änderung prüfen, indem Sie die Unterhaltungsansicht DBMS_CLOUD_AI abfragen.

-- Find the latest prompt for first conversation
SELECT conversation_prompt_id FROM dba_cloud_ai_conversation_prompts
     WHERE conversation_id = '30C9DB6E-EA4D-AFBA-E063-9C6D46644B92'
     ORDER BY created DESC
     FETCH FIRST ROW ONLY;
 
CONVERSATION_PROMPT_ID
------------------------------------
30C9DB6E-EA61-AFBA-E063-9C6D46644B92
 
 
-- Delete the prompt
EXEC DBMS_CLOUD_AI.DELETE_CONVERSATION_PROMPT('30C9DB6E-EA61-AFBA-E063-9C6D46644B92');
 
PL/SQL procedure successfully completed.
 
 
-- Verify if the prompt is deleted
SELECT conversation_prompt_id FROM dba_cloud_ai_conversation_prompts
WHERE conversation_id = '30C9DB6E-EA4D-AFBA-E063-9C6D46644B92';
 
-- Only one prompt now
CONVERSATION_PROMPT_ID
------------------------------------
30C9DB6E-EA5A-AFBA-E063-9C6D46644B92
Beispiel: Unterhaltung löschen

Sie können die gesamte Konversation löschen. Dadurch werden auch alle zugehörigen Prompts entfernt.

-- Delete the first conversation
EXEC DBMS_CLOUD_AI.DROP_CONVERSATION('30C9DB6E-EA4D-AFBA-E063-9C6D46644B92');
 
PL/SQL procedure successfully completed.
 
 
-- Verify if the conversation and its prompts are removed
SELECT conversation_id FROM dba_cloud_ai_conversations;
 
-- We only have the second conversation now
CONVERSATION_ID
------------------------------------
30C9DB6E-EA4E-AFBA-E063-9C6D46644B92
 
 
SELECT conversation_id, count(*) FROM dba_cloud_ai_conversation_prompts GROUP BY conversation_id;
 
-- We only have prompts in the second conversation
CONVERSATION_ID                COUNT(*)
------------------------------------ ----------
30C9DB6E-EA4E-AFBA-E063-9C6D46644B92          2

Beispiel: KI-Feedback auswählen

Diese Beispiele zeigen, wie Sie die Prozedur DBMS_CLOUD_AI.FEEDBACK und die verschiedenen Szenarios verwenden können, um Feedback zur Verbesserung der nachfolgenden Generierung von SQL-Abfragen zu geben.

Hinweis:

Sie können Feedback für Select AI SQL-Eingabeaufforderungen geben, auch wenn die Eingabeaufforderung noch nicht ausgeführt wurde. Bei der Auswahl von KI muss die SQL-Eingabeaufforderung nicht in einer Abfrage verwendet werden, bevor Feedback weitergeleitet wird. Sie können jederzeit Feedback für einen gültigen Prompt geben.

Beispiel: Negatives Feedback geben

Das folgende Beispiel zeigt, wie Sie Korrekturen an der generierten SQL als Feedback (negatives Feedback) angeben, indem Sie feedback_type als negative verwenden und Ihre SQL-Abfrage bereitstellen.

Sie fügen Ihr Feedback zum KI-Profil OCI_FEEDBACK1 hinzu, indem Sie die Prozedur DBMS_CLOUD_AI.FEEDBACK mit dem Parameter sql_text aufrufen, der den Prompt enthält. Weitere Informationen zu den Attributen finden Sie unter . Anschließend rufen Sie die Spalten content und attributes aus der Tabelle <profile_name>_FEEDBACK_VECINDEX$VECTAB ab, die mit dieser spezifischen SQL-Abfrage verknüpft ist. Select AI erstellt diese Vektortabelle automatisch, wenn Sie die Feedbackfunktion zum ersten Mal verwenden. Weitere Informationen finden Sie unter .

SQL> select ai showsql how many movies;
 
RESPONSE
------------------------------------------------------------------------
SELECT COUNT(m."MOVIE_ID") AS "Number of Movies" FROM "ADB_USER"."MOVIES" m
 
SQL> exec DBMS_CLOUD_AI.FEEDBACK(profile_name=>'OCI_FEEDBACK1', sql_text=> 'select ai showsql how many movies', feedback_type=> 'negative', response=>'SELECT SUM(1) FROM "ADB_USER"."MOVIES"');
 
PL/SQL procedure successfully completed.
SQL> select CONTENT, ATTRIBUTES from OCI_FEEDBACK1_FEEDBACK_VECINDEX$VECTAB where JSON_VALUE(attributes, '$.sql_text') = 'select ai showsql how many movies';
 
CONTENT                                                
----------------------------------------------------------------------------------------------------
how many movies                                             
ATTRIBUTES
----------------------------------------------------------------------------------------------------
 
{"response":"SELECT SUM(1) FROM \"ADB_USER\".\"MOVIES\"","feedback_type":"negative","sql_id":null,"sql_text":"select ai showsql how many movies","feedback_content":null}
Beispiel: Positives Feedback geben

Das folgende Beispiel zeigt, dass Sie zustimmen und das generierte SQL (positives Feedback) bestätigen, indem Sie feedback_type als positive verwenden.

In diesem Beispiel ruft die Abfrage die sql_id aus der v$mapped_sql-Ansicht für den angegebenen Prompt ab. Weitere Informationen finden Sie unter V_MAPPED_SQL.

Sie fügen Ihr Feedback zum KI-Profil OCI_FEEDBACK1 hinzu, indem Sie die Prozedur DBMS_CLOUD_AI.FEEDBACK mit dem Parameter sql_id aufrufen. Anschließend rufen Sie die Spalten content und attributes aus der Tabelle <profile_name>_FEEDBACK_VECINDEX$VECTAB ab, die mit dieser spezifischen SQL-Abfrage verknüpft ist. Select AI erstellt diese Vektortabelle automatisch, wenn Sie die Feedbackfunktion zum ersten Mal verwenden. Weitere Informationen finden Sie unter .

SQL> select ai showsql how many distinct movie genres?;
 
RESPONSE
-----------------------------------------------------------------------------------------
SELECT COUNT(DISTINCT g."GENRE_NAME") AS "Number of Movie Genres" FROM "ADB_USER"."GENRES" g
 
SQL> SELECT sql_id FROM v$mapped_sql WHERE sql_text = 'select ai showsql how many distinct movie genres?';
 
SQL_ID
-------------
852w8u83gktc1
 
SQL> exec DBMS_CLOUD_AI.FEEDBACK(profile_name=>'OCI_FEEDBACK1', sql_id=> '852w8u83gktc1', feedback_type=>'positive', operation=>'add');
 
PL/SQL procedure successfully completed.
 
SQL> SELECT content, attributes FROM OCI_FEEDBACK1_FEEDBACK_VECINDEX$VECTAB WHERE JSON_VALUE(attributes, '$.sql_id') ='852w8u83gktc1';
 
 CONTENT                                               
---------------------------------------------------------------------------------------------------- 
how many distinct movie genres?
ATTRIBUTES
----------------------------------------------------------------------------------------------------
{"response":"SELECT COUNT(DISTINCT g.\"GENRE_NAME\") AS \"Number of Movie Genres\" FROM \"ADB_USER\".\"GENRES\" g","feedback_type":"positive","sql_id":"852w8u83gktc1","sql_text":"select ai showsql how many distinct movie genres?","feedback_content":null}
Beispiel: Feedback ohne vorherige Verwendung geben

Sie können auch dann Feedback für SQL-Eingabeaufforderungen geben, wenn die Eingabeaufforderung noch nicht verwendet wurde. Beispiel:

BEGIN
  DBMS_CLOUD_AI.FEEDBACK(
    profile_name=>'AI_PROFILE',
    sql_text=>'select ai runsql how many products named PAD', -- Prior usage not required
    feedback_type=>'negative',
    response=>'SELECT COUNT(*) AS "Num" FROM "PRODUCTS"."CATG" o WHERE UPPER(o."NAME") LIKE ''%PAD%''',
    feedback_content=>'Use LIKE instead of ='
  );
END;
/

In diesem Fall wird das Feedback für die Eingabeaufforderung select ai runsql how many products named PAD weitergeleitet, ohne dass vorher die Eingabeaufforderung verwendet werden muss.

Beispiel: Feedback für das generierte SQL hinzufügen oder löschen
Das folgende Beispiel zeigt, wie Sie Ihr Feedback für die generierte SQL hinzufügen oder löschen, indem Sie die Parameter der Prozedur DBMS_CLOUD_AI.FEEDBACK angeben. In diesem Beispiel wird gezeigt, dass sql_id und sql_text zusammen mit anderen Parametern verwendet werden.

Hinweis:

Die Option "KI auswählen" lässt nur einen Feedbackeintrag für jede sql_id zu. Wenn Sie für dieselbe sql_id zusätzliches Feedback geben, ersetzt Select AI den vorherigen Eintrag durch den neuen.

Weitere Informationen zu den Parametern finden Sie unter .

EXEC DBMS_CLOUD_AI.FEEDBACK(profile_name=>'OCI_FEEDBACK1',
                                   sql_id=> '852w8u83gktc1',
                                   feedback_type=>'positive',
                                   operation=>'add');
EXEC DBMS_CLOUD_AI.FEEDBACK(profile_name=>'OCI_FEEDBACK1',
                                   sql_text=> 'select ai showsql how many movies',
                                   feedback_type=> 'negative',
                                   response=>'SELECT SUM(1) FROM "ADB_USER"."MOVIES"',
                                   feedback_content=>'Use SUM instead of COUNT');
EXEC DBMS_CLOUD_AI.FEEDBACK(profile_name=>'OCI_FEEDBACK1',
                                   sql_id=> '852w8u83gktc1',
                                   operation=>'delete');
Beispiel: Feedbackaktion mit der letzten KI-SQL verwenden, um negatives Feedback zu geben

In diesem Beispiel wird gezeigt, wie Sie mit der Aktion feedback die generierte SQL verbessern, indem Sie die Änderungen in natürlicher Sprache vorschlagen.

BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
    profile_name=>'OCI_FEEDBACK1',
    attributes=>'{"provider": "oci",                                                                 
      "credential_name": "GENAI_CRED",
      "oci_compartment_id": "ocid1.compartment.oc1..aaaa...",
      "object_list": [{"owner": "ADB_USER", "name": "users"},
                      {"owner": "ADB_USER", "name": "movies"},
                      {"owner": "ADB_USER", "name": "genres"},
                      {"owner": "ADB_USER", "name": "watch_history"},
                      {"owner": "ADB_USER", "name": "movie_genres"},
                      {"owner": "ADB_USER", "name": "employees1"},
                      {"owner": "ADB_USER", "name": "employees2"}
                        ]
      }');
END;
/
 
EXEC DBMS_CLOUD_AI.SET_PROFILE('OCI_FEEDBACK1');

 
PL/SQL procedure successfully completed.
 

select ai showsql rank movie duration;
 
RESPONSE
-------------------------------------------------------------------------------
SELECT "DURATION" AS "Movie Duration" FROM "ADB_USER"."MOVIES" ORDER BY "DURATION"
 
select ai feedback use ascending sorting;
 
RESPONSE
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Based on your feedback, the SQL query for prompt "rank movie duration" is successfully refined. The refined SQL query as following:
SELECT m."DURATION" AS "Movie Duration" FROM "ADB_USER."MOVIES" m ORDER BY m."DURATION" ASC
 
 
select ai showsql rank the movie duration;
 
RESPONSE
-----------------------------------------------------------------------------------------
SELECT m."DURATION" AS "Movie Duration" FROM "ADB_USER."MOVIES" m ORDER BY m."DURATION" ASC
Beispiel: Feedbackaktion mit der letzten KI-SQL verwenden, um positives Feedback zu geben

Dieses Beispiel zeigt, wie Sie mit der Aktion feedback die generierte SQL in natürlicher Sprache akzeptieren.

--Positive feedback

select ai showsql which movies are comedy?;
 
RESPONSE
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT DISTINCT m."TITLE" AS "Movie Title" FROM "ADB_USER"."MOVIES" m INNER JOIN "ADB_USER"."MOVIE_GENRES" mg ON m."MOVIE_ID" = mg."MOVIE_ID" INNER JOIN "ADB_USER"."GENRES" g ON mg."GENRE_ID" = g."GENRE_ID" WHERE g."GENRE_NAME" = 'comedy'
 
select ai feedback this is correct;
 
RESPONSE
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Thank you for your positive feedback. The SQL query for prompt "which movies are comedy?" is correctly implemented and delivering the expected results. It will be referenced for future optimizations and improvements.


Select AI Feedback Action Referring SQL_ID
Beispiel: Feedbackaktion mit SQL_ID verwenden, um Feedback zu geben

Dieses Beispiel zeigt, wie Sie SQL_ID mit der Aktion feedback verwenden, um Feedback für eine bestimmte generierte SQL-Abfrage zu geben. Sie können die SQL_ID abrufen, indem Sie die Tabelle v$MAPPED_SQL abfragen.

-- Query mentioned with SQL_ID

select ai showsql how many movies are in each genre;
 
RESPONSE
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT g."GENRE_NAME" AS "Genre Name", COUNT(m."MOVIE_ID") AS "Number of Movies" FROM "ADB_USER"."MOVIES" m INNER JOIN "ADB_USER"."MOVIE_GENRES" mg ON m."MOVIE_ID" = mg."MOVIE_ID" INNER JOIN "ADB_USER"."GENRES" g ON mg."GENRE_ID" = g."GENRE_ID" GROUP BY g."GENRE_NAME"
 
select sql_id from v$cloud_ai_sql where sql_text = 'select ai showsql how many movies are in each genre';
 
SQL_ID
-------------
8azkwc0hr87ga
 
select ai feedback for query with sql_id = '8azkwc0hr87ga', rank in descending sorting;
 
RESPONSE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Based on your feedback, the SQL query for prompt "how many movies are in each genre" is successfully refined. The refined SQL query as following:
SELECT g."GENRE_NAME" AS "Genre Name", COUNT(m."MOVIE_ID") AS "Number of Movies"
FROM "ADB_USER"."MOVIES" m
INNER JOIN "ADB_USER"."MOVIE_GENRES" mg ON m."MOVIE_ID" = mg."MOVIE_ID"
INNER JOIN "ADB_USER"."GENRES" g ON mg."GENRE_ID" = g."GENRE_ID"
GROUP BY g."GENRE_NAME"
ORDER BY COUNT(m."MOVIE_ID") DESC
Beispiel: Feedbackaktion mit Abfragetext verwenden

Dieses Beispiel zeigt die Aktion feedback für eine bestimmte Select AI-Abfrage, indem der Select AI-Prompt in Anführungszeichen gefolgt von Ihrem Feedback eingefügt wird.

-Query mentioned with SQL_TEXT

select ai showsql how many watch history in total;
 
RESPONSE
----------------------------------------------------------------------------------
SELECT COUNT(w."WATCH_ID") AS "Total Watch History" FROM "ADB_USER"."WATCH_HISTORY" w
 
select ai feedback for query "select ai showsql how many watch history in total", name the column as total_watch;
 
RESPONSE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Based on your feedback, the SQL query for prompt "how many watch history in total" is successfully refined. The refined SQL query as following:
SELECT COUNT(w."WATCH_ID") AS "total_watch" FROM "ADB_USER"."WATCH_HISTORY" w

Beispiel: AI für Eigenschaftsdiagramme auswählen

Dieses Beispiel zeigt, wie Sie die Prozedur DBMS_CLOUD_AI.GENERATE und einen Prompt in natürlicher Sprache verwenden können, um PGQ-Diagrammabfragen zur Abfrage von Diagrammdaten zu generieren.

Beispiel: Mehrere Diagramme im AI-Profil angeben

In diesem Beispiel wird gezeigt, wie Sie mehrere Eigenschaftsdiagramme in Ihrem AI-Profil definieren, einschließlich einer Beispielabfrage und ihrer Ausgabe.

BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
      profile_name =>'OPENAI',
      attributes   =>'{"provider": "openai",
        "model": "gpt-4o",
        "credential_name": "OPENAI_CRED",
        "object_list": [{"owner": "ADB_USER", "name": "LDBC_GRAPH"},
                        {"owner": "ADB_USER", "name": "G"}]
       }');                                                                  
END;                                                                         
/

SQL> EXEC DBMS_CLOUD_AI.SET_PROFILE(profile_name => 'OPENAI');

PL/SQL procedure successfully completed.

SQL> select ai who bought a dress;

CUSTOMER_N
----------
Kate

1 row selected.

Beispiel: Beispiel-Prompts für Eigenschaftsdiagramme

In diesen Beispielen wird gezeigt, wie Sie Beispieldaten erstellen und die generierte SQL mit der Aktion showsql für einen bestimmten Prompt anzeigen.

Beispiel: Eigenschaftsdiagrammtabelle erstellen

Im folgenden Beispiel werden Beispieltabellen und ein Eigenschaftsdiagramm erstellt.

CREATE TABLE Person
(
    id         NUMBER PRIMARY KEY,
    firstName  VARCHAR2(20 CHAR),
    lastName   VARCHAR2(20 CHAR),
    age        NUMBER,
    jsonProp   VARCHAR2(40 CHAR)
);

CREATE TABLE Post
(
    id         NUMBER PRIMARY KEY,
    content    VARCHAR2(20 CHAR)
);

CREATE TABLE personLikesPost
(
    idPerson NUMBER REFERENCES Person (id),
    idPost   NUMBER REFERENCES Post (id)
);

CREATE TABLE personKnowsPerson
(
    idPerson1 NUMBER REFERENCES Person (id),
    idPerson2 NUMBER REFERENCES Person (id)
);

CREATE PROPERTY GRAPH person_graph
  VERTEX TABLES (
    Person KEY (id) LABEL Person
      PROPERTIES (firstName, lastName, age, jsonProp),
    Post KEY (id) LABEL Post
      PROPERTIES(content)
  )
  EDGE TABLES (
    personLikesPost
      KEY(idPerson, idPost)
      SOURCE KEY (idPerson) REFERENCES Person (id)
      DESTINATION KEY (idPost) REFERENCES POST (id)
      LABEL Likes NO PROPERTIES,
    personKnowsPerson
      KEY(idPerson1, idPerson2)
      SOURCE KEY (idPerson1) REFERENCES Person (id)
      DESTINATION KEY (idPerson2) REFERENCES Person (id)
      LABEL Knows NO PROPERTIES
  );

insert into Person values (1, 'John', 'Doe',23, '{"key1":"value1","key2":"value2"}');
insert into Person values (2, 'Scott', 'Tiger', 25, '{"key1":"value3","key2":"value4"}');
insert into Person values (3, 'Max', 'Power', 27, '{"key1":"value5","key2":"value6"}');
insert into Person values (4, 'Jane', 'Doe', 22, '{"key1":"value7","key2":"value8"}');
insert into Person (id, Firstname, age) values (5, 'Hans', 23);
insert into Person (id, Firstname, age) values (6, 'Franz', 24);
 
INSERT INTO Post VALUES (10, 'Lorem ipsum...');
INSERT INTO Post VALUES (11, 'Nulla facilisi...');
INSERT INTO Post VALUES (12, 'Vestibulum eget ..');
INSERT INTO Post VALUES (13, 'Sed fermentum...');
INSERT INTO Post VALUES (14, 'Fusce at ...');
INSERT INTO Post VALUES (15, 'Pellentesque sit ...');
INSERT INTO Post VALUES (16, 'Integer...');
INSERT INTO Post VALUES (17, 'Curabitur luctus ...');
INSERT INTO Post VALUES (18, 'Nam in ...');
INSERT INTO Post VALUES (19, 'Etiam ac ...');
 
insert into personKnowsPerson values (1, 2);
insert into personKnowsPerson values (2, 3);
insert into personKnowsPerson values (3, 4);
insert into personKnowsPerson values (4, 5);
insert into personKnowsPerson values (5, 6);
insert into personKnowsPerson values (6, 2);
insert into personKnowsPerson values (5, 3);
 
INSERT INTO personLikesPost VALUES (1, 10);
INSERT INTO personLikesPost VALUES (1, 11);
INSERT INTO personLikesPost VALUES (1, 12);
INSERT INTO personLikesPost VALUES (2, 10);
INSERT INTO personLikesPost VALUES (2, 13);
INSERT INTO personLikesPost VALUES (2, 14);
INSERT INTO personLikesPost VALUES (3, 11);
INSERT INTO personLikesPost VALUES (3, 15);
INSERT INTO personLikesPost VALUES (3, 16);
INSERT INTO personLikesPost VALUES (4, 12);
INSERT INTO personLikesPost VALUES (4, 17);
INSERT INTO personLikesPost VALUES (4, 18);
INSERT INTO personLikesPost VALUES (5, 13);
INSERT INTO personLikesPost VALUES (5, 14);
INSERT INTO personLikesPost VALUES (5, 19);
INSERT INTO personLikesPost VALUES (6, 15);
INSERT INTO personLikesPost VALUES (6, 16);
INSERT INTO personLikesPost VALUES (6, 17);
INSERT INTO personLikesPost VALUES (1, 18);
INSERT INTO personLikesPost VALUES (2, 19);

commit;
Beispiel: Abgleich von Vertices ohne Labels

Prompt: Find all the people IDs

SELECT person_id
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
    MATCH (v IS "PERSON")
    COLUMNS (VERTEX_ID(v) AS person_id))
Beispiel: Abgleich von Kanten ohne Labels

Prompt: Find all the edge IDs

SELECT edge_id
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
    MATCH (v1) -[e]-> (v2)
    COLUMNS (EDGE_ID(e) AS edge_id))
Beispiel: Abgleich von Kanten mit Labels

Prompt: Find all the knows relationship IDs

SELECT knows_id
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
    MATCH (p1 IS "PERSON") -[e IS "KNOWS"]-> (p2 IS "PERSON")
    COLUMNS (EDGE_ID(e) AS knows_id))
Beispiel: Abgleich von Pfadmustern mit einem oder mehreren Hops

Prompt: List all people who know someone who liked the post 'Sed fermentum...'

SELECT person_id, person_firstname, person_lastname
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
    MATCH (p1 IS "PERSON") -[e1 IS "KNOWS"]-> (p2 IS "PERSON") -[e2 IS "LIKES"]-> (post IS "POST")
    WHERE UPPER(post."CONTENT") = UPPER('Sed fermentum...')
    COLUMNS (VERTEX_ID(p1) AS person_id, p1."FIRSTNAME" AS person_firstname, p1."LASTNAME" AS person_lastname))
Beispiel: Auf Vertex- und Edge-Eigenschaften zugreifen

Prompt: Find first name and last name of all people

SELECT first_name, last_name
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
    MATCH (p IS "PERSON")
    COLUMNS (p."FIRSTNAME" AS first_name, p."LASTNAME" AS last_name))
Beispiel: Daten filtern

Prompt: Find post contents liked by John Doe

SELECT post_content
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
    MATCH (p IS "PERSON") -[e IS "LIKES"]-> (post IS "POST")
    WHERE UPPER(p."FIRSTNAME") = UPPER('John') AND UPPER(p."LASTNAME") = UPPER('Doe')
    COLUMNS (post."CONTENT" AS post_content))
Beispiel: Funktionen und Ausdrücke

Prompt: Show all people (full name) and display their key1 value from jsonProp property

SELECT person_fullname, json_key1
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
    MATCH (p IS "PERSON")
    COLUMNS (
	(p."FIRSTNAME" || ' ' || p."LASTNAME") AS person_fullname,
	JSON_QUERY(p."JSONPROP", '$.key1') AS json_key1
    )
)
Beispiel: Daten sortieren

Prompt: Find friends of Scott Tiger ordered by their last name

SELECT friend_firstname, friend_lastname
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
    MATCH (p IS "PERSON") -[e IS "KNOWS"]-> (f IS "PERSON")
    WHERE UPPER(p."FIRSTNAME") = UPPER('Scott') AND UPPER(p."LASTNAME") = UPPER('Tiger')
    COLUMNS (f."FIRSTNAME" AS friend_firstname, f."LASTNAME" AS friend_lastname)
)
ORDER BY friend_lastname
Beispiel: Zeilenbegrenzung

Prompt: Find all people ordered by first name. Skip one result and return 2 results only

SELECT person_firstname
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
    MATCH (p IS "PERSON")
    COLUMNS (p."FIRSTNAME" AS person_firstname))
ORDER BY person_firstname
OFFSET 1 ROWS FETCH NEXT 2 ROWS ONLY

Nicht unterstützte Abfragen

Für die folgenden Abfragen generieren bestimmte LLMs gültige NL2SQL, die resultierende SQL verwendet jedoch Features, die in Oracle AI Database 26ai noch nicht unterstützt werden.

Beispiel: Abfragen, bei denen ein bestimmtes Muster nicht abgeglichen werden muss

Prompt: Find people that do not know Scott.

EXISTS-Unterabfrage wird nicht unterstützt.

SELECT person_id, first_name, last_name
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
    MATCH (p1 IS "PERSON")
    WHERE NOT EXISTS (
	SELECT 1
	FROM GRAPH_TABLE("ADB_USER"."PERSONGRAPH"
	    MATCH (p2 IS "PERSON") -[e IS "PERSONKNOWSPERSON"]-> (p3 IS "PERSON"
)
	    WHERE p2."ID" = p1."ID" AND UPPER(p3."FIRSTNAME") = UPPER('Scott')
	    COLUMNS (1 AS dummy_value))
    )
    COLUMNS (p1."ID" AS person_id, p1."FIRSTNAME" AS first_name, p1."LASTNAME" A
S last_name))
Beispiel: Abfragen, die optional mit einem bestimmten Muster übereinstimmen müssen

Prompt: Show all people and how many posts they have liked (show people even if they have not liked a post).

OPTIONAL-Übereinstimmung wird nicht unterstützt.

SELECT person_id, person_firstname, person_lastname, liked_post_ids
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
MATCH (p is "PERSON") OPTIONAL MATCH (p) -[l is "PERSONLIKESPOST"]-> (post is "POST")
COLUMNS(
    VERTEX_ID(p) as person_id,
    p."FIRSTNAME" as person_firstname,
    p."LASTNAME" as person_lastname,
    JSON_ARRAYAGG(VERTEX_ID(post)) as liked_post_ids
))
Beispiel: Ungebundene rekursive Pfadmuster

Prompt: Find all people that Scott can reach.

Abfragen, die nicht gebundene Quantifizierer verwenden, werden nicht unterstützt.

SELECT person_id, person_firstname, person_lastname
FROM GRAPH_TABLE("ADB_USER"."PERSONGRAPH"
    MATCH (src IS "PERSON") -[e IS "PERSONKNOWSPERSON"]->* (dst IS "PERSON")
    WHERE src."FIRSTNAME" = 'Scott'
    COLUMNS (
	VERTEX_ID(dst) AS person_id,
	dst."FIRSTNAME" AS person_firstname,
	dst."LASTNAME" AS person_lastname
    )
)

Intermittierende Abfragen

Es hat sich gezeigt, dass LLMs Schwierigkeiten haben, wenn Abfragen übersetzt werden, für die mehrere GRAPH_TABLE-Operatoren erforderlich sind. Im Folgenden sind Beispiele aufgeführt:

Prompt: Show people who have liked all the same posts as Hans

SELECT person_id, person_name
FROM GRAPH_TABLE("PERSON_GRAPH"
  MATCH (hans is "PERSON") -[likes_hans is "PERSONLIKESPOST"]-> (post is "POST"),
	(other_person is "PERSON") -[likes_other is "PERSONLIKESPOST"]-> (post)
  WHERE hans."FIRSTNAME" = 'Hans'
  COLUMNS (VERTEX_ID(other_person) as person_id, other_person."FIRSTNAME" AS person_name)
)
WHERE NOT EXISTS (
  SELECT 1
  FROM GRAPH_TABLE("PERSONGRAPH"
    MATCH (hans is "PERSON") -[likes_hans is "PERSONLIKESPOST"]-> (post is "POST")
    WHERE hans."FIRSTNAME" = 'Hans'
    COLUMNS (VERTEX_ID(post) as post_id)
  ) hans_posts
  LEFT JOIN GRAPH_TABLE("PERSONGRAPH"
    MATCH (other_person is "PERSON") -[likes_other is "PERSONLIKESPOST"]-> (post
 is "POST")
    COLUMNS (VERTEX_ID(post) as post_id)
  ) other_posts
  ON hans_posts.post_id = other_posts.post_id
  WHERE other_posts.post_id IS NULL
)
Beispiel: Abgleich von rekursiven Pfadmustern mit definierten Bounds.

Prompt: Find all names of the people that can be reached in a 1 to 3 edge path

SELECT person_name
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
    MATCH (start_person IS "PERSON") -[e IS "KNOWS"]->{1,3} (end_person IS "PERSON")
    COLUMNS (end_person."FIRSTNAME" AS person_name))
Beispiel: Daten für Knoten entlang eines rekursiven Pfads filtern

Prompt: Find all names of the people that can be reached in a 1 to 3 edge path where each person is younger than the next one

SELECT person_name
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
    MATCH (start_person IS "PERSON") ((v1 IS "PERSON") -[e IS "KNOWS"]-> (v2 IS"PERSON") WHERE v1."AGE" < v2."AGE"){1,3} (end_person IS "PERSON")
    COLUMNS (end_person."FIRSTNAME" AS person_name))
Beispiel: Gruppierung und Aggregation

LLMs haben oft Schwierigkeiten, Abfragen zu übersetzen, für die Gruppierung und Aggregation erforderlich sind. Häufiger Fehler ist das Platzieren von Aggregationen in der COLUMNS-Klausel anstelle der SELECT-Klausel.

Prompt: Find the average number of posts liked by all the users

SELECT AVG(COUNT(post)) AS average_liked_count
FROM GRAPH_TABLE("PERSON_GRAPH"
MATCH (p IS "PERSON") -[e IS "PERSONLIKESPOST"]-> (post IS "POST")
COLUMNS (VERTEX_ID(p) AS person, VERTEX_ID(post) AS post))
GROUP BY person;