Linee guida di Oracle Database Tool RAG per gli agenti di intelligenza artificiale generativa

Puoi trasferire le tue incorporazioni vettoriali (BYO) da un Oracle Database versione 23ai agli agenti dell'AI generativa OCI.

Per rendere i dati nello storage degli oggetti disponibili per gli agenti di intelligenza artificiale generativa, vedere Requisiti di dati per lo storage degli oggetti. Per rendere disponibile la ricerca OCI incorporata e indicizzata BYO con dati OpenSearch da utilizzare per gli agenti, vedere RAG Tool OCI Search with OpenSearch Guidelines for Generative AI Agents.

In questo argomento vengono descritte le informazioni di supporto, i task dei prerequisiti e le linee guida per l'utilizzo di Oracle Database 23ai come opzione dati per gli agenti di intelligenza artificiale generativa. Le informazioni fornite presuppongono che l'utente conosca le reti cloud virtuali (VCN) e le subnet, Oracle Database 23ai e il servizio Strumenti di database.

Passo 1. Rivedi informazioni supporto database

Prima di utilizzare un'area di memorizzazione vettoriale di Oracle Database versione 23ai come opzione dati per gli agenti di intelligenza artificiale generativa, assicurati di comprendere cosa è supportato e completare le attività richieste.

Tipi di database

Gli agenti AI generativi supportano gli incorporamenti vettoriali BYO da:

  • Oracle Base Database 23ai: il database può essere configurato su una rete privata. Vedere Creare un sistema DB.

  • Oracle Autonomous Database 23ai dei seguenti tipi di accesso alla rete:

    • Solo accesso all'endpoint privato: l'autenticazione TLS reciproca (mTLS) può essere abilitata per autenticare le connessioni al database. Selezionare la casella di controllo Richiedi autenticazione TLS reciproca (mTLS) per abilitare l'autenticazione mTLS.

    • Accesso sicuro ovunque: l'autenticazione mTLS è abilitata per impostazione predefinita ed è necessaria.

    Vedere Crea un'istanza di Autonomous Database.

Autonomous Database abilitati per l'autenticazione mTLS

Se l'Autonomous Database è abilitato per l'autenticazione mTLS, è necessario scaricare il wallet, creare una password per il wallet ed estrarre un file dal wallet. Fare riferimento alla sezione Requisiti di sicurezza wallet nel passo 3. Configurare i requisiti di rete e sicurezza.

Supporto di database tra più aree e cross-tenancy

Il supporto per database tra più aree e più tenancy è disponibile solo per Oracle Database 23ai con accesso di rete privata. Sono inclusi Oracle Base Database e Oracle Autonomous Database configurati dal tipo di accesso alla rete Solo accesso agli endpoint privati. Gli Autonomous database con accesso pubblico non sono supportati.

Quando si utilizzano gli agenti AI generativi in un'area ospitata, è possibile connettersi a un database di accesso privato che risiede in:
  • Un'altra area all'interno della stessa tenancy. Per abilitare la connettività, creare una connessione agli strumenti di database nell'area in cui è disponibile il servizio agente.
  • Altra tenancy. Abilitare la connettività creando una connessione agli strumenti del database nella tenancy in cui è disponibile il servizio agente.

Per impostare le impostazioni di rete, vedere Requisiti di rete (database cross-region e cross-tenancy) al Passo 3. Configurare i requisiti di rete e sicurezza.

Per creare una connessione, immettere manualmente la stringa di connessione come descritto al Passo 5. Creare connessioni agli strumenti di database.

Passo 2. Aggiungi gruppo dinamico e criteri

Oltre a fornire agli utenti l'accesso a tutte le risorse degli agenti AI generativi, come descritto in Aggiunta di criteri prima di poter utilizzare il servizio, è necessario creare un gruppo dinamico con accesso AI segreti del vault e agli strumenti di database.

  1. Creare un gruppo dinamico e aggiungere la regola di corrispondenza seguente.

    ALL {resource.type='genaiagent'}

    Per ulteriori informazioni, vedere Creazione di un gruppo dinamico.

  2. Consente di concedere le autorizzazioni al gruppo dinamico.

    • Scrivere i criteri riportati di seguito, che possono essere utilizzati con il dominio di Identity predefinito.

      allow dynamic-group <dynamic-group-name> 
      to read database-tools-family in compartment <compartment-name>
      
      allow dynamic-group <dynamic-group-name> 
      to read secret-bundle in compartment <compartment-name>
      
    • Utilizzare i criteri seguenti con un dominio di Identity non predefinito, fornendo il nome del dominio Oracle Identity Cloud Service (IDCS) e il nome del gruppo dinamico:

      allow dynamic-group '<idcs-domain-name>/<dynamic-group-name>' 
      to read database-tools-family in compartment <compartment-name>
      
      allow dynamic-group '<idcs-domain-name>/<dynamic-group-name>' 
      to read secret-bundle in compartment <compartment-name>
      
Suggerimento

Se la connessione agli strumenti di database non è accessibile dopo la scrittura dei criteri precedenti, potrebbe verificarsi un problema con il token di sessione del principal risorsa. Provare a utilizzare le impostazioni dei criteri riportate di seguito senza fare affidamento sui gruppi dinamici.

allow any-user to read database-tools-family in compartment <compartment-name> where any {request.principal.type='genaiagent'}

allow any-user to read secret-bundle in compartment <compartment-name> where any {request.principal.type='genaiagent'}
Passo 3. Configurare i requisiti di rete e di sicurezza

Eseguire questi task se non sono già state configurate o create le risorse necessarie.

Requisiti di rete
  • Aggiungere il database alla subnet privata di una VCN.
  • Impostare le proprietà riportate di seguito per la regola di entrata della subnet.
    • Tipo di origine: CIDR
    • Source CIDR: The VCN's IPv4 CIDR Block (such as 10.0.0.0/16)
    • Protocollo IP: TCP
    • Intervallo porte di origine: tutto
    • Intervallo di porte di destinazione: 1521-1522
Requisiti di rete (database cross-region e cross-tenancy)

I seguenti requisiti sono applicabili solo a Oracle Database 23ai con accesso alla rete privata. Sono inclusi Oracle Base Database e Oracle Autonomous Database configurati dal tipo di accesso alla rete Solo accesso agli endpoint privati. Gli Autonomous database con accesso pubblico non sono supportati.

Impostazioni di rete

  • Impostare due VCN con CIDR non sovrapposti. Per configurare le impostazioni di rete, vedere Peering VCN remoto.
  • Nella VCN del database, assicurarsi di aggiungere la regola di entrata per il CIDR della VCN della connessione agli strumenti di database per accedere alle porte del database 1521-1522.

Esempio di database tra più aree: è possibile connettersi a un database che si trova in un'area diversa da quella in cui è in esecuzione il servizio Agenti AI generativi. Ad esempio:

  • Il servizio agente è in esecuzione nella tenancy A nell'area ORD.

  • Oracle Base Database o Oracle Autonomous Database con accesso alla rete privata viene distribuito nell'area PHX.

  • Per accedere al database privato, configurare i gateway di instradamento dinamico (DRG) in entrambe le aree e impostare una connessione agli strumenti di database in ORD per connettersi al database in PHX.

Esempio di database cross-tenancy: è possibile connettersi a un database che si trova in una tenancy diversa dal servizio Generative AI Agents. Ad esempio:

  • Il servizio agente è in esecuzione nella tenancy A nell'area ORD.

  • Oracle Base Database o Oracle Autonomous Database con accesso alla rete privata viene distribuito nella tenancy B nell'area PHX.

  • Per accedere al database privato, configurare i gateway di instradamento dinamico (DRG) in entrambe le tenancy e impostare una connessione agli strumenti di database nella tenancy A (area ORD) per connettersi al database nella tenancy B (area PHX).

La configurazione di networking cross-tenancy si applica indipendentemente dal fatto che il servizio di database e il servizio agente si trovino nella stessa area o in aree diverse.

Requisiti di sicurezza vault

È necessario un vault in OCI Vault per memorizzare i segreti per il database, ad esempio la password per il database.

Creare il vault nello stesso compartimento della connessione agli strumenti del database. Ciò si applica AI database nella stessa area del servizio Agenti AI generativa e AI database cross-region o cross-tenancy.

  1. Creare un vault.
  2. Creare la chiave di cifratura primaria.
  3. Nel vault, creare un segreto per la password del database.
Requisiti di sicurezza wallet

Se il database autonomo è abilitato per l'autenticazione mTLS, eseguire i task riportati di seguito.

  1. Scaricare il wallet e creare una password per il wallet. Vedere Scarica credenziali client (wallet).
  2. Dal file zip del wallet scaricato, estrarre il file ewallet.p12 e accantonarlo. Per creare la connessione agli strumenti di database, è necessario il wallet PKCS#12.
Passo 4. Impostazione di una tabella di database e di una funzione

Nel database creato per l'uso con gli agenti di intelligenza artificiale generativa, creare una tabella di database con determinati campi obbligatori e impostare una funzione di database che restituisca i risultati della ricerca vettoriale dalle query.

Tabella di database
Creare una tabella Oracle Database 23ai con i campi riportati di seguito.

Campi obbligatori

  • DOCID: un ID assegnato a ogni record o documento
  • BODY: il contenuto effettivo che si desidera venga cercato dall'agente
  • VECTOR: il vettore generato da un modello di incorporamento basato sul contenuto body

Campi facoltativi

  • CHUNKID: un ID per il documento in chunk, nel caso in cui il documento sia più grande di 512 token.
  • URL: un riferimento URL per il contenuto, se disponibile.
  • TITLE: il titolo del contenuto body
  • PAGE_NUMBERS: i numeri di pagina per il contenuto, se disponibili.
Suggerimento

È possibile creare incorporazioni di testo nell'AI generativa OCI.
Funzione di database

Una funzione è un sottoprogramma che accetta parametri e restituisce un valore. È necessario impostare una funzione di database in grado di restituire risultati di ricerca vettoriali da ogni query. Ecco i requisiti:

Parametri di input

  • p_query: la stringa di query
  • top_k: numero di risultati principali

Tipo restituito

  • SYS_REFCURSOR

Requisiti

  • Il modello di incorporamento utilizzato per il campo di interrogazione della funzione deve essere lo stesso del modello di incorporamento che trasforma il contenuto BODY della tabella in incorporamenti vettoriali.

  • I campi restituiti della funzione devono corrispondere ai campi obbligatori della tabella (DOCID, BODY e SCORE) e facoltativi (CHUNKID, TITLE e URL).

    Il contenuto BODY viene elaborato da un modello di incorporamento per produrre un VECTOR per ogni contenuto. La funzione calcola le distanze tra il vettore di query e ogni VECTOR, restituendo le righe top_k. Il campo SCORE rappresenta le distanze tra il vettore di query e il valore VECTOR dal valore BODY.

  • Se i nomi dei campi restituiti della funzione non corrispondono ai nomi dei campi tabella, è necessario utilizzare gli alias nella funzione.

Esempio

Di seguito è riportato un esempio di funzione di database.

create or replace FUNCTION RETRIEVAL_FUNC (p_query IN VARCHAR2,top_k IN NUMBER) RETURN SYS_REFCURSOR IS
    v_results SYS_REFCURSOR;
    query_vec VECTOR;
BEGIN
    query_vec := dbms_vector.utl_to_embedding(
        p_query,
        json('{
            "provider": "OCIGenAI",
            "credential_name": "OCI_VECTOR_CREDENTIAL",
            "url": "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/embedText",
            "model": "cohere.embed-english-v3.0"
        }')
    );

    OPEN v_results FOR
        select l.id as DOCID, lv.chunk_id as CHUNKID, l.file_name as TITLE, 
        'https://objectstorage.us-chicago-1.oraclecloud.com/n/{namespace}/b/{bucket_name}/o/' || l.file_name as URL,
        lv.chunk_txt as BODY, vector_distance(embed_vector, query_vec) AS SCORE
        from legislation_vector lv, legislation l
        where l.id = lv.id
        order by SCORE 
        fetch first top_k rows only;

    RETURN v_results;
END;
Passo 5. Crea connessioni agli strumenti di database

È possibile creare connessioni riutilizzabili a un database Oracle in OCI utilizzando il servizio Strumenti di database.

Seguire queste linee guida per creare una connessione per il database.

Linee guida per la connessione a Oracle Base Database 23ai

Gli agenti AI generativi possono accedere a Oracle Base Database 23ai tramite un endpoint privato. Eseguire questi task per stabilire la connessione al database.

  1. Ottieni le seguenti informazioni:

    Nella console, aprire il menu di navigazione e selezionare Oracle Database, quindi selezionare Oracle Base Database Service. Selezionare il nome del sistema di database, quindi selezionarlo. Copiare le seguenti proprietà da utilizzare per le informazioni di connessione nel passo successivo:

    • Sistema di database
    • Database
    • Home database
    • Sul lato sinistro, selezionare Database collegabili e selezionare il nome del pluggable database. Selezionare Connessione al PDB e copiare la stringa di connessione con il formato Lungo.

      Esempio di stringa di connessione con un formato lungo:

      (DESCRIPTION=(CONNECT_TIMEOUT=5)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=3)
      (ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=10.0.0.62)(PORT=1521)))
      (CONNECT_DATA=(SERVICE_NAME=xxx_pdb1.xxx.dbsvcn.oraclevcn.com)))
  2. In Strumenti database, creare una connessione utilizzando una delle seguenti opzioni:

    • Utilizzare l'opzione Seleziona database per selezionare un database.
      1. Selezionare Oracle Base Database.
      2. Selezionare il sistema di database, la home del database e il database.
      3. Selezionare il pluggable database.
    • Utilizzare l'opzione Immetti informazioni sul database per un database tra più aree o tra più tenancy e immettere manualmente le informazioni di connessione. Per Tipo di connessione, selezionare Oracle Database.
  3. Completare le altre informazioni con le seguenti proprietà:

    • Immettere il nome utente e selezionare il ruolo per l'utente.

      Assicurarsi che l'utente del database disponga delle autorizzazioni necessarie per eseguire la funzione di database preparata al Passo 4. Impostare una tabella di database e una funzione e viene assegnato un ruolo appropriato. Ad esempio, per l'utente SYS, assegnare il ruolo SYSDBA.

    • Per Segreto password utente, selezionare il segreto se è già stato creato. In caso contrario, selezionare Crea segreto password e creare un segreto per memorizzare la password nel vault creato.
    • Per la stringa di connessione, incollare il formato lungo per il pluggable database copiato nel passo 1 di questa procedura.

      Per un database cross-region o cross-tenancy, immettere la stringa di connessione.

    • Selezionare la casella di controllo Accedi al database tramite una rete privata.
    • Per endpoint privato, effettuare una delle operazioni riportate di seguito.
      • Fare clic su Seleziona endpoint privato e selezionare l'endpoint.
      • Selezionare Crea endpoint privato e creare l'endpoint. Per Subnet, selezionare la subnet privata del database. Assicurarsi di creare l'endpoint privato utilizzando la stessa VCN e la stessa subnet del database.
    • Per Formato wallet, selezionare None per creare una connessione senza autenticazione TLS (mTLS) reciproca.
Linee guida per la connessione Autonomous Database 23ai

Gli agenti AI generativi possono accedere a un Autonomous Database 23ai tramite un endpoint privato con una connessione impostata per l'autenticazione TLS reciproca (mTLS). Eseguire questi task per stabilire una connessione al database.

  1. Ottieni le seguenti informazioni:

    Nella console, aprire il menu di navigazione . Selezionare Oracle Database, quindi selezionare Autonomous Database. Selezionare il database. Nella pagina dei dettagli del database, copiare le seguenti proprietà da utilizzare per le informazioni di connessione nel passo successivo:

    • Nome database
    • (Solo per l'accesso di rete all'endpoint privato) Nella sezione Rete:
      • IP dell'endpoint privato
      • URL endpoint privato
    • Selezionare Connessione al database ed effettuare le operazioni riportate di seguito.
      • Nella lista dei nomi TNS, trovare il nome TNS che termina con _high e copiarne la stringa di connessione.
      • Solo per un database che richiede l'autenticazione MTLS (Mutual TLS): scaricare il wallet. Fare riferimento alla sezione Requisiti di sicurezza wallet nel passo 3. Configurare i requisiti di rete e sicurezza.
  2. In Strumenti database, creare una connessione utilizzando una delle seguenti opzioni:

    • Utilizzare l'opzione Seleziona database per selezionare un database.
      1. Selezionare Oracle Autonomous Database.
      2. Selezionare il database.
    • Utilizzare l'opzione Immetti informazioni sul database per un database tra più aree o tra più tenancy e immettere manualmente la stringa di connessione. Per Tipo di connessione, selezionare Oracle Database.
  3. Completare le altre informazioni con le seguenti proprietà:

    • Per Nome utente, immettere l'utente che dispone delle autorizzazioni necessarie e può eseguire la funzione di database preparata nel Passo 4. Impostare una tabella di database e una funzione.
    • Per Segreto password utente, selezionare il segreto se è già stato creato. In caso contrario, selezionare Crea segreto password e creare un segreto per memorizzare la password nel vault creato.
    • Per la stringa di connessione, incollare la stringa di connessione che termina con _high, ovvero la stringa copiata dalla sezione Connessione al database della pagina dei dettagli del database.
      Quindi, a seconda del tipo di database, aggiornare la stringa come indicato di seguito.
      • Database di accesso privato: ridurre retry_count da 20 a 3 e sostituire l'URL dell'endpoint privato host con l'indirizzo IP dell'endpoint privato.

        Esempio di stringa di connessione:

        (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)
        (host=<private-endpoint-URL>)(connect_data=(service_name=xxx_high.adb.oraclecloud.com))
        (security=(ssl_server_dn_match=no)))

        Esempio di stringa di connessione aggiornata:

        (description= (retry_count=3)(retry_delay=3)(address=(protocol=tcps)(port=1522)
        (host=<private-endpoint-IP>)(connect_data=(service_name=xxx_high.adb.oraclecloud.com))
        (security=(ssl_server_dn_match=no)))

      • Database di accesso pubblico: Ridurre retry_count da 20 a 3.

        Esempio di stringa di connessione aggiornata:

        (description= (retry_count=3)(retry_delay=3)(address=(protocol=tcps)(port=1522)
        (host=<name>)(connect_data=(service_name=xxx_high.adb.oraclecloud.com))
        (security=(ssl_server_dn_match=yes)))
    • Per endpoint privato:
      • Per i database di accesso pubblico, non è necessario configurare un endpoint privato.
      • Per Solo accesso a endpoint privato, selezionare la casella di controllo Accedi al database tramite una rete privata. Selezionare quindi l'endpoint privato o selezionare Crea endpoint privato per creare un endpoint, assicurandosi di utilizzare la stessa VCN e la stessa subnet privata del database.
    • Per Formato wallet:
      • Per un database non abilitato per l'autenticazione mTLS, selezionare None.
      • Per un database abilitato per l'autenticazione mTLS, selezionare PKCS#12 wallet(e.g., ewallet.p12). Creare quindi il segreto del contenuto del wallet e il segreto della password del wallet oppure selezionarli se i segreti sono già stati creati.