Usa Seleziona AI per generare SQL dai prompt del linguaggio naturale

Autonomous Database sull'infrastruttura Exadata dedicata Select AI consente di eseguire query sui dati utilizzando il linguaggio naturale.

La funzione Seleziona AI consente a Autonomous Database di utilizzare l'intelligenza artificiale generativa con modelli LLM (Large Language Models) per convertire il testo di input dell'utente in Oracle SQL. Seleziona AI elabora il prompt del linguaggio naturale, integra il prompt con i metadati, quindi genera ed esegue una query SQL.

Argomenti correlati

Terminologia

È importante comprendere i vari termini utilizzati con Select AI prima di utilizzarlo.

Di seguito sono riportati i termini correlati alla funzione Seleziona AI.

Termine Definizione

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, in modo da garantire che solo gli utenti o i sistemi autorizzati possano accedere e manipolare i dati memorizzati nel database.

Allucinazione in LLM

L'allucinazione nel contesto dei modelli di linguaggio di grandi dimensioni si riferisce a un fenomeno in cui il modello genera testo non corretto, non sensato o non correlato al prompt di input. Pur essendo il risultato del tentativo del modello di generare testo coerente, queste istanze possono contenere informazioni fabbricate, fuorvianti o puramente fantasiose. L'allucinazione può verificarsi a causa di distorsioni 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 chi può accedere alle tue risorse cloud. È possibile controllare il tipo di accesso di un gruppo di utenti e le risorse specifiche. Per ulteriori informazioni, vedere Panoramica di Identity and Access Management.

Modello LLM (Large Language Model)

I modelli di linguaggio di grandi dimensioni si riferiscono a modelli avanzati di intelligenza artificiale addestrati su enormi quantità di dati di testo per comprendere e generare query di linguaggio, codice software e database simili a quelli umani. Questi modelli sono in grado di eseguire una vasta gamma di attività di elaborazione del linguaggio naturale, tra cui la generazione del testo, la traduzione, la sintesi, la risposta alle domande, l'analisi del sentiment e altro ancora. I LLM sono in genere architetture basate su rete neurale che apprendono modelli, contesto e semantica dai dati di input, consentendo loro di generare testo coerente e contestualmente pertinente.

Prompt linguaggio naturale

I prompt del linguaggio naturale sono istruzioni o richieste leggibili dall'utente fornite per guidare i modelli di intelligenza artificiale generativa, ad esempio 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 di linguaggio più conversazionale o naturale. I modelli generano quindi l'output in base al prompt fornito.

Lista di controllo dell'accesso di rete (ACL)

Una lista di controllo dell'accesso di rete è un set di regole o autorizzazioni che definiscono il traffico di rete che può 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.

Esempi di utilizzo dell'intelligenza artificiale selezionata

Scopri come integrare Select AI di Oracle con vari provider AI come OpenAI, Cohere, Azure Open AI e OCI Generative AI per generare query SQL direttamente dal linguaggio naturale.

Questi esempi mostrano le azioni Select AI comuni e ti guidano nell'impostazione del tuo profilo con diversi provider AI per sfruttare tali azioni.

Esempio: Seleziona azioni AI

Nell'esempio seguente vengono illustrate azioni quali runsql, showsql, narrate, chat e explainsql che è possibile eseguire con SELECT AI. Questi esempi utilizzano lo schema sh con il provider AI e gli attributi di profilo impostati nella funzione DBMS_CLOUD_AI.CREATE_PROFILE.

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


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

Linee guida sull'uso

Fornisce istruzioni d'uso che garantiscono l'uso efficace e corretto dei prompt del linguaggio naturale per la generazione SQL per garantire un'esperienza utente migliorata.

Destinazione d'uso

Questa funzione è destinata alla generazione e all'esecuzione di query SQL derivanti da prompt di linguaggio naturale forniti dall'utente. Automatizza ciò che un utente potrebbe fare manualmente in base ai metadati dello schema in combinazione con un modello di linguaggio di grandi dimensioni (LLM) di sua scelta.

Sebbene sia possibile fornire qualsiasi prompt, inclusi quelli che non si riferiscono alla produzione dei risultati delle query SQL, Select AI si concentra sulla generazione delle query SQL. Select AI abilita l'invio di richieste generali con l'azione chat.

Dati incremento prompt

Il database aumenta il prompt specificato dall'utente con i metadati del database per mitigare le allucinazioni dell'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 di tabella e colonna e contenuto disponibile dal dizionario dati e dal catalogo. Ai fini della generazione SQL, il database non fornisce il contenuto della tabella o della vista (valori effettivi di riga o colonna) quando si aumenta il prompt.

L'azione narrate, tuttavia, fornisce il risultato della query, che può contenere dati del database, all'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 ampio set di documenti e contenuti di testo, in genere da Internet. Di conseguenza, i LLM possono avere modelli incorporati da contenuti non validi o dannosi, inclusa l'iniezione SQL. Pertanto, mentre i LLM sono 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 conto dell'utente dal provider LLM specificato dall'utente verranno eseguite nel database. L'utilizzo di questa funzione è a proprio rischio e, nonostante tutti gli altri termini e condizioni relativi ai servizi forniti da Oracle, costituisce accettazione di tale rischio ed espressa esclusione della responsabilità di Oracle per eventuali danni derivanti da tale utilizzo.

Informazioni sulla generazione SQL

L'utilizzo del linguaggio naturale per interagire con i dati del database è ora possibile con i LLM. Ciò significa che è possibile utilizzare il linguaggio naturale, ad esempio l'inglese normale, per eseguire una query sul database.

Quando si utilizza Select AI, Autonomous Database gestisce il processo di conversione del linguaggio naturale in SQL. Ciò significa che puoi fornire un prompt in linguaggio naturale anziché un codice SQL per interagire con i tuoi 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 le strutture dei dati o i linguaggi tecnici.

Il pacchetto DBMS_CLOUD_AI in Autonomous Database consente l'integrazione con un LLM specificato dall'utente per generare codice SQL utilizzando i prompt del linguaggio naturale. Il pacchetto aiuta a fornire all'LLM la conoscenza dello schema di database e a istruirlo a scrivere una query SQL coerente con tale schema. Il pacchetto DBMS_CLOUD_AI funziona con provider AI come OpenAI, Cohere, Azure OpenAI Service e Oracle Cloud Infrastructure Generative AI.

Nota

Gli utenti devono disporre di un account con il provider AI e fornire le proprie credenziali tramite gli oggetti DBMS_CLOUD_AI utilizzati da Autonomous Database.

Utilizzare DBMS_CLOUD_AI per configurare i profili AI

Autonomous Database utilizza i profili AI per facilitare e configurare l'accesso a un LLM e per impostare la generazione di istruzioni SQL dai prompt del linguaggio naturale.

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 nomi di tabelle di database, nomi di colonne, tipi di dati di colonna e commenti. Per creare e configurare i profili AI, utilizzare le procedure DBMS_CLOUD_AI.CREATE_PROFILE e DBMS_CLOUD_AI.SET_PROFILE.

Requisiti per configurare il pacchetto DBMS_CLOUD_AI

Per eseguire DBMS_CLOUD_AI è necessario effettuare le operazioni riportate di seguito.

  • Accesso a un account cloud Oracle Cloud Infrastructure e a un'istanza di Autonomous Database.
  • Un account API a pagamento per un provider AI supportato, uno dei seguenti:
    • OpenAI: per consentire a OpenAI di generare istruzioni SQL dai prompt di 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 le 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-Keys.

    • Servizio OpenAI di Azure: per abilitare Servizio OpenAI di Azure a generare SQL dai prompt del linguaggio naturale, configurare e fornire l'accesso al provider AI.

      Per utilizzare Servizio OpenAI di Azure, effettuare le operazioni riportate di seguito.

      1. Ottenere le chiavi API segrete. È possibile trovare le chiavi API nella sezione Resource Management del portale Azure. Nella pagina Risorsa Servizio OpenAI di Azure fare clic su Chiavi ed endpoint. È possibile copiare KEY1 o KEY2.
      2. Creare una risorsa di Azure OpenAI Service e distribuire un modello: Creare e distribuire una risorsa di Azure OpenAI Service.

        Suggerimento

        • Prendere nota del nome della risorsa e del nome della distribuzione poiché tali parametri vengono utilizzati per fornire l'autorizzazione di accesso alla rete e creare il profilo Servizio OpenAI di Azure utilizzando la procedura DBMS_CLOUD_AI.CREATE_PROFILE.
        • Per ulteriori informazioni sui limiti di frequenza per il token al minuto in un modello, vedere Quota e limiti del servizio OpenAI di Azure.
      3. Consentire l'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: vedere How to Generate the API Signing Key.
    • 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 Google AI Studio.
      1. Vai a Google AI Studio.
      2. Fare clic su Accedi a Google AI Studio.
      3. Fare clic su Ottieni chiave API nella schermata del prompt.
      4. Selezionare tutte le opzioni applicabili nella pagina successiva.
      5. Fare clic su Crea chiave API.
      6. 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 ad Anthropic Developer Console di generare risposte SQL e di testo ai prompt del linguaggio naturale, ottenere le chiavi API dall'account a pagamento Anthropic Developer Console.
      1. Andare a Anthropic Developer Console.
      2. Registra un account se non ne hai già uno.
      3. Una volta eseguito il login, passare alla sezione API o al dashboard.
      4. Cercare un'opzione per generare o visualizzare le chiavi API.
      5. Fare clic per creare una nuova API Key.
      6. Copiare la chiave API generata e salvarla.

        L'API Claude è un servizio a pagamento. Prima di 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, ottenere le chiavi API dall'account a pagamento Hugging Face.
      1. Passare a Hugging Face.
      2. Registra un account se non ne hai già uno.
      3. Accedere alle impostazioni dell'account.
      4. Nel menu di navigazione individuare i token di accesso.
      5. Fare clic per creare una nuova API Key.
      6. Copiare la chiave API generata e salvarla.
  • 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.

Configura package DBMS_CLOUD_AI

Prima di utilizzare Seleziona AI, procedere come segue per abilitare DBMS_CLOUD_AI.

Per configurare DBMS_CLOUD_AI:
  1. Concedere il privilegio EXECUTE sul package DBMS_CLOUD_AI all'utente che desidera utilizzare Select AI.

    Per impostazione predefinita, il privilegio EXECUTE viene concesso solo all'utente ADMIN. L'utente ADMIN può concedere il privilegio EXECUTE ad altri utenti.

  2. 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 Procedura in Oracle Database 19c PL/SQL Packages and Types Reference oppure Oracle Database 23ai PL/SQL Packages and Types Reference.

  3. Creare una credenziale per abilitare l'accesso al provider AI.

    Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedura.

L'esempio seguente concede il privilegio EXECUTE a ADB_USER:
grant execute on DBMS_CLOUD_AI to ADB_USER;

L'esempio seguente concede a ADB_USER il privilegio di utilizzare l'endpoint api.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;
/

APPEND_HOST_ACE Parametri funzione

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 dell'host o del dominio non distingue tra maiuscole e minuscole.

Per OpenAI, utilizzare api.openai.com.

Per Cohere, utilizzare api.cohere.ai.

Per Servizio OpenAI di Azure, utilizzare <azure_resource_name>.openai.azure.com. Per ulteriori informazioni su azure_resource_name, vedere Attributi profilo.

Per Google, utilizzare generativelanguage.googleapis.com.

Per Anthropic, utilizzare api.anthropic.com.

Per Hugging Face, utilizzare api-inference.huggingface.co.

ace

Le voci di controllo dell'accesso (ACE). Il tipo XS$ACE_TYPE viene fornito per costruire 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 23ai Real Application Security Administrator's and Developer's Guide.

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 di DBMS_CLOUD.CREATE_CREDENTIAL

Parametro Descrizione

credential_name

Il nome della credenziale da memorizzare. Il parametro credential_name deve essere conforme alle convenzioni di denominazione degli oggetti Oracle, che non consentono spazi o trattini.

username

Gli argomenti username e password specificano insieme le credenziali del provider AI.

username è un nome utente specificato dall'utente.

password

Gli argomenti username e password specificano insieme le credenziali del provider AI.

password è la chiave API segreta del provider AI e dipende dal provider, ovvero OpenAI, Cohere, Azure OpenAI Service, OCI, Google, Anthropic o Hugging Face. Per ulteriori informazioni, vedere Requisiti per configurare il package DBMS_CLOUD_AI.

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. Iniziare 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

Prima di utilizzare SELECT AI, è necessario eseguire DBMS_CLOUD_AI.SET_PROFILE in ogni nuova sessione del database (connessione).

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;
/
 
PL/SQL procedure successfully completed.
 
--
-- Enable AI profile in current session
--
SQL> EXEC DBMS_CLOUD_AI.set_profile('OPENAI');
 
PL/SQL procedure successfully completed.

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, ad esempio SQL Developer, OML Notebooks e strumenti di terze parti, per interagire con il database in linguaggio naturale.

Nota

Non è possibile eseguire istruzioni PL/SQL, DDL o DML utilizzando la parola chiave AI.

Sintassi

La sintassi per l'esecuzione del prompt AI è la seguente:
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 è facoltativa specificare questo parametro.

showsql

Visualizza l'istruzione SQL per un prompt in linguaggio naturale.

narrate

L'output del prompt viene 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 di interazioni o 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 AI non è supportata in Database Actions o nel servizio APEX. È possibile utilizzare solo la funzione DBMS_CLOUD_AI.GENERATE.

  • La parola chiave AI è supportata solo in un'istruzione SELECT.

  • Non è possibile eseguire istruzioni PL/SQL, DDL o DML utilizzando la parola chiave AI.

  • La sequenza è SELECT seguita da AI. Per queste parole chiave non viene applicata la distinzione tra casi. Dopo aver configurato un DBMS_CLOUD_AI.SET_PROFILE, il testo dopo SELECT AI è un prompt in linguaggio naturale. Se un profilo AI non è impostato, SELECT AI segnala il seguente errore:

    ORA-00923: FROM keyword not found where expected
    00923. 00000 -  "FROM keyword not found where expected"
  • Si applicano regole speciali per l'uso dei caratteri in base alle linee guida Oracle. Ad esempio, utilizzare le virgolette singole due volte 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 AI non sia in grado di eseguire l'istruzione SQL generata per un prompt specifico del linguaggio naturale.

    • È possibile che SELECT AI non sia in grado di generare SQL per un prompt specifico del linguaggio naturale.

    In questo scenario, SELECT AI risponde con le informazioni necessarie per generare un'istruzione SQL valida.

  • Utilizzare l'azione chat, con SELECT AI chat, per ulteriori informazioni sui costrutti SQL. Per ottenere risultati migliori con l'azione chat, utilizzare le viste di database o le tabelle con nomi di colonna contestuali oppure aggiungere commenti di colonna per spiegare i valori memorizzati nelle colonne.

  • Per accedere alle viste DBA o USER, vedere DBMS_CLOUD_AI Viste.