Il RAG (Generazione Aumentata con Ricerca) migliora il potenziale dei modelli linguistici di grandi dimensioni (LLM) aggiungendo informazioni esterne durante la generazione del testo. L’Agentic RAG, a sua volta, integra sistemi autonomi con LLM e meccanismi di ricerca, permettendo ai sistemi di prendere decisioni e adattarsi a esigenze in continua evoluzione.
In questa guida, che accompagna un workshop auto-gestibile, si apprenderanno i principi fondamentali dell’Agentic RAG, inclusi i modelli open source NVIDIA Nemotron. Si acquisterà competenza nel costruire tali sistemi utilizzando LangGraph, ottenendo un ambiente di sviluppo portatile e un sistema completamente personalizzato da condividere come lanciabile NVIDIA.
Video Walkthrough
Costruire un Agente RAG con NVIDIA Nemotron: Un video è disponibile come guida completa al workshop.
Avvio del Workshop
Per iniziare, è possibile avviare il workshop come un "Launchable di NVIDIA".
Figura 1: Fare clic sul pulsante "Deploy Now" per distribuire il workshop NVIDIA DevX in nuvola.
Con l’ambiente Jupyter Lab in esecuzione, localizzare la sezione "NVIDIA DevX Learning Path" nel launcher di Jupyterlab, selezionando quindi la tessera "Agentic RAG" per aprire le istruzioni del laboratorio.
Figura 2: Cliccare sulla tessera “Agentic RAG” in NVIDIA DevX Learning Path per ottenere le istruzioni del laboratorio.
Impostare le Informazioni di Sicurezza
Per completare il workshop, saranno necessarie alcune informazioni di sicurezza:
- Chiave API NGC: Per accedere al software, modelli e contenitori NVIDIA.
- Chiave API LangSmith (opzionale): Per connettersi alla piattaforma LangChain per il tracciamento e il debug dell'agente AI.
Utilizzare il tile "Secrets Manager" presente nella sezione NVIDIA DevX Learning Path per configurare le credenziali necessarie all’ambiente. Verificare nel pannello registri che le informazioni siano state aggiunte correttamente.
Figura 3: Utilizzare il tile “Secrets Manager” nella sezione NVIDIA DevX Learning Path per configurare le credenziali dell’agente (chiavi API).
Architettura RAG
L’architettura del sistema Agentic RAG combina l’informazione esterna con l’LLM. A differenza dei modelli tradizionali, il RAG permette l’utilizzo di informazioni aggiuntive per generare risposte più pertinenti.
Figura 4: Il RAG utilizza normalmente un prompt utente per recuperare documenti rilevanti, che vengono forniti come contesto al modello LLM per ottenere una risposta più informata.
La tipologia di flusso per un sistema RAG includerà:
- Promemoria: L’utente genera una query in linguaggio naturale.
- Modello di Embedding: Il prompt viene convertito in vettori.
- Ricerca in Database Vettoriale: Dopo l’embedding di un prompt, il sistema cerca in un database vettoriale formato da frammenti di documenti.
- Riordinamento: Gli scheggi di dati vengono riordinati per dare priorità ai più rilevanti.
- Linguisticamente Modello (LLM): Il modello LLM genera una risposta informata utilizzando i dati recuperati.
Questa tecnica garantisce al modello linguistico l’accesso a informazioni aggiornate e specifiche al di là dei dati di addestramento, rendendolo più versatile ed efficace.
Architettura dell’Agente ReAct
Diverso dagli applicativi tradizionali basati su LLM, gli agenti possono scegliere strumenti in modo dinamico, integrare ragionamenti complessi e adattare l’approccio all’analisi.
Figura 5: Un agente ReAct può ragionare iterativamente e chiamare strumenti definiti personalmente per generare una risposta RAG di miglior qualità.
Gli agenti ReAct sono una semplice architettura agente che utilizza il "ragionamento e attuazione" via strumenti supportati dagli LLM. Se il modello richiede strumenti per elaborare il prompt inserito, essi vengono eseguiti, aggiunti alla cronologia delle chat e restituiti al modello per ulteriore utilizzo.
Implementazione Tecnica
Ora che abbiamo compreso i concetti, passiamo all'implementazione tecnica. Partiremo da componenti fondamentali prima di costruire l'intero sistema Agentic RAG:
- Modelli
- Strumenti
- Ingestione dei Dati
- Divisione del Testo
- Ingestione di Database Vettoriale
- Ricercatore di Documenti e Riranger
- Creazione dello Strumento di Ricerca
- Configurazione dell'Agente
Il workshop si basa sugli endpoint NVIDIA NIM per il modello principale dell’agente. Questo offre una serie di caratteristiche operative:
- Binding dei Strumenti: Supporto nativo per la chiamata a funzioni.
- Output Struturato: Supporto incorporato per i modelli Pydantic.
- Operazioni Asincrone: Supporto completo per le operazioni asincrone.
- Affidabilità Aziendale: Infrastruttura di inferenza adatta a contesti di produzione.
Esempio del modello del connector LangChain, utilizzando NVIDIA NIM:
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)
Per garantire la qualità dell’applicazione basata su LLM, è fondamentale fornire al'agente istruzioni chiare al fine di chiarire decisioni, rimuovere ambiguità, e specificare come gestire i documenti recuperati. Un esempio proviene da 'code/rag_agent.py', come segue:
SYSTEM_PROMPT = (
"Sei un agente di supporto IT per il servizio d'aiuto interno.\n"
"- Utilizza lo strumento 'companyllcitknowledgebase' per le domande verosimilmente coperte dalla guida IT interna.\n"
"- Sempre rispondi in modo informale. Se non sei sicuro, dichiara che non sai.\n"
"- Citare le fonti inline utilizzando [KB] per i frammenti della base di conoscenza.\n"
"- ...