Usa Seleziona AI per generare SQL dai prompt del linguaggio naturale

Autonomous AI Database on Dedicated Exadata Infrastructure Select AI consente di eseguire query sui dati utilizzando il linguaggio naturale.

La funzione Select AI consente a 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.

Piattaforme supportate

Select AI è supportata su Autonomous AI Database serverless e Autonomous AI Database su infrastruttura Exadata dedicata e cloud at Customers.

  • Database AI autonomo Serverless
  • Database AI autonomo su un'infrastruttura Exadata dedicata
  • Database AI autonomo su un'infrastruttura Exadata dedicata
  • Database AI autonomo Cloud@Customer

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

Il pacchetto DBMS_CLOUD_AI in Autonomous AI Database consente l'integrazione con un LLM specificato dall'utente per generare codice SQL utilizzando prompt in 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 avere un account con il provider AI e fornire le proprie credenziali tramite gli oggetti DBMS_CLOUD_AI utilizzati dal database AI autonomo.

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.

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.

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.

Area di memorizzazione vettore

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.

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.

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

  • meta.llama-3.3-70b-instruct (impostazione predefinita)
  • meta.llama-3.2-90b-istruzioni di visualizzazione
  • meta.llama-3.2-11b-istruzioni di visualizzazione
  • meta.llama-3.1-70b-instruct
  • meta.llama-3.1-405b-instruct
  • cohere.command-r-08-2024
  • cohere.command-r-plus-08-2024
  • cohere.command-r-16k (obsoleto)
  • cohere.command–r-plus (obsoleto)
  • xai.grok-3
  • xai.grok-3-fast
  • xai.grok-3-mini
  • xai.grok-3-mini-rapido
  • cohere.embed-english-v3.0 (impostazione predefinita)
  • cohere.embed-multilingue-v3.0
  • cohere.embed-english-light-v3.0
  • cohere.embed-luce-multilingua-v3.0

Vedere Informazioni sull'incorporamento dei modelli nell'AI generativa.

I modelli di chat AI generativa OCI sono supportati per tutte le azioni SELECT AI, ad esempio runsql, showsql, explainsql, narrate e chat.

I modelli di testo di generazione OCI sono supportati solo per l'azione SELECT AI chat.

Per configurare gli attributi del profilo, vedere .

Servizio OpenAI di Azure

  • GPT-4o
  • GPT-4
  • GPT-4 Turbo con Visione
  • GPT-3.5-Turbo

inserimento testo-ada-002

Ideale per generare istruzioni SQL dai prompt in linguaggio naturale, dall'azione chat e da Select AI RAG.

OpenAI

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

inserimento testo-ada-002

Ideale per generare istruzioni SQL dai prompt in linguaggio naturale, dall'azione chat e da Select AI RAG.

OpenAI-Compatibile

Modelli di provider compatibili con OpenAI, ad esempio:
  • Fuochi d'artificio AI
  • xAI
  • Altre
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

  • comando (predefinito)
  • comando notturno (sperimentale)
  • comando-r
  • comando-r-plus
  • spia comando
  • comando-luce-notte (sperimentale)
  • modelli personalizzati

embed-english-v2.0

Ideale per l'azione chat.

Google

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

Ideale per generare istruzioni SQL dai prompt in linguaggio naturale, dall'azione chat e da Select AI RAG.

Antropico

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

Ideale per generare istruzioni SQL dai prompt in linguaggio naturale, dall'azione chat e da Select AI RAG.

Hugging Face

  • Mixtral-8x7B-Instruct-v0.1 (impostazione predefinita)
  • Meta-Llama-3-70B-Istruzioni
  • Qwen1.5-1.8B
  • altri modelli di chat
ND

Ideale per generare istruzioni SQL dai prompt in linguaggio naturale, dall'azione chat e da Select AI RAG.

AWS

  • amazon.titan-testo-embed-v1
  • amazon.titan-testo-embed-v2:0
  • cohere.embed-inglese-v3

Supporta una vasta gamma di casi d'uso.

Nota

  • Specificare il provider compatibile con OpenAI tramite provider_endpoint anziché il parametro provider. Vedere .

  • 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-instruct offre solide funzionalità multimodali.

  • I modelli di incorporamento sono noti anche come modelli di trasformatori.

Seleziona concetti AI

Esplora i concetti e i termini relativi a Select AI.

Informazioni sulla generazione SQL

L'uso 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 semplice, per eseguire query sul database.

Quando utilizzi 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.

Il pacchetto DBMS_CLOUD_AI in Autonomous AI Database consente l'integrazione con un LLM specificato dall'utente per generare codice SQL utilizzando prompt in 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 avere un account con il provider AI e fornire le proprie credenziali tramite gli oggetti DBMS_CLOUD_AI utilizzati dal database AI autonomo.

Utilizzare DBMS_CLOUD_AI per configurare i profili AI

Autonomous AI Database utilizza i profili AI per facilitare e configurare l'accesso a un LLM e per l'impostazione per 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 AI 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 .
    • 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.
    • AWS: per abilitare AWS, ottieni la tua 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:

      1. Registrati per un account AWS se non ne hai già uno.
      2. Creare le chiavi di accesso e le chiavi segrete da AWS Bedrock Console.
      3. Copiare le chiavi generate e salvarle.
      4. Richiedi l'accesso ai loro modelli di base. Vedere Accedi ai modelli di base di Amazon Bedrock.
      5. Ottenere l'ID modello. È necessario disporre dell'ID modello nella procedura DBMS_CLOUD_AI.CREATE_PROFILE. L'ID modello dipende dalle risorse utilizzate. Se si utilizza:

        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.

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 Procedure in Oracle Database 19c PL/SQL Packages and Types Reference oppure Oracle Database 26ai 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

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.

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.

Seleziona AI con Retrieval Augmented Generation (RAG)

Selezionare AI con RAG per aumentare il prompt del linguaggio naturale recuperando il contenuto dalla memoria di vettore specificata utilizzando la ricerca di somiglianza semantica. Ciò riduce le allucinazioni utilizzando contenuti specifici e aggiornati e fornisce risposte al linguaggio naturale più pertinenti ai prompt.

Select AI automatizza il processo di Retrieval Augmented Generation (RAG). Questa tecnica recupera i dati dalle origini aziendali utilizzando la ricerca vettoriale AI e aumenta i prompt utente per il modello linguistico di grandi dimensioni (LLM, large language model) specificato. Sfruttando le informazioni provenienti dai data store aziendali, la RAG riduce le allucinazioni e genera risposte di base.

RAG utilizza la ricerca vettoriale AI su un indice vettoriale per trovare dati semanticamente simili per la domanda specificata. La memoria di vettore elabora incorporamenti vettoriali, che sono rappresentazioni matematiche di vari datapoint come testo, immagini e audio. Queste integrazioni acquisiscono il significato dei dati, consentendo un'elaborazione e un'analisi efficienti. Per ulteriori dettagli sulle integrazioni vettoriali e sulla ricerca vettoriale AI, vedere Panoramica di AI Vector Search.

Select AI si integra con la ricerca vettoriale AI disponibile in Oracle Autonomous AI Database 26ai per la ricerca di somiglianza utilizzando integrazioni vettoriali.

Argomenti

Vantaggi di Select AI RAG

Semplifica l'esecuzione delle query, migliora l'accuratezza delle risposte con i dati attuali e ottieni trasparenza esaminando le fonti utilizzate dal LLM.

Select AI RAG offre i seguenti vantaggi:
  • Semplifica l'esecuzione di query sui dati e aumenta l'accuratezza delle risposte: consenti agli utenti di eseguire query sui dati aziendali utilizzando il linguaggio naturale e fornisci ai LLM un contesto dettagliato dai dati aziendali per generare risposte più accurate e pertinenti, riducendo le istanze di allucinazioni LLM.

  • Informazioni aggiornate: fornisci agli LLM l'accesso alle informazioni aziendali attuali utilizzando le memorie di vettore, eliminando la necessità di un'ottimizzazione costosa e dispendiosa in termini di tempo degli LLM addestrati su set di dati statici.

  • Integrazione perfetta: integra con Oracle AI Vector Search per una gestione semplificata dei dati e prestazioni migliorate.

  • Orchestrazione automatizzata dei dati: automatizza i passi di orchestrazione con una pipeline Vector Index completamente gestita, garantendo un'elaborazione efficiente dei nuovi dati.

  • Risultati contestuali comprensibili: ha accesso e recupera le fonti utilizzate dall'LLM dalle memoria di vettore, garantendo trasparenza e fiducia nei risultati. Visualizza ed estrae i dati in testo in linguaggio naturale o in formato JSON per semplificare l'integrazione e lo sviluppo delle applicazioni.

Crea il tuo Vector Store

Select AI automatizza la creazione e la popolazione della memoria di vettore convertendo i documenti di input (ad esempio PDF, DOC, JSON, XML o HTML) dall'area di memorizzazione degli oggetti in testo normale. Oracle Text supporta circa 150 tipi di file. Per un elenco completo di tutti i formati di documento supportati, vedere Formati di documento supportati.

Select AI elabora automaticamente i documenti in chunk, genera incorporamenti, li memorizza nella memoria di vettore specificata e aggiorna l'indice vettoriale all'arrivo di nuovi dati.

Di seguito viene descritto come viene utilizzato l'input dello storage degli oggetti con Select AI RAG.

  1. Input: i dati vengono inizialmente memorizzati in uno storage degli oggetti.
  2. Oracle Autonomous Database recupera i dati di input o il documento, li raggruppa e invia i chunk a un modello di incorporamento.
  3. Il modello di incorporamento elabora i dati di chunk e restituisce incorporamenti vettoriali.
  4. Le integrazioni vettoriali vengono quindi archiviate in una memoria di vettore per l'uso con RAG. Quando il contenuto viene aggiunto, l'indice vettoriale viene aggiornato automaticamente.

RAG recupera le informazioni pertinenti dal database aziendale per rispondere alla domanda di un utente. Queste informazioni vengono fornite al modello linguistico di grandi dimensioni specificato insieme al prompt utente. Select AI utilizza queste informazioni aziendali aggiuntive per migliorare il prompt, migliorando la risposta dell'LLM. RAG può migliorare la qualità delle risposte con informazioni aziendali aggiornate dalla memoria di vettore.



Selezionare AI per implementare RAG come indicato di seguito.
  1. Input: l'utente pone una domanda (specifica un prompt) utilizzando l'azione Seleziona AI narrate.

  2. La selezione AI genera incorporamenti vettoriali del prompt utilizzando il modello di incorporamento specificato nel profilo AI.

  3. L'indice di ricerca vettoriale utilizza l'incorporamento vettoriale della domanda per trovare il contenuto corrispondente dai dati aziendali del cliente (ricerca della memoria di vettore) che è stato indicizzato.

  4. La ricerca vettoriale restituisce i primi testi K simili all'input per l'istanza del database AI autonomo.
  5. Autonomous AI Database invia quindi questi risultati di query K principali con la domanda dell'utente all'LLM.
  6. LLM restituisce la propria risposta all'istanza di Autonomous AI Database.
  7. Database AI autonomo Selezionare AI per fornire la risposta all'utente.

Utilizzare DBMS_CLOUD_AI per creare e gestire indici vettoriali

Utilizzare il package DBMS_CLOUD_AI per creare e gestire gli indici vettoriali e configurare i parametri JSON del database vettoriale.

Dopo aver creato le credenziali e fornito l'accesso di rete al database vettoriale e al provider AI, l'istanza di Autonomous AI Database utilizza i profili AI per configurare l'accesso agli LLM. Vedere per un esempio completo sull'impostazione e l'utilizzo delle istruzioni Select AI.

Nota

Se non si desidera che i dati di tabella o i documenti di ricerca vettoriale vengano inviati a un LLM, un utente con privilegi di amministratore può disabilitare tale accesso per tutti gli utenti del database specificato. Questa operazione disabilita l'azione narrate per la RAG.

È possibile configurare i profili AI per i provider elencati in Seleziona provider AI e LLM tramite il package DBMS_CLOUD_AI.

Vedere anche:

  • Creare un indice vettoriale: .

  • Gestire i profili di indice vettoriale e altri profili AI:
  • Query viste indice vettore: .

Usa modelli trasformatore nel database

Select AI RAG consente di utilizzare modelli di trasformatori ONNX pre-addestrati importati nel database nell'istanza di Oracle Database 23ai per generare vettori di incorporamento da blocchi di documenti e prompt utente.

Nota

È necessario importare un modello di trasformatore pre-addestrato in formato ONNX nell'istanza di Oracle Database 23ai per utilizzare Select AI RAG con il modello di trasformatore in database importato. Puoi anche utilizzare altri modelli di trasformatori dei provider AI supportati.

Per esplorare la funzione, vedere Esempio: selezione dell'intelligenza artificiale con modelli di trasformatore nel database.

Generazione dati sintetici

Genera dati sintetici utilizzando generatori casuali, algoritmi, modelli statistici e LLM (Large Language Models) per simulare dati reali per sviluppare e testare soluzioni in modo efficace.

Nota

Il supporto per Synthetic Data Generation è disponibile in Oracle Database 19c a partire dalla versione 19.29 e in Oracle Database 26ai a partire dalla versione 23.26.

I dati sintetici possono essere uno strumento potente quando si sviluppano e si testano soluzioni, soprattutto quando i dati effettivi non esistono ancora o non possono essere utilizzati. I dati sintetici, o generati artificialmente, possono avere molte delle caratteristiche dei dati reali. I dati sintetici vengono in genere creati utilizzando generatori casuali, algoritmi o modelli statistici per simulare le caratteristiche e le distribuzioni di dati reali. Tuttavia, questo può essere complesso per produrre o fare affidamento su strumenti con caratteristiche di varia sofisticazione. Con la disponibilità di modelli linguistici di grandi dimensioni (LLM), possono essere generati dati più pertinenti e specifici dello schema che considerano le caratteristiche espresse in linguaggio naturale.

Argomenti

Vantaggi della generazione di dati sintetici

La generazione di dati sintetici consente di popolare le copie dei metadati del database, supportando progetti di sviluppo, test e machine learning senza utilizzare dati sensibili dalle tabelle originali.

Synthetic Data Generation offre i seguenti vantaggi:
  • Popolamento delle copie dei metadati con dati sintetici: una copia dei metadati replica la struttura di un database o di uno schema senza includere i dati effettivi. Select AI consente alla generazione di dati sintetici di popolare queste copie, proteggendo i dati sensibili abilitando allo stesso tempo lo sviluppo, il test e la creazione di modelli. Questo approccio supporta il test delle prestazioni e della scalabilità.

  • Avvio di nuovi progetti: quando si avvia un nuovo progetto, i dati effettivi potrebbero non essere disponibili. I dati sintetici forniscono campioni realistici per aiutare a dimostrare concetti e ottenere supporto per le proposte di progetto.

  • Convalida dell'esperienza utente: i dati sintetici aiutano a testare le interfacce utente fornendo set di dati diversi per scoprire difetti di progettazione, prestazioni e problemi di scalabilità.

  • Supporto di progetti di intelligenza artificiale e machine learning: i dati sintetici sono utili per addestrare i modelli di intelligenza artificiale e machine learning quando i dati reali non sono disponibili o sono limitati. Gli LLM possono generare dati con pattern specifici per facilitare l'addestramento e il punteggio dei modelli.

Genera dati sintetici

Utilizzare la funzione DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA per generare dati sintetici ed eseguire query sui dati utilizzando le azioni Seleziona AI.

Monitoraggio e risoluzione dei problemi della generazione di dati sintetici

Quando si generano grandi quantità di dati in molte tabelle, Select AI suddivide i task di generazione dei dati sintetici in chunk più piccoli ed esegue i task in parallelo. Lo stato di ogni chunk viene tracciato nella tabella SYNTHETIC_DATA$<operation_id>_STATUS.

Le operazioni di generazione dei dati sintetici vengono registrate nelle tabelle DBA_LOAD_OPERATIONS e USER_LOAD_OPERATIONS. Utilizzare queste tabelle per monitorare l'operazione DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA. Per ulteriori dettagli, vedere Traccia operazioni di caricamento DBMS_CLOUD.

Dopo aver eseguito la generazione di dati sintetici in una determinata sessione, è possibile ottenere la versione più recente di <operation_id> da USER_LOAD_OPERATION utilizzando quanto riportato di seguito.
SELECT max(id) FROM user_load_operations;

Per visualizzare le operazioni dei dati sintetici in esecuzione in una sessione diversa, utilizzare la vista DBA_LOAD_OPERATIONS.

Visualizza stato generazione dati sintetici

La tabella di stato dell'operazione di generazione dei dati sintetici mostra l'avanzamento di ogni tabella e il relativo chunk corrispondente. La colonna STATUS_TABLE in USER_LOAD_OPERATIONS o DBA_LOAD_OPERATIONS mostra il nome della tabella di stato. Il nome della tabella è SYNTHETIC_DATA$<operation_id>_STATUS e contiene le colonne seguenti:

Nome Tipo di dati Descrizione

ID

NUMBER

Identificativo univoco del record.

NAME

VARCHAR2

Nome qualificato della tabella, ad esempio "ADB_USER"."EMPLOYEES"

BYTES

NUMBER

Numero di record desiderato per questo task di generazione dati

ROWS_LOADED

NUMBER

Numero effettivo di record generati.

CHECKSUM

VARCHAR2

Valore iniziale per la chiave primaria durante questo task di generazione dati.

LAST_MODIFIED

TIMESTAMP WITH TIME ZONE

Indicatore orario che indica l'ultima modifica del record.

STATUS

VARCHAR2

Stato del task di generazione dati. I valori validi sono:
  • COMPLETED
  • FAILED
  • PENDING
  • SKIPPED

ERROR_CODE

NUMBER

Codice di errore, se il task di generazione dati non riesce.

ERROR_MESSAGE

VARCHAR2

Messaggio di errore fornito se il task non riesce.

END_TIME

TIMESTAMP WITH TIME ZONE

Indicatore orario che contrassegna la fine del task di generazione dati.
Esempio: controllo del numero di record generati per ogni tabella

Per controllare il numero di record generati per ogni tabella, effettuare le operazioni riportate di seguito.

SELECT name, SUM(rows_loaded) FROM synthetic_data$<operation_id>_status group by name;

Eseguire una query ROWS_LOADED per confermare il numero di righe caricate per ogni chunk e SUM(ROWS_LOADED) per le righe per ogni tabella.

BEGIN
    DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
        profile_name => 'GENAI',
        object_list => '[{"owner": "ADB_USER", "name": "DIRECTOR","record_count":150},
                         {"owner": "ADB_USER", "name": "MOVIE_ACTOR","record_count":300},
                         {"owner": "ADB_USER", "name": "CLASSES", "user_prompt":"all in fall semester","record_count":5},
                         {"owner": "ADB_USER", "name": "ACTOR","record_count":220},
                         {"owner": "ADB_USER", "name": "MOVIE","record_count":50}]'
    );
END;
/
 
 
-- Check loaded rows for each chunk
SQL> SELECT name, rows_loaded FROM synthetic_data$141_status order by name;
NAME                           ROWS_LOADED
------------------------------------------
"ADB_USER"."ACTOR"                        188
"ADB_USER"."ACTOR"                         32
"ADB_USER"."CLASSES"                        5
"ADB_USER"."DIRECTOR"                     150
"ADB_USER"."MOVIE"                         50
"ADB_USER"."MOVIE_ACTOR"                   38
"ADB_USER"."MOVIE_ACTOR"                  114
"ADB_USER"."MOVIE_ACTOR"                  148
 
 
 
-- Check loaded rows for each table
SQL> SELECT name, SUM(rows_loaded) FROM synthetic_data$141_status group by name;
 
NAME                      SUM(ROWS_LOADED)
------------------------------------------
"ADB_USER"."DIRECTOR"                     150
"ADB_USER"."MOVIE_ACTOR"                  300
"ADB_USER"."CLASSES"                        5
"ADB_USER"."ACTOR"                        220
"ADB_USER"."MOVIE"                         50