MTEB Benchmark di Incorporamento di Testo Massivo

'MTEB Benchmark di Incorporamento di Testo Massivo' can be translated as 'MTEB Massive Text Embedding Benchmark'.

MTEB è un benchmark massivo per misurare le prestazioni dei modelli di embedding di testo su diverse attività di embedding.

La 🥇 classifica fornisce una visione completa dei migliori modelli di embedding di testo disponibili su una varietà di attività.

Il 📝 paper fornisce informazioni sulle attività e sui dataset in MTEB e analizza i risultati della classifica!

Il 💻 repository di Github contiene il codice per il benchmarking e l’invio di qualsiasi modello scelto alla classifica.

Perché gli Embedding di Testo?

Gli Embedding di Testo sono rappresentazioni vettoriali del testo che codificano informazioni semantiche. Poiché le macchine richiedono input numerici per eseguire calcoli, gli embedding di testo sono un componente cruciale di molte applicazioni di elaborazione del linguaggio naturale (NLP). Ad esempio, Google utilizza gli embedding di testo per alimentare il proprio motore di ricerca. Gli Embedding di Testo possono essere utilizzati anche per trovare pattern in grandi quantità di testo tramite clustering o come input per modelli di classificazione del testo, come nel nostro recente lavoro SetFit. Tuttavia, la qualità degli embedding di testo dipende molto dal modello di embedding utilizzato. MTEB è progettato per aiutarti a trovare il miglior modello di embedding di testo per una varietà di attività!

MTEB

🐋 Massivo: MTEB include 56 dataset su 8 attività e attualmente riassume >2000 risultati nella classifica.

🌎 Multilingua: MTEB contiene fino a 112 lingue diverse! Abbiamo testato diversi modelli multilingua su Bitext Mining, Classificazione e STS.

🦚 Estendibile: Sia che si tratti di nuove attività, dataset, metriche o aggiunte alla classifica, ogni contributo è il benvenuto. Dai un’occhiata al repository di GitHub per inviare alla classifica o risolvere gli issue aperti. Speriamo che ti unisca a noi nel viaggio alla ricerca del miglior modello di embedding di testo!

Panoramica delle attività e dei dataset in MTEB. I dataset multilingua sono contrassegnati con una tonalità di viola.

Modelli

Per il benchmarking iniziale di MTEB, ci siamo concentrati su modelli che dichiarano risultati all’avanguardia e modelli popolari su Hub. Ciò ha portato a una rappresentazione elevata dei transformers. 🤖

Modelli in base al punteggio MTEB medio in inglese (y) vs velocità (x) vs dimensione dell’embedding (dimensione del cerchio).

Abbiamo raggruppato i modelli nelle seguenti tre categorie per semplificare la ricerca del miglior modello per la tua attività:

🏎 Velocità massima Modelli come Glove offrono alta velocità, ma soffrono di una mancanza di consapevolezza del contesto che si traduce in punteggi MTEB medi bassi.

⚖️ Velocità e prestazioni Leggermente più lenti, ma significativamente più potenti, all-mpnet-base-v2 o all-MiniLM-L6-v2 offrono un buon equilibrio tra velocità e prestazioni.

💪 Massime prestazioni Modelli con miliardi di parametri come ST5-XXL, GTR-XXL o SGPT-5.8B-msmarco dominano in MTEB. Tendono anche a produrre embedding più grandi come SGPT-5.8B-msmarco che produce embedding a 4096 dimensioni che richiedono più spazio di archiviazione!

Le prestazioni del modello variano molto a seconda dell’attività e del dataset, quindi consigliamo di controllare le varie schede della classifica prima di decidere quale modello utilizzare!

Benchmarcare il tuo modello

Utilizzando la libreria MTEB, puoi fare il benchmark di qualsiasi modello che produce embedding e aggiungere i suoi risultati alla classifica pubblica. Facciamo un rapido esempio!

Prima, installa la libreria:

pip install mteb

Successivamente, fai il benchmark di un modello su un dataset, ad esempio komninos word embeddings su Banking77.

from mteb import MTEB
from sentence_transformers import SentenceTransformer

model_name = "average_word_embeddings_komninos"
model = SentenceTransformer(model_name)

evaluation = MTEB(tasks=["Banking77Classification"])
results = evaluation.run(model, output_folder=f"results/{model_name}")

Questo dovrebbe produrre un file results/average_word_embeddings_komninos/Banking77Classification.json!

Ora puoi inviare i risultati alla classifica aggiungendoli ai metadati del README.md di qualsiasi modello su Hub.

Esegui il nostro script automatico per generare i metadati:

python mteb_meta.py results/average_word_embeddings_komninos

Lo script produrrà un file mteb_metadata.md che apparirà così:

---
tags:
- mteb
model-index:
- name: average_word_embeddings_komninos
  results:
  - task:
      type: Classificazione
    dataset:
      type: mteb/banking77
      name: MTEB Banking77Classification
      config: default
      split: test
      revision: 0fd18e25b25c072e09e0d92ab615fda904d66300
    metrics:
    - type: accuratezza
      value: 66.76623376623377
    - type: f1
      value: 66.59096432882667
---

Ora aggiungi i metadati all’inizio di un README.md di qualsiasi modello sul Hub, come ad esempio il modello SGPT-5.8B-msmarco, e apparirà nella classifica dopo il refresh!

Prossimi passi

Vai là fuori e confronta qualsiasi modello ti piaccia! Facci sapere se hai domande o feedback aprendo una segnalazione nella nostra repo GitHub o nella scheda della community della classifica 🤗

Happy embedding!

Crediti

Un enorme ringraziamento a coloro che hanno contribuito all’articolo o al codicebase MTEB (elencati in ordine alfabetico): Steven Liu, Loïc Magne, Nils Reimers e Nouamane Tazi.