Il sistema agentic RAG rappresenta un miglioramento significativo rispetto al RAG tradizionale sfruttando sistemi autonomi integrati con modelli LLM e meccanismi di recupero. Questo permette di prendere decisioni autonome, adattarsi a esigenze mutevoli e svolgere compiti complessi. Nel tutorial seguente, imparerai i principi fondamentali del agentic RAG utilizzando i modelli open-source NVIDIA Nemotron, e costruirai un sistema personalizzato.
Comprendere l’architettura RAG
Il ReAct Agent introduce un'architettura dinamica per il RAG. Quest’agente opera in modo iterativo: ragiona e richiama strumenti definiti dall'utente, generando risposte di alta qualità. L'architettura ReAct si basa su modelli LLM in grado di chiamare strumenti in risposta a una richiesta. Ogni volta che i modelli chiedono l’esecuzione di uno strumento, viene eseguito, aggiunto alla cronologia delle chat e rimandato al modello per ulteriori invocazioni.
Il RAG tradizionale si limita a richiamare informazioni esterne basate su input. L’approccio agentic RAG, invece, va oltre: combina le forze principali della comprensione linguistica e la risoluzione di problemi contestuali dei modelli LLM con strumenti dinamici di strumentazione avanzata, come ricerca semantica, ricerca ibrida, riordinamento dei documenti e scelta delle fonti dei dati. L'obiettivo è fornire un sistema che possa adattarsi a richieste complesse.
Inizio del Workshop
Per iniziare il workshop, segui i passaggi seguenti:
- Lancia il workshop tramite NVIDIA Launchable, cliccando il tasto "Deploy Now" per configurare l'ambiente in cloud.
- Apri l’ambiente Jupyter Lab e vai alla sezione NVIDIA DevX Learning Path.
- Cerca la tile Agentic RAG per ottenere le istruzioni del laboratorio.
Per poter seguire il laboratorio, configura alcune informazioni importanti:
- NGC API Key: consente l’accesso a modelli e container NVIDIA.
- LangSmith API Key (opzionale): per collegare il workshop al sistema di tracciamento e debug LangChain.
Introduzione alla Pipeline RAG
L’architettura agente RAG si basa su diversi passaggi, ognuno con funzioni critiche:
- Prompt: l’utente genera una domanda in linguaggio naturale.
- Modello di Embedding: il prompt viene convertito in vettori.
- Ricerca su Database Vettori: i vettori vengono usati per cercare documenti simili in un database.
- Riordinamento: i frammenti di dati recuperati vengono riordinati per importanza.
- Modello LLM: genera una risposta utilizzando le informazioni estratte.
Utilizzare un approccio ReAct aggiunge un passo di iterazione: l’agente decide quando e come effettuare ricerche. Questo permette di fornire contesto aggiuntivo solo quando necessario.
Strumenti e Modelli
NVIDIA offre una suite di modelli e strumenti chiave per la pipeline agentic RAG:
- Nemotron Nano 9b V2: per la generazione di risposte di alta qualità.
- Embedding Model NeMo Retriever: per generare rappresentazioni vettoriali dei documenti.
- Reranking Model NeMo Retriever: per riordinare i documenti in base alla relazione con il contesto.
Il frammento sottostante mostra l’utilizzo di ChatNVIDIA di LangChain, collegandosi ai modelli NVIDIA via NVIDIA NIM endpoints:
from langchainnvidiaai_endpoints import ChatNVIDIA
LLM_MODEL = "nvidia/nvidia-nemotron-nano-9b-v2"
llm = ChatNVIDIA(model=LLMMODEL, temperature=0.6, topp=0.95, max_tokens=8192)
Questo modello supporta:
- Crittografia avanzata
- Risoluzione strutturata
- Operazioni asincrone
- Inferenza enterprise
Inoltre, è essenziale fornire istruzioni chiare per i modelli, come mostrato in un esempio da code/rag_agent.py:
SYSTEM_PROMPT = (
"You are an IT help desk support agent.\n"
"- Use the 'companyllcitknowledgebase' tool for questions likely covered by the internal IT knowledge base.\n"
"- Always write grounded answers. If unsure, say you don't know.\n"
"- Cite sources inline using [KB] for knowledge base snippets.\n"
)
Queste istruzioni permettono al sistema LLM di generare risposte coerenti e contestuali a partire da fonti ben definite.
Implementazione Tecnica
La pipeline completa agentic RAG include diversi elementi fondamentali:
- Modello: Usa gli endpoint NVIDIA NIM per fornire potente inferenza.
- Strumenti: Modelli e modelli di riordinamento, come il NeMo Retriever Embedding.
- Creazione di dati: Implica l’ingestione, la divisione testuale in porzioni e l’archiviazione in un database vettoriale.
- Modelli di recupero: Per ottenere i frammenti chiave e riordirli.
- Configurazione: Per personalizzare l’agente e adattarlo alle esigenze dell’applicazione.
La pipeline funziona in cicli iterativi, dove ogni volta che l’agente decide di cercare informazioni, attiva il sistema di recupero e utilizza i dati per generare una risposta mirata. Questo rende il RAG adatto per sistemi aziendali, dove informazioni fresche e contestuali sono essenziali.
Esempio e Risultati
Un caso d’uso specifico prevede l’implementazione di un assistente IT all’interno di un’azienda. Seguendo le istruzioni del laboratorio:
- I dati vengono estratti e vettorizzati.
- I frammenti vengono cercati utilizzando l’embedded vector.
- I dati vengono riordinati per importanza e utilizzati per rispondere alle domande con riferimento all’origine (es. [KB]).
- Le informazioni vengono generite dinamicamente in base all’analisi contestuale.
Questi passaggi illustrano un esempio realistico del potenziale pratico dell’approccio agentic RAG con NVIDIA Nemotron.