Condividi tramite


Aumentare i modelli linguistici di grandi dimensioni con la generazione aumentata dal recupero o l'ottimizzazione fine

In una serie di articoli vengono illustrati i meccanismi di recupero delle conoscenze usati dai modelli di linguaggio di grandi dimensioni per generare risposte. Per impostazione predefinita, un LLM ha accesso solo ai dati di training. È tuttavia possibile aumentare il modello per includere dati in tempo reale o dati privati.

Il primo meccanismo è generazione aumentata di recupero (RAG). RAG è una forma di pre-elaborazione che combina la ricerca semantica con il priming contestuale. Il priming contestuale viene illustrato in dettaglio in Concetti chiave e considerazioni per la creazione di soluzioni di intelligenza artificiale generative.

Il secondo meccanismo è l'ottimizzazione. Durante l'ottimizzazione, un LLM viene ulteriormente addestrato su un set di dati specifico dopo il suo addestramento iniziale. L'obiettivo è quello di adattare LLM per ottenere prestazioni migliori sulle attività o per comprendere i concetti correlati al set di dati. Questo processo consente al modello di specializzare o migliorare la precisione e l'efficienza nella gestione di tipi specifici di input o domini.

Le sezioni seguenti descrivono questi due meccanismi in modo più dettagliato.

Informazioni su RAG

RAG è spesso utilizzato per abilitare lo scenario "chat sui miei dati". In questo scenario, un'organizzazione ha un corpus potenzialmente elevato di contenuto testuale, ad esempio documenti, documentazione e altri dati proprietari. Usa questo corpus come base per le risposte alle richieste degli utenti.

A livello alto, si crea una voce di database per ogni documento o per una parte di un documento, denominata blocco . Il blocco viene indicizzato sul relativo incorporamento, ovvero un vettore (matrice) di numeri che rappresentano facet del documento. Quando un utente invia una query, si esegue una ricerca nel database per documenti simili e quindi si inviano la query e i documenti all'LLM per comporre una risposta.

Nota

Usiamo il termine generazione aumentata di recupero (RAG) in modo flessibile. Il processo di implementazione di un sistema di chat basato su RAG, come descritto in questo articolo, può essere applicato se si vogliono usare dati esterni in una capacità di supporto (RAG) o come elemento centrale della risposta (RCG). La distinzione sfumata non è affrontata nella maggior parte del materiale di lettura relativo alla RAG.

Creazione di un indice di documenti vettorializzati

Il primo passaggio per creare un sistema di chat basato su RAG consiste nel creare un archivio dati vettoriale contenente l'incorporamento vettoriale del documento o del blocco. Si consideri il diagramma seguente, che descrive i passaggi di base per la creazione di un indice vettorializzato di documenti.

Diagramma che illustra le diverse fasi dell'inserimento di documenti in un sistema di chat basato su RAG.

Il diagramma rappresenta una pipeline di dati . La pipeline è responsabile dell'inserimento, dell'elaborazione e della gestione dei dati usati dal sistema. La pipeline include il preprocessamento dei dati da archiviare nel database vettoriale e garantisce che i dati inseriti nell'LLM siano nel formato corretto.

L'intero processo è basato sulla nozione di incorporamento, ovvero una rappresentazione numerica dei dati (in genere parole, frasi, frasi o anche interi documenti) che acquisisce le proprietà semantiche dell'input in modo che possa essere elaborato dai modelli di Machine Learning.

Per creare un incorporamento, inviare il blocco di contenuto (frasi, paragrafi o interi documenti) all'API Incorporamenti OpenAI di Azure. L'API restituisce un vettore. Ogni valore nel vettore rappresenta una caratteristica (dimensione) del contenuto. Le dimensioni possono includere argomenti, significato semantico, sintassi e grammatica, utilizzo di parole e frasi, relazioni contestuali, stile o tono. Insieme, tutti i valori del vettore rappresentano lo spazio dimensionale del contenuto . Se si pensa a una rappresentazione 3D di un vettore con tre valori, un vettore specifico si trova in un'area specifica del piano del piano XYZ. Cosa succede se sono presenti 1.000 valori o ancora di più? Anche se non è possibile per gli esseri umani disegnare un grafico multidimensionale a 1.000 dimensioni su un foglio di carta per renderlo più comprensibile, i computer non hanno problemi a comprendere quello spazio di dimensione.

Il passaggio successivo del diagramma illustra l'archiviazione del vettore e del contenuto (o un puntatore alla posizione del contenuto) e altri metadati in un database vettoriale. Un database vettoriale è simile a qualsiasi tipo di database, ma con due differenze:

  • I database vettoriali usano un vettore come indice per cercare i dati.
  • I database vettoriali implementano un algoritmo denominato ricerca di similarità coseno, detto anche vicino più prossimo. L'algoritmo usa vettori che corrispondono più strettamente ai criteri di ricerca.

Con il corpus di documenti archiviati in un database vettoriale, gli sviluppatori possono compilare un componente di recupero per recuperare i documenti corrispondenti alla query dell'utente. I dati vengono usati per fornire all'LLM le informazioni necessarie per rispondere alla richiesta dell'utente.

Rispondere alle domande usando i documenti

Un sistema RAG usa innanzitutto la ricerca semantica per trovare articoli che potrebbero essere utili per l'LLM quando compone una risposta. Il passaggio successivo consiste nell'inviare gli articoli corrispondenti al prompt originale dell'utente all'LLM per comporre una risposta.

Si consideri il diagramma seguente come una semplice implementazione rag (talvolta denominata ragingenuo ):

Diagramma che illustra un semplice flusso RAG.

Nel diagramma un utente invia una query. Il primo passaggio consiste nel creare un incorporamento per la richiesta dell'utente di restituire un vettore. Il passaggio successivo consiste nel cercare nel database vettoriale i documenti (o parti di documenti) che sono una corrispondenza più vicina.

La somiglianza del coseno è una misura che consente di determinare quanto siano simili due vettori. Essenzialmente la metrica valuta il coseno dell'angolo tra di essi. Una somiglianza coseno vicina a 1 indica un alto grado di somiglianza (un piccolo angolo). Una somiglianza vicino a -1 indica la differenza (un angolo di quasi 180 gradi). Questa metrica è fondamentale per attività come la somiglianza dei documenti, in cui l'obiettivo è trovare documenti con contenuto o significato simili.

algoritmi dei vicini più prossimi lavorano trovando i vettori più vicini per un punto nello spazio vettoriale. Nell'algoritmo K-nearest neighbors (KNN), k indica il numero di vicini da considerare. Questo approccio viene ampiamente usato nella classificazione e nella regressione, in cui l'algoritmo stima l'etichetta di un nuovo punto dati in base all'etichetta di maggioranza dei relativi k vicini più vicini nel set di addestramento. La somiglianza knn e coseno vengono spesso usate insieme in sistemi come motori di raccomandazione, dove l'obiettivo è trovare elementi più simili alle preferenze di un utente, rappresentati come vettori nello spazio di incorporamento.

Si ottengono i migliori risultati da tale ricerca e si invia il contenuto corrispondente alla richiesta dell'utente per generare una risposta che, si spera, sia basata sul contenuto corrispondente.

Sfide e considerazioni

Un sistema RAG ha un set di sfide di implementazione. La privacy dei dati è fondamentale. Il sistema deve gestire i dati utente in modo responsabile, soprattutto quando recupera ed elabora informazioni da origini esterne. I requisiti di calcolo possono anche essere significativi. Sia il processo di recupero che i processi generativi sono a elevato utilizzo di risorse. Garantire l'accuratezza e la pertinenza delle risposte durante la gestione dei pregiudizi nei dati o nel modello è un'altra considerazione critica. Gli sviluppatori devono affrontare queste sfide con attenzione per creare sistemi RAG efficienti, etici e preziosi.

Creare sistemi di generazione avanzati con recupero avanzato offre altre informazioni sulla creazione di pipeline di dati e inferenza per abilitare un sistema RAG pronto per la produzione.

Se si vuole iniziare subito a sperimentare la creazione di una soluzione di intelligenza artificiale generativa, è consigliabile esaminare Introduzione alla chat usando un esempio di dati personalizzato per Python. L'esercitazione è disponibile anche per .NET, Javae JavaScript.

Ottimizzazione di un modello

Nel contesto di un LLM, la messa a punto è il processo di regolazione dei parametri del modello addestrandolo su un set di dati specifico per il dominio dopo che l'LLM è stato inizialmente addestrato su un set di dati di grandi dimensioni e diversificato.

I moduli LLM vengono sottoposti a training (con training preliminare) su un set di dati ampio, afferrando la struttura del linguaggio, il contesto e un'ampia gamma di conoscenze. Questa fase prevede l'apprendimento di modelli linguistici generali. L'ottimizzazione consente di aggiungere più training al modello con training preliminare in base a un set di dati più piccolo e specifico. Questa fase di training secondaria mira ad adattare il modello per ottenere prestazioni migliori in determinate attività o comprendere domini specifici, migliorandone l'accuratezza e la pertinenza per tali applicazioni specializzate. Durante l'ottimizzazione, i pesi del modello vengono modificati per prevedere meglio o comprendere le sfumature di questo set di dati più piccolo.

Alcune considerazioni:

  • Specializzazione: l'ottimizzazione adatta il modello a attività specifiche, ad esempio l'analisi dei documenti legali, l'interpretazione del testo medico o le interazioni con il servizio clienti. Questa specializzazione rende il modello più efficace in tali aree.
  • efficienza: è più efficiente affinare un modello pre-addestrato per un compito specifico che addestrare un modello da zero. L'ottimizzazione richiede meno dati e meno risorse di calcolo.
  • adattabilità: l'affinamento consente l'adattamento a nuove attività o domini che non fanno parte dei dati di addestramento originali. L'adattabilità delle macchine virtuali li rende versatili strumenti per varie applicazioni.
  • Miglioramento delle prestazioni: per le attività diverse dai dati su cui è stato originariamente eseguito il training del modello, l'ottimizzazione può portare a prestazioni migliori. L'ottimizzazione consente di regolare il modello per comprendere il linguaggio, lo stile o la terminologia specifici usati nel nuovo dominio.
  • Personalizzazione: in alcune applicazioni l'ottimizzazione consente di personalizzare le risposte o le stime del modello in base alle esigenze o alle preferenze specifiche di un utente o di un'organizzazione. Tuttavia, l'ottimizzazione ha limitazioni e svantaggi specifici. Comprendere questi fattori può aiutare a decidere quando optare per l'ottimizzazione rispetto ad alternative come RAG.
  • Requisito dei dati: L'affinamento richiede un set di dati sufficientemente grande e di alta qualità specifico per il compito o il dominio di riferimento. La raccolta e la cura di questo set di dati possono essere complesse e a elevato utilizzo di risorse.
  • Rischio di sovradattamento: il sovradattamento è un rischio, soprattutto con un piccolo insieme di dati. L'overfitting consente di eseguire correttamente il modello sui dati di training, ma in modo poco efficace sui dati nuovi e non visualizzati. La generalizzabilità viene ridotta quando si verifica un adattamento eccessivo.
  • Costi e risorse: Anche se meno intensivo in termini di risorse rispetto all'addestramento da zero, la messa a punto richiede comunque risorse di calcolo, soprattutto per modelli e set di dati di grandi dimensioni. Il costo potrebbe essere proibitivo per alcuni utenti o progetti.
  • Manutenzione e aggiornamento: i modelli ottimizzati potrebbero richiedere aggiornamenti regolari per rimanere efficaci man mano che le informazioni specifiche del dominio cambiano nel tempo. Questa manutenzione continua richiede risorse e dati aggiuntivi.
  • deriva del modello: poiché il modello è ottimizzato per attività specifiche, potrebbe perdere parte della comprensione generale del linguaggio e della versatilità. Questo fenomeno viene chiamato deriva del modello.

Personalizzare un modello tramite l'ottimizzazione spiega come ottimizzare un modello. A livello generale, si fornisce un set di dati JSON di potenziali domande e risposte preferite. La documentazione suggerisce che esistono miglioramenti evidenti fornendo da 50 a 100 coppie di domande e risposte, ma il numero corretto varia notevolmente nel caso d'uso.

Messa a punto vs. RAG

Sulla superficie, potrebbe sembrare che ci sia un po ' di sovrapposizione tra ottimizzazione e RAG. La scelta tra l'ottimizzazione e la generazione aumentata del recupero dipende dai requisiti specifici dell'attività, incluse le aspettative sulle prestazioni, la disponibilità delle risorse e la necessità di specificità del dominio rispetto alla generalizzabilità.

Quando usare l'ottimizzazione invece di RAG:

  • Prestazioni specifiche del compito: Il perfezionamento è preferibile quando è fondamentale ottenere alte prestazioni in un compito specifico e sono disponibili dati sufficienti del dominio per addestrare efficacemente il modello senza rischi significativi di overfitting.
  • Controllare i dati: se si dispone di dati proprietari o altamente specializzati che differiscono significativamente dai dati su cui è stato eseguito il training del modello di base, l'ottimizzazione avanzata consente di incorporare queste informazioni univoce nel modello.
  • Necessità limitata di aggiornamenti in tempo reale: se l'attività non richiede l'aggiornamento costante del modello con le informazioni più recenti, l'ottimizzazione delle informazioni più recenti può essere più efficiente poiché i modelli rag hanno in genere bisogno di accedere a database esterni up-to-date o a Internet per eseguire il pull dei dati recenti.

Quando preferire RAG rispetto alla regolazione fine:

  • contenuto dinamico o contenuto in continua evoluzione: rag è più adatto per le attività in cui le informazioni più aggiornate sono fondamentali. Poiché i modelli RAG possono estrarre dati da origini esterne in tempo reale, sono più adatti per applicazioni come la generazione di notizie o la risposta a domande sugli eventi recenti.
  • Generalizzazione rispetto alla specializzazione: Se l'obiettivo è mantenere prestazioni elevate in un'ampia gamma di argomenti anziché eccellere in un dominio ristretto, RAG potrebbe essere preferibile. Usa knowledge base esterne, consentendo di generare risposte in domini diversi senza il rischio di overfitting a un set di dati specifico.
  • vincoli delle risorse: per le organizzazioni con risorse limitate per la raccolta dei dati e il training dei modelli, l'uso di un approccio RAG potrebbe offrire un'alternativa conveniente all'ottimizzazione, soprattutto se il modello di base esegue già correttamente le attività desiderate.

Considerazioni finali per la progettazione di applicazioni

Ecco un breve elenco di aspetti da considerare e altri aspetti di questo articolo che potrebbero influenzare le decisioni di progettazione dell'applicazione:

  • Scegliere tra messa a punto e RAG in base alle esigenze specifiche dell'applicazione. L'ottimizzazione potrebbe offrire prestazioni migliori per le attività specializzate, mentre RAG potrebbe offrire flessibilità e up-tocontenuto data per le applicazioni dinamiche.