Version 2.0.1 Datum: 30.06.2024
Modellbeschreibung
Das Modell slate.125m.english.rtrvr-v2 ist ein Standard-Satzumwandlungsmodell, das auf Bi-Encodern basiert. Das Modell erzeugt eine Einbettung für eine gegebene Eingabe, z. B. eine Anfrage, eine Passage, ein Dokument usw. Auf einer hohen Ebene wird unser Modell so trainiert, dass es die Kosinusähnlichkeit zwischen zwei Eingabetexten maximiert, z. B. zwischen Text A (Abfragetext) und Text B (Passagetext), was zu den Satzeinbettungen q und p führt. Diese Satzeinbettungen können dann anhand der Kosinusähnlichkeit verglichen werden.
Abb. 1. Bi-Encoder-Einbettungsmodell für die Suche
Basis-Sprachmodell
Das zugrunde liegende Sprachmodell (LM) für unsere Einbettungen ist “slate.125m.english”. Es hat die gleiche Architektur wie ein RoBERTa-base Transformatormodell (12 Schichten) und hat ~125 Millionen Parameter und eine Einbettungsdimension von 768. Konkret wurde slate.125m.english von “slate.125m.english” (früher WatBERT) abgeleitet. Unser endgültiges Modell heißt slate.125m.english.rtrvr. Das Suffix bedeutet, dass die zugrundeliegende Modellarchitektur für Retrieval-basierte Aufgaben fein abgestimmt wurde.
Trainingsalgorithmus
Die meisten Einbettungsmodelle, die entweder dem neuesten Stand der Technik entsprechen oder an der Spitze der MTEB-Rangliste stehen, werden in der Regel in drei Stufen trainiert:
- Aufgabenspezifisches (abrufbasiertes) Vortraining
- Aufgabenspezifische Feinabstimmung der verarbeiteten Paare
- Feinabstimmung bei überwachten Paaren.
Wir verfolgen den gleichen Ansatz und führen schließlich eine Modellfusion durch, indem wir die Gewichte der verschiedenen trainierten Modelle mitteln.
slate.125m.english.rtrvr wird durch "Modellfusion" erzeugt, d. h. durch Mittelwertbildung der Gewichte der folgenden Modelle, die beide stufenweise trainiert wurden, aber folgende Varianten aufweisen:
- Modell 1: Feinabstimmung auf allen drei oben genannten Stufen
- Modell 2 wurde aus einem Modell destilliert, das auf allen oben genannten Stufen feinabgestimmt wurde.
Aufgabenspezifische Vorschulung
In dieser Phase wird das RetroMAE-Framework verwendet, um die zugrundeliegende LM stärker auf das Abrufen von Daten auszurichten. Wir initialisieren unser Basis-LM mit slate.125m.english und fahren mit RetroMAE Pre-Training unter Verwendung der Daten in Tabelle 1 fort. Unsere Hyper-Parameter sind: Lernrate: 2e-5, Anzahl der Schritte: 190000, GPUs: 24 A100 40GB.
Hinweis: Dies ist unser Basis-LM für die folgenden 2 Stufen.
Feinabstimmung mit unüberwachten Daten in großem Maßstab
Dieses Modell wird mit dem RetroMAE vortrainierten Modell initialisiert und wie folgt trainiert.
Für das Training eines Einbettungsmodells verwenden wir einen Bi-Encoder, wie in Abbildung 1 dargestellt. Der RetroMAE vortrainierte LM wird mit <query, passage>
Textpaaren unter Verwendung eines Kontrastverlustes feinabgestimmt. Wir ermitteln große Paare aus verschiedenen Bereichen, wie in Tabelle 2 angegeben. Das Modell wird mit verschiedenen Paaren trainiert, darunter Klassifizierungsaufgaben wie NLI (Natural Language Inference), bei denen eine Prämisse mit der entsprechenden Hypothese abgeglichen werden muss. Unsere Hyper-Parameter sind: Lernrate: 2e-4; Anzahl der Schritte: 35000; GPUs: 8 A100_80GB, effektive Stapelgröße: 16k Paare
Feinabstimmung mit überwachten Daten in kleinem Maßstab mit harten Negativen
Schließlich wird das Modell mit hochwertigen überwachten Trainingspaaren, die aus dem Hard Negative Mining stammen, für die Retrievalaufgabe feinabgestimmt. Die Kontrollpunkte des Zwischenmodells werden iterativ verwendet, um datensatzspezifische harte Negative zu ermitteln, die dann für die überwachte Feinabstimmung verwendet werden. Dieser Prozess zielt darauf ab, das Modell robuster zu machen, indem es aus seinen eigenen Fehlern lernt, und hilft bei der Stabilisierung mit viel kleineren Daten.
Zur Feinabstimmung des Modells verwenden wir eine Untergruppe von Datensätzen (die wir durch die Durchführung von Validierungsexperimenten mit einem zurückgehaltenen Datensatz gefunden haben), die im Abschnitt Trainingsdaten erwähnt werden: AllNLI, Squad, Stackexchange, NQ, HotpotQA, Fever und 5M Teilmenge von Specter, S2orc, WikiAnswers. Darüber hinaus generieren wir auch synthetisch Tripel, um qualitativ hochwertige Frage-Antwort-Paare, Faktenüberprüfungen usw. mit Mixtral-8x7B-Instruct-v0.1
zu erstellen. Um eine bessere Leistung für IBM-spezifische Anwendungsfälle zu erzielen, werden auch Paare aus IBM Software-Support-Daten und IBM Docs einbezogen.
Training Hyper-Parameter sind Lernrate: 2e-5; max query length: 64; max passage length: 512; max steps: 5000; effective batch size: 512; GPUs: 1A100_80GB
Trainingsdaten
Dataset | Passagen |
---|---|
Wikipedia, | 36396918 |
Bücher Corpus | 3401308 |
Stack Exchange | 15999837 |
Dataset | Paare |
---|---|
SPECTER-Zitat-Drillinge | 684100 |
Stack Exchange Doppelte Fragen (Titel) | 304525 |
Stack Exchange Doppelte Fragen (Körper) | 250519 |
Stack Exchange Doppelte Fragen (Titel+Körper) | 250460 |
Natürliche Fragen (NQ) | 100231 |
SQuAD2.0 | 87599 |
PAQ-Paare (Frage-Antwort-Paare) | 64371441 |
Stack Exchange (Titel, Antwort) Paare | 4067139 |
Stack Exchange (Titel, Körper) Paare | 23978013 |
Stack Exchange (Titel+Körper, Antwort) Paare | 187195 |
S2ORC Zitatpaare (Titel) | 52603982 |
S2ORC (Titel, Zusammenfassung) | 41769185 |
S2ORC_citations_abstracts | 52603982 |
WikiAnswers Doppelte Fragenpaare | 77427422 |
SearchQA | 582261 |
HotpotQA | 85000 |
Fieber | 109810 |
Arxiv | 2358545 |
Wikipedia, | 20745403 |
PubMed | 20000000 |
Miracl En Pairs | 9016 |
DBPedia Titel-Körper-Paare | 4635922 |
Synthetisch: Abfrage-Wikipedia-Passage | 1879093 |
Synthetisch: Überprüfung der Fakten | 9888 |
IBM: IBM Docs (Title-Body) | 474637 |
IBM: IBM Unterstützung (Title-Body) | 1049949 |
Verwendung
# 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)
Die maximale Sequenzlänge dieses Modells beträgt 512 Token.
Evaluierung
Grundlinien
Um einen fairen Vergleich anzustellen, vergleichen wir mit den folgenden Grundlinien:
BM25 (ein traditionelles Modell auf der Grundlage von tf-idf)
ELSER (ein kommerzieller Suchalgorithmus, der von Elastic bereitgestellt wird)
all-MiniLM-l6-v2: ein beliebtes Open-Source-Satzumwandlungsmodell. Dieses Modell hat die gleiche Architektur wie slate.30m.english.rtrvr, wurde aber auf mehr Daten ohne kommerzielle Lizenzen trainiert. Weitere Einzelheiten entnehmen Sie bitte der Modellkarte von huggingface
E5-base: ein neueres Open-Source-Transformationsmodell mit sehr guter Leistung beim BEIR-Benchmark. Dies ist ein Basismodell, das dieselbe Architektur hat wie slate.125m.english.rtrvr. [Referenz: Wang et.al., 2022: Texteinbettungen durch schwach überwachtes kontrastives Vortraining]. Modellkarte Huggingface
E5-small: ein kleineres Modell innerhalb der quelloffenen E5 Familie. Die Einbettungsgröße dieses Modells entspricht der von slate.30m.rtrvr (384), allerdings hat es 12 Schichten und ist daher größer und etwas langsamer. [Referenz: Wang et.al., 2022: Texteinbettungen durch schwach überwachtes kontrastives Vortraining]. Modellkarte Huggingface
BGE-base: ein aktuelles Open-Source-Transformationsmodell mit einer der besten Leistungen beim BEIR-Benchmark für die Einbettungsgröße 768. Modellkarte Huggingface
BGE-small: ein aktuelles Open-Source-Transformationsmodell mit einer der besten Leistungen beim BEIR-Benchmark für die Einbettungsgröße 384. Modellkarte Huggingface
Wir vergleichen auch die Leistung dieser Modelle mit den älteren Versionen der Schiefermodelle, slate.125m.english.rtrvr-012024 und slate.30m.english.rtrvr-012024.
Unser Bewertungsmaßstab: BEIR(MTEBs Registerkarte für die Suche)
Der BEIR-Benchmark besteht aus 15 Open-Source-Retrievalaufgaben, die in einer Zero-Shot-Situation bewertet werden. BEIR konzentrierte sich auf Diversität und umfasste neun verschiedene Abrufaufgaben: Faktenüberprüfung, Vorhersage von Zitaten, Suche nach doppelten Fragen, Suche nach Argumenten, Suche nach Nachrichten, Beantwortung von Fragen, Suche nach Tweets, biologisch-medizinische IR und Suche nach Entitäten. Darüber hinaus enthält es Datensätze aus verschiedenen Textdomänen, Datensätze, die breite Themen (wie Wikipedia) und spezialisierte Themen (wie COVID-19 Publikationen) abdecken, verschiedene Texttypen (Nachrichtenartikel vs. Tweets), Datensätze unterschiedlicher Größe (3.6k - 15M Dokumente) und Datensätze mit unterschiedlichen Abfragelängen (durchschnittliche Abfragelänge zwischen 3 und 192 Wörtern) und Dokumentlängen (durchschnittliche Dokumentlänge zwischen 11 und 635 Wörtern). BEIR verwendet die Metrik Normalized Cumulative Discount Gain (insbesondere nDCG@10) zur Bewertung.
Lang NQ
Long NQ ist ein IBM-Datensatz, der für die Evaluierung der gesamten RAG-Pipeline entwickelt wurde und auf einer Teilmenge des NaturalQuestions-Datensatzes basiert. Das Dev-Set umfasst 300 beantwortbare Fragen mit einem Korpus von 178.891 Passagen aus 2.345 Wikipedia-Dokumenten. Long NQ bietet auch goldene Wikipedia-Passagen, die für jede Frage relevant sind. Beim Retrieval besteht die Aufgabe darin, für jede Frage die relevante Gold-Passage aus dem Korpus zu erhalten.
Ergebnisse
Modell | 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-klein | 51.68 |
BGE-Basis | 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 |
Abbildung 2: Leistungsvergleich beim BEIR-Benchmark (Registerkarte MTEB-Abfrage)
Modell | LONGNQ (NDCG@10) |
---|---|
all-miniLM-L6-v2 | 58.10 |
BGE-klein | 59.33 |
BGE-Basis | 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 |
Abb. 3 Leistungsvergleich mit dem Long NQ-Datensatz
Laufzeitleistung
Die Leistungslaufzeit wird anhand einer Aufgabe mit 466 Abfragen zur Neueinstufung gemessen. Für jede Abfrage werden die top-100-Passagen, die mit BM25 ermittelt wurden, neu geordnet und die durchschnittliche Zeit für alle Abfragen angegeben. Die Neueinstufung wurde auf einer A100_40GB GPU durchgeführt.
Modell | Zeit/Abfrage |
---|---|
all-miniLM-L6-v2 | 0.18 sec |
E5-small | 0.33 sec |
E5-base | 0.75 sec |
BGE-klein | 0.34 sec |
BGE-Basis | 0.75 sec |
slate.125m.english.rtrvr | 0.71 sec |
slate.30m.english.rtrvr | 0.20 sec |