notizia

Perché il modello di interazione ritardata è lo standard per la prossima generazione di RAG?

2024-08-05

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina



La rubrica AIxiv è una rubrica in cui Machine Heart pubblica contenuti accademici e tecnici. Negli ultimi anni, la rubrica Heart of the Machine AIxiv ha ricevuto più di 2.000 segnalazioni, riguardanti i migliori laboratori delle principali università e aziende di tutto il mondo, promuovendo efficacemente gli scambi accademici e la divulgazione. Se hai un lavoro eccellente che desideri condividere, non esitare a contribuire o contattarci per segnalarlo. E-mail di presentazione: [email protected] [email protected];

Zhang Yingfeng: co-fondatore di Infra, con molti anni di esperienza nello sviluppo di infrastrutture di ricerca, intelligenza artificiale e Infra, sta attualmente lavorando alla costruzione della prossima generazione di prodotti core RAG.

Nello sviluppo del sistema RAG, un buon modello Reranker è un collegamento indispensabile e viene sempre utilizzato in varie valutazioni. Questo perché le query rappresentate dalla ricerca vettoriale dovranno affrontare il problema del basso tasso di successo, quindi è necessario un modello Reranker avanzato per rimediare questo, formando così un'architettura di ordinamento a due stadi che utilizza la ricerca vettoriale come screening grossolano e il modello Reranker come ordinamento fine.

Attualmente esistono due tipi principali di architetture per i modelli di ranking:

1. Doppio codificatore. Prendendo come esempio il modello BERT, codifica query e documenti separatamente e infine passa attraverso un livello di pooling in modo che l'output contenga un solo vettore. Nella fase Classifica della query, devi solo calcolare la somiglianza di due vettori, come mostrato nella figura seguente. I doppi codificatori possono essere utilizzati sia per le fasi di classificazione che per quelle di riclassificazione e la ricerca vettoriale è in realtà questo modello di classificazione. Poiché il doppio codificatore codifica la query e il documento separatamente, non può catturare la complessa relazione interattiva tra la query e i token del documento, il che causerà tuttavia molta perdita semantica, poiché è necessaria solo la ricerca vettoriale per completare l'ordinamento e il punteggio calcolo, l'efficienza di esecuzione è migliorata molto.



2. Codificatore incrociato. Cross-Encoder utilizza un modello di codificatore singolo per codificare query e documenti simultaneamente. Può acquisire la complessa interazione tra query e documenti, in modo da fornire risultati di classificazione della ricerca più accurati. Cross-Encoder non restituisce il vettore corrispondente al token della query e del documento, ma aggiunge un classificatore per restituire direttamente il punteggio di somiglianza della query e del documento. Lo svantaggio è che, a causa della necessità di codificare congiuntamente ogni documento e query al momento della query, il che rende l'ordinamento molto lento, Cross-Encoder può essere utilizzato solo per riordinare i risultati finali. Ad esempio, il completamento del riordinamento della Top 10 dei risultati dello screening preliminare richiede ancora pochi secondi.



Da quest'anno, un altro tipo di lavoro rappresentato da ColBERT [Riferimento 1] ha attirato l'attenzione diffusa nella comunità di sviluppo RAG. Come mostrato nella figura seguente, presenta alcune caratteristiche che sono significativamente diverse dai due tipi di modelli di classificazione precedenti:

Uno è che rispetto a Cross Encoder, ColBERT utilizza ancora una strategia a doppio codificatore per codificare query e documenti utilizzando codificatori indipendenti. Pertanto, il token della query e il token del documento non si influenzano a vicenda durante la codifica. Questa separazione rende la codifica del documento più efficiente. Può essere elaborato offline e solo la query viene codificata durante l'esecuzione della query, quindi la velocità di elaborazione è molto più elevata rispetto a Cross Encoder;

Il secondo è che rispetto al doppio codificatore, ColBERT emette più vettori invece di un singolo vettore, che viene ottenuto direttamente dall'ultimo livello di uscita del Transformer, mentre il doppio codificatore converte più vettori in un vettore attraverso un livello di pooling. perdendo così parte della semantica.

Nel calcolo dell'ordinamento, ColBERT introduce una funzione di somiglianza del calcolo interattivo ritardato e la chiama somiglianza massima (MaxSim). Il metodo di calcolo è il seguente: per ogni vettore Token di query, la somiglianza viene calcolata con i vettori corrispondenti a tutti i Token del documento tenere traccia del punteggio massimo per ciascun token di query. Il punteggio totale per la query e il documento è la somma di questi punteggi massimi del coseno. Ad esempio, per una query con 32 vettori Token (la lunghezza massima della query è 32) e un documento con 128 Token, è necessario eseguire 32*128 operazioni di somiglianza, come mostrato nella figura seguente.

Quindi in confronto si può chiamare Cross EncoderModello di interazione precoce, e il lavoro rappresentato da ColBERT può essere chiamatoModello di interazione tardiva.



La figura seguente mette a confronto i modelli di smistamento sopra menzionati in termini di prestazioni e qualità di smistamento. Poiché il modello di interazione ritardata soddisfa la capacità di acquisire le complesse interazioni tra query e documenti durante il processo di ordinamento ed evita anche il sovraccarico della codifica dei token dei documenti, non solo può garantire buoni effetti di ordinamento, ma anche ottenere prestazioni di ordinamento più rapide. la stessa scala di dati, l'efficienza di ColBERT può essere più di 100 volte quella di Cross Encoder. Pertanto, il modello di interazione ritardata è un modello di ordinamento molto promettente. Un'idea naturale è:Il modello di interazione ritardata può essere utilizzato direttamente in RAG per sostituire l'architettura di ordinamento a due stadi di ricerca vettoriale + ordinamento fine?



A tal fine, dobbiamo considerare alcune questioni nell’ingegneria ColBERT:

1. La funzione di somiglianza interattiva ritardata MaxSim di ColBERT ha un'efficienza computazionale molto più elevata rispetto a Cross Encoder, ma rispetto alla normale ricerca vettoriale, il sovraccarico computazionale è ancora molto elevato: poiché la somiglianza tra la query e il documento è un calcolo multi-vettore, la funzione di somiglianza interattiva ritardata MaxSim l'overhead è M * N volte quello del normale calcolo della similarità vettoriale (M è il numero di token nella query, N è il numero di token nel documento). In risposta a questi, l'autore di ColBERT ha lanciato ColBERT v2 nel 2021 [Riferimento 2], che ha migliorato la qualità dell'incorporamento generato tramite Cross Encoder e distillazione del modello e ha utilizzato la tecnologia di compressione per quantizzare il vettore del documento generato, migliorando così il calcolo di Prestazioni MaxSim. Il progetto RAGatouille [Riferimento 3] basato sul packaging ColBERT v2 diventa una soluzione per lo smistamento RAG di alta qualità. Tuttavia, ColBERT v2 è solo una libreria di algoritmi ed è ancora difficile utilizzarla end-to-end nei sistemi RAG di livello aziendale.

2. Poiché ColBERT è un modello pre-addestrato e i dati di addestramento provengono dalle query del motore di ricerca e dai risultati restituiti, questi dati di testo non sono grandi. Ad esempio, il numero di token di query è 32 e il numero di token di documento è 128 , che sono i tipici limiti di lunghezza. Pertanto, quando ColBERT viene utilizzato per dati reali, la lunghezza che supera il limite verrà troncata, il che non è utile per il recupero di documenti lunghi.

Sulla base dei problemi di cui sopra, il database nativo AI open source Infinity fornisce il tipo di dati Tensor nella versione più recente e fornisce nativamente la soluzione ColBERT end-to-end. Quando Tensore viene utilizzato come tipo di dati, più vettori generati dalla codifica ColBERT possono essere archiviati direttamente in un Tensore, quindi la somiglianza tra Tensori può derivare direttamente il punteggio MaxSim. In risposta al problema della grande quantità di calcoli di MaxSim, Infinity ha dato due soluzioni da ottimizzare: una è la quantizzazione binaria, che può rendere lo spazio del Tensore originale solo 1/32 della dimensione originale, ma non cambia il relativo ordinamento del risultato dei calcoli MaxSim. Questa soluzione viene utilizzata principalmente per Reranker, perché è necessario estrarre il Tensore corrispondente in base ai risultati della precedente fase di screening grossolano. L'altro è Tensor Index. ColBERTv2 è in realtà l'implementazione dell'indice Tensor lanciata dall'autore di ColBERT. Infinity utilizza EMVB [Riferimento 4], che può essere considerato un miglioramento di ColBERT v2, principalmente attraverso la tecnologia di quantificazione e pre-filtraggio e SIMD. vengono introdotte istruzioni sulle operazioni chiave per velocizzare l'implementazione. L'indice tensore può essere utilizzato solo per servire Ranker anziché Reranker. Inoltre, per testi lunghi che superano il limite dei Token, Infinity introduce la tipologia Tensor Array:



Un documento che supera il limite di ColBERT verrà diviso in più paragrafi rispettivamente dopo aver codificato e generato Tensori, verranno salvati sulla stessa riga del documento originale. Quando si calcola MaxSim, la query e questi paragrafi vengono calcolati separatamente, quindi il valore massimo viene preso come punteggio dell'intero documento. Come mostrato di seguito:



Pertanto, utilizzando Infinity, è possibile introdurre un modello di interazione ritardata end-to-end per servire RAG con alta qualità. Quindi, ColBERT dovrebbe essere utilizzato come Ranker o Reranker? Di seguito utilizziamo Infinity per condurre valutazioni su set di dati reali. Poiché l'ultima versione di Infinity implementa la soluzione di ricerca ibrida più completa della storia, i metodi di richiamo includono la ricerca vettoriale, la ricerca di tutto il testo, la ricerca vettoriale sparsa, il Tensore menzionato sopra e qualsiasi combinazione di questi metodi e fornisce una varietà di metodi Reranker , come RRF e ColBERT Reranker, quindi nella recensione includiamo varie combinazioni di ricerca ibrida e Reranker.

Utilizziamo il set di dati MLDR per la valutazione. MLDR è un set di benchmark utilizzato da MTEB [Riferimento 5] per valutare la qualità dei modelli di incorporamento MLDR è uno dei set di dati, chiamato Multi Long Document Retrieval e contiene un totale di 200.000 dati di testo lunghi. La valutazione utilizza BGE-M3 [Riferimento 6] come modello di incorporamento, Jina-ColBERT [Riferimento 7] per generare Tensor e anche lo script di valutazione viene inserito nel magazzino Infinity [Riferimento 8].

Valutazione 1: ColBERT è efficace come Reranker? Utilizza BGE-M3 per generare vettori densi e vettori sparsi da 200.000 dati MLDR e inserirli nel database Infinity. Il database contiene 4 colonne, che memorizzano rispettivamente testo originale, vettori, vettori sparsi e tensori e creano il testo completo corrispondente. rispettivamente indici e vettori. Indice, indice vettoriale sparso. La valutazione include tutte le combinazioni di richiamo, compreso il richiamo a una via, il richiamo a due vie e il richiamo a tre vie, come segue:



L'indice di valutazione adotta nDCG@10. Altri parametri: quando si utilizza RRF Reranker, i primi N = 1000 restituiti dallo screening approssimativo, il numero totale di query è 800 e la lunghezza media delle query è di circa 10 token.



Come si può vedere dalla figura, tutte le soluzioni di richiamo hanno migliorato significativamente i risultati dopo aver utilizzato ColBERT Reranker. Come modello di interazione ritardata, ColBERT può fornire una qualità di classificazione paragonabile a quella in cima alle classifiche Reranker di MTEB, ma le prestazioni sono 100 volte superiori, quindi il riclassificazione può essere eseguito su scala più ampia. I risultati mostrati nella figura sono per Top 100 Reranker e Top 1000 viene utilizzato per il riordino ColBERT. I valori non cambiano in modo significativo e le prestazioni diminuiscono in modo significativo, quindi non è consigliabile. Tradizionalmente, quando si utilizza un Reranker esterno basato su Cross Encoder, si verificherà un ritardo di secondo livello nella Top 10. Tuttavia, Infinity implementa internamente il ColBERT Reranker ad alte prestazioni. Anche se la Top 100 o anche la Top 1000 vengono riordinate. l'esperienza dell'utente non sarà influenzata. Tuttavia, l'ambito del richiamo è notevolmente aumentato, quindi l'effetto del ranking finale può essere notevolmente migliorato. Inoltre, questo calcolo ColBERT Reranker deve essere eseguito solo su un'architettura puramente CPU, il che riduce notevolmente anche i costi di implementazione.

Valutazione 2: Il confronto si basa su ColBERT come Ranker piuttosto che come Reranker. Pertanto, è necessario costruire un indice tensore per i dati della colonna tensore. Allo stesso tempo, per valutare la perdita di accuratezza introdotta dal Tensor Index, è stata eseguita anche una ricerca di forza bruta.



Si può vedere che rispetto a Reranker, anche utilizzando la ricerca con forza bruta senza perdita di precisione, non vi è alcun miglioramento significativo e la qualità di ordinamento basata sull'indice tensore è addirittura inferiore rispetto all'utilizzo di Reranker. Tuttavia, il tempo di query come Ranker è molto più lento: il set di dati MLDR contiene 200.000 dati di documenti, ovvero circa 2 GB. Dopo aver utilizzato Jina-ColBERT per convertirli in dati Tensor, arriva fino a 320 G. Questo perché il file. Il tipo di dati tensore è un documento. Il vettore corrispondente a ciascun token del documento deve essere salvato. La dimensione del modello ColBERT è di 128 dimensioni, quindi il volume di dati predefinito si espanderà di 2 ordini di grandezza anche se viene creato un indice tensore , saranno necessari in media 7 secondi per eseguire una query su così tanti dati. Restituisce una query ma non ottiene risultati migliori.

Pertanto, è ovvio che ColBERT è molto più redditizio come Reranker che come Ranker. La migliore soluzione attuale per il recupero RAG consiste nell'aggiungere ColBERT Reranker sulla base della ricerca ibrida a 3 vie (ricerca full-text + vettore + vettore sparso). Alcuni partner potrebbero chiedere, per utilizzare ColBERT Reranker, è necessario aggiungere una colonna Tensore separata e la colonna si espanderà di 2 ordini di grandezza rispetto al set di dati originale. Ne vale la pena? Prima di tutto: Infinity fornisce il metodo di quantizzazione binaria per Tensor Come Reranker, non influisce molto sui risultati dell'ordinamento, ma può rendere i dati finali solo 1/32 della dimensione originale del Tensor. In secondo luogo, anche così, alcune persone penseranno che questo sovraccarico sia troppo elevato. Tuttavia, dal punto di vista dell'utente, conviene comunque utilizzare più spazio di archiviazione in cambio di una migliore qualità di smistamento e di costi più bassi (il processo di smistamento non richiede una GPU). Infine, credo che presto verrà lanciato un modello di Late Interaction con prestazioni leggermente ridotte ma sovraccarico di archiviazione notevolmente ridotto. Come infrastruttura di infrastruttura dati, è trasparente a questi cambiamenti ed è una scelta saggia trasferire questi compromessi agli utenti.

Quanto sopra si basa sulla valutazione del richiamo multicanale di Infinity sul set di dati MLDR. I risultati della valutazione su altri set di dati potrebbero essere diversi, ma la conclusione generale non cambierà: ricerca ibrida a 3 vie + riordino basato su tensore è il richiamo attuale. metodo con risultati di ricerca della massima qualità.

Da ciò si può vedere che ColBERT e il suo modello di interazione ritardata hanno un grande valore applicativo negli scenari RAG. Quanto sopra è il lavoro correlato sulla generazione di contenuti di dialoghi testuali. Recentemente, i modelli di interazione ritardata hanno ottenuto il riconoscimento SOTA anche in scenari multimodali. Si tratta di ColPali [Riferimento 9], che modifica il flusso di lavoro di RAG, come mostrato nella figura seguente:



Quando RAG affronta documenti di formato complesso, l'attuale SOTA utilizza un modello di riconoscimento del documento per identificare il layout del documento, quindi richiama il modello corrispondente per le strutture parziali identificate, come grafici, immagini, ecc., per convertirle nel corrispondente il testo viene quindi salvato nel database di supporto RAG in vari formati. ColPali elimina questi passaggi e utilizza direttamente modelli multimodali per generare contenuti incorporati. Quando si pongono domande è possibile rispondere direttamente in base alle tabelle presenti nel documento:



L'addestramento del modello ColPali è simile a ColBERT, anch'esso utilizza la forma di coppie di pagine query-documento per catturare l'associazione semantica tra dati multimodali della query e del documento, ma utilizzando PaliGemma [Riferimento 10] per generare incorporamenti multimodali. Rispetto a BiPali, che non utilizza il meccanismo Late Interaction ma utilizza anche PaliGemma per generare Embedding, il confronto dell'indice di valutazione di nDCG@5 è 81,3 vs 58,8. Questo divario è la differenza tra "eccellente" e "non può funzionare affatto".



Pertanto, sebbene siano trascorsi 4 anni dalla comparsa di ColBERT, l'applicazione del modello Late Interaction in RAG amplierà sicuramente gli scenari di utilizzo di RAG e fornirà un richiamo semantico di alta qualità in scene RAG complesse, inclusa la multimodalità. Infinity è già pronto per la sua applicazione end-to-end. Benvenuto su Star Infinity, https://github.com/infiniflow/infinity, e si impegna a diventare il miglior database nativo AI!

Riferimenti

1. Colbert: Ricerca efficiente ed efficace dei passaggi tramite interazione tardiva contestualizzata su bert, SIGIR 2020.

2. Colbertv2: Recupero efficace ed efficiente tramite interazione tardiva leggera, arXiv:2112.01488, 2021.

3. RAGatouille https://github.com/bclavie/RAGatouille

4. Recupero denso multivettore efficiente con vettori di bit, ECIR 2024.

5. https://huggingface.co/mteb

6. https://huggingface.co/BAAI/bge-m3

7. https://huggingface.co/jinaai/jina-colbert-v1-en

8. https://github.com/infiniflow/infinity/tree/main/python/benchmark/mldr_benchmark

9. ColPali: Recupero efficiente di documenti con modelli di linguaggio visivo, arXiv:2407.01449, 2024.

10. https://github.com/google-research/big_vision/tree/main/big_vision/configs/proj/paligemma