🚀 跨编码器-mMiniLMv2-L12-mmarcoFR
这是一个用于法语的跨编码器模型。它在问题 - 段落对之间执行交叉注意力,并输出相关性得分。该模型可用作语义搜索的重排器:给定一个查询和一组由高效的一级检索系统(如 BM25 或经过微调的密集单向量双编码器)检索到的潜在相关段落,对每个查询 - 段落对进行编码,并根据模型预测的得分按相关性降序对段落进行排序。
🚀 快速开始
以下是使用 Sentence - Transformers、FlagEmbedding 或 Huggingface Transformers 调用该模型的示例。
📦 安装指南
使用 Sentence - Transformers
首先安装 库:
pip install -U sentence-transformers
使用 FlagEmbedding
首先安装 库:
pip install -U FlagEmbedding
使用 Huggingface Transformers
首先安装 库:
pip install -U transformers
💻 使用示例
基础用法
使用 Sentence - Transformers
from sentence_transformers import CrossEncoder
pairs = [('Question', 'Paragraphe 1'), ('Question', 'Paragraphe 2') , ('Question', 'Paragraphe 3')]
model = CrossEncoder('antoinelouis/crossencoder-mMiniLMv2-L12-mmarcoFR')
scores = model.predict(pairs)
print(scores)
使用 FlagEmbedding
from FlagEmbedding import FlagReranker
pairs = [('Question', 'Paragraphe 1'), ('Question', 'Paragraphe 2') , ('Question', 'Paragraphe 3')]
reranker = FlagReranker('antoinelouis/crossencoder-mMiniLMv2-L12-mmarcoFR')
scores = reranker.compute_score(pairs)
print(scores)
使用 Huggingface Transformers
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
pairs = [('Question', 'Paragraphe 1'), ('Question', 'Paragraphe 2') , ('Question', 'Paragraphe 3')]
tokenizer = AutoTokenizer.from_pretrained('antoinelouis/crossencoder-mMiniLMv2-L12-mmarcoFR')
model = AutoModelForSequenceClassification.from_pretrained('antoinelouis/crossencoder-mMiniLMv2-L12-mmarcoFR')
model.eval()
with torch.no_grad():
inputs = tokenizer(pairs, padding=True, truncation=True, return_tensors='pt', max_length=512)
scores = model(**inputs, return_dict=True).logits.view(-1, ).float()
print(scores)
📚 详细文档
评估
该模型在 [mMARCO - fr](https://ir - datasets.com/mmarco.html#mmarco/v2/fr/) 的较小开发集上进行评估,该开发集包含 6980 个查询,需要对包含正例和 [ColBERTv2 硬负例](https://huggingface.co/datasets/antoinelouis/msmarco - dev - small - negatives) 的 1000 个段落的集合进行重排。我们报告了平均倒数排名(MRR)和不同截断点的召回率(R@k)。要查看它与其他法语神经检索器的比较情况,请查看 DécouvrIR 排行榜。
训练
数据
我们使用 [mMARCO](https://huggingface.co/datasets/unicamp - dl/mmarco) 数据集中的法语训练样本,这是 MS MARCO 的多语言机器翻译版本,包含 880 万个段落和 53.9 万个训练查询。我们不使用官方数据集提供的 BM25 负例,而是从 12 个不同的密集检索器中挖掘更难的负例,使用 [msmarco - hard - negatives](https://huggingface.co/datasets/sentence - transformers/msmarco - hard - negatives#msmarco - hard - negativesjsonlgz) 蒸馏数据集。最终,我们采样了 260 万个形式为(查询,段落,相关性)的训练三元组,正例与负例的比例为 1(即 50% 的对是相关的,50% 是不相关的)。
实现
该模型从 [nreimers/mMiniLMv2 - L12 - H384 - distilled - from - XLMR - Large](https://huggingface.co/nreimers/mMiniLMv2 - L12 - H384 - distilled - from - XLMR - Large) 检查点初始化,并通过二元交叉熵损失进行优化(如 monoBERT 中所述)。它在一个 80GB 的 NVIDIA H100 GPU 上使用 AdamW 优化器进行 20000 步的微调,批量大小为 128,恒定学习率为 2e - 5。我们将连接后的问题 - 段落对的最大序列长度设置为 256 个标记。我们使用 sigmoid 函数来获得 0 到 1 之间的分数。
指标信息
属性 |
详情 |
模型类型 |
跨编码器模型 |
训练数据 |
mMARCO 数据集中的法语训练样本,采样 260 万个形式为(查询,段落,相关性)的训练三元组,正例与负例比例为 1 |
评估指标 |
平均倒数排名(MRR)和不同截断点的召回率(R@k),包括 Recall@500、Recall@100、Recall@10、MRR@10 |
评估数据集 |
mMARCO - fr 的较小开发集,包含 6980 个查询,需对 1000 个段落集合重排 |
初始化检查点 |
nreimers/mMiniLMv2 - L12 - H384 - distilled - from - XLMR - Large |
优化损失函数 |
二元交叉熵损失 |
优化器 |
AdamW |
训练步数 |
20000 步 |
批量大小 |
128 |
学习率 |
2e - 5 |
最大序列长度 |
256 个标记 |
分数函数 |
sigmoid 函数 |
📄 许可证
本项目采用 MIT 许可证。
🔖 引用
@online{louis2024decouvrir,
author = 'Antoine Louis',
title = 'DécouvrIR: A Benchmark for Evaluating the Robustness of Information Retrieval Models in French',
publisher = 'Hugging Face',
month = 'mar',
year = '2024',
url = 'https://huggingface.co/spaces/antoinelouis/decouvrir',
}