Azure OpenAI on your data: integrare i dati proprietari con l'IA per ottenere informazioni coerenti e aggiornate

Posted by danieleperugini on Thursday, August 3, 2023

Azure OpenAI on your data: integrare i dati proprietari con l’IA per ottenere risposte coerenti e aggiornate

Come scritto in un precedente articolo, recentemente, Microsoft ha introdotto un nuovo servizio all’interno di Azure Cognitive Services: Azure OpenAI. Questo servizio fornisce l’accesso ai potenti modelli linguistici di OpenAI, noti come Large Language Models (LLM). In questo articolo tratteremo una particolare variante chiamata “Azure OpenAI on your data” che permette di integrare i propri dati con il modello di IA e vedremo quando

Mentre OpenAI “standard” offre modelli di linguaggio potenti e versatili, Azure OpenAI porta questi modelli al livello successivo aggiungendo i propri servizi a supporto di OpenAI. Le aziende quindi possono sfruttare la scalabilità, l’affidabilità e la sicurezza di Azure per implementare i modelli OpenAI in applicazioni di produzione. Inoltre, Azure offre strumenti per il monitoraggio, la gestione e l’ottimizzazione delle prestazioni dei modelli, rendendo più semplice per le aziende la gestione dei modelli di IA di OpenAI.

Tuttavia siamo tutti consapevoli del fatto che le risposte prodotte dai vari modelli sono sempre basate sui dati utilizzati per l’addestramento (training). Pertanto tali modelli non sapranno mai dare informazioni che non sono state preventivamente “immagazzinate”.

Questo è un limite sia per l’aggiornamento delle informazioni (e il pericolo che vengano forniti dati obsoleti) che per il dominio stesso delle informazioni trattate.

Ad esempio un modello come GPT di OpenAI non saprà mai niente delle specifiche di prodotto o dei servizi di una determinata azienda.

Ma facendo un esempio, che dire se una azienda volesse fornire agli utenti un assistente per mettere a disposizione informazioni come istruzioni e dati di un determinato prodotto o servizio?

I modelli “generici” (chiamati anche “foundation models”) non potrebbero soddisfare questa necessità.

Tramite moderni approcci e servizi, le aziende possono però utilizzare i propri dati in combinazione con i modelli di intelligenza artificiale per dare risposte personalizzate agli utenti.

Cosa è il servizio Azure OpenAI on your data

Tra i vari servizi aggiuntivi forniti da Azure per l’offerta OpenAI, troviamo Azure OpenAI on your data. “Your Data” è una caratteristica distintiva di Azure OpenAI che consente alle aziende di poter utilizzare i propri dati come fonte di informazioni per i modelli di OpenAI. Questo significa che le aziende possono personalizzare i modelli per comprendere meglio il contesto specifico del loro settore o azienda, migliorando così l’accuratezza e la pertinenza delle risposte del modello.

In quali scenari è utile “Your Data”

“Your Data” è particolarmente utile in scenari in cui le aziende desiderano che il modello comprenda terminologia, concetti o contesti specifici del settore. Ad esempio, un’azienda nel settore sanitario potrebbe addestrare il modello sui propri dati medici per migliorare la capacità del modello di rispondere a domande mediche specifiche. Allo stesso modo, un’azienda di e-commerce potrebbe addestrare il modello sui propri dati di prodotto per migliorare le raccomandazioni di prodotti del modello.

Inoltre “your data” ha il vantaggio di non dover eseguire nuovamente l’addestramento del modello ogni qual volta vi siano dati nuovi da dover utilizzare.

Questo perché “your data” utilizza un pattern chiamato “Retrieval Augmented Generation” (RAG). Per capire vantaggi e svantaggi di questo approccio, dobbiamo però capire prima come funziona.

Come funziona il Retrieval Augmented Generation pattern (su cui si basa “your data”)

Il pattern Retrieval Augmented Generation, è un approccio innovativo nell’ambito dell’intelligenza artificiale che combina le tecniche di recupero delle informazioni con la generazione di testo. Questo approccio è particolarmente efficace nel contesto dei modelli di linguaggio, come quelli utilizzati da Azure OpenAI.

L’approccio RAG è stato descritto dai ricercatori di Meta nel 2020 in un articolo dal titolo “Retrieval Augmented Generation: Streamlining the creation of intelligent natural language processing models”. Nell’articolo si dice (tradotto dall’inglese):

"La vera forza di RAG risiede nella sua flessibilità. La modifica di ciò che sa un modello linguistico pre-addestrato comporta il nuovo addestramento dell'intero modello con nuovi documenti. Con RAG, controlliamo ciò che sa semplicemente scambiando i documenti che utilizza per il recupero delle informazioni. Abbiamo testato questo comportamento sostituendo il nostro set di dati originale di Wikipedia con uno più vecchio e poi ponendo domande come "Chi è il primo ministro dell'Islanda?" I risultati hanno mostrato che RAG ha sfruttato la conoscenza nel corpus scambiato per adattare le sue risposte, anche se la conoscenza parametrica è rimasta statica. Questo approccio adattivo ha un valore inestimabile in situazioni in cui i fatti (o la nostra comprensione dei fatti) si evolvono nel tempo."

In altre parole, quando i dati si evolvono velocemente, mantenere un modello aggiornato tramite il training continuo diventa dispendioso e richiede tempo. Con questa tecnica di fine-tuning si ha la possibilità di integrare la conoscenza di base con informazioni aggiornate, dando precedenza a queste ultime.

Nel pattern RAG, il sistema prima “recupera” informazioni pertinenti dai dati proprietari a disposizione, e successivamente le invia al modello di IA iniettandole nel prompt, prima di quanto richiesto dall’utente. Il risultato è che il modello di IA genera una risposta basata sulle informazioni trasmesse.

pattern RAG: Schema di funzionamento: tramite la ricerca semantica su basi dati proprietarie, i dati necessari vengono iniettati nel prompt sul quale il modello di linguaggio si baserà per fornire la risposta. Fonte immagine AWS.

Schema di funzionamento: tramite la ricerca semantica su basi dati proprietarie, i dati necessari vengono iniettati nel prompt sul quale il modello di linguaggio si baserà per fornire la risposta. Fonte immagine AWS.

Il recupero dei corretti dati aggiornati, pertanto, è un passaggio cruciale in questo processo. Questo può essere realizzato utilizzando tecniche come la ricerca semantica o per similarità (tramite embeddings), che consente al modello di trovare informazioni pertinenti anche se le parole chiave non corrispondono esattamente. E per questo sono nati anche database ad hoc chiamati database vettoriali (ad esempio Chroma).

Ad esempio, come si vede nell’immagine sopra, prima di inviare il prompt dell’utente al modello di IA, quest’ultimo viene convertito in embeddings. Gli embeddings sono una rappresentazione “nativa” del testo per i modelli di IA. Questo embedding viene utilizzato per filtrare una fonte dati indicizzata a sua volta tramite gli embeddings del contenuto. Il risultato ottenuto, che quindi si suppone contenere il testo vicino per similitudine alla richiesta utente, viene iniettato del prompt utente ed inviato al modello di IA per essere analizzato e per ricevere una risposta.

Per avere una rappresentazione visiva di quanto detto si pensi al prompt seguente dove un utente chiede se il suo piano assicurativo copra un determinato trattamento. Dal momento che il modello di IA non è stato addestrato sullo specifico caso d’uso, non saprà dare una risposta esaustiva.

<|im_start|>system
Assistant helps Contoso Inc employees with their internal healthcare plan questions. 
<|im_end|>

<|im_start|>user
Does my plan cover annual eye exams?
<|im_end|>

<|im_start|>assistant
I'm sorry, I'm not able to access your specific healthcare plan information. 
However, many healthcare plans do cover annual eye exams. 
I recommend checking your plan's summary of benefits or contacting your plan administrator for more information.

Invece di eseguire l’addestramento dell’intero modello sulle polizze aziendali, tramite RAG il risultato potrebbe essere qualcosa simile al seguente:

<|im_start|>system
Assistant helps Contoso Inc employees with their internal healthcare plan questions. Only answer questions based on the fact listed below. If the facts below don't answer the question, say you don't know. Each fact sentence is numbered. Always include a reference to the fact number in the form [number] when you answer. 
1. Employees have a choice of two plans, PlanA and PlanB, and they have different benefits.
2. PlanA includes coverage for annual eye and hearing exams.
3. Those with PlanB have a co-payment for routine eye exams and vision-related purchases such as glasses.
4. Both PlanA and PlanB cover preventive care visits.
<|im_end|>

<|im_start|>user
Does my plan cover annual eye exams?
<|im_end|>

<|im_start|>assistant
PlanA includes coverage for annual eye and hearing exams. [2]

Come si vede in questo caso, il modello è stato istruito iniettando i dati reperiti dai sistemi aziendali per similarità con quanto chiesto dall’utente. Così il modello linguistico è in grado di rispondere alla domanda.

L’approccio RAG ha dimostrato di essere particolarmente efficace in scenari come il question answering, dove il modello deve fornire risposte precise a domande specifiche. Inoltre, RAG può essere utilizzato per mitigare le “allucinazioni” dei modelli di linguaggio, ovvero situazioni in cui il modello genera informazioni che non sono presenti nei dati di addestramento.

Questo è il pattern alla base del funzionamento di Azure OpenAI on your data.

Come utilizzare Azure OpenAI on your data

Per utilizzare Azure OpenAI on your data, gli utenti devono caricare i dati che si vogliono utilizzare per il RAG pattern in una delle risorse supportate dal servizio. Queste includono il servizio di storage, il database Azure SQL e CosmosDB . Fatto questo, si dovrà accedere all’IDE Azure OpenAI Studio. Una nota importante, sul portale Azure si dovrà creare prima una risorsa OpenAI.

Per prima cosa si dovrà distribuire un modello di linguaggio. Come si vede nell’immagine sotto, si accede al menu “Distribuzioni”, e si crea una nuova distribuzione selezionando un modello linguistico di base.

Azure OpenAI Studio: distribuzione di un modello linguistico

Fatto questo, di può navigare nel menu “Chat” per iniziare ad interagire con il modello appena distribuito ed anche per attivare la funzionalità “your data”.

Azure OpenAI Studio: interazione con un modello linguistico tramite chat

Come si vede dallo screenshot infatti, a destra è possibile selezionare la distribuzione con la quale interagire, mentre a sinistra abbiamo due importantissimi “strumenti”. Il messaggio di sistema, un messaggio sempre inviato ad ogni prompt.

E la tab “Add your data”. Questa permetterà di integrare i dati proprietari all’interno del prompt. Si dovrà premere su “add data” per far comparire una finestra di dialogo che permetterà di selezionare la fonte dati.

Azure OpenAI Studio: integrazione con i propri dati

Come detto al paragrafo precedente, la parte sensibile è quella che serve a selezionare i dati proprietari che hanno affinità con quanto chiesto dall’utente.

In questo caso, il servizio Azure che si occupa di questo si chiama “Cognitive Search”. Questo servizio, che deve essere selezionato come si vede dall’immagine, serve a “mappare” i dati che si vogliono poter utilizzare nel pattern RAG ed inviare al modello di IA insieme al prompt utente.

Come visibile nell’immagine sotto, ad ogni richiesta il sistema confronta i documenti ormai indicizzati con il prompt utente e seleziona quelli che per similarità contengono i dati per rispondere a quanto richiesto.

Azure OpenAI on your data: schema di funzionamento

Non è semplice impostare il servizio Cognitive Search perché ovviamente richiede la conoscenza del dominio dei dati, del loro formato e del loro contenuto. Inoltre la creazione di più indici di ricerca fa aumentare i costi. Tuttavia, se si vuole accedere ad una soluzione pronta all’uso e cloud native, questo servizio è sicuramente all’altezza delle aspettative.

Una volta impostato anche Cognitive Search, sarà possibile testare quanto fatto iniziando la sessione di chat con il modello e testando le risposte ricevute.

I benefici di un sistema basato sui propri dati

Ricapitolando quindi, è possibile utilizzare i propri dati all’interno del modello di IA senza dover eseguire l’addestramento di un modello (operazione lunga e dispendiosa).

Tramite tecniche di fine-tuning come il pattern retrieval augmented generation (RAG) si può arrivare a questo risultato. Azure permette di accedere in modo semplice a questo pattern tramite il servizio Azure OpenAI on your data.

Questo servizio è utile in moltissime applicazioni, ad esempio per la realizzazione di assistenti interni all’azienda che sappiano rispondere a domande circa i servizi ed i prodotti offerti.

Oppure potrebbe essere utilizzato per realizzare chatbot per i clienti che sappiano rispondere a domande specifiche.

Essere preparati ad affrontare questi scenari è sempre più necessario.Perché quindi non provare a realizzare un proof of concept per testare la bontà di servizi di questo tipo?


IL MIO LIBRO: WHY YOUR DATA MATTER

Il libro dedicato ai manager e CIO che hanno a cuore i dati della propria azienda e vogliono avere sonni tranquilli (anticipando problematiche poco piacevoli legate al recupero, alla gestione o alla sicurezza dei dati)

Leggi il libro

REGISTRATI ALLA NEWSLETTER

Una piccola newsletter su data, azure e AI.

Dicono di me

Ricordo ancora bene cosa mi spinse a coinvolgerlo per la prima volta. Oltre che a trasmettermi competenza ed affidabilità, Daniele mi è sembrato fin da subito propenso a mettersi in gioco e a fare squadra con Fapim. Ho percepito in maniera marcata che questa persona avrebbe fatto suo il problema e avrebbe cercato di risolverlo concretamente.

(Leggi la testimonianza completa)

Fapim S.p.a.Ombretta Pacini, responsabile comunicazione e immagine aziendale
È orbitando nell’area Microsoft che abbiamo conosciuto Daniele. Abbiamo iniziato a collaborarci nel 2016 in un momento nel quale, dopo aver introdotto in azienda la metodologia di Agile grazie ad un lungo periodo di formazione interna su questo argomento, iniziavamo a metterla in pratica su nuovi progetti e necessitavamo di Project Manager e Team Leader con esperienza.

(Leggi la testimonianza completa)

Vivido S.r.l.Claudio Menzani, Paolo Ciccioni
Ho conosciuto Daniele grazie ad una sua ex collega che mi ha parlato molto bene di lui e dei suoi servizi di consulenza e collaborazione nel campo della consulenza. Mi ha spinta a rivolgermi a Daniele la sua preparazione, professionalità e disponibilità.

(Leggi la testimonianza completa)