Passa al contenuto principale

Migliorare il recupero e RAG con la messa a punto del modello di embedding

Improving Retrieval and RAG with Embedding Model Finetuning

Summary

  • Come l'affinamento dei modelli di embedding aumenta l'accuratezza del recupero e di RAG
  • Principali miglioramenti delle prestazioni nei benchmark
  • Introduzione all'affinamento degli embedding su Databricks

Ottimizzazione fine dei modelli di embedding per un migliore recupero e RAG

TL;DR: L'ottimizzazione fine di un modello di embedding sui dati in-domain può migliorare significativamente la ricerca vettoriale e l'accuratezza della generazione aumentata dal recupero (RAG). Con Databricks, è facile ottimizzare, distribuire e valutare i modelli di embedding per ottimizzare il recupero per il tuo caso d'uso specifico, sfruttando i dati sintetici senza etichettatura manuale.

Perché è importante: se il tuo sistema di ricerca vettoriale o RAG non sta recuperando i risultati migliori, l'ottimizzazione fine di un modello di embedding è un modo semplice ma efficace per migliorare le prestazioni. Che tu abbia a che fare con documenti finanziari, knowledge base o documentazione di codice interno, l'ottimizzazione fine può fornirti risultati di ricerca più pertinenti e risposte LLM downstream migliori.

Cosa abbiamo scoperto: abbiamo ottimizzato e testato due modelli di embedding su tre set di dati aziendali e abbiamo riscontrato importanti miglioramenti nelle metriche di recupero (Recall@10) e nelle prestazioni RAG downstream. Ciò significa che l'ottimizzazione fine può cambiare radicalmente l'accuratezza senza richiedere l'etichettatura manuale, sfruttando solo i dati esistenti.

Vuoi provare l'ottimizzazione fine dell'embedding? Forniamo una soluzione di riferimento per aiutarti a iniziare. Databricks semplifica la ricerca vettoriale, RAG, il reranking e l'ottimizzazione fine dell'embedding. Contatta il tuo Account Executive o Solutions Architect di Databricks per maggiori informazioni.

L'ottimizzazione fine in-domain può migliorare l'accuratezza del recupero
Figura 1 L'ottimizzazione fine in-domain può migliorare l'accuratezza del recupero. Recall@10 per due modelli di embedding su tre set di dati.

Perché ottimizzare gli embedding?

I modelli di embedding alimentano i moderni sistemi di ricerca vettoriale e RAG. Un modello di embedding trasforma il testo in vettori, rendendo possibile trovare contenuti pertinenti in base al significato piuttosto che solo alle parole chiave. Tuttavia, i modelli standard non sono sempre ottimizzati per il tuo dominio specifico: ecco dove entra in gioco l'ottimizzazione fine.

L'ottimizzazione fine di un modello di embedding su dati specifici del dominio aiuta in diversi modi:

  • Aumenta l'accuratezza del recupero: gli embedding personalizzati migliorano i risultati di ricerca allineandosi ai tuoi dati.
  • Migliora le prestazioni RAG: un recupero migliore riduce le allucinazioni e consente risposte di IA generativa più fondate.
  • Migliora i costi e la latenza: un modello ottimizzato più piccolo a volte può superare alternative più grandi e costose.

In questo post del blog, mostriamo che l'ottimizzazione fine di un modello di embedding è un modo efficace per migliorare il recupero e le prestazioni RAG per casi d'uso aziendali specifici per attività.

Risultati: l'ottimizzazione fine funziona

Abbiamo ottimizzato due modelli di embedding (gte-large-en-v1.5 e e5-mistral-7b-instruct) su dati sintetici e li abbiamo valutati su tre set di dati della nostra Domain Intelligence Benchmark Suite (DIBS) (FinanceBench, ManufactQA e Databricks DocsQA). Li abbiamo quindi confrontati con text-embedding-3-large di OpenAI.

Punti chiave:

  • L'ottimizzazione fine ha migliorato l'accuratezza del recupero tra i set di dati, spesso superando significativamente i modelli di base.
  • Gli embedding ottimizzati hanno funzionato bene o meglio del reranking in molti casi, dimostrando che possono essere una solida soluzione autonoma.
  • Un recupero migliore ha portato a prestazioni RAG migliori su FinanceBench, dimostrando vantaggi end-to-end.

Prestazioni di recupero

Dopo aver confrontato tre set di dati, abbiamo scoperto che l'ottimizzazione fine dell'embedding migliora l'accuratezza su due di questi set di dati. La figura 1 mostra che per FinanceBench e ManufactQA, gli embedding ottimizzati hanno superato le loro versioni base, a volte anche battendo il modello API di OpenAI (grigio chiaro). Per Databricks DocsQA, tuttavia, l'accuratezza di text-embedding-3-large di OpenAI supera tutti i modelli ottimizzati. È possibile che ciò sia dovuto al fatto che il modello è stato addestrato sulla documentazione pubblica di Databricks. Ciò dimostra che, sebbene l'ottimizzazione fine possa essere efficace, dipende fortemente dal set di dati di addestramento e dall'attività di valutazione.

Ottimizzazione fine vs. Reranking

Abbiamo quindi confrontato i risultati di cui sopra con il reranking basato su API utilizzando voyageai/rerank-1 (Figura 2). Un reranker in genere prende i primi k risultati recuperati da un modello di embedding, li riordina in base alla pertinenza della query di ricerca e quindi restituisce i primi k riordinati (nel nostro caso k=30 seguito da k=10). Ciò funziona perché i reranker sono in genere modelli più grandi e potenti dei modelli di embedding e modellano anche l'interazione tra la query e il documento in un modo più espressivo.

L'ottimizzazione fine in-domain può essere competitiva con il reranking
Figura 2 L'ottimizzazione fine in-domain può essere competitiva con il reranking. Recall@10 su tre set di dati.

Quello che abbiamo scoperto è stato:

  • L'ottimizzazione fine di gte-large-en-v1.5 ha superato il reranking su FinanceBench e ManufactQA.
  • text-embedding-3-large di OpenAI ha beneficiato del reranking, ma i miglioramenti sono stati marginali su alcuni set di dati.
  • Per Databricks DocsQA, il reranking ha avuto un impatto minore, ma l'ottimizzazione fine ha comunque portato miglioramenti, mostrando la natura dipendente dal set di dati di questi metodi.

I reranker di solito comportano una latenza di inferenza per query e un costo aggiuntivi rispetto ai modelli di embedding. Tuttavia, possono essere utilizzati con i database vettoriali esistenti e in alcuni casi possono essere più convenienti rispetto al re-embedding dei dati con un modello di embedding più recente. La scelta di utilizzare o meno un reranker dipende dal tuo dominio e dai tuoi requisiti di latenza/costo.

L'ottimizzazione fine aiuta le prestazioni RAG

Per FinanceBench, un recupero migliore si è tradotto direttamente in una migliore accuratezza RAG se combinato con GPT-4o (vedi Appendice). Tuttavia, nei domini in cui il recupero era già forte, come Databricks DocsQA, l'ottimizzazione fine non ha aggiunto molto, evidenziando che l'ottimizzazione fine funziona meglio quando il recupero è un chiaro collo di bottiglia.

LEADER PER LA 5ª VOLTA

Gartner®: Databricks leader dei database cloud

Come abbiamo ottimizzato e valutato i modelli di embedding

Ecco alcuni dei dettagli più tecnici della nostra generazione di dati sintetici, dell'ottimizzazione fine e della valutazione.

Modelli di embedding

Abbiamo ottimizzato due modelli di embedding open source:

  • gte-large-en-v1.5 è un modello di embedding popolare basato su BERT Large (434 milioni di parametri, 1,75 GB). Abbiamo scelto di eseguire esperimenti su questo modello a causa delle sue dimensioni modeste e della licenza aperta. Questo modello di embedding è attualmente supportato anche sull'API del modello di fondazione Databricks.
  • e5-mistral-7b-instruct appartiene a una nuova classe di modelli di embedding costruiti sopra LLM potenti (in questo caso Mistral-7b-instruct-v0.1). Sebbene e5-mistral-7b-instruct sia migliore nei benchmark di embedding standard come MTEB e sia in grado di gestire prompt più lunghi e sfumati, è molto più grande di gte-large-en-v1.5 (poiché ha 7 miliardi di parametri) ed è leggermente più lento e costoso da servire.

Li abbiamo quindi confrontati con text-embedding-3-large di OpenAI.

Set di dati di valutazione

Abbiamo valutato tutti i modelli sui seguenti set di dati della nostra Domain Intelligence Benchmark Suite (DIBS): FinanceBench, ManufactQA e Databricks DocsQA.

Set di dati Descrizione # Query # Corpus
FinanceBench Domande sui documenti SEC 10-K generate da esperti umani. Il recupero viene eseguito su singole pagine da un superset di 360 documenti SEC 10-K. 150 53.399
ManufactQA Domande e risposte campionate dai forum pubblici di un produttore di dispositivi elettronici. 6.787 6.787
Databricks DocsQA Domande basate sulla documentazione di Databricks disponibile pubblicamente generata da esperti di Databricks. 139 7.561

Riportiamo recall@10 come metrica di recupero principale; questo misura se il documento corretto si trova tra i primi 10 documenti recuperati.

Lo standard di riferimento per la qualità del modello di embedding è il benchmark MTEB, che incorpora attività di recupero come BEIR e molte altre attività non di recupero. Sebbene modelli come gte-large-en-v1.5 ed e5-mistral-7b-instruct funzionino bene su MTEB, eravamo curiosi di vedere come si comportavano nelle nostre attività aziendali interne.

Dati di addestramento

Abbiamo addestrato modelli separati su dati sintetici personalizzati per ciascuno dei benchmark di cui sopra:

Set di addestramento Descrizione # Campioni univoci
FinanceBench sintetico Query generate da 2.400 documenti SEC 10-K ~6.000
QA Databricks Docs sintetico Query generate dalla documentazione pubblica di Databricks. 8.727
ManufactQA Query generate da PDF di produzione elettronica 14.220

Per generare il set di addestramento per ogni dominio, abbiamo preso i documenti esistenti e generato query di esempio basate sul contenuto di ogni documento utilizzando LLM come Llama 3 405B. Le query sintetiche sono state quindi filtrate per la qualità da un LLM-as-a-judge (GPT4o). Le query filtrate e i relativi documenti sono stati quindi utilizzati come coppie contrastive per l'ottimizzazione fine. Abbiamo utilizzato negativi in batch per l'addestramento contrastivo, ma l'aggiunta di negativi difficili potrebbe migliorare ulteriormente le prestazioni (vedi Appendice).

Ottimizzazione degli iperparametri

Abbiamo eseguito ricerche su:

  • Tasso di apprendimento, dimensione del batch, temperatura softmax
  • Conteggio delle epoche (1-3 epoche testate)
  • Variazioni del prompt di query (ad esempio, "Query:" rispetto ai prompt basati su istruzioni)
  • Strategia di pooling (pooling medio vs. pooling dell'ultimo token)

Tutta l'ottimizzazione fine è stata eseguita utilizzando le librerie open source mosaicml/composer, mosaicml/llm-foundry e mosaicml/streaming sulla piattaforma Databricks.

Come migliorare la ricerca vettoriale e RAG su Databricks

L'ottimizzazione fine è solo un approccio per migliorare la ricerca vettoriale e le prestazioni RAG; di seguito elenchiamo alcuni approcci aggiuntivi.

Per un recupero migliore:

  • Usa un modello di embedding migliore: molti utenti lavorano inconsapevolmente con embedding obsoleti. La semplice sostituzione con un modello più performante può produrre guadagni immediati. Controlla la classifica MTEB per i modelli migliori.
  • Prova la ricerca ibrida: combina gli embedding densi con la ricerca basata su parole chiave per una maggiore accuratezza. Databricks Vector Search lo rende facile con una soluzione con un clic.
  • Usa un reranker: un reranker può perfezionare i risultati riordinandoli in base alla pertinenza. Databricks lo fornisce come funzionalità integrata (attualmente in Private Preview). Contatta il tuo Account Executive per provarlo.

Per un RAG migliore:

Inizia con l'ottimizzazione fine su Databricks

L'ottimizzazione fine degli embedding può essere una facile vittoria per migliorare il recupero e RAG nei tuoi sistemi di IA. Su Databricks, puoi:

  • Ottimizza e servi i modelli di embedding su un'infrastruttura scalabile.
  • Usa strumenti integrati per la ricerca vettoriale, il reranking e RAG.
  • Testa rapidamente diversi modelli per trovare ciò che funziona meglio per il tuo caso d'uso.

Pronto a provarlo? Abbiamo creato una soluzione di riferimento per semplificare l'ottimizzazione fine: contatta il tuo Account Executive o Solutions Architect di Databricks per ottenere l'accesso.

Appendice

 

Dimensioni

FinanceBench Recall@10

ManufactQA Recall@10

DocsQA Recall@10

Baseline

Ottimizzato

Baseline

Ottimizzato

Baseline

(Questo post sul blog è stato tradotto utilizzando strumenti basati sull'intelligenza artificiale) Post originale

Non perdere mai un post di Databricks

Iscriviti al nostro blog e ricevi gli ultimi post direttamente nella tua casella di posta elettronica.