SQL aus Eingabeaufforderungen in natürlicher Sprache mit Select AI generieren
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.
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 |
|
Siehe Informationen zum Einbetten von Modellen in generative KI. |
Die OCI Generative AI-Chatmodelle werden für alle Die OCI-Textmodelle "Generieren" werden nur für die Aktion Informationen zum Konfigurieren Ihrer Profilattribute finden Sie unter Profilattribute. |
|
Azure OpenAI-Service |
|
text-embedding-ada-002 |
Am besten geeignet für die Generierung von SQL aus Eingabeaufforderungen in natürlicher Sprache, |
|
OpenAI |
|
text-embedding-ada-002 |
Am besten geeignet für die Generierung von SQL aus Eingabeaufforderungen in natürlicher Sprache, |
|
OpenAI-kompatibel |
Modelle von OpenAI-kompatiblen Providern wie:
|
Einbetten von Modellen von OpenAI-kompatiblen Anbietern. Beispiel: Siehe Fireworks AI-Einbettungsmodelle. |
Unterstützt eine Vielzahl von Anwendungsfällen. |
|
Cohere |
|
embed-englisch-v2.0 |
Am besten geeignet für |
|
|
|
text-embedding-004 (Standard) |
Am besten geeignet für die Generierung von SQL aus Eingabeaufforderungen in natürlicher Sprache, |
|
Anthrop |
|
- |
Am besten geeignet für die Generierung von SQL aus Eingabeaufforderungen in natürlicher Sprache, |
|
Hugging Face |
|
- |
Am besten geeignet für die Generierung von SQL aus Eingabeaufforderungen in natürlicher Sprache, |
|
AWS |
|
Unterstützt eine Vielzahl von Anwendungsfällen. |
Hinweis:
-
Geben Sie den OpenAI-kompatiblen Provider über
provider_endpointanstelle des Parametersprovideran. 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-instructbietet 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:
- 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.
- 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_PROFILEverwendet werden. - Weitere Informationen zu Ratenlimits für Token pro Minute in einem Modell finden Sie unter Azure OpenAI-Servicequotas und -limits.
- 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
- Zugriff auf Azure OpenAI Service zulassen:
- Mit Ihrem Secret-API-Schlüssel können Sie den Zugriff auf den Azure-OpenAI-Service zulassen. Weitere Informationen finden Sie im Beispiel unter Beispiele für die Verwendung von Select AI.
- 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.
- Gehen Sie zu Google AI Studio.
- Klicken Sie auf "Bei Google AI Studio anmelden".
- Klicken Sie im Prompt-Fenster auf "API-Schlüssel abrufen".
- Wählen Sie auf der nächsten Seite alle zutreffenden Optionen aus.
- Klicken Sie auf "API-Schlüssel erstellen".
-
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.
- Rufen Sie die Anthropic Developer Console auf.
- Registrieren Sie sich für ein Konto, wenn Sie noch kein Konto haben.
- Navigieren Sie nach der Anmeldung zum API-Abschnitt oder zum Dashboard.
- Suchen Sie nach einer Option zum Generieren oder Anzeigen von API-Schlüsseln.
- Klicken Sie auf diese Option, um einen neuen API-Schlüssel zu erstellen.
-
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.
- Gehen Sie zu Umarmung.
- Registrieren Sie sich für ein Konto, wenn Sie noch kein Konto haben.
- Navigieren Sie zu Ihren Kontoeinstellungen.
- Suchen Sie im Navigationsmenü die Zugriffstoken.
- Klicken Sie auf diese Option, um einen neuen API-Schlüssel zu erstellen.
- 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_CREDENTIALzu erstellen.Führen Sie den folgenden Prozess aus, um Ihren API-Schlüssel und Modellnamen abzurufen:
- Melden Sie sich für ein AWS-Konto an, wenn Sie noch keines haben.
- Erstellen Sie Ihre Zugriffstasten und Secret Keys in der AWS Bedrock-Konsole.
- Kopieren Sie die generierten Schlüssel, und speichern Sie sie.
- Fordern Sie Zugriff auf ihre Basismodelle an. Siehe Auf Amazon Bedrock-Grundlagenmodelle zugreifen.
- 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:- ein Basismodell, geben Sie die Modell-ID oder den zugehörigen ARN (Amazon Resource Names) an. Eine Liste der Modell-IDs für Basismodelle finden Sie unter Amazon Bedrock-Basismodell-IDs.
- ein Inferenzprofil, geben Sie die Inferenzprofil-ID oder deren ARN an. Eine Liste der Inferenzprofil-IDs finden Sie unter Unterstützte Regionen und Modelle für regionsübergreifende Inferenz.
- ein bereitgestelltes Modell, geben Sie die ARN des bereitgestellten Durchsatzes an. Weitere Informationen finden Sie unter Inferenz mit einem bereitgestellten Durchsatz ausführen.
- ein benutzerdefiniertes Modell, den bereitgestellten Durchsatz dafür erwerben. Geben Sie dann die ARN des resultierenden bereitgestellten Modells an. Weitere Informationen finden Sie unter Benutzerdefiniertes Modell in Amazon Bedrock verwenden.
- ein Amazon Bedrock Marketplace-Modell, geben Sie die ID oder die ARN des von Ihnen erstellten Marketplace-Endpunkts an (siehe Amazon Bedrock Marketplace).
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.
DBMS_CLOUD_AI:
-
Erteilen Sie dem Benutzer, der Select AI verwenden möchte, die Berechtigung
EXECUTEfür das PackageDBMS_CLOUD_AI.Standardmäßig wird nur ADMIN-Benutzern die Berechtigung
EXECUTEerteilt. Der ADMIN-Benutzer kann anderen Benutzern die BerechtigungEXECUTEerteilen.Das folgende Beispiel erteiltADB_USERdie BerechtigungEXECUTE:grant execute on DBMS_CLOUD_AI to ADB_USER;Im folgenden Beispiel wird
ADB_USERdie 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; / -
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.
- 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.
EXECDBMS_CLOUD.CREATE_CREDENTIAL('OPENAI_CRED', 'OPENAI', 'your_api_token');
APPEND_HOST_ACE-Funktionsparameter
| Parameter | Beschreibung |
|---|---|
|
|
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 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. |
|
|
Die Access Control-Einträge (ACE). Der Typ |
DBMS_CLOUD.CREATE_CREDENTIAL-Parameter
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üsselwortAI können Sie keine PL/SQL-Anweisungen, DDL-Anweisungen oder DML-Anweisungen ausführen.
Syntax
SELECT AI action natural_language_promptParameter
| Parameter | Beschreibung |
|---|---|
|
|
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. |
|
|
Zeigt die SQL-Anweisung für einen Prompt in natürlicher Sprache an. |
|
|
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. |
|
|
Generiert eine Antwort direkt aus dem LLM basierend auf dem Prompt. Wenn |
|
|
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
AIwird in Database Actions oder im APEX-Service nicht unterstützt. Sie können nur die FunktionDBMS_CLOUD_AI.GENERATEverwenden. -
Das Schlüsselwort
AIwird nur in einerSELECT-Anweisung unterstützt. -
Mit dem Schlüsselwort
AIkönnen Sie keine PL/SQL-Anweisungen, DDL-Anweisungen oder DML-Anweisungen ausführen. -
Die Sequenz lautet
SELECT, gefolgt vonAI. Bei diesen Schlüsselwörtern wird nicht zwischen Groß- und Kleinschreibung unterschieden. Nachdem eineDBMS_CLOUD_AI.SET_PROFILEkonfiguriert wurde, ist der Text nachSELECT AIeine Eingabeaufforderung in natürlicher Sprache. Wenn kein AI-Profil festgelegt ist, meldetSELECTAIden 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 AIdie generierte SQL für eine bestimmte Eingabeaufforderung in natürlicher Sprache nicht ausführen. -
Möglicherweise kann
SELECT AIkeine SQL für eine bestimmte Eingabeaufforderung in natürlicher Sprache generieren.
In einem solchen Szenario antwortet
SELECT AImit Informationen, die Sie beim Generieren von gültigem SQL unterstützen. -
-
Verwenden Sie die Aktion
chatmitSELECT AI chat, um mehr über SQL-Konstrukte zu erfahren. Um bessere Ergebnisse mit der Aktionchatzu 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
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_IDfest, und führen SieSELECT AI <ACTION> <PROMPT>aus. -
Übergeben Sie die
conversation_idim Argumentparamsder FunktionDBMS_CLOUD_AI.GENERATE.
Hinweis:
Wenn Sie sowohl mehrere Unterhaltungen als auch die Einstellungconversation: [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.
- 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 |
Verwenden Sie die Prozedur |
|
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 |
|
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 |
|
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 |
|
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 |
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.
-
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 mitSELECT AI feedback <feedback>oder derDBMS_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.
- 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.
-
SQL_TEXT: Nehmen Sie das Feedback in Anführungszeichen für die aktuelle SQL-Abfrage auf, oder Sie können dieSQL_TEXTfür eine bestimmte Abfrage abrufen, indem Sie dieV$MAPPED_SQL-Ansicht abfragen. -
SQL_ID: Sie können dieSQL_IDabrufen, indem Sie dieV$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 BerechtigungREADfür die Tabellensys.v_$sessionundv_$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.
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
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_TABLEfü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.
-
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:
-
Synthetische Datengenerierung
-
Vermischen von Eigenschaftsdiagrammen mit anderen Objekttypen im AI-Profil
-
Nicht unterstützte und intermittierende Abfragen. Weitere Informationen finden Sie unter Beispiel: Beispiel-Prompts für Eigenschaftsdiagramme.
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.
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
- Konversation erstellen
- Konversation in der aktuellen Benutzersession festlegen
- Verwenden Sie
Select AI <action> <prompt>
- Verwenden Sie die Funktion
DBMS_CLOUD_AI.CREATE_CONVERSATION, und legen Sie die Unterhaltung dann mitDBMS_CLOUD_AI.SET_CONVERSATION_IDfest. - Rufen Sie die Prozedur
DBMS_CLOUD_AI.CREATE_CONVERSATIONdirekt auf, um die Unterhaltung in einem Schritt zu erstellen und festzulegen.
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 completedIm 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-9C6D4664EC3ASie 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-9C6D46644B92Nachdem 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.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.
Sie können die DBMS_CLOUD_AI-Unterhaltungsansichten abfragen, um Konversations- und Prompt-Details zu prüfen. Weitere Informationen finden Sie unter .
Hinweis:
DieAnsichten 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 2Sie 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 20Sie 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-9C6D46644B92Sie 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 2Beispiel: 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.
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}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}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.
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 jedesql_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');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" ASCDieses 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_IDDieses 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
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" wBeispiel: 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.
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.
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;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))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))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))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))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))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))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
)
)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_lastnamePrompt: 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 ONLYNicht 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.
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))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
))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
)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))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))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;