* Funzionario presso la Direzione generale dell’Assemblea legislativa della Regione Emilia-Romagna ** HPC Data Engineer/Machine Learning Engineer presso CINECA
1. Premessa
Se la tematica dell’integrazione delle banche dati segna senza dubbio una delle peculiarità del progetto SAVIA, consentendo di mettere a sistema, a tendere, leggi regionali, fonti secondarie e atti amministrativi attuativi o, comunque, collegati alle prime ed eventuali pronunce giurisprudenziali, altrettanto importante è l’analisi dello strumento scelto per realizzare la citata integrazione e consentire agli utenti (cittadini, consiglieri regionali, addetti ai lavori) di conoscere i dati e le informazioni rese così disponibili.
Tra gli strumenti potenzialmente idonei, la scelta è caduta su una chatbot[1], ossia un software progettato per simulare conversazioni con esseri umani con l’obiettivo di fornire risposte automatiche che possano sembrare umane, utilizzando spesso sistemi di elaborazione del linguaggio naturale (NLP, dall’inglese natural language processing[2]), per analizzare e rispondere alle domande degli utenti.
2. I chatbot: un breve inquadramento
I chatbot – conosciuti anche col nome di “assistenti virtuali” e ormai largamente utilizzati in diversi settori privati quali, ad esempio, banche, assicurazioni, aziende di e-commerce – rappresentano una tecnologia oggetto di studio dalla metà del Novecento[3] ma solo negli ultimi decenni il loro miglioramento è diventato centrale nello sviluppo tecnologico, nel dibattito scientifico e nell’opinione pubblica.
I chatbot potrebbero essere suddivisi descrittivamente in due categorie: quelle che operano in base a una serie di regole prestabilite e quelle, più avanzate, che attraverso un sistema di machine learning imparano dal comportamento dei propri utenti: la centralità che i chatbot hanno assunto negli ultimi tempi deriva dallo sviluppo di quelle appartenenti a quest’ultima categoria, cui fa riferimento anche la chatbot utilizzata per il progetto SAVIA[4].
La scelta di questo strumento, che consente di porre domande con linguaggio naturale relativamente al corpus normativo regionale, è stata determinata tenendo presente la platea dei destinatari ai quali intende rivolgersi il progetto SAVIA: non solo i c.d. addetti ai lavori (funzionari amministrativi e collaboratori delle strutture di supporto agli organi politici) ma anche i consiglieri regionali e, soprattutto, i cittadini, che potranno interrogare con un linguaggio a-tecnico il chatbot circa gli ambiti dei quali vogliono sapere qual è stato l’intervento della Regione Emilia-Romagna e, in un prossimo futuro, anche dei Comuni e delle Province.
Una volta scelto lo strumento, con il fondamentale supporto di CINECA, il gruppo di lavoro si è attivato per creare il software, il cui funzionamento sarà illustrato nei paragrafi che seguono.
In questo momento, preme evidenziare come è stato impostato l’addestramento del chatbot che – sebbene necessiti di ulteriori sviluppi – ha già restituito alcuni primi risultati che denotano l’idoneità dello strumento agli scopi del progetto.
Dal momento che il chatbot deve essere in grado di reperire le fonti giuridiche richieste dall’utente e metterle a sistema, sono stati predisposti una serie di quesiti (e relative risposte) suddividendoli in due categorie: da un lato, quesiti di ordine generale, sistematico, riferiti al sistema delle fonti del diritto, alla loro gerarchia, alle tecniche di risoluzione delle antinomie normative, al concetto di abrogazione, così da consentire al software di familiarizzare con alcuni dei concetti di base dell’ordinamento giuridico; dall’altro, quesiti connotati da una maggiore specificità legata alle leggi selezionate per la sperimentazione, tra le quali la legge regionale 22 ottobre 2018, n. 15, recante “Legge sulla partecipazione all’elaborazione delle politiche pubbliche”.
3.1. Soluzione architetturale
L’architettura del chatbot SAVIA adotta un approccio all’avanguardia, basato sulla tecnica della retrieval-augmented generation (RAG). Questo metodo ottimizza un grande modello linguistico (large language model, LLM) permettendogli di fare riferimento a informazioni specifiche recuperate da un database di documenti pertinenti all’ambito di applicazione del sistema, in questo caso la normativa della Regione Emilia-Romagna. I modelli linguistici di grandi dimensioni (LLM), infatti, sono addestrati su enormi quantità di dati e utilizzano miliardi di parametri per generare testi originali in compiti come rispondere a domande, tradurre lingue o completare frasi. L’approccio RAG ne amplia le capacità adattandoli a domini specifici, senza la necessità di un nuovo addestramento. Questo permette di migliorare l’accuratezza, la pertinenza e l’utilità delle risposte, rendendo il modello più efficace in contesti mirati.
Sulla base dell’approccio descritto sopra, il sistema SAVIA si divide in quattro moduli principali:
- Base documentale;
- Modulo di recupero delle informazioni (retrieval module);
- Large Language Model;
- Interfaccia con l’utente.
Ognuno di questi moduli lavora in concerto per fornire l’esperienza tipica del chatbot. L’utente infatti, attraverso l’interfaccia web, pone una domanda riguardante argomenti relativi alla normativa della Regione. Questa domanda viene processata dal modulo di recupero delle informazioni che, grazie all’accesso al database contenente tutte le leggi regionali, gli atti attuativi, eccetera, recupera le parti di testo più attinenti alla domanda posta. Queste parti di testo vengono inviate poi al large language model, assieme alla domanda iniziale dell’utente, che li userà per elaborare una risposta coerente con le parti di testo fornite come contesto. La risposta, quindi, verrà esposta all’utente attraverso l’interfaccia web.
3.2. Base documentale
Per garantire risposte affidabili, SAVIA si basa su un’ampia raccolta di testi normativi, che costituiscono la sua base documentale (o database). Attualmente, questa comprende tutte le leggi regionali della Regione Emilia-Romagna dal 1972 a oggi, oltre a un vasto insieme di atti amministrativi, come delibere della Giunta e atti dirigenziali. A questi si aggiungono ulteriori documenti di supporto, tra cui clausole valutative, analisi di impatto e atti attuativi.
La raccolta dei testi avviene attraverso diverse fonti. Quando possibile, il sistema accede direttamente a banche dati online esistenti, come “Demetra”[5] e la sezione di ricerca della banca dati degli atti amministrativi nell’intranet regionale. Da questi archivi, i dati vengono estratti utilizzando tecniche di web scraping, ovvero processi automatizzati che consentono di raccogliere informazioni direttamente dai siti di riferimento. In altri casi, invece, è necessario scaricare documenti digitalizzati in formato PDF e convertirli in testo attraverso il riconoscimento ottico dei caratteri (Optical Character Recognition, OCR), un metodo che permette di trasformare immagini di documenti in testo leggibile e ricercabile.
Per migliorare l’efficacia del recupero delle informazioni, i testi – spesso composti da molte pagine – vengono suddivisi in unità logiche più piccole, denominate chunk. Questi possono corrispondere a singoli paragrafi, articoli di legge o altre sezioni semanticamente coerenti. Questa suddivisione consente al modulo di recupero delle informazioni (information retrieval module) di effettuare ricerche in modo più efficiente e preciso, restituendo all’utente solo i frammenti più rilevanti.
A ciascun chunk viene inoltre associato un ampio insieme di metadati, ovvero informazioni aggiuntive che facilitano la catalogazione e il recupero dei documenti. I metadati si distinguono in due categorie principali:
- Metadati estratti direttamente dalle fonti ufficiali, come la data di pubblicazione, il numero della legge o i riferimenti normativi, ricavati dalle informazioni disponibili nelle banche dati.
- Metadati derivati dall’analisi del testo, ottenuti tramite tecniche di machine learning e natural language processing. Ad esempio, il titolo di una legge può essere recuperato dalla pagina web di riferimento oppure estratto automaticamente dal corpo del testo normativo. Inoltre, è possibile generare un riassunto sintetico e una serie di keyword associate alla legge inviando il suo contenuto a un large language model, il quale è in grado di produrre keywords significative e una sintesi strutturata e leggibile.
3.3. Retrieval Module
Il modulo di recupero delle informazioni rappresenta il cuore del chatbot SAVIA, in quanto consente di identificare e selezionare, in modo preciso ed efficiente, i testi normativi più pertinenti per rispondere correttamente alle domande degli utenti.
A livello generale, questo modulo si basa sulla similarità semantica tra la domanda posta dall’utente e i testi contenuti nella base documentale, precedentemente suddivisi in chunk (unità testuali più piccole). Per confrontare questi elementi, entrambi vengono convertiti in rappresentazioni numeriche attraverso un processo chiamato embedding. L’embedding trasforma un testo in una sequenza di numeri (un vettore) che rappresenta il contenuto del testo in uno spazio matematico, preservandone le relazioni semantiche.
Il modulo di recupero confronta quindi il vettore della domanda con i vettori dei chunk presenti nella base documentale. Maggiore è la vicinanza tra questi vettori, più alta è la probabilità che il chunk selezionato contenga informazioni utili per rispondere alla domanda. Il sistema restituisce quindi i testi più pertinenti, che verranno utilizzati per arricchire il contesto della risposta generata dal modello linguistico.
Il modulo di recupero delle informazioni è composto da due elementi principali:
Un database vettoriale (vector store): un archivio ottimizzato per immagazzinare e recuperare i chunk testuali in base alla loro rappresentazione numerica (embedding). Questo database conserva sia i vettori associati ai testi normativi sia i loro metadati (es. titolo della legge, anno di pubblicazione, riferimenti normativi) e il testo originale. Il vector store utilizzato in SAVIA è basato su Milvus[6], un sistema open-source specificamente progettato per l’elaborazione efficiente di vettori.
La logica di recupero delle informazioni: un insieme di regole e algoritmi progettati per garantire un recupero mirato e ottimizzato dei testi normativi. Questa logica è stata sviluppata specificamente per SAVIA, tenendo conto della complessità e della struttura della normativa regionale.
Il processo di recupero segue una struttura gerarchica, articolata in diverse fasi:
La prima fase di routing analizza la domanda dell’utente utilizzando un modello[7] di Named Entity Recognition (NER), ovvero un algoritmo capace di riconoscere e classificare termini rilevanti all’interno del testo. Questa fase serve a determinare se la domanda riguarda leggi, atti amministrativi o se è di carattere più generale.
Se nella domanda viene individuato il riferimento ad una specifica legge o atto, il sistema accede direttamente al testo integrale di quel documento nel vector store e lo fornisce al modello linguistico come contesto per la risposta. Questa strategia contente di evitare ricerche più complesse quando il riferimento normativo è esplicito.
Se la domanda non contiene riferimenti diretti ad una legge o atto, il sistema esegue una ricerca tra i riassunti dei documenti normativi presenti nel database. La similarità tra domanda e i riassunti viene calcolata assegnando un punteggio (score), che permette di ordinare i testi in base alla loro pertinenza. I riassunti col punteggio più alto vengono forniti al modello linguistico come contesto per formulare la risposta.
Se i riassunti non contengono informazioni sufficientemente pertinenti (ossia se il punteggio di similarità è inferiore a una soglia predefinita), il sistema esegue la ricerca direttamente sui chunk testuali (paragrafi, articoli di legge, ecc.). Anche in questo caso, viene utilizzata la similarità semantica per individuare i chunk più rilevanti, che vengono successivamente inviati al modello linguistico per generare una risposta informata.
Il modulo di recupero delle informazioni è fondamentale per il funzionamento di SAVIA, poiché garantisce che il modello linguistico operi con dati normativi aggiornati e pertinenti. Senza questo sistema, il chatbot sarebbe limitato alla conoscenza acquisita durante il suo addestramento iniziale, che potrebbe non includere le informazioni specifiche richieste dagli utenti.
3.4. Large Language Model
Al cuore di SAVIA si trova un modello linguistico di grandi dimensioni, un sistema di intelligenza artificiale addestrato su vastissime quantità di testi per comprendere e generare linguaggio naturale. Questi modelli possiedono capacità avanzate, come la risposta a domande e la sintesi di documenti, ma la loro conoscenza è limitata ai testi utilizzati durante la fase di addestramento.
In genere, un corpus normativo specifico – come quello della Regione Emilia-Romagna – non è incluso nei dati su cui il modello è stato inizialmente allenato. Di conseguenza, un LLM non è in grado di rispondere con precisione a domande su leggi e atti amministrativi regionali, poiché queste informazioni non rientrano nella sua conoscenza preesistente. Tuttavia, grazie alla base documentale e al modulo di recupero delle informazioni, è possibile integrare il modello con il contesto necessario.
I modelli linguistici di grandi dimensioni hanno la capacità emergente di incorporare informazioni testuali aggiuntive fornite nel prompt dell’utente. In altre parole, se al modello viene fornito un estratto di normativa pertinente insieme alla domanda dell’utente, esso può analizzare il contenuto e generare una risposta coerente e informata. Questo rende il modulo di recupero delle informazioni un elemento cruciale: senza di esso, il modello non avrebbe accesso ai riferimenti normativi richiesti. Dal punto di vista tecnico, il LLM di SAVIA funge da generatore di risposte, elaborando le informazioni estratte dal database attraverso il retrieval module e restituendo un testo formulato in linguaggio naturale.
I moderni LLM contano miliardi di parametri, e in alcuni casi decine o centinaia di miliardi. In generale, più alto è il numero di parametri, migliori sono le prestazioni nei compiti di generazione e riassunto del testo. Nel contesto di SAVIA, questo significa una maggiore accuratezza nel fornire risposte basate sul corpus normativo. Nel corso di varie sperimentazioni, sono stati testati modelli con un numero di parametri variabile da alcuni miliardi a centinaia di miliardi. Tuttavia, l’aumento della complessità del modello comporta anche un maggiore consumo di risorse computazionali, rendendo necessaria l’adozione di un’infrastruttura adeguata. Per questo motivo, l’elaborazione e la generazione delle risposte in SAVIA sono state supportate dall’infrastruttura di calcolo del CINECA, in particolare dai nodi computazionali del supercomputer Leonardo.
Tutti i modelli utilizzati in SAVIA sono open weights, ovvero modelli ad accesso libero, scaricabili da repository pubblici e distribuiti con licenze permissive come Apache 2.0. Questo significa che chiunque può accedere, studiare e riutilizzare questi modelli senza restrizioni significative. Sono stati testai modelli delle famiglie Llama[8] (3.1/3.3, da 8 a 405 miliardi di parametri), Qwen[9] (2.5, da 1.5 a 32 miliardi di parametri), il modello “ITALIA”[10] (10 miliardi di parametri) e anche variazioni di questi specifiche per la lingua italiana (i cosiddetti fine-tune in lingua italiana). Non è stato impiegato alcun modello proprietario (come quelli ad esempio di OpenAI, ChatGPT) o di altri provider commerciali. Questa scelta è stata dettata dalla natura pubblica e sociale del progetto SAVIA, che mira a garantire trasparenza, replicabilità e accessibilità. L’adozione di tecnologie open-source ha inoltre il vantaggio di facilitare il controllo delle fonti e degli algoritmi impiegati, un aspetto essenziale per l’applicazione dell’intelligenza artificiale in ambito giuridico.
Valutazioni interne, condotte attraverso test A/B su diverse versioni di testo generate da modelli con un numero di parametri variabile, hanno confermato che all’aumento dei parametri corrisponde un miglioramento della qualità dell’output. Tuttavia, è stato necessario trovare un equilibrio tra qualità della generazione e consumo di risorse computazionali. I risultati hanno indicato che i modelli con decine di miliardi di parametri rappresentano un ottimo compromesso tra precisione delle risposte e sostenibilità dell’elaborazione.
3.5. Interfaccia
Per rendere il chatbot SAVIA accessibile sia a utenti con competenze giuridiche sia alla cittadinanza in generale, l’interfaccia è stata progettata seguendo un approccio intuitivo e familiare, ispirato ai modelli di interazione già diffusi, come quello di ChatGPT.
L’inserimento delle domande avviene attraverso un semplice box di input, mentre le risposte vengono restituite in linguaggio Markdown, un formato che consente di mantenere una struttura chiara e leggibile del testo. Grazie a questa scelta, il sistema è in grado di visualizzare in modo ordinato grassetti, elenchi puntati, riferimenti normativi e altre formattazioni utili per la comprensione del contenuto.
Attualmente, l’interfaccia è volutamente minimale, focalizzandosi sulla chiarezza delle risposte. Tuttavia, sono già in fase di sviluppo funzionalità avanzate, tra cui la memoria delle conversazioni passate, per consentire all’utente di riprendere il filo del discorso senza dover ripetere il contesto, un sistema di autenticazione e logging, che permetterà di tracciare l’uso dello strumento e di personalizzare l’esperienza dell’utente, e un selettore di modelli linguistici, per consentire la scelta tra diversi LLM in base alle esigenze specifiche della ricerca giuridica.
4. Esempi di domande e risposte per l’allenamento del chatbot…
Un team di giuristi del gruppo di lavoro del progetto SAVIA ha elaborato domande e risposte che i tecnici di CINECA hanno inserito nel software per avviare l’addestramento e costruire il dataset[11].
Con riferimento alla prima tipologia, concernente quesiti di carattere generale si riportano i seguenti:
D: Che cos’è una fonte del diritto?
R: Una fonte del diritto è un atto o un fatto abilitato dall’ordinamento giuridico a produrre norme giuridiche, cioè a innovare l’ordinamento giuridico stesso.
D: Che cos’è l’abrogazione?
R: L’abrogazione