Introdução geral
O MTEB (Massive Text Embedding Benchmark) é um projeto de código aberto desenvolvido pela equipe do embeddings-benchmark e hospedado no GitHub, com o objetivo de fornecer uma avaliação de desempenho abrangente para modelos de incorporação de texto. Ele abrange 8 tipos de tarefas principais, incluindo classificação, agrupamento, recuperação etc., integra 58 conjuntos de dados, suporta 112 idiomas e é atualmente uma das ferramentas de benchmarking de incorporação de texto mais abrangentes. O mteb revela as diferenças de desempenho de modelos diferentes em várias tarefas por meio do teste de 33 tipos de modelos e ajuda os desenvolvedores a escolher o modelo de incorporação adequado para aplicativos específicos. O projeto fornece código-fonte aberto para que os usuários possam executar livremente os testes ou enviar novos modelos para a tabela de classificação pública, que é amplamente aplicável à pesquisa de PNL, ao desenvolvimento de modelos e aos cenários de aplicação do setor.
Acessado em: https://huggingface.co/spaces/mteb/leaderboard
Lista de funções
- Suporte à avaliação multitarefaContém 8 tarefas de incorporação, como similaridade de texto semântico (STS), recuperação, agrupamento etc., abrangendo uma ampla gama de cenários de aplicativos.
- Conjuntos de dados multilínguesSuporte para 112 idiomas, o que permite testar modelos em vários idiomas, adequados para o desenvolvimento de aplicativos globalizados.
- Classificação do desempenho do modeloTabelas de classificação públicas incorporadas que mostram os resultados dos testes de 33 modelos para facilitar a comparação e a seleção.
- Teste de modelos personalizadosPermite que os usuários importem modelos incorporados personalizados com apenas uma pequena quantidade de código para executar a avaliação.
- Funcionalidade de incorporação de cacheSuporte ao armazenamento em cache de resultados incorporados para otimizar a eficiência de testes repetidos em experimentos de grande escala.
- Ajuste flexível de parâmetrosConfiguração de parâmetros de codificação, como o ajuste do tamanho do lote, para aumentar a flexibilidade dos testes.
- Suporte a código abertoCódigo-fonte: O código-fonte completo está aberto para que os usuários modifiquem ou ampliem a funcionalidade de acordo com suas necessidades.
- Extensibilidade da comunidadeSuporte aos usuários no envio de novas tarefas, conjuntos de dados ou modelos para enriquecer os testes de forma contínua.
Usando a Ajuda
Processo de instalação
O MTEB é uma ferramenta baseada em Python que requer algum ambiente de programação para ser implantado e executado. Veja a seguir as etapas detalhadas de instalação:
1. preparação ambiental
- sistema operacionalWindows, MacOS ou Linux são compatíveis.
- Versão Pythonrequer o Python 3.10 ou superior, que pode ser acessado por meio do comando
python --versão
Verificar. - Ferramentas GitCódigo-fonte: Usado para obter o código-fonte do GitHub, é recomendável instalá-lo com antecedência.
2. clonagem da base de código
Abra um terminal e execute o seguinte comando para obter o código-fonte do MTEB:
git clone https://github.com/embeddings-benchmark/mteb.git
cd mteb
Isso fará o download do projeto localmente e entrará no diretório do projeto.
3. instalação de dependências
O MTEB requer algum suporte à biblioteca Python, e é recomendável criar um ambiente virtual antes de instalar as dependências para evitar conflitos:
python -m venv venv
source venv/bin/activate # Linux/MacOS
venv\Scripts\activate # Windows
Em seguida, instale as dependências principais:
pip install -r requirements.txt
Para executar a interface da tabela de classificação, você também precisa instalar o Gradio:
pip install mteb[gradio]
4. verificação da instalação
Execute o seguinte comando para verificar as tarefas disponíveis e garantir uma instalação bem-sucedida:
mteb --available_tasks
Se você retornar à lista de tarefas, a configuração do ambiente estará concluída.
Uso
A função principal do MTEB é avaliar os modelos de incorporação de texto, e o procedimento operacional principal é o seguinte:
Função 1: Executar tarefas pré-criadas para avaliar os modelos existentes
O MTEB suporta testes diretos de modelos existentes (por exemplo, o modelo SentenceTransformer). Por exemplo, a avaliação do desempenho do modelo "average_word_embeddings_komninos" na tarefa Banking77Classification:
mteb -m average_word_embeddings_komninos -t Banking77Classification --output_folder results/average_word_embeddings_komninos --verbosity 3
-m
Especifica o nome do modelo.-t
Especifique o nome da tarefa.--output_folder
Especifica o caminho onde os resultados são salvos.--verbosidade 3
Exibe o registro detalhado.
Os resultados são salvos em uma pasta especificada que contém as pontuações de cada tarefa.
Função 2: Testar modelos personalizados
Se você quiser testar seu próprio modelo, basta implementar uma interface simples. Veja o SentenceTransformer como exemplo:
from mteb import MTEB
from sentence_transformers import SentenceTransformer
# Carregar o modelo
model = SentenceTransformer("average_word_embeddings_komninos")
# Definir a tarefa de avaliação
evaluation = MTEB(tasks=["Banking77Classification"])
# Executar a avaliação
evaluation.run(model, output_folder="results")
Após a execução, os resultados são salvos na pasta "results" (resultados).
Recurso 3: incorporação de cache para otimizar a eficiência
Para testes repetitivos, o armazenamento em cache pode ser ativado para evitar a contagem dupla de embeddings:
from mteb.models.cache_wrapper import CachedEmbeddingWrapper
# Envolvimento de um modelo para ativar o cache
model_with_cache = CachedEmbeddingWrapper(model, cache_path="cache_embeddings")
evaluation.run(model_with_cache)
O arquivo de cache é armazenado no caminho especificado pelo nome da tarefa.
Função 4: Exibir tabela de classificação
Para ver as classificações atuais dos modelos, acesse a tabela de classificação oficial ou implemente localmente:
git clone https://github.com/embeddings-benchmark/leaderboard.git
cd leaderboard
pip install -r requirements.txt
python app.py
Acesso no navegador http://localhost:7860
Você pode ver as tabelas de classificação em tempo real.
Função 5: Adicionar novas tarefas
Os usuários podem estender o MTEB herdando de uma classe de tarefa, por exemplo, adicionando uma tarefa de reranking:
from mteb.abstasks.AbsTaskReranking import AbsTaskReranking
class CustomReranking(AbsTaskReranking).
@propriedade
def description(self): @property
return {
"name": "CustomReranking", "description": "CustomReranking", @property
"description": "Tarefa de reordenação personalizada",
"eval_splits": ["test"], "eval_splits": ["test"], "eval_langs".
"eval_langs": ["en"], "eval_splits": ["test"], "eval_splits".
"main_score": "map"
}
evaluation = MTEB(tasks=[CustomReranking()])
evaluation.run(model)
habilidade operacional
- Suporte a várias GPUsPara tarefas de recuperação, a aceleração de várias GPUs pode ser usada:
pip install git+https://github.com/NouamaneTazi/beir@nouamane/better-multi-gpu
torchrun --nproc_per_node=2 scripts/retrieval_multigpu.py
- subconjunto selecionadoApenas um subconjunto de tarefas específicas é avaliado:
evaluation.run(model, eval_subsets=["Banking77Classification"])
- Ajustar o tamanho do loteOtimização da velocidade de codificação:
evaluation.run(model, encode_kwargs={"batch_size": 32})
Com as etapas acima, os usuários podem começar a usar o MTEB com facilidade e concluir a avaliação do modelo ou a extensão funcional.