Versione 2.0.1 Data: 30/06/2024
Descrizione modello
Il modello slate.125m.english.rtrvr-v2 è un modello standard di trasformatori di frasi basato su bi-encoder. Il modello produce un embedding per un dato input, ad esempio una query, un brano, un documento ecc. Ad alto livello, il nostro modello viene addestrato per massimizzare la somiglianza del coseno tra due testi in ingresso, ad esempio il testo A (testo di interrogazione) e il testo B (testo di passaggio), che risultano nelle incorporazioni di frase q e p. Queste incorporazioni di frasi possono poi essere confrontate utilizzando la similarità del coseno.
Figura 1. Modello di incorporazioni bi-encoder per il recupero
Modello linguistico di base
Il modello linguistico (LM) sottostante per le nostre incorporazioni è “slate.125m.english”. Ha la stessa architettura di un modello di trasformatore RoBERTa-base (12 strati) e ha ~125 milioni di parametri e una dimensione di incorporazione di 768. In particolare, slate.125m.english è stato messo a punto da “slate.125m.english” (in precedenza, WatBERT). Il nostro modello finale si chiama slate.125m.english.rtrvr. Il suffisso indica che l'architettura del modello sottostante è stata messa a punto per compiti basati sul reperimento.
Algoritmo di formazione
La maggior parte dei modelli di incorporazione che sono all'avanguardia o in cima alla classifica MTEB sono in genere addestrati in 3 fasi:
- Pre-training specifico per il compito (basato sul recupero)
- Messa a punto specifica del compito sulle coppie estratte
- Messa a punto delle coppie supervisionate.
Seguiamo lo stesso approccio e infine eseguiamo una fusione di modelli facendo la media dei pesi dei diversi modelli addestrati.
slate.125m.english.rtrvr viene prodotto eseguendo una "fusione di modelli", ovvero una media dei pesi dei seguenti modelli, entrambi addestrati in fasi successive ma con le seguenti variazioni:
- Modello 1 messo a punto in tutte e tre le fasi di cui sopra
- Modello 2 distillato da un modello messo a punto in tutte le fasi precedenti.
Preformazione specifica per il compito
Questa fase utilizza il framework RetroMAE, per rendere il nostro LM sottostante più orientato al recupero. Inizializziamo la nostra LM di base con slate.125m.english e continuiamo con il pre-addestramento RetroMAE, utilizzando i dati della Tabella 1. I nostri iper-parametri sono: tasso di apprendimento: 2e-5, numero di passi: 190000, GPU: 24 A100 40GB.
Nota: questa è la nostra LM di base per le 2 fasi successive.
Messa a punto con dati non supervisionati su larga scala
Questo modello viene inizializzato con il modello pre-addestrato RetroMAE e viene addestrato come segue.
Per l'addestramento di un modello di incorporazione utilizziamo un framework bi-encoder, come nella Figura 1. La LM preaddestrata RetroMAE viene messa a punto con <query, passage>
coppie di testi utilizzando un obiettivo di perdita contrastiva. Abbiamo estratto coppie su larga scala da vari domini, come indicato nella Tabella 2. Il modello viene addestrato con diverse coppie, tra cui compiti di classificazione come NLI (Natural Language Inference) che consiste nel far corrispondere una premessa all'ipotesi corrispondente. I nostri iper-parametri sono: tasso di apprendimento: 2e-4; numero di passi: 35000; GPU: 8 A100_80GB, dimensione effettiva del batch: 16k coppie
Messa a punto con dati supervisionati su piccola scala e con negativi difficili da gestire
Infine, il modello viene messo a punto con coppie di addestramento supervisionate di alta qualità, la cui supervisione proviene dall'hard negative mining, per il compito di recupero. I checkpoint intermedi del modello vengono utilizzati iterativamente per estrarre gli hard negative specifici del set di dati, che vengono poi utilizzati per la messa a punto supervisionata. Questo processo mira a rendere il modello più robusto, consentendogli di imparare dai propri errori e aiutandolo a stabilizzarsi con dati molto più piccoli.
La messa a punto del modello avviene utilizzando un sottoinsieme di set di dati (individuati attraverso l'esecuzione di esperimenti di convalida su un set di dati non utilizzato) menzionati nella sezione Dati di addestramento, che sono i seguenti: AllNLI, Squad, Stackexchange, NQ, HotpotQA, Fever e 5M sottoinsieme da ciascuno di Specter, S2orc, WikiAnswers. Inoltre, generiamo sinteticamente le triple per creare coppie di buona qualità di domande-risposte, verifica dei fatti, ecc. utilizzando Mixtral-8x7B-Instruct-v0.1
. Per fornire prestazioni migliori per i casi d'uso specifici di IBM, includiamo anche le coppie create dai dati di IBM Software Support e IBM Docs.
Gli iperparametri di addestramento sono: tasso di apprendimento: 2e-5; lunghezza max query: 64; lunghezza max passaggio: 512; passi max: 5000; dimensione effettiva del lotto: 512; GPU: 1A100_80GB
Dati di formazione
Dataset | Passages |
---|---|
Wikipedia | 36396918 |
Corpus di libri | 3401308 |
Stack Exchange | 15999837 |
Dataset | Coppie |
---|---|
Tripletta di citazioni SPECTER | 684100 |
Stack Exchange Domande duplicate (titoli) | 304525 |
Stack Exchange Domande duplicate (corpi) | 250519 |
Stack Exchange Domande duplicate (titoli+corpi) | 250460 |
Domande naturali (NQ) | 100231 |
SQuAD2.0 | 87599 |
Coppie PAQ (domanda, risposta) | 64371441 |
Scambio di coppie (Titolo, Risposta) | 4067139 |
Coppie di scambio (titolo, corpo) | 23978013 |
Scambio di coppie (Titolo+Corpo, Risposta) | 187195 |
S2ORC Coppie di citazioni (titoli) | 52603982 |
S2ORC (Titolo, Abstract) | 41769185 |
S2ORC_citations_abstracts | 52603982 |
WikiAnswers Coppie di domande duplicate | 77427422 |
SearchQA | 582261 |
HotpotQA | 85000 |
Febbre | 109810 |
Arxiv | 2358545 |
Wikipedia | 20745403 |
PubMed | 20000000 |
Coppie miracolose | 9016 |
Coppie titolo-corpo DBPedia | 4635922 |
Sintetico: Query-Passaggio di Wikipedia | 1879093 |
Sintetico: Verifica dei fatti | 9888 |
IBM: IBM Docs (Titolo-Corpo) | 474637 |
IBM: IBM Supporto (Titolo-Corpo) | 1049949 |
Utilizzo
# make sure you’ve sentence transformers installed
pip install -U sentence-transformers
from sentence_transformers import SentenceTransformer, util
model = SentenceTransformer('path_to_slate_model')
input_queries = [
' Who made the song My achy breaky heart? ',
'summit define']
input_passages = [
" Achy Breaky Heart is a country song written by Don Von Tress. Originally titled Don't Tell My Heart and performed by The Marcy Brothers in 1991. ",
"Definition of summit for English Language Learners. : 1 the highest point of a mountain : the top of a mountain. : 2 the highest level. : 3 a meeting or series of meetings between the leaders of two or more governments."]
query_embeddings = model.encode(input_queries)
passage_embeddings = model.encode(input_passages)
print(util.cos_sim(query_embeddings, passage_embeddings)
La lunghezza massima della sequenza di questo modello è di 512 token.
Valutazione
Baseline
Per un confronto equo, ci confrontiamo con le seguenti linee di base:
BM25 (un modello tradizionale basato su tf-idf)
ELSER (un algoritmo di ricerca commerciale fornito da Elastic)
all-MiniLM-l6-v2: un popolare modello di trasformatori di frasi open-source. Questo modello condivide la stessa architettura di slate.30m.english.rtrvr, è stato addestrato su un maggior numero di dati senza licenze commerciali. Per maggiori dettagli, consultare la scheda del modello huggingface
E5-base: un recente modello di trasformatore open-source con ottime prestazioni nel benchmark BEIR. Si tratta di un modello di dimensioni base, che ha la stessa architettura di slate.125m.english.rtrvr. [Riferimento: Wang et.al.., 2022: Text Embeddings by Weakly-Supervised Contrastive Pre-training]. Scheda modello Huggingface
E5-small: un modello più piccolo della famiglia open source E5. La dimensione di incorporazione di questo modello corrisponde a quella di slate.30m.rtrvr (384), ma ha 12 strati e quindi è più grande e leggermente più lento. [Riferimento: Wang et.al.., 2022: Text Embeddings by Weakly-Supervised Contrastive Pre-training]. Scheda modello Huggingface
BGE-base: un recente modello di trasformatore open-source con una delle migliori prestazioni sul benchmark BEIR per la dimensione di incorporazione 768. Scheda modello Huggingface
BGE-small: un recente modello di trasformatore open-source con una delle migliori prestazioni nel benchmark BEIR per la dimensione di incorporazione 384. Scheda modello Huggingface
Confrontiamo inoltre le prestazioni di questi modelli con le versioni precedenti dei modelli slate, slate.125m.english.rtrvr-012024 e slate.30m.english.rtrvr-012024.
Il nostro benchmark di valutazione: BEIR(scheda di reperimento di MTEB)
Il benchmark BEIR contiene 15 compiti di recupero open-source valutati in un'impostazione a zero colpi. Il BEIR si è concentrato sulla Diversità, includendo nove diversi compiti di recupero: Fact checking, citation prediction, duplicate question retrieval, argument retrieval, news retrieval, question answering, tweet retrieval, bio-medical IR e entity retrieval. Inoltre, include dataset provenienti da domini testuali diversi, dataset che coprono argomenti ampi (come Wikipedia) e argomenti specialistici (come le pubblicazioni COVID-19), diversi tipi di testo (articoli di notizie vs. Tweets), dataset di varie dimensioni (3.6k - 15M documenti) e dataset con diverse lunghezze di query (lunghezza media della query tra 3 e 192 parole) e di documenti (lunghezza media del documento tra 11 e 635 parole). Per la valutazione, BEIR utilizza la metrica Normalized Cumulative Discount Gain (in particolare, nDCG@10).
Lungo NQ
Long NQ è un set di dati IBM progettato per valutare l'intera pipeline RAG, basato su un sottoinsieme del set di dati NaturalQuestions. Il dev set è composto da 300 domande a risposta libera con un corpus di 178.891 passaggi da 2.345 documenti di Wikipedia. Long NQ fornisce anche i passaggi di Wikipedia oro che sono rilevanti per ogni domanda. Durante il recupero, il compito è quello di ottenere il passaggio aureo rilevante dal corpus per ogni domanda.
Risultati
Modello | BEIR-15 (NDCG@10) |
---|---|
BM25 | 42.02 |
ELSER | 49.01 |
all-miniLM-L6-v2 | 41.95 |
ES-small-v2 | 49.04 |
ES-base-v2 | 50.29 |
BGE-piccolo | 51.68 |
BGE-base | 53.25 |
slate.30m.english.rtrvr 01.20.2024 | 46.91 |
slate.125m.english.rtrvr-01.20.2024 | 49.37 |
slate.30m.english.rtrvr 06.30.2024 | 49.06 |
slate.125m.english.rtrvr-06.30.2024 | 51.26 |
Figura 2. Confronto delle prestazioni sul benchmark BEIR (scheda di recupero MTEB)
Modello | LONGNQ (NDCG@10) |
---|---|
all-miniLM-L6-v2 | 58.10 |
BGE-piccolo | 59.33 |
BGE-base | 61.29 |
ES-small-v2 | 61.88 |
ES-base-v2 | 63.80 |
slate.30m.english.rtrvr 01.20.2024 | 59.94 |
slate.125m.english.rtrvr-01.20.2024 | 65.01 |
slate.30m.english.rtrvr 06.30.2024 | 62.07 |
slate.125m.english.rtrvr-06.30.2024 | 66.80 |
Figura 3 Confronto delle prestazioni sul set di dati Long NQ
Prestazioni in tempo reale
Il tempo di esecuzione delle prestazioni è stato misurato su un compito di re-ranking con 466 query. Per ogni query ri-arranchiamo i top-100 passaggi ottenuti da BM25 e riportiamo il tempo medio su tutte le query. La riorganizzazione è stata eseguita su una GPU A100_40GB.
Modello | Tempo/query |
---|---|
all-miniLM-L6-v2 | 0.18 sec |
E5-small | 0.33 sec |
E5-base | 0.75 sec |
BGE-piccolo | 0.34 sec |
BGE-base | 0.75 sec |
slate.125m.english.rtrvr | 0.71 sec |
slate.30m.english.rtrvr | 0.20 sec |