Come abbiamo costruito un modello di evidenziazione semantica per la selezione del contesto RAG e il salvataggio dei token
Il problema: Rumore RAG e spreco di token
Laricerca vettoriale è una base solida per i sistemi RAG: assistenti aziendali, agenti AI, bot di assistenza clienti e altro ancora. Trova in modo affidabile i documenti che contano. Ma il reperimento da solo non risolve il problema del contesto. Anche gli indici ben tarati restituiscono pezzi ampiamente rilevanti, mentre solo una piccola parte delle frasi contenute in quei pezzi risponde effettivamente alla query.
Nei sistemi di produzione, questo divario si manifesta immediatamente. Una singola query può raccogliere decine di documenti, ciascuno lungo migliaia di token. Solo una manciata di frasi contiene il segnale vero e proprio; il resto è contesto che gonfia l'uso dei token, rallenta l'inferenza e spesso distrae il LLM. Il problema diventa ancora più evidente nei flussi di lavoro ad agenti, dove le query stesse sono il risultato di ragionamenti in più fasi e corrispondono solo a piccole parti del testo recuperato.
Questo crea una chiara necessità di un modello in grado di identificare ed evidenziare le frasi utili e ignorare il resto: in sostanza,un filtro di rilevanza a livello di frase, o quello che molti team chiamano context pruning. L'obiettivo è semplice: mantenere le parti che contano ed eliminare il rumore prima che raggiunga l'LLM.
L'evidenziazione tradizionale basata sulle parole chiave non può risolvere questo problema. Ad esempio, se un utente chiede "Come posso migliorare l'efficienza dell'esecuzione del codice Python?", un evidenziatore di parole chiave individuerà "Python" e "efficienza", ma non troverà la frase che risponde effettivamente alla domanda - "Usa le operazioni vettoriali NumPy invece dei loop" - perché non condivide alcuna parola chiave con la query. Ciò di cui abbiamo bisogno è una comprensione semantica, non una corrispondenza di stringhe.
Un modello di evidenziazione semantica per il filtraggio del rumore e la selezione del contesto di RAG
Per facilitare i costruttori di RAG, abbiamo addestrato e reso disponibile un modello di Semantic Highlighting che identifica ed evidenzia le frasi nei documenti recuperati che sono semanticamente più allineate con la query. Il modello offre attualmente lo stato dell'arte delle prestazioni sia in inglese che in cinese ed è stato progettato per essere inserito direttamente nelle pipeline RAG esistenti.
Dettagli del modello
HuggingFace: zilliz/semantic-highlight-bilingual-v1
Licenza: MIT (commercial-friendly)
Architettura: 0,6B modello di solo encoder basato su BGE-M3 Reranker v2
Finestra di contesto: 8192 token
Lingue supportate: Inglese e cinese
L'evidenziazione semantica fornisce i segnali di rilevanza necessari per selezionare solo le parti utili dei lunghi documenti recuperati. In pratica, questo modello consente di:
una migliore interpretabilità, mostrando quali parti di un documento sono effettivamente importanti
riduzione del 70-80% del costo dei token, inviando al LLM solo le frasi evidenziate
Migliore qualità delle risposte, poiché il modello vede meno contesto irrilevante
Un debugging più semplice, perché gli ingegneri possono ispezionare direttamente le corrispondenze a livello di frase.
Risultati della valutazione: Raggiungere le prestazioni SOTA
Abbiamo valutato il nostro modello di evidenziazione semantica su diversi set di dati in inglese e cinese, sia in condizioni di dominio che di non dominio.
Le suite di benchmark comprendono:
QA inglese multi-span: multispanqa
Wikipedia inglese fuori dal dominio: wikitext2
AQ cinese multi-span: multispanqa_zh
Wikipedia cinese fuori dominio: wikitext2_zh
I modelli valutati includono:
Serie Open Provence
Serie Provence/XProvence di Naver
Evidenziatore semantico di OpenSearch
Il nostro modello bilingue addestrato: zilliz/semantic-highlight-bilingual-v1
In tutti e quattro i dataset, il nostro modello raggiunge il primo posto in classifica. E soprattutto, è l'unico modello che ottiene risultati consistenti sia in inglese che in cinese. I modelli concorrenti si concentrano esclusivamente sull'inglese o mostrano evidenti cali di prestazioni sul testo cinese.
Come abbiamo costruito questo modello di evidenziazione semantica
L'addestramento di un modello per questo compito non è la parte più difficile; l'addestramento di un buon modello che gestisca i problemi precedenti e fornisca prestazioni vicine al SOTA è il vero lavoro. Il nostro approccio si è concentrato su due aspetti:
Architettura del modello: utilizzare un progetto di solo encoder per un'inferenza veloce.
Dati di addestramento: generare etichette di rilevanza di alta qualità utilizzando LLM in grado di ragionare e scalare la generazione di dati con framework di inferenza locale.
Architettura del modello
Abbiamo costruito il modello come una rete leggera di sola codifica che tratta la potatura del contesto come un compito di punteggio di rilevanza a livello di token. Questo design si ispira a Provence, un approccio di potatura del contesto presentato da Naver all'ICLR 2025, che riformula la potatura da "scegliere il pezzo giusto" a "segnare ogni token". Questa impostazione si allinea naturalmente con l'evidenziazione semantica, dove i segnali a grana fine sono essenziali.
I modelli di solo codificatore non sono l'architettura più recente, ma in questo caso sono estremamente pratici: sono veloci, facili da scalare e possono produrre punteggi di rilevanza per tutte le posizioni dei token in parallelo. Per un sistema RAG di produzione, questo vantaggio di velocità è molto più importante dell'uso di un modello di decodifica più grande.
Una volta calcolati i punteggi di rilevanza a livello di token, li aggreghiamo in punteggi a livello di frase. Questo passaggio trasforma i segnali rumorosi dei token in una metrica di rilevanza stabile e interpretabile. Le frasi che superano una soglia configurabile vengono evidenziate; tutto il resto viene filtrato. In questo modo si ottiene un meccanismo semplice e affidabile per selezionare le frasi che sono effettivamente importanti per la query.
Processo di inferenza
In fase di esecuzione, il nostro modello di evidenziazione semantica segue una semplice pipeline:
Input - Il processo inizia con una query dell'utente. I documenti recuperati vengono trattati come contesto candidato per la valutazione della rilevanza.
Elaborazione del modello: la query e il contesto vengono concatenati in un'unica sequenza: [BOS] + Query + Contesto
Token Scoring - A ogni token del contesto viene assegnato un punteggio di rilevanza compreso tra 0 e 1, che riflette la sua forte correlazione con la query.
Aggregazione delle frasi: i punteggi dei token vengono aggregati a livello di frase, in genere mediante una media, per produrre un punteggio di rilevanza per ogni frase.
Filtro a soglia: le frasi con punteggi superiori a una soglia configurabile vengono evidenziate e mantenute, mentre le frasi con punteggi bassi vengono filtrate prima di essere passate all'LLM a valle.
Modello di base: BGE-M3 Reranker v2
Abbiamo scelto BGE-M3 Reranker v2 come modello di base per diversi motivi:
Utilizza un'architettura Encoder adatta allo scoring di token e frasi.
Supporta più lingue con ottimizzazione per l'inglese e il cinese
Fornisce una finestra contestuale di 8192 token adatta ai documenti RAG più lunghi.
Mantiene 0,6B parametri - abbastanza forti senza essere computazionalmente pesanti
Assicura una sufficiente conoscenza del mondo nel modello di base
Addestrato per il reranking, che si allinea strettamente con i compiti di giudizio di rilevanza.
Dati di formazione: Annotazione LLM con ragionamento
Una volta messa a punto l'architettura del modello, la sfida successiva è stata la costruzione di un set di dati in grado di addestrare un modello affidabile. Abbiamo iniziato a guardare come Open Provence gestisce questo aspetto. Il loro approccio utilizza set di dati QA pubblici e un piccolo LLM per etichettare le frasi rilevanti. Si tratta di un metodo ben scalabile e facile da automatizzare, il che lo ha reso un buon punto di riferimento per noi.
Ma ci siamo subito imbattuti nello stesso problema descritto da loro: se si chiede a un LLM di produrre direttamente le etichette a livello di frase, i risultati non sono sempre stabili. Alcune etichette sono corrette, altre sono discutibili, ed è difficile ripulire le cose in seguito. Neanche l'annotazione completamente manuale era un'opzione possibile: avevamo bisogno di molti più dati di quelli che avremmo potuto etichettare a mano.
Per migliorare la stabilità senza sacrificare la scalabilità, abbiamo apportato una modifica: il LLM deve fornire un breve frammento di ragionamento per ogni etichetta che produce. Ogni esempio di addestramento include la query, il documento, le frasi e una breve spiegazione del perché una frase è rilevante o irrilevante. Questa piccola modifica ha reso le annotazioni molto più coerenti e ci ha dato qualcosa di concreto a cui fare riferimento durante la validazione o il debug del dataset.
L'inclusione del ragionamento si è rivelata sorprendentemente preziosa:
Maggiore qualità delle annotazioni: La scrittura del ragionamento funziona come un autocontrollo, che riduce le etichette casuali o incoerenti.
Migliore osservabilità: Possiamo vedere perché una frase è stata selezionata, invece di trattare l'etichetta come una scatola nera.
Debug più semplice: Quando qualcosa sembra sbagliato, il ragionamento rende facile individuare se il problema è il prompt, il dominio o la logica di annotazione.
Dati riutilizzabili: Anche se in futuro passiamo a un modello di etichettatura diverso, le tracce del ragionamento rimangono utili per la rietichettatura o la verifica.
Il flusso di lavoro di annotazione si presenta come segue:
Qwen3 8B per l'annotazione
Per l'annotazione, abbiamo scelto Qwen3 8B perché supporta in modo nativo una "modalità di pensiero" attraverso le uscite, rendendo molto più semplice l'estrazione di tracce di ragionamento coerenti. I modelli più piccoli non ci davano etichette stabili e quelli più grandi erano più lenti e inutilmente costosi per questo tipo di pipeline. Qwen3 8B ha raggiunto il giusto equilibrio tra qualità, velocità e costi.
Abbiamo eseguito tutte le annotazioni utilizzando un servizio vLLM locale anziché le API del cloud. Questo ci ha permesso di ottenere un throughput elevato, prestazioni prevedibili e costi molto più bassi: in sostanza, abbiamo scambiato il tempo della GPU con le tariffe dei token API, che è l'affare migliore quando si generano milioni di campioni.
Scala del set di dati
In totale, abbiamo creato oltre 5 milioni di campioni di formazione bilingue, suddivisi in modo approssimativo tra inglese e cinese.
Fonti inglesi: MS MARCO, Natural Questions, GooAQ
Fonti cinesi: DuReader, Wikipedia cinese, mmarco_chinese
Una parte del set di dati proviene dalla rianimazioni di dati esistenti utilizzati da progetti come Open Provence. Il resto è stato generato da corpora grezzi creando prima coppie query-contesto e poi etichettandole con la nostra pipeline basata sul ragionamento.
Tutti i dati di addestramento annotati sono disponibili su HuggingFace per lo sviluppo della comunità e la formazione di riferimento: Dataset Zilliz
Metodo di addestramento
Una volta che l'architettura del modello e il dataset erano pronti, abbiamo addestrato il modello su 8× GPU A100 per tre epoche, il che ha richiesto circa 9 ore di lavoro.
Nota: l'addestramento ha riguardato solo la testa di potatura, responsabile dell'attività di evidenziazione semantica. Non abbiamo addestrato la testa Rerank, poiché concentrandoci solo sull'obiettivo di potatura abbiamo ottenuto risultati migliori per il punteggio di rilevanza a livello di frase.
Caso di studio nel mondo reale
I benchmark raccontano solo una parte della storia, quindi ecco un esempio reale che mostra come il modello si comporta in un caso limite comune: quando il testo recuperato contiene sia la risposta corretta sia un distrattore molto allettante.
Query: Chi ha scritto "L'uccisione del cervo sacro"?
Contesto (5 frasi):
1\. The Killing of a Sacred Deer is a 2017 psychological horror film directed by Yorgos Lanthimos,
with a screenplay by Lanthimos and Efthymis Filippou.
2. The film stars Colin Farrell, Nicole Kidman, Barry Keoghan, Raffey Cassidy,
Sunny Suljic, Alicia Silverstone, and Bill Camp.
3. The story is based on the ancient Greek playwright Euripides’ play Iphigenia in Aulis.
4. The film tells the story of a cardiac surgeon (Farrell) who secretly
befriends a teenager (Keoghan) connected to his past.
5. He introduces the boy to his family, who then mysteriously fall ill.
Risposta corretta: Frase 1 (afferma esplicitamente "sceneggiatura di Lanthimos e Efthymis Filippou")
Questo esempio presenta una trappola: la frase 3 menziona che "Euripide" ha scritto l'opera originale. Ma la domanda chiede "chi ha scritto il film L'uccisione del cervo sacro", e la risposta dovrebbe essere gli sceneggiatori del film, non il drammaturgo greco di migliaia di anni fa.
Risultati del modello
| Modello | Trova la risposta corretta? | Previsione |
|---|---|---|
| Il nostro modello | ✓ | Frasi selezionate 1 (corretta) e 3 |
| XProvence v1 | ✗ | Ha selezionato solo la frase 3, non ha trovato la risposta corretta |
| XProvence v2 | ✗ | Ha selezionato solo la frase 3, non ha risposto correttamente |
Confronto del punteggio della frase chiave:
| Frase | Il nostro modello | XProvence v1 | XProvence v2 |
|---|---|---|---|
| Frase 1 (sceneggiatura cinematografica, risposta corretta) | 0.915 | 0.133 | 0.081 |
| Frase 3 (opera teatrale originale, distrattore) | 0.719 | 0.947 | 0.802 |
Modelli XProvence:
Fortemente attratti da "Euripide" e "opera", assegnano alla frase 3 punteggi quasi perfetti (0,947 e 0,802).
Ignora completamente la risposta effettiva (frase 1), assegnando punteggi estremamente bassi (0,133 e 0,081).
Anche abbassando la soglia da 0,5 a 0,2, non riesce a trovare la risposta corretta.
Il nostro modello:
Attribuisce correttamente alla frase 1 il punteggio più alto (0,915).
Assegna ancora una certa rilevanza alla frase 3 (0,719), perché è legata allo sfondo.
Separa chiaramente le due frasi con un margine di ~0,2
Questo esempio mostra il punto di forza del modello: la comprensione dell'intento della query piuttosto che la semplice corrispondenza con le parole chiave di superficie. In questo contesto, "Chi ha scritto L'uccisione del cervo sacro" si riferisce al film, non all'antica opera teatrale greca. Il nostro modello lo coglie, mentre altri si lasciano distrarre da forti indicazioni lessicali.
Provatelo e diteci cosa ne pensate
Il nostro modello zilliz/semantic-highlight-bilingual-v1 è ora completamente open-sourced sotto licenza MIT e pronto per l'uso in produzione. Potete inserirlo nella vostra pipeline RAG, perfezionarlo per il vostro dominio o costruire nuovi strumenti su di esso. Accogliamo con piacere anche i contributi e i feedback della comunità.
Scarica da HuggingFace: zilliz/semantic-highlight-bilingual-v1
Tutti i dati di addestramento annotati: https://huggingface.co/zilliz/datasets
Evidenziazione semantica disponibile in Milvus e Zilliz Cloud
L'evidenziazione semantica è integrata direttamente in Milvus e Zilliz Cloud (il Milvus completamente gestito), offrendo agli utenti una visione chiara del motivo per cui ogni documento è stato recuperato. Invece di scansionare interi pezzi, si vedono immediatamente le frasi specifiche che si riferiscono alla query, anche quando il testo non corrisponde esattamente. Questo rende il recupero più facile da capire e molto più veloce da debuggare. Per le pipeline RAG, chiarisce anche su cosa ci si aspetta che si concentri l'LLM a valle, aiutando così la progettazione immediata e i controlli di qualità.
Provate gratuitamente l'Evidenziazione Semantica in uno Zilliz Cloud completamente gestito
Ci piacerebbe sapere come funziona per voi: segnalazioni di bug, idee di miglioramento o qualsiasi altra cosa scopriate durante l'integrazione nel vostro flusso di lavoro.
Se volete parlare di qualcosa di più dettagliato, non esitate a unirvi al nostro canale Discord o a prenotare una sessione di 20 minuti di Milvus Office Hours. Siamo sempre felici di chiacchierare con altri costruttori e di scambiarci appunti.
Riconoscimenti
Questo lavoro si basa su molte grandi idee e contributi open-source, e vogliamo sottolineare i progetti che hanno reso possibile questo modello.
Provence ha introdotto un'inquadratura pulita e pratica per la potatura del contesto utilizzando modelli di codificatori leggeri.
Open Provence ha fornito una base di codice solida e ben progettata - pipeline di addestramento, elaborazione dei dati e teste del modello - sotto una licenza permissiva. Ci ha fornito un solido punto di partenza per la sperimentazione.
Su queste basi, abbiamo aggiunto diversi contributi personali:
Utilizzo del ragionamento LLM per generare etichette di rilevanza di qualità superiore.
Creazione di quasi 5 milioni di campioni di addestramento bilingue allineati ai carichi di lavoro reali di RAG.
Scelta di un modello di base più adatto alla valutazione della rilevanza in contesti lunghi(BGE-M3 Reranker v2).
Addestramento del solo Pruning Head per specializzare il modello per l'evidenziazione semantica.
Siamo grati ai team Provence e Open Provence per aver pubblicato apertamente il loro lavoro. I loro contributi hanno accelerato in modo significativo il nostro sviluppo e reso possibile questo progetto.
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word



