Allgemeine Einführung
MTEB (Massive Text Embedding Benchmark) ist ein Open-Source-Projekt, das vom embeddings-benchmark-Team entwickelt wurde und auf GitHub gehostet wird. Es zielt darauf ab, eine umfassende Leistungsbewertung für Texteinbettungsmodelle bereitzustellen. Es deckt 8 Hauptaufgabentypen ab, darunter Klassifizierung, Clustering, Retrieval usw., integriert 58 Datensätze, unterstützt 112 Sprachen und ist derzeit eines der umfassendsten Benchmarking-Tools für Texteinbettungen. mteb zeigt die Leistungsunterschiede verschiedener Modelle bei verschiedenen Aufgaben durch das Testen von 33 Modelltypen auf und hilft Entwicklern bei der Auswahl des für bestimmte Anwendungen geeigneten Einbettungsmodells. Das Projekt stellt offenen Quellcode zur Verfügung, so dass die Benutzer die Tests frei durchführen oder neue Modelle für die öffentliche Rangliste einreichen können, die in der NLP-Forschung, der Modellentwicklung und in industriellen Anwendungsszenarien breite Anwendung findet.
Zugänglich unter: https://huggingface.co/spaces/mteb/leaderboard
Funktionsliste
- Unterstützung der Multi-Task-AuswertungEnthält 8 Einbettungsaufgaben, wie z.B. semantische Textähnlichkeit (STS), Retrieval, Clustering, usw., die ein breites Spektrum von Anwendungsszenarien abdecken.
- Mehrsprachige DatensätzeUnterstützung von 112 Sprachen, die es ermöglichen, mehrsprachige Modelle zu testen, die für die Entwicklung globaler Anwendungen geeignet sind.
- Rangliste der ModellleistungEingebaute öffentliche Ranglisten mit Testergebnissen für 33 Modelle zum einfachen Vergleich und zur Auswahl.
- Maßgeschneiderte ModelltestsBenutzer können benutzerdefinierte eingebettete Modelle mit nur wenig Code importieren, um die Auswertung durchzuführen.
- Cache-EinbettungsfunktionalitätUnterstützt das Zwischenspeichern von Ergebnissen, um die Effizienz von Wiederholungstests bei umfangreichen Experimenten zu optimieren.
- Flexible Anpassung der ParameterKonfiguration von Codierungsparametern, wie z. B. die Anpassung der Chargengröße, um die Testflexibilität zu erhöhen.
- Open-Source-UnterstützungDer vollständige Quellcode ist offen für Benutzer, die die Funktionalität nach ihren Bedürfnissen verändern oder erweitern möchten.
- Erweiterbarkeit der GemeinschaftUnterstützung der Benutzer bei der Einreichung neuer Aufgaben, Datensätze oder Modelle, um die Tests fortlaufend zu erweitern.
Hilfe verwenden
Ablauf der Installation
MTEB ist ein auf Python basierendes Tool, das zum Einsatz und zur Ausführung eine Programmierumgebung erfordert. Im Folgenden werden die einzelnen Installationsschritte beschrieben:
1. die Vorbereitung der Umwelt
- BetriebssystemWindows, MacOS oder Linux werden unterstützt.
- Python-Version: erfordert Python 3.10 oder höher, auf das über den Befehl
python --version
Prüfen. - Git-Werkzeuge: Wird verwendet, um den Quellcode von GitHub zu erhalten, es wird empfohlen, ihn im Voraus zu installieren.
2. das Klonen der Codebasis
Öffnen Sie ein Terminal und führen Sie den folgenden Befehl aus, um den MTEB-Quellcode zu erhalten:
git clone https://github.com/embeddings-benchmark/mteb.git
cd mteb
Dadurch wird das Projekt lokal heruntergeladen und das Projektverzeichnis eingegeben.
3. die Installation von Abhängigkeiten
MTEB erfordert die Unterstützung einiger Python-Bibliotheken, und es wird empfohlen, vor der Installation von Abhängigkeiten eine virtuelle Umgebung zu erstellen, um Konflikte zu vermeiden:
python -m venv venv
Quelle venv/bin/aktivieren # Linux/MacOS
venv\Skripte\aktivieren # Windows
Installieren Sie dann die Kernabhängigkeiten:
pip install -r anforderungen.txt
Um das Leaderboard-Interface zu nutzen, müssen Sie auch Gradio installieren:
pip install mteb[gradio]
4. die Überprüfung der Installation
Führen Sie den folgenden Befehl aus, um nach verfügbaren Tasks zu suchen und eine erfolgreiche Installation sicherzustellen:
mteb --verfügbare_Aufgaben
Wenn Sie zur Aufgabenliste zurückkehren, ist die Konfiguration der Umgebung abgeschlossen.
Verwendung
Die Hauptfunktion von MTEB ist die Bewertung von Texteinbettungsmodellen, und das folgende Verfahren ist der Hauptarbeitsablauf:
Funktion 1: Ausführen vorgefertigter Aufgaben zur Bewertung vorhandener Modelle
MTEB unterstützt das direkte Testen bestehender Modelle (z. B. das Modell "SentenceTransformer"). Zum Beispiel die Bewertung der Leistung des Modells "average_word_embeddings_komninos" bei der Aufgabe "Banking77Classification":
mteb -m average_word_embeddings_komninos -t Banking77Classification --output_folder results/average_word_embeddings_komninos --verbosity 3
-m
Gibt den Modellnamen an.-t
Geben Sie den Namen der Aufgabe an.--output_folder
Gibt den Pfad an, in dem die Ergebnisse gespeichert werden.--Verbindlichkeit 3
Zeigt das detaillierte Protokoll an.
Die Ergebnisse werden in einem bestimmten Ordner gespeichert, der die Punktzahlen für jede Aufgabe enthält.
Funktion 2: Benutzerdefinierte Modelle testen
Wenn Sie Ihr eigenes Modell testen wollen, implementieren Sie einfach eine einfache Schnittstelle. Nehmen Sie den SentenceTransformer als Beispiel:
from mteb import MTEB
from sentence_transformers import SentenceTransformer
# Laden Sie das Modell
model = SentenceTransformer("average_word_embeddings_komninos")
# Definieren Sie die Auswertungsaufgabe
Auswertung = MTEB(tasks=["Bank77Klassifikation"])
# Ausführen der Auswertung
evaluation.run(model, output_folder="results")
Nach der Ausführung werden die Ergebnisse im Ordner "Ergebnisse" gespeichert.
Merkmal 3: Cache-Einbettung zur Optimierung der Effizienz
Für sich wiederholende Tests kann die Zwischenspeicherung aktiviert werden, um eine doppelte Zählung der Einbettungen zu vermeiden:
from mteb.models.cache_wrapper import CachedEmbeddingWrapper
# Umhüllen eines Modells zur Aktivierung der Zwischenspeicherung
model_with_cache = CachedEmbeddingWrapper(model, cache_path="cache_embeddings")
evaluation.run(model_with_cache)
Die Cache-Datei wird im angegebenen Pfad nach Aufgabenname gespeichert.
Funktion 4: Leaderboard anzeigen
Um die aktuelle Modellrangliste zu sehen, besuchen Sie die offizielle Rangliste, oder setzen Sie sie lokal ein:
git clone https://github.com/embeddings-benchmark/leaderboard.git
cd leaderboard
pip install -r anforderungen.txt
python app.py
Zugang über den Browser http://localhost:7860
Sie können die Echtzeit-Ranglisten einsehen.
Funktion 5: Hinzufügen neuer Aufgaben
Die Benutzer können das MTEB erweitern, indem sie von einer Aufgabenklasse erben, z. B. durch Hinzufügen einer Neuordnungsaufgabe:
from mteb.abstasks.AbsTaskReranking import AbsTaskReranking
class CustomReranking(AbsTaskReranking).
@property
def description(self): @property
return {
"name": "CustomReranking", "description": "CustomReranking", @property
"description": "Benutzerdefinierte Neuordnungsaufgabe",
"eval_splits": ["test"], "eval_splits": ["test"], "eval_langs".
"eval_langs": ["de"], "eval_splits": ["test"], "eval_splits".
"main_score": "map"
}
evaluation = MTEB(tasks=[CustomReranking()])
evaluation.run(model)
Bedienungskompetenz
- Multi-GPU-UnterstützungFür Abrufaufgaben kann die Multi-GPU-Beschleunigung genutzt werden:
pip install git+https://github.com/NouamaneTazi/beir@nouamane/better-multi-gpu
torchrun --nproc_pro_node=2 scripts/retrieval_multigpu.py
- ausgewählte Teilmenge: Nur eine Teilmenge bestimmter Aufgaben wird bewertet:
evaluation.run(model, eval_subsets=["Banking77Classification"])
- Losgröße anpassenOptimierung der Kodiergeschwindigkeit:
evaluation.run(model, encode_kwargs={"batch_size": 32})
Mit den oben genannten Schritten können die Benutzer leicht mit MTEB beginnen und die Modellevaluierung oder Funktionserweiterung abschließen.