Genera istruzioni SQL da prompt linguaggio naturale mediante selezione AI
Autonomous AI Database on Dedicated Exadata Infrastructure Select AI consente di eseguire query sui dati utilizzando il linguaggio naturale.
La funzione Select AI consente ad Autonomous AI Database di utilizzare l'intelligenza artificiale generativa con LLM (Large Language Models) per convertire il testo di input dell'utente in Oracle SQL. Select AI elabora il prompt del linguaggio naturale, integra il prompt con i metadati e quindi genera ed esegue una query SQL.
Informazioni su Select AI
Utilizza il linguaggio naturale per interagire con il tuo database e gli LLM attraverso SQL per migliorare la produttività degli utenti e sviluppare applicazioni basate sull'intelligenza artificiale. Select AI semplifica e automatizza l'utilizzo dell'intelligenza artificiale generativa, indipendentemente dal fatto che generi, esegua e spieghi SQL da un prompt del linguaggio naturale, utilizzando la retrieval augmented generation con le memorie di vettore, generando dati sintetici o chiacchierando con l'LLM.
Quando si utilizza Select AI, Autonomous AI Database gestisce il processo di conversione del linguaggio naturale in SQL. Ciò significa che è possibile fornire un prompt in linguaggio naturale anziché un codice SQL per interagire con i dati. Select AI funge da strumento di produttività per utenti e sviluppatori SQL e consente agli utenti SQL non esperti di ricavare insight utili dai propri dati, senza dover comprendere strutture di dati o linguaggi tecnici.
Select AI automatizza anche il processo di retrieval augmented generation (RAG) dalla generazione di incorporamenti vettoriali al recupero di contenuti pertinenti in base al prompt attraverso la ricerca di somiglianza semantica utilizzando la memoria di vettore. Altre funzioni includono la generazione di dati sintetici, il supporto della cronologia delle chat per le conversazioni e altre funzioni, tutte da un'interfaccia SQL.
Il pacchetto DBMS_CLOUD_AI consente l'integrazione con un LLM specificato dall'utente per la generazione di codice SQL utilizzando i prompt in linguaggio naturale. Per la generazione dal linguaggio naturale a SQL, questo package fornisce un prompt aumentato all'LLM contenente i metadati dello schema di database pertinenti. Ciò consente di generare, eseguire e spiegare le query SQL in base ai prompt in linguaggio naturale. Inoltre, facilita il recupero della generazione aumentata utilizzando le memorie di vettore, la generazione di dati sintetici e consente di chattare con l'LLM. Il pacchetto DBMS_CLOUD_AI funziona con i provider AI elencati in Select your AI Provider and LLMs.
Nota:
- È necessario disporre di un account con il provider AI e fornire le credenziali tramite gli oggetti
DBMS_CLOUD_AIutilizzati da Autonomous AI Database. - È possibile sottomettere i prompt in più lingue. La qualità del risultato dipende dalle abilità dello specifico LLM o del modello di incorporamento (trasformatore) utilizzato. Per il supporto in più lingue, controllare la documentazione del modello LLM o di incorporamento.
Piattaforme supportate
Select AI è supportata su Autonomous AI Database Serverless e Autonomous AI Database sull'infrastruttura Exadata dedicata e su Cloud at Customers.
-
Autonomous AI Database serverless
-
Autonomous AI Database sull'infrastruttura Exadata dedicata
-
Autonomous AI Database on Dedicated Exadata Infrastructure Region
-
Autonomous AI Database Cloud@Customer
Terminologia correlata
È importante comprendere i vari termini utilizzati con Select AI prima di utilizzarla.
Di seguito sono riportati i termini correlati alla funzione Seleziona AI.
| Termine | Definizione |
|---|---|
| Conversazioni | Le conversazioni in Select AI rappresentano uno scambio interattivo tra l'utente e il sistema, consentendo agli utenti di eseguire query o interagire con il database tramite una serie di prompt in linguaggio naturale. Select AI incorpora conversazioni a breve termine basate su sessioni per generare risposte contestuali per il prompt corrente in base alle interazioni precedenti. Fino a 10 prompt precedenti sono incorporati nella richiesta corrente con conversazioni a breve termine, creando un prompt aumentato che viene inviato all'LLM. Select AI supporta l'utilizzo di conversazioni personalizzabili a lungo termine che consentono di utilizzare Select AI con argomenti diversi senza mescolare contesto, che possono essere configurate tramite API di conversazione dal package DBMS_CLOUD_AI. Per ulteriori dettagli, vedere Usa e personalizza conversazioni. |
| Credenziale database | Le credenziali del database sono credenziali di autenticazione utilizzate per accedere e interagire con i database. In genere sono costituiti da un nome utente e una password, a volte integrati da fattori di autenticazione aggiuntivi come i token di sicurezza. Queste credenziali vengono utilizzate per stabilire una connessione sicura tra un'applicazione o un utente e un database, garantendo che solo gli utenti autorizzati o i sistemi possano accedere e manipolare i dati memorizzati nel database. |
| Allucinazione in LLM | L'allucinazione nel contesto dei modelli linguistici di grandi dimensioni si riferisce a un fenomeno in cui il modello genera testo non corretto, privo di senso o non correlato al prompt di input. Nonostante sia il risultato del tentativo del modello di generare testo coerente, queste istanze possono contenere informazioni fabbricate, fuorvianti o puramente immaginative. L'allucinazione può verificarsi a causa di pregiudizi nei dati di addestramento, mancanza di una corretta comprensione del contesto o limitazioni nel processo di addestramento del modello. |
| IAM | Oracle Cloud Infrastructure Identity and Access Management (IAM) ti consente di controllare l'accesso alle tue risorse cloud. È possibile controllare il tipo di accesso di un gruppo di utenti e a quali risorse specifiche. Per ulteriori informazioni, vedere Panoramica di Identity and Access Management. |
| Perfezionamento iterativo | La raffinatezza iterativa è un processo di miglioramento graduale di una soluzione o di un modello attraverso cicli ripetuti di aggiustamenti basati sul feedback o sulla valutazione. Inizia con un'approssimazione iniziale, la perfeziona passo dopo passo e continua fino a raggiungere l'accuratezza o il risultato desiderato. Ogni iterazione si basa sulla precedente, incorporando correzioni o ottimizzazioni per avvicinarsi all'obiettivo. Nella generazione del sintetico di testo, la ridefinizione iterativa può essere utile per l'elaborazione di file o documenti di grandi dimensioni. Il processo divide il testo in blocchi di dimensioni gestibili, ad esempio, che rientrano nei limiti di token di un LLM, genera un riepilogo per un chunk e quindi migliora il riepilogo incorporando sequenzialmente i chunk seguenti. Casi d'uso per il perfezionamento iterativo:
Vedere Tecniche di riepilogo. |
| MapReduce | In generale, il modello di programmazione MapReduce consente l'elaborazione di dati di grandi volumi dividendo le attività in due fasi: Mappa e Riduci.
Nel caso di Select AI Summarize, le partizioni MapReduce vengono testate in più chunk ed elaborate in parallelo e in modo indipendente, generando singoli riepiloghi per ogni chunk. Questi riassunti vengono poi combinati per formare un riassunto complessivo coerente. Casi d'uso per la riduzione della mappa:
Vedere Tecniche di riepilogo. |
| Metadati | I metadati sono dati che descrivono i dati. Nel caso di Select AI, i metadati sono metadati del database, che si riferiscono AI dati che descrivono la struttura, l'organizzazione e le proprietà delle tabelle e delle viste del database. Per le tabelle e le viste di database, i metadati includono nomi e tipi di colonna, vincoli e chiavi, definizioni delle viste, relazioni, derivazione, indicatori di qualità e freschezza, classificazioni di sicurezza e criteri di accesso. Metadati ben gestiti consentono di scoprirebilità, uso corretto, ottimizzazione delle prestazioni e compliance. Select AI incrementa i prompt NL2SQL con metadati di tabella che includono la definizione della tabella (nome tabella, nomi colonne e relativi tipi di dati) e, facoltativamente, commenti, annotazioni e vincoli di tabelle e colonne. |
| Integrazione dei metadati | La pratica di aumentare gli schemi di database con descrizioni, commenti e annotazioni di alta qualità in modo che un LLM possa comprendere meglio l'intento per tabelle e colonne, chiarire il significato aziendale e generare istruzioni SQL più accurate. Trasforma i nomi di tabelle o colonne nude in asset ben documentati con intenti, relazioni e vincoli chiari. Informazioni sul candidato da includere:
Per ulteriori informazioni sull'aggiunta di tali metadati mediante Oracle SQL Developer for VS Code tramite Visual Studio Code, vedere Panoramica sull'arricchimento AI. |
| Prompt linguaggio naturale | I prompt del linguaggio naturale sono istruzioni o richieste leggibili dall'utente fornite per guidare i modelli di intelligenza artificiale generativa, come i modelli di linguaggio di grandi dimensioni. Invece di utilizzare linguaggi o comandi di programmazione specifici, gli utenti possono interagire con questi modelli inserendo prompt in una forma più conversazionale o in linguaggio naturale. I modelli generano quindi l'output in base al prompt fornito. |
| Lista di controllo dell'accesso (ACL, Network Access Control List) | Una lista di controllo dell'accesso di rete è un set di regole o autorizzazioni che definiscono quale traffico di rete è consentito passare attraverso un dispositivo di rete, ad esempio un router, un firewall o un gateway. Le ACL vengono utilizzate per controllare e filtrare il traffico in entrata e in uscita in base a vari criteri, ad esempio indirizzi IP, numeri di porta e protocolli. Svolgono un ruolo cruciale nella sicurezza della rete consentendo agli amministratori di gestire e limitare il traffico di rete per prevenire accessi non autorizzati, potenziali attacchi e violazioni dei dati. |
| Ricerca somiglianza | La ricerca di somiglianza identifica e recupera i datapoint che corrispondono strettamente a una determinata query confrontando i vettori di funzioni in una memoria di vettore. |
| Distanze vettoriali | Le distanze vettoriali misurano la somiglianza o la dissimilanza tra vettori di feature calcolando la distanza tra loro in uno spazio multidimensionale. |
| Indice vettore | Un indice vettoriale organizza e memorizza i vettori di funzioni per consentire una ricerca efficiente della somiglianza e il recupero dei dati correlati. |
| Aree di memorizzazione vettori | Una memoria di vettore include sistemi che memorizzano, gestiscono e abilitano la ricerca di somiglianza semantica che coinvolge incorporamenti di vettori. Ciò include database vettoriali standalone e Oracle Database 23ai AI Vector Search. |
Seleziona casi d'uso AI
Select AI migliora l'interazione dei dati e consente agli sviluppatori di creare applicazioni basate sull'intelligenza artificiale direttamente da SQL, trasformando i prompt del linguaggio naturale in query SQL e risposte di testo, supportando l'interazione della chat con gli LLM, migliorando l'accuratezza delle risposte con i dati attuali utilizzando la RAG e generando dati sintetici.
I casi d'uso includono:
-
Genera SQL da prompt in linguaggio naturale
Produttività degli sviluppatori: Select AI migliora notevolmente la produttività degli sviluppatori fornendo rapidamente query SQL "starter". Gli sviluppatori possono inserire prompt in linguaggio naturale e Select AI genera SQL in base alle tabelle e alle viste dello schema di database. Ciò riduce i tempi e gli sforzi necessari per scrivere query complesse da zero, consentendo agli sviluppatori di concentrarsi sul perfezionamento e l'ottimizzazione delle query generate per le loro esigenze specifiche.
Query in linguaggio naturale per gli utenti finali: Select AI consente agli utenti finali di interagire con le tabelle di dati e le viste sottostanti dell'applicazione utilizzando query in linguaggio naturale. Questa funzionalità consente agli utenti senza esperienza SQL di porre domande e recuperare i dati direttamente, rendendo l'accesso ai dati più intuitivo e intuitivo rispetto alle funzionalità di LLM in uso e alla qualità dei metadati dello schema disponibili.
Altre funzionalità per la generazione SQL: le funzionalità evidenziate riportate di seguito sono supportate anche per la generazione da linguaggio naturale a SQL.
-
Specifica schema o tabelle o viste: Select AI consente di specificare una lista di oggetti costituita da schema e, facoltativamente, tabelle o viste all'interno di tale schema.
-
Rileva automaticamente i metadati delle tabelle pertinenti: Select AI rileva automaticamente le tabelle pertinenti e invia i metadati solo per quelle tabelle specifiche, pertinenti alla query, in Oracle Database 26ai.
-
Limita accesso alle tabelle: selezionare AI consente di limitare l'accesso alle tabelle prendendo in considerazione solo le tabelle elencate negli attributi del profilo AI per la generazione SQL.
-
Specifica la distinzione tra maiuscole e minuscole per le colonne: Select AI consente all'utente di specificare la distinzione tra maiuscole e minuscole in modo che l'LLM produca risposte senza distinzione tra maiuscole e minuscole dal database e dall'LLM.
-
-
Conversazioni
Abilita funzioni simili a chatbot con Select AI, consentendo agli utenti di avere conversazioni naturali per l'esecuzione di query sui dati ed eseguire azioni. Queste chat possono tenere traccia del contesto, fornendo risposte di follow-up che chiariscono o espandono le domande originali. Questo scenario aumenta il coinvolgimento e semplifica le query complesse attraverso la conversazione.
-
Flussi di lavoro Agentic con Seleziona agente AI
Utilizza Select AI Agent per coordinare agenti, strumenti (SQL, RAG, Websearch, Notifications) e task per scenari a più fasi quali il recupero dei dati e la notifica. Per ulteriori informazioni, consulta la sezione Creare agenti autonomi con Select AI Agent.
-
Generazione multimediale personalizzata
È possibile utilizzare l'intelligenza artificiale per generare contenuti multimediali personalizzati, ad esempio e-mail personalizzate in base AI dettagli dei singoli clienti. Ad esempio, nel tuo prompt potresti istruire l'LLM a creare un'e-mail amichevole e ottimista che incoraggi un cliente a provare una serie di prodotti consigliati. Questi suggerimenti potrebbero essere basati sui dati demografici dei clienti o su altre informazioni specifiche disponibili nel tuo database. Questo livello di personalizzazione migliora il coinvolgimento dei clienti offrendo contenuti pertinenti e accattivanti direttamente al cliente.
-
Generazione del codice
Con l'azione Seleziona AI
chat, è possibile utilizzare Seleziona AI per chiedere all'LLM specificato di generare codice da prompt in linguaggio naturale. Questa funzione supporta vari linguaggi di programmazione come SQL, Python, R e Java. Di seguito vengono forniti alcuni esempi.-
Codice Python: "Scrivere il codice Python per calcolare una matrice di confusione su un DataFrame con colonne ACTUAL e PREDICTED".
-
SQL DDL: "Scrivere la DDL per una tabella SQL con il nome, l'età, il reddito e il paese delle colonne".
-
Query SQL: "Scrivere la query SQL che utilizzerà il modello in-database di Oracle Machine Learning denominato CHURN_DT_MODEL per prevedere quali clienti abbandoneranno e con quale probabilità".
-
-
Retrieval-augmented generation (RAG)
Utilizza il contenuto della memoria di vettore per la ricerca della somiglianza semantica per migliorare l'accuratezza e la pertinenza dei prompt nelle risposte LLM.
-
Generazione di dati sintetici
Genera dati sintetici utilizzando LLM conformi allo schema per test delle soluzioni, proof of concept e altri usi. I dati sintetici possono supportare test migliori delle tue applicazioni in assenza di dati reali, portando alla qualità complessiva della tua applicazione.
Linee guida sull'uso
Fornisce istruzioni d'uso che garantiscono un utilizzo efficace e corretto dei prompt in linguaggio naturale per la generazione di SQL per garantire un'esperienza utente migliorata.
Destinazione d'uso
Questa funzione è destinata alla generazione e all'esecuzione di query SQL derivanti da prompt in linguaggio naturale forniti dall'utente. Automatizza ciò che un utente potrebbe fare manualmente in base ai metadati dello schema in combinazione con un modello linguistico di grandi dimensioni (LLM, large language model) di sua scelta.
Sebbene sia possibile fornire qualsiasi prompt, inclusi quelli che non sono correlati alla produzione dei risultati delle query SQL, Select AI si concentra sulla generazione delle query SQL. Selezionare AI per sottomettere richieste generali con l'azione chat.
Prompt - Dati augmentation
Il database aumenta il prompt specificato dall'utente con i metadati del database per mitigare le allucinazioni del LLM. Il prompt aumentato viene quindi inviato all'LLM specificato dall'utente per produrre la query.
Il database aumenta il prompt solo con i metadati dello schema. Questi metadati possono includere definizioni di schema, commenti a tabelle e colonne e contenuti disponibili nel dizionario dati e nel catalogo. Ai fini della generazione SQL, il database non fornisce il contenuto di tabelle o viste (valori effettivi di righe o colonne) durante l'aumento del prompt.
L'azione narrate, tuttavia, fornisce il risultato della query, che può contenere dati di database, al LLM specificato dall'utente da cui generare testo in linguaggio naturale che descriva i risultati della query.
AVVERTENZA: i modelli LLM (Large Language Model) sono stati formati su un'ampia gamma di documenti e contenuti testuali, in genere provenienti da Internet. Di conseguenza, gli LLM potrebbero avere modelli incorporati da contenuti non validi o dannosi, inclusa l'iniezione SQL. Pertanto, sebbene gli LLM siano abili a generare contenuti utili e pertinenti, possono anche generare informazioni errate e false, incluse query SQL che producono risultati imprecisi e/o compromettono la sicurezza dei tuoi dati. Le query generate per tuo conto dal provider LLM specificato dall'utente verranno eseguite nel tuo database. L'utilizzo di questa funzione da parte Vostra è unicamente a Vostro rischio e, in deroga a eventuali altri termini e condizioni relativi ai servizi forniti da Oracle, costituisce accettazione di tale rischio e l'espressa esclusione della responsabilità di Oracle per eventuali danni derivanti da tale utilizzo.
Seleziona provider AI e LLM
Scegli un provider AI e un LLM che soddisfi i tuoi standard di sicurezza e si allinei alle tue esigenze specifiche, come la generazione di testo o codice.
Diversi LLM eccellono in varie attività in base ai dati di formazione e allo scopo previsto. Alcuni modelli sono eccellenti per la generazione di testo, ma potrebbero non funzionare bene nella generazione del codice, mentre altri sono specificamente ottimizzati per le attività di codifica. Scegli un LLM che meglio si adatta alle tue esigenze.
| Provider AI | LLM | Modello di incorporamento per RAG | Scopo |
|---|---|---|---|
| AI generativa OCI |
Fare riferimento a quanto riportato di seguito. |
Vedere Informazioni sull'incorporamento dei modelli nell'AI generativa. |
I modelli di chat AI generativa OCI sono supportati per tutte le azioni I modelli di testo di generazione OCI sono supportati solo per l'azione Per configurare gli attributi del profilo, vedere Attributi profilo. |
| Servizio OpenAI di Azure |
|
inserimento testo-ada-002 | Ideale per generare istruzioni SQL dai prompt in linguaggio naturale, dall'azione chat e da Select AI RAG. |
| OpenAI |
|
inserimento testo-ada-002 | Ideale per generare istruzioni SQL dai prompt in linguaggio naturale, dall'azione chat e da Select AI RAG. |
| Compatibile con OpenAI | Modelli di provider compatibili con OpenAI come:
|
Incorporamento di modelli da provider compatibili con OpenAI. Ad esempio, vedere Modelli di incorporamento AI Fireworks. | Supporta una vasta gamma di casi d'uso. |
| Cohere |
|
embed-english-v2.0 | Ideale per l'azione chat. |
|
text-embedding-004 (predefinito) | Ideale per generare istruzioni SQL dai prompt in linguaggio naturale, dall'azione chat e da Select AI RAG. |
|
| Antropico |
|
ND | Ideale per generare istruzioni SQL dai prompt in linguaggio naturale, dall'azione chat e da Select AI RAG. |
| Hugging Face |
|
ND | Ideale per generare istruzioni SQL dai prompt in linguaggio naturale, dall'azione chat e da Select AI RAG. |
| AWS |
|
Supporta una vasta gamma di casi d'uso. |
Nota:
-
Specificare il provider compatibile con OpenAI tramite il parametro
provider_endpointanziché il parametroprovider. Vedere Attributi profilo. -
Per i modelli che accettano immagini, utilizzare
meta.llama-3.2-90b-vision-instruct. Questo modello è specificamente addestrato per la visione e le immagini. Sebbene possa essere utilizzato per la generazione di testo e SQL, il modello è più adatto per le immagini. Per ulteriori informazioni, vedere Chat in OCI Generative AI.Il modello
meta.llama-3.2-11b-vision-instructoffre solide funzionalità multimodali. -
I modelli di incorporamento sono noti anche come modelli di trasformatori.
Configura profili AI mediante DBMS_CLOUD_AI
Autonomous AI Database utilizza i profili AI per facilitare e configurare l'accesso a un LLM e per impostare la generazione, l'esecuzione e la spiegazione di SQL in base AI prompt del linguaggio naturale. Inoltre facilita il recupero della generazione aumentata utilizzando modelli di incorporamento e indici vettoriali e consente di chattare con l'LLM.
I profili AI includono oggetti di database che sono la destinazione per le query in linguaggio naturale. I metadati utilizzati da queste destinazioni possono includere i nomi delle tabelle di database, i nomi delle colonne, i tipi di dati delle colonne e i commenti. È possibile creare e configurare profili AI utilizzando le procedure DBMS_CLOUD_AI.CREATE_PROFILE e DBMS_CLOUD_AI.SET_PROFILE.
Requisiti per DBMS_CLOUD_AI
Per eseguire DBMS_CLOUD_AI, è necessario quanto segue:
-
Accesso a un account cloud Oracle Cloud Infrastructure e a un'istanza di Autonomous AI Database.
-
Account API a pagamento per un provider AI supportato, uno dei seguenti:
-
OpenAI:
Per consentire a OpenAI di generare SQL dai prompt in linguaggio naturale, ottenere le chiavi API dall'account a pagamento OpenAI.
La chiave API segreta è disponibile nelle impostazioni utente.
-
Cohere:
Per consentire a Cohere di generare istruzioni SQL dai prompt del linguaggio naturale, ottenere le chiavi API dall'account a pagamento Cohere.
Fare clic su Dashboard e fare clic su Chiavi API nella navigazione a sinistra. Copiare la chiave API predefinita o crearne un'altra. Per ulteriori informazioni, vedere API-chiavi.
-
Servizio OpenAI di Azure:
Per consentire a Azure OpenAI Service di generare SQL da prompt in linguaggio naturale, configurare e fornire l'accesso al provider AI.
Per utilizzare Azure OpenAI Service, effettuare le operazioni riportate di seguito.
-
Ottieni le tue chiavi API segrete. È possibile trovare le chiavi API nella sezione Resource Management del portale di Azure. Nella pagina Risorsa servizio OpenAI di Azure fare clic su Chiavi ed endpoint. È possibile copiare KEY1 o KEY2.
-
Creare una risorsa di Azure OpenAI Service e distribuire un modello: Creare e distribuire una risorsa di Azure OpenAI Service.
Suggerimento
-
Tenere presente il nome della risorsa e il nome della distribuzione poiché tali parametri vengono utilizzati per fornire l'autorizzazione di accesso alla rete e creare il profilo del servizio Azure OpenAI utilizzando la procedura
DBMS_CLOUD_AI.CREATE_PROFILE. -
Per ulteriori informazioni sui limiti di frequenza per il token al minuto in un modello, vedere Quote e limiti del servizio OpenAI di Azure.
-
-
Consenti accesso al servizio OpenAI di Azure:
- È possibile utilizzare la chiave API segreta per consentire l'accesso al servizio OpenAI di Azure. Per ulteriori informazioni, vedere l'esempio in Esempi di utilizzo di Select AI.
-
-
AI generativa OCI:
-
Google:
Per consentire a Google AI Studio di generare risposte SQL e di testo AI prompt del linguaggio naturale, ottenere le chiavi API dall'account a pagamento di Google AI Studio.
-
Vai a Google AI Studio.
-
Fare clic su Accedi a Google AI Studio.
-
Fare clic su Recupera chiave API nella schermata del prompt.
-
Selezionare tutte le opzioni applicabili nella pagina successiva.
-
Fare clic su Crea chiave API.
-
Fare clic su Crea chiave API nel nuovo progetto.
La schermata visualizza lo stato di avanzamento e genera una chiave API. Copiare la chiave e salvarla.
-
-
Antropico:
Per consentire a Anthropic Developer Console di generare risposte SQL e di testo ai prompt del linguaggio naturale, ottenere API key dall'account a pagamento Anthropic Developer Console.
-
Passare a Anthropic Developer Console.
-
Registrati per un account se non ne hai già uno.
-
Una volta eseguito il login, passare alla sezione API o al dashboard.
-
Cercare un'opzione per generare o visualizzare le chiavi API.
-
Fare clic per creare una nuova chiave API.
-
Copiare la chiave API generata e salvarla.
L'API Claude è un servizio a pagamento. Per poter utilizzare la chiave API, dovrai aggiungere crediti al tuo account.
-
-
Hugging Face:
Per abilitare Hugging Face come provider AI per generare risposte SQL e di testo AI prompt del linguaggio naturale, ottieni le chiavi API dal tuo account a pagamento Hugging Face.
-
Passare a Hugging Face.
-
Registrati per un account se non ne hai già uno.
-
Passare alle impostazioni dell'account.
-
Nel menu di navigazione individuare i token di accesso.
-
Fare clic per creare una nuova chiave API.
-
Copiare la chiave API generata e salvarla.
-
-
AWS:
Per abilitare AWS, ottenere la chiave API e l'ID modello.
Ottenere la chiave API e utilizzarla per creare le credenziali tramite
DBMS_CLOUD.CREATE_CREDENTIAL.Seguire questo processo per ottenere la chiave API e il nome del modello:
-
Registrati per un account AWS se non ne hai già uno.
-
Creare le chiavi di accesso e le chiavi segrete da AWS Bedrock Console.
-
Copiare le chiavi generate e salvarle.
-
Richiedi l'accesso ai loro modelli di base. Vedere Accedi ai modelli di base di Amazon Bedrock.
-
Ottenere l'ID modello. È necessario l'ID modello nella procedura
DBMS_CLOUD_AI.CREATE_PROFILE. L'ID modello dipende dalle risorse utilizzate. Se si utilizza:-
un modello di base, specificare l'ID del modello o il relativo ARN (Amazon Resource Names). Per un elenco degli ID dei modelli per i modelli di base, vedere ID dei modelli di base Amazon Bedrock
-
un profilo di inferenza, specificare l'ID del profilo di inferenza o il relativo ARN. Per un elenco degli ID profilo inferenza, vedere Aree e modelli supportati per l'inferenza tra più aree.
-
un modello con provisioning eseguito, specificare l'ARN del throughput con provisioning eseguito. Per ulteriori informazioni, vedere Eseguire l'inferenza utilizzando un throughput con provisioning eseguito.
-
un modello personalizzato, acquistare il throughput con provisioning eseguito. Quindi, specificare l'ARN del modello di provisioning risultante. Per ulteriori informazioni, vedere Utilizzare un modello personalizzato in Amazon Bedrock.
-
un modello Amazon Bedrock Marketplace, specificare l'ID o l'ARN dell'endpoint del marketplace creato, vedere Amazon Bedrock Marketplace.
Nota: il modello importato non è supportato con l'API Bedrock Converse.
Per utilizzare AWS come provider, vedere Esempio: selezionare AI con AWS.
-
-
-
-
Privilegi ACL di rete per accedere al provider AI esterno.
Nota: l'ACL di rete non è applicabile per l'AI generativa OCI.
-
Credenziale che fornisce l'accesso al provider AI.
Per configurare DBMS_CLOUD_AI:
-
Concedere il privilegio
EXECUTEsul pacchettoDBMS_CLOUD_AIall'utente che desidera utilizzare Select AI.Per impostazione predefinita, solo all'utente ADMIN viene concesso il privilegio
EXECUTE. L'utente ADMIN può concedere il privilegioEXECUTEad altri utenti.L'esempio seguente concede il privilegio
EXECUTEaADB_USER:grant execute on DBMS_CLOUD_AI to ADB_USER;L'esempio seguente concede a
ADB_USERil privilegio di utilizzare l'endpointapi.openai.com.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; / -
Concedere l'accesso ACL di rete all'utente che desidera utilizzare Select AI e per l'endpoint del provider AI.
L'utente ADMIN può concedere l'accesso all'ACL di rete. Per ulteriori informazioni, vedere APPEND_HOST_ACE Procedure in Oracle Database 19c PL/SQL Packages and Types Reference o Oracle Database 26ai PL/SQL Packages and Types Reference.
-
Creare una credenziale per abilitare l'accesso al provider AI.
Per ulteriori informazioni, vedere Procedura CREDENTIAL.
Di seguito è riportato un esempio di come creare una credenziale per abilitare l'accesso a OpenAI.
EXEC DBMS_CLOUD.CREATE_CREDENTIAL('OPENAI_CRED', 'OPENAI', '*your_api_token`');
Parametri funzione APPEND_HOST_ACE
| Parametro | Descrizione |
|---|---|
host |
L'host, che può essere il nome o l'indirizzo IP dell'host. È possibile utilizzare un carattere jolly per specificare un dominio o una subnet IP. Il nome host o dominio non fa distinzione tra maiuscole e minuscole. Per OpenAI, utilizzare api.openai.com. Per Cohere, utilizzare api.cohere.ai. Per il servizio OpenAI di Azure, utilizzare <azure_resource_name>.openai.azure.com. Per ulteriori informazioni su Per Google, utilizza generativelanguage.googleapis.com. Per Anthropic, utilizzare api.anthropic.com. Per Hugging Face, utilizzare api-inference.huggingface.co. |
ace |
Voci di controllo dell'accesso (ACE, Access Control Entries). Il tipo XS$ACE_TYPE viene fornito per creare ogni voce ACE per l'ACL. Per ulteriori dettagli, vedere Creating ACLs and ACEs in Oracle Database 19c Real Application Security Administrator's and Developer's Guide o Oracle Database 26ai Real Application Security Administrator's and Developer's Guide. |
Parametri DBMS_CLOUD.CREATE_CREDENTIAL
Creare e impostare un profilo AI
Descrive i passi per creare e abilitare un profilo AI.
Utilizzare DBMS_CLOUD_AI.CREATE_PROFILE per creare un profilo AI. Avviare quindi DBMS_CLOUD_AI.SET_PROFILE per abilitare il profilo AI in modo da poter utilizzare SELECT AI con un prompt in linguaggio naturale.
Nota: è necessario eseguire DBMS_CLOUD_AI.SET_PROFILE in ogni nuova sessione del database (connessione) prima di utilizzare SELECT AI.
L'esempio seguente con il provider OpenAI crea un profilo AI denominato OPENAI e imposta il profilo OPENAI per la sessione utente corrente.
-- 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;
/
--
-- Enable AI profile in current session
--
EXEC DBMS_CLOUD_AI.set_profile('OPENAI');
Utilizzare la parola chiave AI per immettere i prompt
Utilizzare AI come parola chiave in un'istruzione SELECT per interagire con il database utilizzando i prompt in linguaggio naturale.
La parola chiave AI in un'istruzione SELECT indica al motore di esecuzione SQL di utilizzare l'LLM identificato nel profilo AI attivo per elaborare il linguaggio naturale e generare SQL.
È possibile utilizzare la parola chiave AI in una query con i client Oracle come SQL Developer, OML Notebooks e strumenti di terze parti per interagire con il database in linguaggio naturale.
Nota: non è possibile eseguire istruzioni PL/SQL, istruzioni DDL o istruzioni DML utilizzando la parola chiave AI.
Sintassi
La sintassi per l'esecuzione del prompt AI è:
SELECT AI `action` `natural_language_prompt`
Parametri
Di seguito sono riportati i parametri disponibili per il parametro action.
| Parametro | Descrizione |
|---|---|
runsql |
Eseguire il comando SQL fornito utilizzando un prompt del linguaggio naturale. Questa è l'azione predefinita ed è facoltativo specificare questo parametro. |
showsql |
Visualizza l'istruzione SQL per un prompt in linguaggio naturale. |
narrate |
L'output del prompt è spiegato in linguaggio naturale. Questa opzione invia il risultato SQL al provider AI per produrre un riepilogo del linguaggio naturale. |
chat |
Genera una risposta direttamente dall'LLM in base al prompt. Se conversation nella funzione DBMS_CLOUD_AI.CREATE_PROFILE è impostato su true, questa opzione include il contenuto delle interazioni o dei prompt precedenti, inclusi potenzialmente i metadati dello schema. |
explainsql |
L'istruzione SQL generata dal prompt viene spiegata in linguaggio naturale. Questa opzione invia l'istruzione SQL generata al provider AI per produrre una spiegazione del linguaggio naturale. |
Note sull'uso
-
La selezione di
AInon è supportata in Database Actions o APEX Service. È possibile utilizzare solo la funzioneDBMS_CLOUD_AI.GENERATE. -
La parola chiave
AIè supportata solo in un'istruzioneSELECT. -
Non è possibile eseguire istruzioni PL/SQL, istruzioni DDL o istruzioni DML utilizzando la parola chiave
AI. -
La sequenza è
SELECTseguita daAI. Queste parole chiave non fanno distinzione tra maiuscole e minuscole. Dopo la configurazione diDBMS_CLOUD_AI.SET_PROFILE, il testo dopoSELECT AIè un prompt del linguaggio naturale. Se un profilo AI non è impostato,SELECTAIsegnala il seguente errore:ORA-00923: FROM keyword not found where expected 00923. 00000 - "FROM keyword not found where expected" -
Le regole d'uso dei caratteri speciali vengono applicate in base alle linee guida Oracle. Ad esempio, utilizzare due virgolette singole se si utilizza un apostrofo in una frase.
select ai how many customers in SF don't own their own home -
I LLM sono soggetti a allucinazioni e i risultati non sono sempre corretti:
-
È possibile che
SELECT AInon sia in grado di eseguire l'istruzione SQL generata per un prompt specifico del linguaggio naturale. -
È possibile che
SELECT AInon sia in grado di generare SQL per un prompt specifico del linguaggio naturale.
In uno scenario di questo tipo,
SELECT AIrisponde con informazioni utili per generare un'istruzione SQL valida. -
-
Utilizzare l'azione
chat, conSELECT AI chat, per ulteriori informazioni sui costrutti SQL. Per ottenere risultati migliori con l'azionechat, utilizzare viste di database o tabelle con nomi di colonna contestuali oppure aggiungere commenti di colonna che spiegano i valori memorizzati nelle colonne. -
Per accedere alle viste DBA o USER, vedere Viste DBMS_CLOUD_AI.
Utilizzo e personalizzazione delle conversazioni
Le conversazioni in Select AI si riferiscono al dialogo interattivo tra l'utente e il sistema, in cui una sequenza di prompt del linguaggio naturale forniti dall'utente viene memorizzata e gestita per supportare la memoria a lungo termine per le interazioni LLM.
Select AI supporta conversazioni a breve termine basate su sessioni, abilitate nel profilo AI, nonché conversazioni denominate a lungo termine, abilitate mediante procedure o funzioni specifiche e ID di conversazione.
Nota: il supporto per selezionare le conversazioni AI è disponibile in Oracle Database 19c a partire dalla versione 19.30 e in Oracle Database 26ai a partire dalla versione 23.26.1.
Tipi di conversioni
Select AI supporta conversazioni a breve termine basate su sessioni e conversazioni personalizzabili.
Conversazioni a breve termine basate sulla sessione: la selezione di AI include conversazioni a breve termine basate sulla sessione per generare risposte contestuali per il prompt corrente in base alle interazioni precedenti.
È possibile abilitarlo impostando l'attributo conversation su true|false nel profilo AI. A differenza della funzione di conversazione multipla, le conversazioni basate su sessione memorizzano i prompt solo per la durata della sessione. I prompt vengono memorizzati in una tabella temporanea, eliminati automaticamente al termine della sessione e non possono essere riutilizzati e scambiati tra le conversazioni.
Conversazioni a lungo termine personalizzabili: Select AI supporta la creazione e l'utilizzo di conversazioni personalizzabili che consentono di utilizzare Select AI con argomenti diversi senza mescolare contesto, migliorando sia la flessibilità che l'efficienza. È possibile creare, impostare, eliminare e aggiornare le conversazioni mediante le procedure e le funzioni di conversazione DBMS_CLOUD_AI. Quando si abilitano le conversazioni, Select AI recupera la cronologia dei prompt e le invia all'LLM per generare una risposta per il prompt corrente. Queste risposte vengono memorizzate in una tabella persistente per uso futuro.
Nota: la selezione delle conversazioni AI supporta le azioni seguenti: runsql, showsql, explainsql, narrate e chat.
Come utilizzare conversazioni personalizzabili
È possibile utilizzare Select AI per le conversazioni personalizzabili nei modi riportati di seguito.
-
Impostare l'ID conversazione nella sessione utilizzando la procedura
DBMS_CLOUD_AI.SET_CONVERSATION_IDed eseguireSELECT AI <ACTION> <PROMPT>. -
Passare
conversation_idnell'argomentoparamsdella funzioneDBMS_CLOUD_AI.GENERATE.
Nota: se si utilizzano sia le conversazioni multiple che l'impostazione conversation: [true|false], l'impostazione conversation viene ignorata.
Nel contesto della generazione di query SQL (NL2SQL), le conversazioni consentono un modo più intuitivo e accessibile di lavorare con i dati, rendendo più facile per gli utenti estrarre insight ed eseguire attività senza aver bisogno di una profonda conoscenza tecnica di SQL. Le conversazioni possono essere utilizzate anche con le funzionalità di chat e RAG di Select AI.
Ad esempio, le conversazioni forniscono un modo intuitivo per analizzare i dati:
- Fai una domanda come "Qual è il numero totale di clienti?"
-
Eseguire il follow-up con domande contestuali quali:
-
"Conteggio break out dei clienti per paese"
-
"Quale fascia d'età è più comune"
-
"Mantieni i primi 5 clienti e il loro paese in base ai loro acquisti e includi una classifica nel risultato"
-
Per abilitare le conversazioni, vedere Esempio: abilitazione delle conversazioni in Select AI per un esempio completo.
Conversazioni basate sulla sessione e conversazioni personalizzabili
Nella tabella seguente vengono confrontate la conversazione basata sulla sessione e le conversazioni personalizzabili in Select AI:
| Domande | Conversazioni a breve termine basate sulla sessione | Conversazioni a lungo termine personalizzabili |
|---|---|---|
| Quando si utilizzano? | Ideale per chat rapide e temporanee in cui si desidera che il modello ricordi le domande e le risposte recenti durante una singola sessione. È utile quando non è necessario salvare o riutilizzare la conversazione in un secondo momento. | Progettato per conversazioni più lunghe o in corso che possono estendersi su più sessioni. È utile quando si desidera tenere traccia, rivedere o gestire la cronologia delle conversazioni o quando parti diverse di un'applicazione devono accedere allo stesso contesto di conversazione nel tempo. |
| Come si abilita? | Impostare {"conversation": true or false} nel profilo AI. |
Utilizzare la procedura DBMS_CLOUD_AI.SET_CONVERSATION_ID o DBMS_CLOUD_AI.GENERATE |
| Quante conversazioni sono consentite? | Uno. | È possibile creare più conversazioni. Se si specificano in modo esplicito gli ID conversazione, è possibile alternarli per associare i prompt alle conversazioni appropriate in base alle esigenze. |
| Dove sono memorizzati i prompt e per quanto tempo? | I prompt vengono memorizzati in una tabella temporanea ed eliminati al termine della sessione. | I prompt vengono memorizzati in una tabella permanente. I prompt vengono conservati nel database per il numero di giorni specificato dal parametro |
| Quanti prompt vengono memorizzati e quanti prompt vengono inviati all'LLM? | Vengono memorizzati e inviati al LLM un massimo di 10 prompt. Impossibile personalizzare questo limite. | Tutte le richieste vengono memorizzate. Per impostazione predefinita, il sistema invia i 10 prompt più recenti al LLM. È possibile personalizzare l'operazione utilizzando il parametro |
| È possibile eliminare singoli prompt? | No, non è possibile eliminare manualmente il singolo prompt. | È possibile eliminare singoli prompt specifici utilizzando l'ID prompt specificato nella procedura USER_CLOUD_AI_CONVERSATION_PROMPTS View e utilizzando DBMS_CLOUD_AI.DELETE_CONVERSATION_PROMPT. |
| I profili AI vengono utilizzati per il recupero delle conversazioni? | Sì, Select AI recupera prompt e risposte generati in precedenza utilizzando lo stesso profilo AI. | No, Select AI tiene traccia del profilo AI utilizzato durante la memorizzazione di prompt e risposte, ma non ne limita il recupero in base a tale profilo. Invia tutte le cronologie delle conversazioni all'LLM per guidare la generazione delle risposte, indipendentemente dal profilo utilizzato per generarle. |
| Dove posso controllare la cronologia dei prompt? | I prompt vengono salvati in una tabella temporanea in CLOUD USER, ma non sono accessibili per l'esecuzione di query. | È possibile eseguire query e rivedere conversazioni e prompt tramite le viste di conversazione DBMS_CLOUD_AI. Per i dettagli, vedere Viste DBMS_CLOUD_AI. |
Fornisci feedback per migliorare i LLM
Select AI ti consente di fornire feedback per migliorare la capacità del tuo LLM selezionato di generare query SQL più accurate.
Nota: questa funzione è disponibile solo in Oracle Database 23ai. È possibile utilizzarlo insieme alle azioni Select AI esistenti: runsql, showsql e explainsql. Assicurarsi che il profilo AI sia configurato per la generazione NL2SQL e non RAG.
È possibile fornire un feedback per migliorare la precisione dell'istruzione SQL generata tramite l'azione feedback o la procedura DBMS_CLOUD_AI.FEEDBACK. Selezionare AI crea un indice vettoriale predefinito denominato <profile_name>_FEEDBACK_VECINDEX con attributi predefiniti quando si utilizza la funzione di feedback per la prima volta. Questo indice consente di perfezionare le istruzioni SQL generate in futuro in base al feedback fornito. Per ulteriori informazioni, vedere Indice vettoriale per FEEDBACK.
Suggerimento: utilizzare la procedura DBMS_CLOUD_AI.FEEDBACK quando l'LLM specificato non riesce a generare la query SQL corretta o non restituisce il risultato previsto da una delle azioni SELECT AI NL2SQL. È inoltre possibile utilizzare la procedura DBMS_CLOUD_AI.FEEDBACK per aggiungere l'istruzione SQL corretta direttamente alla tabella vettoriale. Ciò consente di guidare la generazione SQL futura fungendo da riferimento per prompt simili.
Sono accettati i seguenti tipi di feedback:
-
Feedback positivo: approva e conferma l'accuratezza dell'istruzione SQL generata. Il sistema memorizza la query confermata per riferimento futuro.
-
Feedback negativo: se i risultati dell'azione NL2SQL
SELECT AInon riescono a generare l'istruzione SQL corretta, è possibile fornire i miglioramenti delle query SQL necessari utilizzandoSELECT AI feedback <feedback>o la proceduraDBMS_CLOUD_AI.FEEDBACKidentificando gli errori nella query o fornendo indicazioni su ciò che era previsto in prosa. Il sistema perfeziona la query utilizzando un LLM e memorizza la versione perfezionata per la generazione di query Select AI future. Le query perfezionate memorizzate vengono quindi utilizzate come suggerimenti e inviate all'LLM come parte del prompt aumentato.
Vantaggi dell'utilizzo del feedback
L'azione e la procedura di feedback in Select AI introduce un meccanismo di tuning del prompt che migliora l'accuratezza della generazione delle query SQL.
Il proprietario del profilo AI può fornire un feedback per le query SQL generate e il sistema Select AI impara dall'interazione utente nel tempo. Questo apprendimento comporta l'aggregazione di un repository di prompt e contenuti di feedback in cui la ricerca vettoriale viene utilizzata per identificare prompt simili al prompt corrente. Gli esempi di corrispondenza principali vengono forniti come metadati per l'LLM come parte del prompt aumentato. Di seguito sono riportati i vantaggi.
-
Può migliorare la precisione delle query SQL.
-
Consente al proprietario del profilo AI di fornire feedback confermando le query corrette o suggerendo correzioni fornendo l'intenzione semantica o le definizioni aziendali per produrre una query corretta.
-
Utilizza il feedback cronologico come suggerimenti per la generazione di query future, adattandosi così alle tue esigenze.
Come fornire feedback
Selezionare AI consente di fornire un feedback utilizzando l'azione feedback o richiamando la procedura DBMS_CLOUD_AI.FEEDBACK.
Attenzione: non utilizzare l'azione di feedback nelle applicazioni in cui più utenti condividono sessioni di database in un singolo utente del database proprietario del profilo AI. Il proprietario del profilo AI deve fornire un feedback solo dopo aver confermato che la query corretta è appropriata per tutti gli utenti di tale profilo.
È possibile fornire un feedback includendo quanto segue:
-
SQL_TEXT: includere il feedback tra virgolette per la query SQL corrente oppure ottenere il valoreSQL_TEXTper una query specifica eseguendo una query sulla vistaV$MAPPED_SQL. -
SQL_ID: è possibile ottenereSQL_IDeseguendo una query sulla vistaV$MAPPED_SQL. -
Utilizza l'ultima SQL generata: fornisci il tuo feedback in linguaggio naturale.
Nota: per utilizzare l'ultimo SQL, assicurarsi di impostare l'output del server su Oracle SQL*Plus o Oracle SQLcl. Nelle tabelle sys.v_$session e v_$mapped_sql è necessario disporre del privilegio READ.
GRANT READ ON SYS.V_$MAPPED_SQL TO ADB_USER;
GRANT READ ON SYS.V_$SESSION TO ADB_USER;
Per ulteriori informazioni, vedere Procedura FEEDBACK ed Esempio: selezione del FEEDBACK AI.
Dati grafico query con grafici proprietà
Selezionare AI genera Property Graph Query (PGQ) nei grafici delle proprietà Oracle utilizzando il linguaggio naturale. Consente agli utenti di eseguire query sui dati del grafico tramite l'operatore GRAPH_TABLE con una conoscenza minima di SQL.
Select AI estende il proprio linguaggio naturale alla funzionalità SQL (NL2SQL) alle strutture del grafico consentendo di eseguire query sui grafici delle proprietà SQL utilizzando il linguaggio naturale. Select AI applica l'operatore GRAPH_TABLE per interpretare relazioni e attributi nei dati strutturati in grafici. Genera query di grafici SQL o PGQ in base agli oggetti dati definiti nel profilo AI. Quando un grafico delle proprietà è incluso nel profilo AI, Select AI utilizza l'intelligenza artificiale generativa per creare una query PGQ che fa riferimento al grafico tramite l'operatore GRAPH_TABLE. LLM riceve automaticamente i metadati dell'oggetto grafico, ad esempio le istruzioni CREATE PROPERTY GRAPH, per generare query accurate. Quando si specifica una tabella, una vista o un oggetto relazionale, Select AI genera una query SQL. Questa funzionalità semplifica le query di corrispondenza dei pattern sui dati dei grafici memorizzati in Oracle AI Database e riduce la dipendenza dalla creazione manuale delle query SQL.
Quando si crea un profilo AI con uno o più grafici delle proprietà definiti nell'attributo object_list, l'LLM definito nel profilo AI interpreta i prompt utilizzando il contesto dei grafici delle proprietà specificati. Selezionare AI crea un prompt aumentato che include:
-
Istruzioni per la creazione di query PGQ.
-
Metadati che descrivono i grafici delle proprietà forniti (dalle relative istruzioni
CREATE PROPERTY GRAPH).
Questo prompt aumentato viene inviato al LLM. Select AI esegue la query e restituisce i risultati. Se un grafico delle proprietà viene specificato insieme ad altri tipi di oggetto, ad esempio tabelle, schemi o viste, nel profilo AI, Select AI genera un errore.
SQL rispetto a PGQ
Con Select AI, il tipo di query generato dipende dagli oggetti definiti nell'attributo object_list del profilo AI.
-
Query SQL: utilizza dati relazionali quali schema, tabelle o viste.
-
Query PGQ: utilizza i grafici delle proprietà e applica l'operatore
GRAPH_TABLEper la corrispondenza dei pattern.
Per ulteriori dettagli, vedere Grafico proprietà SQL e Query SQL GRAPH.
Vantaggi dell'utilizzo di Select AI nei grafici delle strutture
Gli utenti del database possono eseguire query sui grafici delle proprietà utilizzando Select AI per generare query sui grafici dal linguaggio naturale, riducendo il lavoro manuale e migliorando la comprensione delle relazioni tra grafici.
Vantaggi principali:
-
NL2SQL: la funzionalità NL2SQL di Select AI ora si estende alle query di grafici che consentono agli utenti di scrivere prompt in linguaggio naturale come "Trova clienti che hanno acquistato un vestito".
-
SQL o PGQ: a seconda dell'oggetto dati, Select AI genera automaticamente query SQL o PGQ.
-
Produttività: riduce i tempi e gli sforzi per creare query grafiche utilizzando l'operatore
GRAPH_TABLE. -
Conversazioni: mantiene il contesto di conversazione ed esegue query su un grafico delle proprietà.
Limitazioni
Selezionare AI per i grafici delle proprietà non supporta le funzionalità riportate di seguito.
-
Generazione di dati sintetici
-
Combinazione di grafici delle proprietà con altri tipi di oggetto nel profilo AI
-
Query non supportate e intermittenti. Per ulteriori dettagli, vedere Esempio: richieste di esempio per i grafici delle proprietà.
Come utilizzare Seleziona intelligenza artificiale nei grafici delle proprietà
Selezionare AI consente di esplorare i dati del grafico utilizzando la funzione DBMS_CLOUD_AI.GENERATE o Select AI <action> <prompt>.
Dopo aver definito i grafici delle proprietà nell'attributo object_list del profilo AI, è possibile utilizzare:
-
SELECT AI <ACTION> <PROMPT>nella riga di comando SQL per generare un output. -
DBMS_CLOUD_AI.GENERATEfunzione e fornire il prompt all'interno della funzione.
Di seguito sono riportate le azioni supportate: runsql, showsql, explainsql, narrate e showpropmt. Select AI for Property Graph supporta anche conversazioni a breve termine e personalizzabili a lungo termine basate sulla sessione.
Per ulteriori informazioni, vedere Esempio: selezione di AI per i grafici delle proprietà ed Esempio: prompt di esempio per i grafici delle proprietà.
Genera sintetico con AI selezionata
Select AI consente di generare un riepilogo del testo, in particolare dei testi di grandi dimensioni, supportando in genere fino a 1 GB utilizzando i provider AI. Puoi estrarre insight chiave da testi o file di grandi dimensioni in base alle tue esigenze specifiche. Questa funzione utilizza l'LLM specificato nel profilo AI per generare un riepilogo per un determinato testo.
Selezionare AI per riepilogare i contenuti nei modi riportati di seguito.
-
Utilizzare
summarizecome Select AIaction. Per ulteriori informazioni, vedere Usa parole chiave AI per immettere i prompt ed Esempio: selezione di azioni AI. -
Utilizzare la funzione
DBMS_CLOUD_AI.SUMMARIZEper specificare personalizzazioni quali la lunghezza del riepilogo, il formato, il livello di estrazione per un riepilogo e così via con i parametri di riepilogo. Per ulteriori informazioni, vedere Esempio: selezione del sintetico AI. -
Utilizzare la funzione
DBMS_CLOUD_AI.GENERATEcon l'azionesummarize. Per ulteriori informazioni, vedere Funzione GENERATE.
Nota:
- Selezionare la riepilogo che è applicabile per Autonomous Database 19c e Autonomous AI Database 26ai.
- Select AI summarize supporta contenuti fino a 1 GB.
- Formati di file supportati: i file devono essere codificati in UTF-8.
- Per Autonomous AI Database 26ai: Select AI supporta una gamma più ampia di formati di file. Per informazioni dettagliate, vedere Formati di documenti supportati da Oracle Text.
- Per Autonomous Database 19c: Select AI supporta solo file di testo. Il contenuto deve essere in testo semplice e Select AI non supporta i linguaggi `json`, `html`, `docx` o `pdf`.
Tecniche di generazione sintetico
È possibile riepilogare un documento di grandi dimensioni immettendo il testo completo come prompt per l'LLM. Tuttavia, poiché gli LLM hanno limiti di token, Select AI applica tecniche diverse per riepilogare documenti di grandi dimensioni.
Select AI utilizza perfezionamento iterativo e MapReduce come tecniche di riepilogo. Per ulteriori informazioni, vedere Terminologia correlata.
Basato sulla dimensione massima del token di un dato LLM, Select AI può suddividere contenuti di grandi dimensioni in blocchi più piccoli e facili da gestire che si adattano AI limiti del LLM. Select AI può quindi utilizzare la ridefinizione iterativa o la tecnica di riduzione della mappa per generare il riepilogo. Selezionare AI utilizza MapReduce come impostazione predefinita. Per ulteriori dettagli, vedere Funzione SUMMARIZE e Parametri SUMMARIZE.
Traduci testo con Select AI
Con Select AI, puoi utilizzare l'AI generativa del servizio di traduzione OCI per tradurre il tuo testo nella lingua che preferisci.
È possibile utilizzare questa funzione insieme alla RAG Select AI esistente. È possibile combinare translate con DBMS_CLOUD_AI.GENERATE o narrate per utilizzare l'intelligenza artificiale generativa per la produzione di output tradotti nella lingua preferita.
Per ulteriori informazioni, vedere Funzione TRANSLATE, Funzione GENERATE ed Esempio: selezione della traduzione AI.
Vantaggi dell'utilizzo di Translate
La funzione di traduzione in Seleziona AI consente di tradurre il testo di input in diverse lingue per i seguenti vantaggi:
-
Tradurre migliora l'usabilità convertendo il testo nella tua lingua preferita, consentendoti di lavorare con il database in modo più efficace.
-
Traduci consente di convertire i documenti in una lingua in una lingua che potrebbe essere più adatta per il modello di incorporamento selezionato, producendo vettori migliori per l'uso con RAG.
-
Traduci automaticamente l'output nella lingua preferita quando utilizzi
DBMS_CLOUD_AI.GENERATEoNARRATE.
Come utilizzare Translate
Selezionare AI consente di tradurre l'input di testo nella lingua preferita utilizzando l'azione translate o chiamando le funzioni DBMS_CLOUD_AI.GENERATE o DBMS_CLOUD_AI.TRANSLATE.
Per utilizzare la funzione Seleziona traduzione AI, è necessario disporre delle autorizzazioni dei criteri IAM appropriate per accedere AI servizi Oracle Cloud Infrastructure Language.
Concedere l'autorizzazione per utilizzare la risorsa ai-service-language-family nel criterio IAM. Di seguito è riportata un'istruzione di criterio di esempio per concedere l'autorizzazione a un gruppo di utenti in un compartimento specifico.
allow group <your group name> to use ai-service-language-family in compartment <your_compartment>
-
Se si utilizza la credenziale principal risorsa, assegnare l'autorizzazione al gruppo dinamico.
-
Se si utilizza la credenziale Chiave privata, assegnare l'autorizzazione al gruppo di utenti.
Un gruppo dinamico identifica risorse quali database o funzioni mediante la corrispondenza dei relativi OCID o tag, mentre un gruppo di utenti contiene singoli utenti IAM.
Utilizzare un gruppo dinamico quando il criterio si applica alle risorse OCI e utilizzare un gruppo di utenti quando il criterio si applica agli utenti umani. Per informazioni dettagliate sulla creazione di gruppi dinamici e di utenti, vedere Gestione dei gruppi dinamici.
Per ulteriori informazioni, vedere Criteri linguistici.
È possibile tradurre il testo utilizzando quanto segue:
-
Utilizzare
translatecome azione Seleziona AI. Usareselect ai translate <text>. Vedere Esempio: selezione di azioni AI. -
Fornire
translatecome azione all'interno della funzioneDBMS_CLOUD_AI.GENERATE. Vedere Funzione GENERATE. -
Utilizzare la funzione
DBMS_CLOUD_AI.TRANSLATE. Vedere Funzione TRANSLATE.Per ulteriori informazioni, vedere anche Esempio: selezione della traduzione AI.
Seleziona AI per Python
Select AI for Python integra funzionalità di intelligenza artificiale generativa nei flussi di lavoro di Autonomous AI Database. Select AI for Python fornisce una libreria client, select_ai, che consente di utilizzare le funzionalità DBMS_CLOUD_AI in Autonomous AI Database di Python. Select AI for Python supporta flussi di lavoro di intelligenza artificiale generativa avanzati, riepilogo, meccanismi di feedback, gestione coerente dei metadati e funzionalità di intelligenza artificiale autentica. Supporta anche Python 3.14 e include un sito di documentazione HTML aggiornato (Nuovo)
Azioni che è possibile eseguire
-
Connessione al database mediante connessioni sincrone o asincrone
-
Crea e gestisci profili AI per abilitare l'utilizzo di modelli AI da una vasta gamma di provider AI
-
Utilizza il linguaggio naturale per eseguire query sul database tramite la generazione SQL basata sull'intelligenza artificiale
-
Descrivere i risultati delle query nel linguaggio naturale
-
Crea e gestisci conversazioni con la cronologia dei prompt
-
Crea e aggiorna facilmente gli indici vettoriali da utilizzare con flussi di lavoro RAG (Retrieval Augmented Generation) integrati e automatizzati
-
Genera dati sintetici per test e analisi utilizzando l'intelligenza artificiale generativa
-
Riepiloga il testo o i risultati della query
-
Registrare e gestire il feedback del modello
Piattaforme supportate
Select AI for Python è certificato per Autonomous Database 19c e Autonomous AI Database 26ai. Selezionare AI per Python può funzionare su altre piattaforme, tuttavia non è certificato.
Fare clic su https://github.com/oracle/python-select-ai/issues per segnalare i problemi.
Nota: selezionare l'agente AI per Python non è disponibile in Autonomous AI Database on Dedicated Exadata Infrastructure.
Funzioni supportate per il profilo AI selezionato (sincrono e asincrono)
Quando si inviano prompt tramite un profilo, è possibile scegliere tra diverse funzioni definite per gli oggetti profilo AI. Alcuni sono i seguenti:
-
create(): creare il profilo AI nel database o sostituirlo, se necessario. -
delete(): rimuove il profilo. -
generate(): utilizzare il profilo per elaborare un prompt in base all'azione scelta. -
generate_synthetic_data(): consente di creare dati sintetici in base agli attributi forniti. -
get_attributes(): restituisce gli attributi del profilo corrente. -
run_sql(): genera ed esegue SQL (impostazione predefinita). -
show_sql(): genera SQL senza eseguirlo. -
explain_sql(): fornisce una spiegazione per l'istruzione SQL generata. -
narrate(): descrive i risultati delle query nel linguaggio naturale. -
chat(): partecipa a una conversazione in formato libero. -
show_prompt(): visualizza il prompt costruito inviato al modello di intelligenza artificiale generativa. -
summarize(): produrre un riepilogo per i contenuti forniti. -
add_positive_feedback(),add_negative_feedback(),delete_feedback(): consente di gestire il feedback degli utenti associato alle query generate.
Per un elenco completo delle funzioni, vedere la guida Select AI for Python. Per ulteriori informazioni sulle azioni Seleziona intelligenza artificiale, vedere anche Usa parola chiave AI per immettere i prompt.
Classi supportate
La libreria include classi per la gestione di provider, profili, conversazioni, indici vettoriali e dati sintetici. Sono disponibili sia versioni sincrone che asincrone.
-
Classi provider: definire il provider AI:
OpenAIProvider,AzureProvider,OCIGenAIProvider,AWSProvider,GoogleProvider,AnthropicProvider,CohereProvider,HuggingFaceProvider. -
Profile: definisce il profilo AI generativa per elaborare i prompt (provider, credenziali, metadati, opzioni) e supporta la generazione di dati sintetici. -
ProfileAttributes: dettagli di configurazione del profilo quali provider, nome credenziale, numero massimo di token, temperatura, elenco di oggetti o indice vettoriale. -
ConversationAttributes: consente di gestire il contesto conversazionale tra i prompt. -
VectorIndexeVectorIndexAttributes: crea e gestisce gli indici vettoriali per RAG. -
SyntheticDataAttributes: crea set di dati sintetici per test e sviluppo.
Per le classi Profile, Conversation e VectorIndex esistono equivalenti asincroni.
Per un riferimento completo alle API, vedere la guida Select AI for Python.
Miglioramenti all'aggiornamento di API e attributi
Sono disponibili i seguenti miglioramenti:
-
Tutti gli oggetti proxy ora supportano
fetch()per recuperare gli oggetti esistenti. -
Tutti gli oggetti proxy forniscono
set_attribute()eset_attributes()per aggiornamenti coerenti
Privilegio e accesso HTTP
La gestione dei privilegi è separata dalla configurazione dell'accesso HTTP.
API privilegi:
-
select_ai.grant_privileges -
select_ai.revoke_privileges
I privilegi vengono aggiornati per includere quanto riportato di seguito.
-
DBMS_CLOUD -
DBMS_CLOUD_AI -
DBMS_CLOUD_PIPELINE
API di accesso HTTP:
-
select_ai.grant_http_access -
select_ai.revoke_http_access
Altri miglioramenti
-
Supporto Python 3.14
-
Nuovo sito di documentazione HTML su GitHub utilizzando il tema dei documenti Python: Documentazione GitHub Select AI for Python
Esempi di utilizzo di Select AI
Esplora l'integrazione di Select AI di Oracle con vari provider AI supportati per generare, eseguire e spiegare SQL da prompt in linguaggio naturale o chattare con l'LLM.
Esempio: Seleziona azioni AI
L'esempio seguente illustra azioni quali runsql (impostazione predefinita), showsql, narrate, chat, explainsql, feedback e summarize che è possibile eseguire con SELECT AI. Questi esempi utilizzano lo schema sh con il provider AI e gli attributi profilo specificati nella funzione DBMS_CLOUD_AI.CREATE_PROFILE. Utilizzare le azioni Seleziona AI dopo aver impostato il profilo AI utilizzando la procedura DBMS_CLOUD_AI.SET_PROFILE nella sessione corrente.
Per generare un riepilogo del testo, utilizzare SELECT AI SUMMARIZE <TEXT>.
select ai how many customers exist;
CUSTOMER_COUNT
--------------
55500
select ai showsql how many customers exist;
RESPONSE
----------------------------------------------------
SELECT COUNT(*) AS total_customers
FROM SH.CUSTOMERS
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 constantly changes due to various factors such as population growth, new businesses, and customer turnover. Additionally, the term "customer" can refer to individuals, businesses, or organizations, making it difficult to provide a specific number.
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:
select ai feedback for query "select ai showsql how many watch histories in total", please use sum instead of count;
-- Positive feedback example:
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:
select ai feedback please use sum instead of count for sql_id 1v1z68ra6r9zf;
-- Positive feedback example:
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:
select ai feedback please use ascending sorting for ranking;
-- Positive feedback example:
select ai feedback the result is correct;
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.
Esempio: selezionare AI con AWS
Questo esempio mostra come utilizzare AWS per generare, eseguire e spiegare SQL da prompt in linguaggio naturale o chat utilizzando i modelli disponibili con AWS.
L'esempio seguente mostra come utilizzare AWS come provider AI con Amazon Bedrock e i suoi modelli di base. L'esempio mostra la creazione di credenziali AWS, l'accesso alla rete, la creazione di un profilo AI e l'utilizzo di azioni Select AI per generare query SQL da prompt in linguaggio naturale e chat utilizzando i modelli di base AWS.
Per utilizzare AWS, ottenere la chiave di accesso, le chiavi segrete e l'ID del modello. Vedere Istruzioni specifiche di AWS in Configura profili AI mediante DBMS_CLOUD_AI. Utilizzare l'ID modello come attributo model nella procedura DBMS_CLOUD_AI.CREATE_PROFILE. È necessario specificare l'attributo model in modo esplicito, poiché non viene fornito alcun modello predefinito.
--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;
/
--
-- 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;
/
--
-- 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;
/
--
-- Enable AI profile in current session
--
EXEC DBMS_CLOUD_AI.SET_PROFILE('AWS');
--
-- 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;
/
--
--Drop the profile
--
EXEC DBMS_CLOUD_AI.DROP_PROFILE('AWS');
Esempio: Abilita conversazioni in AI selezionata
Questi esempi illustrano l'abilitazione delle conversazioni in Select AI.
Nota: un utente con privilegi di amministratore (ADMIN) deve concedere EXECUTE e abilitare la lista di controllo dell'accesso di rete (ACL, Network Access Control List).
Conversazioni basate su sessione
Crea il tuo profilo AI. Impostare l'attributo conversation su true nel profilo. Questa azione include il contenuto delle interazioni o dei prompt precedenti, inclusi potenzialmente i metadati dello schema, e impostare il profilo. Una volta abilitato il profilo, puoi iniziare a conversare con i tuoi dati. Usa il linguaggio naturale per porre domande e dare seguito alle tue esigenze.
--Grants EXECUTE privilege to ADB_USER
--
grant execute on DBMS_CLOUD_AI to ADB_USER;
-- Grant Network ACL for OpenAI endpoint
--
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;
/
--
-- Create Credential for AI provider
--
EXEC
DBMS_CLOUD.CREATE_CREDENTIAL(
CREDENTIAL_NAME => 'OPENAI_CRED',
username => 'OPENAI',
password => '`<your_api_token>`');
--
-- 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;
/
--
-- Enable AI profile in current session
--
EXEC DBMS_CLOUD_AI.SET_PROFILE('OPENAI');
--
-- Get Profile in current session
--
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
EXEC DBMS_CLOUD_AI.DROP_PROFILE('OPENAI');
Conversazioni personalizzabili
Gli esempi riportati di seguito illustrano l'utilizzo dell'API di gestione delle conversazioni che supporta conversazioni personalizzabili. Per utilizzare Select AI per più conversazioni:
-
Crea una conversazione
-
Impostare la conversazione nella sessione utente corrente
-
Usa
Select AI <action> <prompt>
È possibile creare e impostare la conversazione nei modi seguenti:
-
Utilizzare la funzione
DBMS_CLOUD_AI.CREATE_CONVERSATION, quindi impostare la conversazione utilizzandoDBMS_CLOUD_AI.SET_CONVERSATION_ID. -
Chiamare direttamente la procedura
DBMS_CLOUD_AI.CREATE_CONVERSATIONper creare e impostare la conversazione in un unico passaggio.
Esempio: creazione e impostazione di conversazioni personalizzabili
L'esempio seguente mostra come creare una conversazione utilizzando la funzione DBMS_CLOUD_AI.CREATE_CONVERSATION e impostarla utilizzando la procedura DBMS_CLOUD_AI.SET_CONVERSATION_ID.
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');
L'esempio seguente mostra l'esecuzione della procedura DBMS_CLOUD_AI.CREATE_CONVERSATION per creare e impostare direttamente conversation_id.
EXEC DBMS_CLOUD_AI.create_conversation;
È inoltre possibile personalizzare gli attributi della conversazione, ad esempio title, description, retention_days e conversation_length.
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION(
attributes => '{"title":"My first conversation",
"description":"this is my first conversation",
"retention_days":5,
"conversation_length":5}');
CREATE_CONVERSATION
------------------------------------
38F8B874-7687-2A3F-E063-9C6D4664EC3A
È possibile visualizzare se esiste una determinata conversazione eseguendo una query sulla vista DBA/USER_CLOUD_AI_CONVERSATIONS.
-- 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
È inoltre possibile verificare se una conversazione è impostata chiamando la funzione DBMS_CLOUD_AI.GET_CONVERSATION_ID.
SELECT DBMS_CLOUD_AI.GET_CONVERSATION_ID;
--------------------------------------------------------------------------------
30C9DB6E-EA4F-AFBA-E063-9C6D46644B92
Esempio: utilizzo di conversazioni personalizzabili con Select AI
Dopo aver creato e impostato la conversazione e abilitato il profilo AI, è possibile iniziare a interagire con i dati. Usa il linguaggio naturale per porre domande e dare seguito alle tue esigenze.
Usare 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 States, but they have distinct weather patterns due to their unique geography and climate conditions. Here are the main differences:
1. **Rainfall**: Seattle is known for its rainy reputation, with an average annual 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 experiencing a mild oceanic climate. San Francisco tends to be slightly warmer, with average temperatures ranging from 45?F to 67?F, and receives less rainfall, around 20 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 rainfall per year, distributed throughout the year. San Francisco is also known for its fog, particularly during summer, and receives more sunshine, around 160 sunny 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 throughout the year.
Esempio: utilizzare la funzione GENERATE per confrontare due conversazioni
L'esempio seguente mostra come due conversazioni vengono utilizzate in modo intercambiabile per porre domande e verificare risposte accurate. Ogni conversazione inizia con una domanda diversa focalizzata sul confronto. In seguito, quando si pone la stessa domanda di follow-up in entrambe le conversazioni, ciascuna restituisce una risposta diversa in base al contesto precedente.
-- 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 California respectively, experience a mild oceanic climate. However, there are some notable differences in their weather patterns:
1. **Temperature**: San Francisco tends to be slightly warmer than Seattle, especially 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 temperature 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 annual rainfall of around 37 inches (94 cm). San Francisco receives less rainfall, with an average of around 20 inches (51 cm) per year. However, San Francisco's rainfall 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 other 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 Angeles 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 variation 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 being around $15-20 per person, compared to around $12-18 per person in Los Angeles.
......
-- 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 experiencing a mild oceanic climate. San Francisco tends to be slightly warmer, with average temperatures ranging from 45?F to 67?F, and receives less rainfall, around 20 inches per year, mostly during winter. In contrast, Seattle is cooler, with temperatures ranging from 38?F to 64?F, and rainier, with around 37 inches of rainfall per year, distributed throughout the year. San Francisco is also known for its fog, particularly during summer, and receives more sunshine, around 160 sunny days per year, although it's often filtered through the fog. Overall, San Francisco's weather is warmer and sunnier, with more pronounced seasonal variations, while Seattle's is cooler and rainier, with more consistent temperatures throughout 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 Angeles, mainly due to the higher cost of housing and transportation. New York has a median home price of around $999,000 and average rent of $3,000 per month for a one-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 relatively similar in both cities, the cost of transportation is higher in Los Angeles due to its car-centric culture, but the cost of public transportation is higher in New York. Overall, the total monthly expenses for a single person in New York can range from $4,600, compared to around $4,050 in Los Angeles, making New York the more expensive city to live in.
È possibile chiamare la funzione DBMS_CLOUD_AI.GENERATE senza specificare una conversazione; tuttavia, in questi casi, non dovrebbe essere prevista una risposta significativa.
-- 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 conversation. 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.
Esempio: verifica delle conversazioni tramite le viste DBMS_CLOUD_AI
È possibile eseguire una query sulle viste di conversazione DBMS_CLOUD_AI per esaminare la conversazione e richiedere i dettagli. Per ulteriori dettagli, vedere Viste DBMS_CLOUD_AI.
Nota: le viste con il prefisso DBA_ sono disponibili solo per gli utenti con privilegi di amministratore (ADMIN).
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 and San Francisco, focusing on the differences in temperature, rainfall, fog, sunshine, 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 Angeles, covering housing, food, transportation, utilities, and taxes to provide an overall view of the expenses in both cities.
SELECT conversation_id, count(*) FROM dba_cloud_ai_conversation_prompts
GROUP BY conversation_id;
CONVERSATION_ID COUNT(*)
------------------------------------ ----------
30C9DB6E-EA4D-AFBA-E063-9C6D46644B92 2
30C9DB6E-EA4E-AFBA-E063-9C6D46644B92 2
Esempio: Aggiorna dettagli conversazione
È possibile aggiornare title, description e retention_days di una conversazione utilizzando la procedura DBMS_CLOUD_AI.UPDATE_CONVERSATION. È possibile verificare l'aggiornamento eseguendo una query sulla vista conversazione DBMS_CLOUD_AI.
-- Update the second conversation's title, description and retention_days
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}');
-- Verify the information for the second conversation
SELECT conversation_title, description, retention_days
FROM dba_cloud_ai_conversations
WHERE conversation_id = '30C9DB6E-EA4E-AFBA-E063-9C6D46644B92';
CONVERSATION_TITLE DESCRIPTION RETENTION_DAYS LENGTH
-------------------------- ------------------------------------ -------------- --------------
a title This a description 20 20
Esempio: eliminazione di un prompt
È possibile eliminare un singolo prompt dalle conversazioni e verificare la modifica eseguendo una query sulla vista Conversazione DBMS_CLOUD_AI.
-- 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');
-- Verify if the prompt is deleted
SELECT conversation_prompt_id FROM dba_cloud_ai_conversation_prompts
WHERE conversation_id = '30C9DB6E-EA4D-AFBA-E063-9C6D46644B92';
-- Only one prompt now
CONVERSATION_PROMPT_ID
------------------------------------
30C9DB6E-EA5A-AFBA-E063-9C6D46644B92
Esempio: eliminazione di una conversazione
È possibile eliminare l'intera conversazione, rimuovendo anche tutti i prompt ad essa associati.
-- Delete the first conversation
EXEC DBMS_CLOUD_AI.DROP_CONVERSATION('30C9DB6E-EA4D-AFBA-E063-9C6D46644B92');
-- Verify if the conversation and its prompts are removed
SELECT conversation_id FROM dba_cloud_ai_conversations;
-- We only have the second conversation now
CONVERSATION_ID
------------------------------------
30C9DB6E-EA4E-AFBA-E063-9C6D46644B92
SELECT conversation_id, count(*) FROM dba_cloud_ai_conversation_prompts GROUP BY conversation_id;
-- We only have prompts in the second conversation
CONVERSATION_ID COUNT(*)
------------------------------------ ----------
30C9DB6E-EA4E-AFBA-E063-9C6D46644B92 2
Esempio: selezione del feedback AI
In questi esempi viene illustrato come utilizzare la procedura DBMS_CLOUD_AI.FEEDBACK e i diversi scenari per fornire feedback per migliorare la successiva generazione di query SQL.
Nota: è possibile fornire un feedback per i prompt SQL di selezione AI anche se il prompt non è stato eseguito in precedenza. Selezionare AI non richiede che il prompt SQL venga utilizzato in una query prima di sottomettere il feedback. È possibile fornire feedback per qualsiasi prompt valido in qualsiasi momento.
Esempio: fornire un feedback negativo
L'esempio seguente mostra come fornire correzioni all'istruzione SQL generata come feedback (feedback negativo) utilizzando feedback_type come negative e fornendo la query SQL.
Per aggiungere il feedback al profilo AI denominato OCI_FEEDBACK1, chiamare la procedura DBMS_CLOUD_AI.FEEDBACK con il parametro sql_text contenente il prompt. Per ulteriori informazioni sugli attributi, vedere Procedura di feedback. Quindi, è possibile recuperare le colonne content e attributes dalla tabella <profile_name>_FEEDBACK_VECINDEX$VECTAB, che è collegata a tale query SQL specifica. Selezionare AI per creare automaticamente questa tabella vettoriale la prima volta che si utilizza la funzione di feedback. Per ulteriori informazioni, vedere Indice vettoriale per feedback.
SQL> select ai showsql how many movies;
RESPONSE
------------------------------------------------------------------------
SELECT COUNT(m."MOVIE_ID") AS "Number of Movies" FROM "ADB_USER"."MOVIES" m
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"');
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}
Esempio: fornire un feedback positivo
L'esempio riportato di seguito illustra l'approvazione dell'utente all'accettazione e alla conferma dell'istruzione SQL generata (feedback positivo) utilizzando feedback_type come positive.
In questo esempio, la query recupera sql_id dalla vista v$mapped_sql per il prompt specificato. Per ulteriori informazioni, vedere V_MAPPED_SQL.
Per aggiungere il feedback al profilo AI denominato OCI_FEEDBACK1, chiamare la procedura DBMS_CLOUD_AI.FEEDBACK con il parametro sql_id. Quindi, è possibile recuperare le colonne content e attributes dalla tabella <profile_name>_FEEDBACK_VECINDEX$VECTAB, che è collegata a tale query SQL specifica. Selezionare AI per creare automaticamente questa tabella vettoriale la prima volta che si utilizza la funzione di feedback. Per ulteriori informazioni, vedere Indice vettoriale per feedback.
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
SELECT sql_id FROM v$mapped_sql WHERE sql_text = 'select ai showsql how many distinct movie genres?';
SQL_ID
-------------
852w8u83gktc1
exec DBMS_CLOUD_AI.FEEDBACK(profile_name=>'OCI_FEEDBACK1', sql_id=> '852w8u83gktc1', feedback_type=>'positive', operation=>'add');
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}
Esempio: fornire feedback senza uso precedente
È possibile fornire un feedback per i prompt SQL anche se il prompt non è stato utilizzato in precedenza. Ad esempio:
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 questo caso, il feedback per il prompt select ai runsql how many products named PAD viene inviato senza dover utilizzare il prompt in anticipo.
Esempio: aggiunta o eliminazione del feedback per l'istruzione SQL generata
L'esempio seguente illustra l'aggiunta o l'eliminazione del feedback per l'istruzione SQL generata specificando i parametri della procedura DBMS_CLOUD_AI.FEEDBACK. In questo esempio viene illustrato come utilizzare sql_id e sql_text insieme ad altri parametri.
Nota: la selezione di AI consente una sola voce di feedback per ogni sql_id. Se si fornisce un feedback aggiuntivo per lo stesso sql_id, Select AI sostituisce la voce precedente con quella nuova.
Per ulteriori informazioni sui parametri, vedere Procedura di feedback.
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');
Esempio: utilizzare l'azione di feedback con l'ultima istruzione SQL AI per fornire feedback negativi
In questo esempio viene fornita una dimostrazione dell'uso dell'azione feedback per migliorare l'istruzione SQL generata suggerendo le modifiche utilizzando il linguaggio naturale.
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');
select ai showsql rank movie duration;
RESPONSE
-------------------------------------------------------------------------------
SELECT "DURATION" AS "Movie Duration" FROM "ADB_USER"."MOVIES" ORDER BY "DURATION"
select ai feedback use ascending sorting;
RESPONSE
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Based on your feedback, the SQL query for prompt "rank movie duration" is successfully refined. The refined SQL query as following:
SELECT m."DURATION" AS "Movie Duration" FROM "ADB_USER."MOVIES" m ORDER BY m."DURATION" ASC
select ai showsql rank the movie duration;
RESPONSE
-----------------------------------------------------------------------------------------
SELECT m."DURATION" AS "Movie Duration" FROM "ADB_USER."MOVIES" m ORDER BY m."DURATION" ASC
Esempio: utilizzare l'azione di feedback con l'ultima istruzione SQL AI per fornire un feedback positivo
Questo esempio illustra l'uso dell'azione feedback per accettare l'istruzione SQL generata utilizzando il linguaggio naturale.
--Positive feedback
select ai showsql which movies are comedy?;
RESPONSE
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT DISTINCT m."TITLE" AS "Movie Title" FROM "ADB_USER"."MOVIES" m INNER JOIN "ADB_USER"."MOVIE_GENRES" mg ON m."MOVIE_ID" = mg."MOVIE_ID" INNER JOIN "ADB_USER"."GENRES" g ON mg."GENRE_ID" = g."GENRE_ID" WHERE g."GENRE_NAME" = 'comedy'
select ai feedback this is correct;
RESPONSE
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Thank you for your positive feedback. The SQL query for prompt "which movies are comedy?" is correctly implemented and delivering the expected results. It will be referenced for future optimizations and improvements.
Select AI Feedback Action Referring SQL_ID
Esempio: utilizzare l'azione Feedback con SQL_ID per fornire feedback
In questo esempio viene illustrato come utilizzare SQL_ID con l'azione feedback per fornire un feedback per una determinata query SQL generata. È possibile ottenere SQL_ID eseguendo una query sulla tabella v$MAPPED_SQL.
-- 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
Esempio: utilizzo dell'azione Feedback con testo query
Questo esempio mostra l'azione feedback per una specifica query Select AI includendo il prompt Select AI tra apici seguito dal feedback.
-Query mentioned with SQL_TEXT
select ai showsql how many watch history in total;
RESPONSE
----------------------------------------------------------------------------------
SELECT COUNT(w."WATCH_ID") AS "Total Watch History" FROM "ADB_USER"."WATCH_HISTORY" w
select ai feedback for query "select ai showsql how many watch history in total", name the column as total_watch;
RESPONSE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Based on your feedback, the SQL query for prompt "how many watch history in total" is successfully refined. The refined SQL query as following:
SELECT COUNT(w."WATCH_ID") AS "total_watch" FROM "ADB_USER"."WATCH_HISTORY" w
Esempio: selezione AI per grafici struttura
In questo esempio viene illustrato come utilizzare la procedura DBMS_CLOUD_AI.GENERATE e un prompt del linguaggio naturale per generare query del grafico PGQ per eseguire query sui dati del grafico.
Esempio: specificare più grafici nel profilo AI
Questo esempio mostra come definire più grafici delle proprietà nel profilo AI, inclusa una query di esempio e il relativo output.
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');
select ai who bought a dress;
CUSTOMER_N
----------
Kate
1 row selected.
Esempio: prompt di esempio per grafici struttura
Questi esempi mostrano come creare dati di esempio e visualizzare l'istruzione SQL generata utilizzando l'azione showsql per un determinato prompt.
Esempio: tabella Crea grafico proprietà
Nell'esempio seguente vengono create tabelle di esempio e un grafico delle proprietà.
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;
Esempio: corrispondenza di vertici senza etichette
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))
Esempio: corrispondenza di bordi senza etichette
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))
Esempio: corrispondenza di bordi con etichette
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))
Esempio: corrispondenza di pattern di percorso inclusi uno o più hop
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))
Esempio: accesso alle proprietà Vertex e Edge
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))
Esempio: filtro dei dati
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))
Esempio: funzioni ed espressioni
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
)
)
Esempio: ordinamento dei dati
Prompt: Find friends of Scott Tiger ordered by their last name
SELECT friend_firstname, friend_lastname
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
MATCH (p IS "PERSON") -[e IS "KNOWS"]-> (f IS "PERSON")
WHERE UPPER(p."FIRSTNAME") = UPPER('Scott') AND UPPER(p."LASTNAME") = UPPER('Tiger')
COLUMNS (f."FIRSTNAME" AS friend_firstname, f."LASTNAME" AS friend_lastname)
)
ORDER BY friend_lastname
Esempio: limitazione delle righe
Prompt: Find all people ordered by first name. Skip one result and return 2 results only
SELECT person_firstname
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
MATCH (p IS "PERSON")
COLUMNS (p."FIRSTNAME" AS person_firstname))
ORDER BY person_firstname
OFFSET 1 ROWS FETCH NEXT 2 ROWS ONLY
Query non supportate
Per le query riportate di seguito, alcuni LLM generano NL2SQL validi, ma l'SQL risultante utilizza funzioni non ancora supportate in Oracle AI Database 26ai.
Esempio: query che richiedono di non corrispondere a un determinato pattern
Prompt: Find people that do not know Scott.
La subquery EXISTS non è supportata.
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))
Esempio: query che richiedono la corrispondenza facoltativa di un determinato pattern
Prompt: Show all people and how many posts they have liked (show people even if they have not liked a post).
Corrispondenza OPTIONAL non supportata.
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
))
Esempio: pattern di percorso ricorsivi non limitati
Prompt: Find all people that Scott can reach.
Le query che utilizzano quantificatori non limitati non sono supportate.
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
)
)
Query intermittenti
Gli LLM hanno dimostrato di avere difficoltà nella traduzione di query che richiedono più di un operatore GRAPH_TABLE. Di seguito sono riportati alcuni esempi di questo tipo.
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
)
Esempio: corrispondenza dei pattern di percorso ricorsivo con i limiti definiti.
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))
Esempio: filtro dei dati per i nodi lungo un percorso ricorsivo
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))
Esempio: raggruppamento e aggregazione
I LLM spesso hanno difficoltà a tradurre query che richiedono raggruppamento e aggregazione. Un errore comune è quello di inserire le aggregazioni nella clausola COLUMNS anziché nella clausola SELECT.
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;
Esempio: miglioramento della generazione delle query SQL
Questi esempi illustrano in che modo i commenti, le annotazioni, la chiave esterna e i vincoli di integrità referenziale nelle tabelle e nelle colonne del database possono migliorare la generazione di query SQL dai prompt in linguaggio naturale.
Esempio: miglioramento della generazione SQL con commenti tabella e colonna
Se nelle tabelle del database sono presenti commenti di tabella e colonna, abilitare il parametro "comments":"true" nella funzione DBMS_CLOUD_AI.CREATE_PROFILE per recuperare i commenti a livello di tabella e colonna. I commenti vengono aggiunti ai metadati dell'LLM per una migliore generazione SQL.
-- Adding comments to table 1, table 2, and table 3. Table 1 has 3 columns, table 2 has 7 columns, table 3 has 2 columns.
-- TABLE1
COMMENT ON TABLE table1 IS 'Contains movies, movie titles and the year it was released';
COMMENT ON COLUMN table1.c1 IS 'movie ids. Use this column to join to other tables';
COMMENT ON COLUMN table1.c2 IS 'movie titles';
COMMENT ON COLUMN table1.c3 IS 'year the movie was released';
-- TABLE2
COMMENT ON TABLE table2 IS 'transactions for movie views - also known as streams';
COMMENT ON COLUMN table2.c1 IS 'day the movie was streamed';
COMMENT ON COLUMN table2.c2 IS 'genre ids. Use this column to join to other tables';
COMMENT ON COLUMN table2.c3 IS 'movie ids. Use this column to join to other tables';
COMMENT ON COLUMN table2.c4 IS 'customer ids. Use this column to join to other tables';
COMMENT ON COLUMN table2.c5 IS 'device used to stream, watch or view the movie';
COMMENT ON COLUMN table2.c6 IS 'sales from the movie';
COMMENT ON COLUMN table2.c7 IS 'number of views, watched, streamed';
-- TABLE3
COMMENT ON TABLE table3 IS 'Contains the genres';
COMMENT ON COLUMN table3.c1 IS 'genre id. use this column to join to other tables';
COMMENT ON COLUMN table3.c2 IS 'name of the genre';
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'myprofile',
attributes =>
'{"provider": "azure",
"azure_resource_name": "my_resource",
"azure_deployment_name": "my_deployment",
"credential_name": "my_credential",
"comments":"true",
"object_list": [
{"owner": "moviestream", "name": "table1"},
{"owner": "moviestream", "name": "table2"},
{"owner": " moviestream", "name": "table3"}
]
}'
);
DBMS_CLOUD_AI.SET_PROFILE(
profile_name => 'myprofile'
);
END;
/
--Prompts
select ai what are our total views;
RESPONSE
-------------------------------------------------
TOTAL_VIEWS
-----------
97890562
select ai showsql what are our total views;
RESPONSE
-------------------------------------------------------------------------
SELECT SUM(QUANTITY_SOLD) AS total_views
FROM "moviestream"."table"
select ai what are our total views broken out by device;
DEVICE TOTAL_VIEWS
-------------------------- -----------
mac 14719238
iphone 20793516
ipad 15890590
pc 14715169
galaxy 10587343
pixel 10593551
lenovo 5294239
fire 5296916
8 rows selected.
select ai showsql what are our total views broken out by device;
RESPONSE
---------------------------------------------------------------------------------------
SELECT DEVICE, COUNT(*) AS TOTAL_VIEWS
FROM "moviestream"."table"
GROUP BY DEVICE
Esempio: miglioramento della generazione di query SQL con annotazioni di tabella e colonna
In questo esempio viene illustrata l'integrazione delle annotazioni in Select AI, applicabile in Oracle Database 23ai. Le annotazioni vengono aggiunte ai metadati inviati al LLM.
Se nello schema è presente una tabella con annotazioni, abilitare "annotations":"true" nella funzione DBMS_CLOUD_AI.CREATE_PROFILE per indicare a Select AI di aggiungere annotazioni AI metadati.
--
-- Annotations
--
CREATE TABLE emp2 (
empno NUMBER,
ename VARCHAR2(50) ANNOTATIONS (display 'lastname'),
salary NUMBER ANNOTATIONS ("person_salary", "column_hidden"),
deptno NUMBER ANNOTATIONS (display 'department')
)ANNOTATIONS (requires_audit 'yes', version '1.0', owner 'HR Organization');
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'GOOGLE_ANNOTATIONS',
attributes => '{"provider": "google",
"credential_name": "GOOGLE_CRED",
"object_list": [{"owner": "ADB_USER", "name": "emp2"}],
"annotations" : "true"
}');
END;
/
EXEC DBMS_CLOUD_AI.SET_PROFILE('GOOGLE_ANNOTATIONS');
Esempio: miglioramento della generazione di query SQL con chiave esterna e vincoli chiave referenziale
Questo esempio dimostra la capacità dell'LLM di generare condizioni JOIN accurate recuperando i vincoli della chiave esterna e della chiave referenziale nei metadati dell'LLM. I vincoli di chiave esterna e di chiave referenziale forniscono dati strutturati sulle relazioni tra le tabelle e l'LLM.
Abilitare "constraints":"true" nella funzione DBMS_CLOUD_AI.CREATE_PROFILE per Selezionare AI per recuperare la chiave esterna e la chiave referenziale.
--
-- Referential Constraints
--
CREATE TABLE dept_test (
deptno NUMBER PRIMARY KEY,
dname VARCHAR2(50)
);
CREATE TABLE emp3 (
empno NUMBER PRIMARY KEY,
ename VARCHAR2(50),
salary NUMBER,
deptno NUMBER,
CONSTRAINT emp_dept_fk FOREIGN KEY (deptno) REFERENCES dept_test(deptno)
);
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name=>'GOOGLE_CONSTRAINTS',
attribues =>'{"provider": "google",
"credential_name": "GOOGLE_CRED",
"object_list": [{"owner": "ADB_USER", "name": "dept_test"},
{"owner": "ADB_USER", "name": "emp3"}],
"constraints" : "true"
}');
END;
/
EXEC DBMS_CLOUD_AI.SET_PROFILE('GOOGLE_CONSTRAINTS');
Esempio: rilevamento automatico dei metadati delle tabelle rilevanti
Questi esempi mostrano in che modo Select AI rileva automaticamente le tabelle pertinenti e invia metadati solo per quelle tabelle specifiche rilevanti per la query in Oracle Database 23ai. Per abilitare questa funzione, impostare object_list_mode su automated. In questo modo viene creato automaticamente un indice vettoriale denominato <profile_name>_OBJECT_LIST_VECINDEX. L'indice vettoriale viene inizializzato con attributi e valori predefiniti quali refresh_rate, similarity_threshold e match_limit. È possibile modificare alcuni attributi tramite DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX. Per ulteriori informazioni, vedere UPDATE_VECTOR_INDEX Procedure.
Un profilo è configurato per utilizzare object_list per specificare lo schema o gli oggetti nello schema, mentre l'altro non specifica object_list. Tuttavia, è previsto lo stesso costrutto SQL.
Rivedere Prerequisiti per la selezione di AI per fornire l'accesso al package DBMS_CLOUD_AI e fornire l'accesso di rete al provider AI.
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name=>'OCI_AUTO',
attributes=>'{"provider": "oci",
"credential_name": "GENAI_CRED",
"object_list": [{"owner": "SH"}],
"oci_compartment_id": "ocid1.compartment.oc1..aaaa...",
"model" : "meta.llama-3.3-70b-instruct"
}');
END;
/
EXEC DBMS_CLOUD_AI.SET_PROFILE('OCI_AUTO');
select ai showsql how many customers in San Francisco are married;
RESPONSE
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT COUNT(DISTINCT c."CUST_ID") AS "NUMBER_OF_CUSTOMERS"
FROM "SH"."CUSTOMERS" c
WHERE UPPER(c."CUST_CITY") = UPPER('San Francisco')
AND UPPER(c."CUST_MARITAL_STATUS") = UPPER('married')
Nell'esempio seguente viene confrontato lo stesso scenario senza utilizzare object_list. Quando non si specifica object_list, Select AI sceglie automaticamente tutti gli oggetti disponibili per lo schema corrente.
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name=>'OCI_AUTO1',
attributes=>'{"provider": "oci",
"credential_name": "GENAI_CRED",
"oci_compartment_id": "ocid1.compartment.oc1..aaaa...",
"object_list_mode": "automated",
"model" : "meta.llama-3.3-70b-instruct"
}');
END;
/
EXEC DBMS_CLOUD_AI.SET_PROFILE('OCI_AUTO1');
select ai showsql how many customers in San Francisco are married?;
RESPONSE
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT COUNT(c."CUST_ID") AS "Number_of_Customers"
FROM "SH"."CUSTOMERS" c
WHERE UPPER(c."CUST_CITY") = UPPER('San Francisco')
AND UPPER(c."CUST_MARITAL_STATUS") = UPPER('Married')
Esempio: Seleziona sintetico AI
Questi esempi mostrano come utilizzare l'azione summarize e la funzione DBMS_CLOUD_AI.SUMMARIZE. Inoltre, personalizzare la generazione di riepilogo per il contenuto utilizzando la funzione.
Esempio: uso dell'azione di riepilogo sulla riga di comando SQL
Nell'esempio seguente viene utilizzato SUMMARIZE come azione Select AI. Utilizzare SELECT AI SUMMARIZE <TEXT> nella riga di comando SQL per generare un riepilogo del testo di input.
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.
Suggerimento: in SQL*Plus, un punto virgoletta singolo (') viene considerato come un delimitatore di stringa. Se il testo contiene virgolette singole, eseguire l'escape raddoppiando il testo (da ' a '') oppure racchiudere il testo utilizzando il meccanismo di quotazione q'[]'. Se il testo contiene virgolette doppie vuote (""), racchiudere il testo utilizzando il meccanismo q'[]'. Ad esempio:
SELECT AI SUMMARIZE q'[this's a text]';
Esempio: utilizzare la procedura DBMS_CLOUD_AI.SUMMARIZE per generare un riepilogo
In questi esempi viene illustrato come generare un riepilogo utilizzando parametri diversi dalla procedura DBMS_CLOUD_AI.SUMMARIZE.
È possibile generare un riepilogo da più di 3000 parole di testo memorizzate in uno storage degli oggetti OCI specificando il collegamento allo storage degli oggetti come parametro location_uri e le credenziali dell'account cloud come credential_name utilizzando DBMS_CLOUD_AI.SUMMARIZE
SELECT DBMS_CLOUD_AI.SUMMARIZE(
location_uri => 'https://objectstorage.ca-toronto-1.oraclecloud.com/n/' ||
'namespace-string/b/bucketname/o/data_folder/' ||
'summary/test_4000_words.txt',
credential_name => 'STORE_CRED',
profile_name => 'GENAI')
from DUAL;
Un altro modo per generare un riepilogo da un testo memorizzato in uno storage degli oggetti OCI è utilizzare il parametro content per chiamare la procedura DBMS_CLOUD.GET_OBJECT.
SELECT DBMS_CLOUD_AI.SUMMARIZE(
content => TO_CLOB(
DBMS_CLOUD.GET_OBJECT(
credential_name => 'STORE_CRED',
location_uri => 'https://objectstorage.ca-toronto-1.oraclecloud.com/n/' ||
'namespace-string/b/bucketname/o/data_folder/' ||
'summary/test_4000_words.txt')),
profile_name => 'GENAI'>)
from DUAL;
Esempio: generare un riepilogo specificando prompt utente, numero minimo di parole e numero massimo di parole
L'esempio seguente mostra la generazione di un riepilogo di più di 3000 parole specificando i seguenti parametri:
-
user_prompt: il riepilogo deve iniziare con 'Il riepilogo dell'articolo è: ' min_words:50max_words:100
SELECT DBMS_CLOUD_AI.SUMMARIZE(
content => TO_CLOB(
DBMS_CLOUD.GET_OBJECT(
credential_name =>'STORE_CRED',
location_uri =>'https://objectstorage.ca-toronto-1.oraclecloud.com/n/' ||
'namespace-string/b/bucketname/o/data_folder/' ||
'summary/test_4000_words.txt')),
profile_name => 'GENAI',
user_prompt => 'The summary should start with ''The summary of ' ||
'the article is: ''',
params => '{"min_words":50,"max_words":100}')
As response FROM dual;
RESPONSE
--------------------------------------------------------------------------------
The summary of the article is: The music streaming industry, led by Spotify, has revolutionized the way people consume music, with streaming accounting for about eighty per cent of the American recording industry's revenue. However, this shift has also raised concerns about the impact on artists, with many struggling to make a living due to low royalty rates and the dominance of playlists. The article explores the history of music streaming, from the early days of Napster to the current landscape, and how it has changed the way people listen to music. It also delves into the issues of autonomy and creativity in the music industry, with some artists feeling pressured to conform to certain styles or formulas to succeed on platforms like Spotify. The article cites examples of artists who have spoken out against the streaming economy, including Taylor Swift and Neil Young, and discusses the rise of alternative platforms like Bandcamp and Nina. Ultimately, the article suggests that the streaming economy has created a perverse vision for art, where music is valued for its ability to be ignored rather than appreciated, and that this has significant implications for the future of music and creativity. With the rise of AI-generated music and the increasing importance of data-driven decision making in the music industry, the article asks what the m
usic we're not hearing sounds like, and what the consequences of this shift will be for artists and listeners alike. The article concludes by highlighting the need for a more nuanced understanding of the music industry and the impact of streaming on artists and listeners, and for alternative models that prioritize creativity and autonomy over profit and convenience.
Esempio: generare un riepilogo specificando prompt utente, numero massimo di parole e stile di riepilogo
L'esempio seguente mostra la generazione di un riepilogo di più di 12000 parole specificando i seguenti parametri:
-
user_prompt: il riepilogo deve iniziare con 'Il riepilogo dell'articolo è: ' -
max_words:100 -
summary_style:list
SELECT DBMS_CLOUD_AI.SUMMARIZE(
location_uri => 'https://objectstorage.ca-toronto-1.' ||
'oraclecloud.com/n/namespace-string/b/' ||
'/bucketname/o/data_folder/' ||
'summary/dreams.txt',
credential_name => 'STORE_CRED',
profile_name => 'GENAI',
user_prompt => 'The summary should start with ''The summary of ' ||
'the article is: ''',
params => '{"max_words":100, "summary_style":"list"}')
As response FROM dual;
RESPONSE
--------------------------------------------------------------------------------
The summary of the article is:
- The book "Dreams" by Henri Bergson explores the concept of dreams and their significance in understanding human consciousness.
- Bergson argues that dreams are not just random thoughts, but rather a way for our unconscious mind to process and consolidate memories.
- He suggests that dreams are a result of the relaxation of our mental faculties, which allows our unconscious mind to freely associate and create new connections between memories.
- The book also discusses the role of sensations, such as visual and auditory impressions, in shaping our dreams.
- Bergson's theory of dreams is compared to other theories, including those of Freud and Jung, and is seen as a unique and insightful contribution to the field of psychology.
- The book concludes by highlighting the importance of studying dreams in order to gain a deeper understanding of human consciousness and the workings of the mind.
Esempio: generazione di un riepilogo di un registro
In questo esempio viene illustrato come passare un file MiB 35.66 come input per generare un riepilogo. La funzione DBMS_CLOUD_AI.SUMMARIZE utilizza il metodo di perfezionamento iterativo per elaborare i chunk. Per ulteriori informazioni, vedere Selezionare la terminologia AI.
SELECT DBMS_CLOUD_AI.SUMMARIZE(
location_uri => 'https://objectstorage.ca-toronto-1.oraclecloud.com/n/namespace-string/b/' ||
'bucketname/o/data_folder/summary/Descartes_An_Intellectual_Biography.pdf',
credential_name => 'STORE_CRED',
profile_name => 'GENAI',
params => '{"chunk_processing_method":"iterative_refinement"}')
AS response FROM dual;
RESPONSE
--------------------------------------------------------------------------------
Stephen Gaukroger's intellectual biography of Rene Descartes provides a detailed examination of the philosopher's crucial role in shaping modern thought, placing him within the cultural, religious, and scientific context of the early seventeenth century. It traces Descartes' intellectual journey from his education at La Fleche, where he rejected Aristotelian logic, to his influential interactions with figures like Isaac Beeckman, which shaped his mechanistic worldview evident in works like his hydrostatics manuscript and *Compendium Musicae*. The biography underscores Descartes' dual commitment to philosophy and science, highlighting his social status among the gentry, mathematical innovations such as solving the Pappus problem through algebraic geometry, and his epistemology based on clear and distinct ideas. It explores his mechanistic explanations of bodily functions, challenging traditional soul-body distinctions, and his extensive natural philosophy in texts like *Le Monde* and *L'Homme*. Gaukroger also delves into Descartes' cosmological theories, including the vortex theory and laws of motion linked to divine immutability, as well as his nuanced perspectives on animal cognition versus human consciousness. Central to the narrative is Descartes' use of hyperbolic doubt to combat skepticism and establish metaphysical foundations through the *cogito*, alongside his classification of ideas and theological proofs of God's existence. The complex relationship between his natural philosophy and metaphysics, especially in defining motion as a mode, and his innovative approach to the passions in *Passions of the Soul*, rejecting Stoic views for a mind-body union, are key themes. This portrayal captures Descartes' struggle with traditional paradigms during a transformative era, emphasizing his enduring impact on p
hilosophy and science.
Esempio: Seleziona traduzione AI
In questi esempi viene illustrato come utilizzare la funzionalità translate.
Per utilizzare la funzione Seleziona traduzione AI, è necessario disporre delle autorizzazioni dei criteri IAM appropriate per accedere AI servizi Oracle Cloud Infrastructure Language.
Concedere l'autorizzazione per utilizzare la risorsa ai-service-language-family nel criterio IAM. Di seguito è riportata un'istruzione di criterio di esempio per concedere l'autorizzazione a un gruppo di utenti in un compartimento specifico.
allow group <your group name> to use ai-service-language-family in compartment <your_compartment>
-
Se si utilizza la credenziale principal risorsa, assegnare l'autorizzazione al gruppo dinamico.
-
Se si utilizza la credenziale Chiave privata, assegnare l'autorizzazione al gruppo di utenti.
Un gruppo dinamico identifica risorse quali database o funzioni mediante la corrispondenza dei relativi OCID o tag, mentre un gruppo di utenti contiene singoli utenti IAM.
Utilizzare un gruppo dinamico quando il criterio si applica alle risorse OCI e utilizzare un gruppo di utenti quando il criterio si applica agli utenti umani. Per informazioni dettagliate sulla creazione di gruppi dinamici e di utenti, vedere Gestione dei gruppi dinamici.
Per ulteriori informazioni, vedere Criteri linguistici.
Esempio: uso dell'azione di traduzione nella riga di comando SQL
L'esempio seguente mostra l'uso dell'azione translate nella riga di comando SQL.
Nota: il profilo AI deve specificare la lingua di destinazione. Questa funzionalità è supportata solo per il provider OCI.
--Create an AI profile with language parameters
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name =>'GENAI_NEW',
attributes =>'{"provider": "oci",
"credential_name": "GENAI_CRED",
"target_language": "french",
"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"}]
}');
END;
/
exec DBMS_CLOUD_AI.SET_PROFILE('GENAI_NEW');
select ai translate I need to translate this;
RESPONSE
---------------------
Je dois traduire ceci
Esempio: Usa traduzione in funzione DBMS_CLOUD_AI.GENERATE
Gli esempi riportati di seguito mostrano l'utilizzo di translate come azione Select AI all'interno della funzione DBMS_CLOUD_AI.GENERATE. Per ulteriori informazioni, vedere Funzione GENERATE.
Nota: il profilo AI può saltare la specifica del parametro della lingua di destinazione se viene passato come attributo in DBMS_CLOUD_AI.GENERATE.
L'azione translate viene fornita nella funzione DBMS_CLOUD_AI.GENERATE insieme a target_language e source_language. In questo esempio viene utilizzata la traduzione dell'AI generativa. Il testo di input this is a document in inglese (source_language: "en") viene tradotto in francese (target_language: "fr").
SELECT DBMS_CLOUD_AI.GENERATE('select ai translate text to be translated')
FROM dual;
DECLARE
l_attributes clob := '{"target_language": "fr", "source_language": "en"}';
output clob;
BEGIN
output := DBMS_CLOUD_AI.GENERATE(
prompt => 'this is a document',
profile_name => 'oci_translate',
action => 'translate',
attributes => l_attributes
);
Esempio: utilizzare la funzione DBMS_CLOUD_AI.TRANSLATE per la traduzione
In questo esempio la funzione DBMS_CLOUD_AI.TRANSLATE viene chiamata per utilizzare la traduzione AI generativa, convertendo il testo di input dall'inglese (source_language) in francese (target_language) utilizzando il profilo AI specificato.
Per ulteriori informazioni, vedere Funzione TRANSLATE.
BEGIN
output_text := DBMS_CLOUD_AI.TRANSLATE(
profile_name => 'GENAI_NEW'
text => 'text to be translated',
source_language => 'English',
target_language => 'French');
END;
/
Esempio: visualizzazione delle lingue supportate per un provider
Eseguire una query sulla vista AI_TRANSLATION_LANGUAGES per visualizzare un elenco di lingue supportate dal provider AI. Per ulteriori informazioni, vedere Vista AI_TRANSLATION_LANGUAGES.
SELECT* FROM AI_TRANSLATION_LANGUAGES;
LANGUAGE_NAME LANGUAGE_CODE PROVIDER
-------------------- -------------------- ---------------
ARABIC ar OCI
CROATIAN hr OCI
CZECH cs OCI
DANISH da OCI
GERMAN de OCI
GREEK el OCI
ENGLISH en OCI
SPANISH es OCI
FINNISH fi OCI
FRENCH fr OCI
FRENCH CANADA fr-CA OCI
HEBREW he OCI
HUNGARIAN hu OCI
ITALIAN it OCI