MTEB: evaluación comparativa del rendimiento de los modelos de incrustación de textos
Últimos recursos sobre IAActualizado hace 5 meses Círculo de intercambio de inteligencia artificial 2.1K 00
Introducción general
MTEB (Massive Text Embedding Benchmark) es un proyecto de código abierto desarrollado por el equipo embeddings-benchmark y alojado en GitHub, cuyo objetivo es proporcionar una evaluación exhaustiva del rendimiento de los modelos de incrustación de texto. Abarca 8 tipos de tareas principales, como clasificación, agrupación, recuperación, etc., integra 58 conjuntos de datos, es compatible con 112 idiomas y, en la actualidad, es una de las herramientas de evaluación comparativa de incrustación de texto más completas. mteb revela las diferencias de rendimiento de los distintos modelos en diversas tareas mediante la prueba de 33 tipos de modelos, y ayuda a los desarrolladores a elegir el modelo de incrustación adecuado para aplicaciones específicas. El proyecto proporciona código fuente abierto para que los usuarios puedan ejecutar libremente las pruebas o enviar nuevos modelos a la clasificación pública, lo que resulta ampliamente aplicable a la investigación en PNL, el desarrollo de modelos y los escenarios de aplicación industrial.

Acceso en: https://huggingface.co/spaces/mteb/leaderboard

Lista de funciones
- Apoyo a la evaluación multitareaContiene 8 tareas de incrustación, como similitud semántica de textos (STS), recuperación, agrupación, etc., que cubren una amplia gama de escenarios de aplicación.
- Conjuntos de datos multilingüesCompatibilidad con 112 idiomas, lo que permite probar modelos multilingües adecuados para el desarrollo de aplicaciones globalizadas.
- Clasificación del rendimiento de los modelosTablas de clasificación públicas integradas que muestran los resultados de las pruebas de 33 modelos para facilitar la comparación y la selección.
- Ensayos de modelos a medidaPermite a los usuarios importar modelos integrados personalizados con sólo una pequeña cantidad de código para ejecutar la evaluación.
- Funcionalidad de incrustación en cachéPermite almacenar resultados en caché para optimizar la eficacia de la repetición de pruebas en experimentos a gran escala.
- Ajuste flexible de parámetros: Proporciona la configuración de los parámetros de codificación, como el ajuste del tamaño del lote, para mejorar la flexibilidad de las pruebas.
- Soporte de código abiertoEl código fuente completo está abierto para que los usuarios lo modifiquen o amplíen según sus necesidades.
- Extensibilidad comunitariaApoyo a los usuarios en la presentación de nuevas tareas, conjuntos de datos o modelos para enriquecer las pruebas de forma continua.
Utilizar la ayuda
Proceso de instalación
MTEB es una herramienta basada en Python que requiere algún entorno de programación para desplegarse y ejecutarse. A continuación se detallan los pasos de instalación:
1. Preparación medioambiental
- sistema operativoCompatible con Windows, MacOS y Linux.
- Versión Python: requiere Python 3.10 o superior, al que se puede acceder mediante el comando
python --version
Compruébalo. - Herramientas Git: Se utiliza para obtener el código fuente de GitHub, se recomienda instalarlo previamente.
2. Clonación del código base
Abra un terminal y ejecute el siguiente comando para obtener el código fuente de MTEB:
git clone https://github.com/embeddings-benchmark/mteb.git
cd mteb
Esto descargará el proyecto localmente y entrará en el directorio del proyecto.
3. Instalación de dependencias
MTEB requiere el soporte de algunas librerías Python, por lo que se recomienda crear un entorno virtual antes de instalar las dependencias para evitar conflictos:
python -m venv venv
source venv/bin/activate # Linux/MacOS
venv\Scripts\activate # Windows
A continuación, instale las dependencias básicas:
pip install -r requirements.txt
Para ejecutar la interfaz de la tabla de clasificación, también es necesario instalar Gradio:
pip install mteb[gradio]
4. Verificación de la instalación
Ejecute el siguiente comando para comprobar las tareas disponibles y garantizar una instalación correcta:
mteb --available_tasks
Si vuelve a la lista de tareas, la configuración del entorno habrá finalizado.
Utilización
La función principal de MTEB es evaluar los modelos de incrustación de texto, y el procedimiento operativo principal es el siguiente:
Función 1: Ejecutar tareas predefinidas para evaluar los modelos existentes
MTEB permite probar directamente los modelos existentes (por ejemplo, el modelo SentenceTransformer). Por ejemplo, evaluar el rendimiento del modelo "average_word_embeddings_komninos" en la tarea Banking77Classification:
mteb -m average_word_embeddings_komninos -t Banking77Classification --output_folder results/average_word_embeddings_komninos --verbosity 3
-m
Especifica el nombre del modelo.-t
Especifique el nombre de la tarea.--output_folder
Especifica la ruta donde se guardan los resultados.--verbosity 3
Muestra el registro detallado.
Los resultados se guardan en una carpeta específica que contiene las puntuaciones de cada tarea.
Función 2: Probar modelos personalizados
Si quieres probar tu propio modelo, sólo tienes que implementar una interfaz sencilla. Tomemos como ejemplo el SentenceTransformer:
from mteb import MTEB
from sentence_transformers import SentenceTransformer
# 加载模型
model = SentenceTransformer("average_word_embeddings_komninos")
# 定义评估任务
evaluation = MTEB(tasks=["Banking77Classification"])
# 运行评估
evaluation.run(model, output_folder="results")
Tras la ejecución, los resultados se guardan en la carpeta "resultados".
Característica 3: incrustación en caché para optimizar la eficiencia
Para las pruebas repetitivas, se puede activar el almacenamiento en caché para evitar el doble recuento de incrustaciones:
from mteb.models.cache_wrapper import CachedEmbeddingWrapper
# 包装模型以启用缓存
model_with_cache = CachedEmbeddingWrapper(model, cache_path="cache_embeddings")
evaluation.run(model_with_cache)
El archivo de caché se almacena en la ruta especificada por nombre de tarea.
Función 4: Ver clasificación
Para ver la clasificación actual de modelos, visite la tabla de clasificación oficial o despliéguela localmente:
git clone https://github.com/embeddings-benchmark/leaderboard.git
cd leaderboard
pip install -r requirements.txt
python app.py
Acceso en el navegador http://localhost:7860
Puedes ver las tablas de clasificación en tiempo real.
Función 5: Añadir nuevas tareas
Los usuarios pueden ampliar la MTEB heredando de una clase de tarea, por ejemplo, añadiendo una tarea de reordenación:
from mteb.abstasks.AbsTaskReranking import AbsTaskReranking
class CustomReranking(AbsTaskReranking):
@property
def description(self):
return {
"name": "CustomReranking",
"description": "自定义重排序任务",
"type": "Reranking",
"eval_splits": ["test"],
"eval_langs": ["en"],
"main_score": "map"
}
evaluation = MTEB(tasks=[CustomReranking()])
evaluation.run(model)
habilidad operativa
- Soporte Multi-GPUPara las tareas de recuperación, se puede utilizar la aceleración multi-GPU:
pip install git+https://github.com/NouamaneTazi/beir@nouamane/better-multi-gpu
torchrun --nproc_per_node=2 scripts/retrieval_multigpu.py
- subconjunto seleccionado: Sólo se evalúa un subconjunto de tareas específicas:
evaluation.run(model, eval_subsets=["Banking77Classification"])
- Ajustar el tamaño del lote: Optimización de la velocidad de codificación:
evaluation.run(model, encode_kwargs={"batch_size": 32})
Con los pasos anteriores, los usuarios pueden iniciarse fácilmente en MTEB y completar la evaluación del modelo o la ampliación funcional.
© declaración de copyright
El artículo está protegido por derechos de autor y no debe reproducirse sin autorización.
Artículos relacionados
Sin comentarios...