Introduzione al concetto di assistente RAG su OCI

Le squadre di supporto spesso possiedono le risposte nei manuali di prodotto, nelle runbook, nelle policy e negli articoli di knowledge base. Il problema principale è trovare rapidamente il passaggio corretto e utilizzarlo per formulare una risposta chiara e contestualizzata.

Questo articolo mostra come costruire un assistente basato su Retrieval‑Augmented Generation (RAG) sfruttando OCI Generative AI Agents. L’assistente recupera informazioni da documenti archiviati in OCI Object Storage prima di generare la risposta, garantendo che le risposte siano ancorate al contenuto interno dell’organizzazione anziché al solo know‑how generale del modello.

Al termine della guida avrai a disposizione:

    • Una compartizione dedicata con tutte le risorse OCI necessarie.
    • Documenti sorgente caricati in Object Storage.
    • Una knowledge base popolata con i contenuti indicizzati.
    • Un agente configurato con uno strumento RAG.
    • Un endpoint che restituisce risposte corredate da citazioni.

Architettura della soluzione

L’architettura separa l’ingestione dei documenti dal processo di query in tempo reale.

Flusso di ingestione

1. I proprietari dei contenuti caricano i file su Object Storage.

2. Un data source identifica gli oggetti del bucket o i prefissi selezionati.

3. Un job di ingestione elabora i documenti e memorizza le informazioni pronte per il recupero nella knowledge base.

Flusso di query

1. Un client invia un prompt all’endpoint dell’agente.

2. Il modello di routing (LLM) seleziona lo strumento RAG.

3. Lo strumento recupera i passaggi rilevanti dalla knowledge base.

4. Il modello di generazione produce la risposta finale.

Architettura OCI RAG

Figura 1: Architettura RAG gestita con OCI Object Storage e OCI Generative AI Agents.

Object Storage rimane la fonte di verità. Il job di ingestione trasforma i contenuti selezionati in informazioni indicizzabili e le inserisce nella knowledge base gestita. In fase di runtime, l’agente interroga la knowledge base per estrarre i passaggi pertinenti prima di generare la risposta.

Tutte le risorse sono create all’interno di una tenancy OCI e assegnate a compartimenti per controllare gli accessi, la proprietà e il tracciamento dei costi.

Configurazione dell’infrastruttura OCI

Per semplicità, utilizziamo un compartimento dedicato chiamato genai-rag. Bucket, knowledge base, data source, job di ingestione, agente, strumento RAG ed endpoint verranno creati all’interno di questo compartimento. Un unico compartimento semplifica IAM e il troubleshooting nella fase iniziale.

Elemento OCIEsempioScopo
TenancyLa tua tenancy OCI esistenteAccount di livello superiore e confine IAM
RegionUna regione che supporta Generative AI AgentsPosizione geografica dei servizi
Compartmentgenai-ragConfine di accesso e proprietà per la soluzione
Object Storage bucketgenai-rag-sourceArchivio privato per i documenti sorgente
Object prefixknowledge/Percorso opzionale per raggruppare i documenti selezionati

1. Verifica tenancy, regione e compartimento

Accedi alla Console OCI e assicurati di operare nella tenancy corretta. Usa il selettore di regione nella barra superiore per scegliere una regione elencata in Regions with Generative AI Agents. Object Storage e Generative AI Agents sono servizi regionali, quindi tutte le risorse devono essere create nella stessa regione.

Per creare il compartimento:

    • Apri Identity & Security e seleziona Compartments.
    • Scegli il compartimento padre (di solito la root tenancy, salvo diversa architettura).
    • Fai clic su Create Compartment.
    • Inserisci genai-rag come nome, aggiungi una descrizione chiara e applica eventuali tag di costo o proprietà.
    • Copia l’OCID del compartimento, necessario per limitare il dynamic group di ingestione.

In ambienti di produzione è consigliabile separare le risorse in compartimenti figli, ad esempio genai-rag-data per i dati e genai-rag-service per i servizi. In tal caso, le politiche IAM devono concedere accesso a Object Storage nel compartimento dati e a Generative AI Agents in quello dei servizi.

Checkpoint: La console è impostata su una regione supportata e il compartimento di destinazione esiste nella tenancy corretta.

2. Configurazione degli accessi IAM

Chiedi a un amministratore di tenancy di creare (o riutilizzare) un gruppo IAM per chi costruirà e gestirà la soluzione. L’amministratore deve definire le policy nella root tenancy o in un compartimento padre che possa concedere i permessi a genai-rag.

Esempio di dichiarazioni di policy a livello di compartimento, da adattare con i nomi reali di gruppo e compartimento:

allow group <group-name> to manage genai-agent-family in compartment genai-rag

allow group <group-name> to manage object-family in compartment genai-rag

La prima riga consente al gruppo di gestire agenti, knowledge base, data source, job di ingestione, strumenti, sessioni, work request ed endpoint. La seconda permette al gruppo di creare il bucket e selezionare gli oggetti durante la configurazione del data source.

Per i job di ingestione a lunga durata, crea un dynamic group per il principal della risorsa di ingestione:

ALL {resource.type = 'genaiagentdataingestionjob', resource.compartment.id = '<genai-rag-compartment-ocid>'}

Concedi al dynamic group il permesso di lettura sugli oggetti:

allow dynamic-group <ingestion-dynamic-group-name> to read objects in compartment genai-rag

Se il bucket risiede in un compartimento diverso, modifica l’ultima istruzione di conseguenza. Gli utenti che configurano il data source devono anch’essi avere accesso a Object Storage nel compartimento del bucket.

I modelli di routing e generazione predefiniti non richiedono policy aggiuntive. Se scegli un modello OCI Generative AI on‑demand o un endpoint dedicato, aggiungi la policy descritta in Getting Access to Generative AI Agents. Rivedi gli esempi con il team di sicurezza e riduci i permessi per i ruoli di produzione.

Checkpoint: Gli sviluppatori possono creare risorse Generative AI Agents e navigare nel bucket, mentre i job di ingestione possono leggere i documenti sorgente.

3. Creazione del bucket Object Storage e caricamento dei documenti

Apri Storage, seleziona Object Storage & Archive Storage e poi Buckets. Imposta lo scope della lista su genai-rag e clicca su Create bucket**.

Usa un nome esplicito, ad esempio genai-rag-source. Scegli lo storage tier Standard così i file sono immediatamente disponibili per l’ingestione. Mantieni il bucket privato e utilizza la crittografia gestita da Oracle, a meno che non sia richiesto un key management personalizzato. È consigliabile abilitare il versionamento per tracciare le modifiche ai documenti.

Carica nella bucket tutti i file di riferimento: guide prodotto, runbook, policy, articoli di knowledge base, PDF, file di testo, ecc. Se desideri organizzare i contenuti, usa un prefisso come knowledge/ (es. knowledge/guide-prodotti.pdf).

Creazione e configurazione della knowledge base

Una volta che i documenti sono disponibili, è necessario crearne una knowledge base gestita da OCI Generative AI.

Passo 1 – Creare la knowledge base

    • Nel menu della console, vai su Generative AI > Agents & Knowledge Bases.
    • Seleziona Create Knowledge Base.
    • Inserisci un nome (es. genai-rag-kb) e scegli il compartimento genai-rag.
    • Conferma la creazione.

Passo 2 – Definire il data source

Il data source indica dove il job di ingestione deve leggere i documenti.

    • All’interno della knowledge base, scegli Data Sources e clicca su Create Data Source.
    • Seleziona OCI Object Storage come tipo.
    • Specifica il bucket genai-rag-source e, se usi un prefisso, inserisci knowledge/.
    • Salva.

Passo 3 – Avviare il job di ingestione

    • Nel menu della knowledge base, vai su Ingestion Jobs e scegli Create Ingestion Job.
    • Associa il job al data source creato al punto precedente.
    • Configura le impostazioni di chunking (dimensione dei blocchi di testo) e di metadata extraction secondo le esigenze (es. estrazione di titoli, date, tag).
    • Avvia il job.

Il servizio analizza i documenti, ne estrae i contenuti testuali, li segmenta in chunk recuperabili e li indicizza nella knowledge base. Al termine, la console mostrerà il numero di chunk creati e il tempo di elaborazione.

Configurazione dell’agente con lo strumento RAG

Ora che la knowledge base è popolata, è possibile creare l’agente che utilizzerà lo strumento RAG per rispondere alle query.

Creazione dell’agente

    • Nel menu Generative AI, seleziona Agents e clicca su Create Agent.
    • Inserisci un nome (es. genai-rag-agent) e scegli il compartimento genai-rag.
    • Nel campo Routing Model lascia il modello predefinito (ad es. cohere‑command‑r‑v1.0) o scegli un modello più adatto alle tue esigenze.
    • Salva.

Aggiunta dello strumento RAG

    • Apri l’agente appena creato e vai su Tools.
    • Clicca su Add Tool e seleziona Retrieval‑Augmented Generation.
    • Associa lo strumento alla knowledge base genai-rag-kb creata in precedenza.
    • Configura le impostazioni di retrieval, ad esempio il numero massimo di chunk restituiti (es. 5) e la soglia di similarità.
    • Salva.

Creazione dell’endpoint

L’endpoint espone l’agente tramite API REST, consentendo a client esterni di inviare prompt.

    • All’interno dell’agente, scegli Endpoints e clicca su Create Endpoint.
    • Assegna un nome (es. genai-rag-endpoint) e seleziona il modello di generazione (ad es. cohere‑command‑r‑v1.0).
    • Abilita la modalità Streaming se desideri ricevere risposte parziali in tempo reale.
    • Salva. Verrà mostrato l’URL dell’endpoint e le credenziali di autenticazione (API key).

Utilizzo dell’assistente RAG

Con l’infrastruttura pronta, è possibile testare l’assistente tramite chiamate HTTP.

Esempio di richiesta

POST https://generativeai..oraclecloud.com/20231101/agents/<agent-ocid>/endpoints/<endpoint-ocid>/invoke

Authorization: Bearer <api-key>

Content-Type: application/json

{

"prompt": "Qual è la procedura per aggiornare il firmware del router modello X200?",

"temperature": 0.2,

"maxTokens": 500

}

La risposta includerà i passaggi estratti dalla knowledge base, con citazioni che indicano il documento e il chunk di origine, ad esempio:

Per aggiornare il firmware del router X200:

1. Accedere all’interfaccia web (vedi documento "RouterX200Guide.pdf", sezione 3.2).

2. Caricare il file firmware.bin (vedi documento "FirmwareRelease2026.pdf", pagina 5).

...

[CITATION: RouterX200Guide.pdf - chunk 12]

Le citazioni permettono al team di supporto di verificare rapidamente la fonte e di fornire riferimenti ufficiali al cliente.

Considerazioni operative e di sicurezza

Gestione dei costi: Monitora l’utilizzo di Object Storage, dei job di ingestione e dei modelli LLM tramite il servizio Cost Analysis. Imposta budget e avvisi per evitare sorprese.

Scalabilità: Gli agenti e i job di ingestione sono servizi gestiti; possono scalare automaticamente in base al carico. Per picchi di query, valuta l’uso di endpoint dedicati con capacità di throughput più alta.

Sicurezza dei dati: Mantieni il bucket privato e utilizza la crittografia a chiave gestita da Oracle o una chiave customer‑managed (CMK) se richiesto da policy aziendali. Configura le policy IAM con il principio del minimo privilegio.

Versionamento dei documenti: Abilita il versionamento del bucket per tenere traccia delle modifiche ai manuali e alle policy. Quando una nuova versione viene caricata, riavvia il job di ingestione per aggiornare la knowledge base.

Manutenzione della knowledge base: Periodicamente esegui un “re‑index” per rimuovere i chunk obsoleti e ottimizzare le performance di retrieval. Puoi anche aggiungere metadati (tag, categorie) per migliorare la precisione delle risposte.

Conclusioni

Costruire un assistente RAG su OCI con Generative AI Agents consente di combinare la potenza dei modelli di linguaggio con la conoscenza proprietaria dell’organizzazione. Seguendo i passaggi descritti – dalla creazione del compartimento, alla configurazione IAM, al caricamento dei documenti, all’ingestione