pipeline_tag: 文本排序
language: 法语
license: mit协议
datasets:
- unicamp-dl/mmarco
metrics:
- 召回率
tags:
- 段落重排序
library_name: sentence-transformers库
base_model: FacebookAI/xlm-roberta-base基础模型
model-index:
- name: crossencoder-xlm-roberta-base-mmarcoFR模型
results:
- task:
type: 文本分类
name: 段落重排序任务
dataset:
name: mMARCO-fr数据集
type: unicamp-dl/mmarco
config: 法语版本
split: 验证集
metrics:
- type: 前500召回率
value: 96.03
name: Recall@500
- type: 前100召回率
value: 85.03
name: Recall@100
- type: 前10召回率
value: 59.57
name: Recall@10
- type: 前10平均倒数排名
value: 34.19
name: MRR@10
crossencoder-xlm-roberta-base-mmarcoFR模型
这是一个法语交叉编码器模型。该模型对问题-段落对执行交叉注意力计算并输出相关性分数。
本模型应用于语义搜索的重新排序场景:给定查询语句和由高效初级检索系统(如BM25或经过微调的单向量双编码器)返回的潜在相关段落集合,对每个查询-段落对进行编码,并根据模型预测的相关性分数降序排列段落。
使用方式
以下是使用该模型的三种方法示例:Sentence-Transformers库、FlagEmbedding库或Huggingface Transformers库。
使用Sentence-Transformers库
首先安装库:pip install -U sentence-transformers
。然后按如下方式使用:
from sentence_transformers import CrossEncoder
pairs = [('问题', '段落1'), ('问题', '段落2'), ('问题', '段落3')]
model = CrossEncoder('antoinelouis/crossencoder-xlm-roberta-base-mmarcoFR')
scores = model.predict(pairs)
print(scores)
使用FlagEmbedding库
首先安装库:pip install -U FlagEmbedding
。然后按如下方式使用:
from FlagEmbedding import FlagReranker
pairs = [('问题', '段落1'), ('问题', '段落2'), ('问题', '段落3')]
reranker = FlagReranker('antoinelouis/crossencoder-xlm-roberta-base-mmarcoFR')
scores = reranker.compute_score(pairs)
print(scores)
使用HuggingFace Transformers库
首先安装库:pip install -U transformers
。然后按如下方式使用:
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
pairs = [('问题', '段落1'), ('问题', '段落2'), ('问题', '段落3')]
tokenizer = AutoTokenizer.from_pretrained('antoinelouis/crossencoder-xlm-roberta-base-mmarcoFR')
model = AutoModelForSequenceClassification.from_pretrained('antoinelouis/crossencoder-xlm-roberta-base-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开发集的精简版本上进行评估,该数据集包含6,980条查询,每条查询需要从包含正例和ColBERTv2困难负例的1000个段落集合中进行重排序。我们报告不同截断点的平均倒数排名(MRR)和召回率(R@k)。要了解该模型与其他法语神经检索模型的对比表现,请查看DécouvrIR排行榜。
训练过程
训练数据
我们使用来自mMARCO数据集的法语训练样本,这是MS MARCO的多语言机器翻译版本,包含880万段落和53.9万训练查询。我们未使用官方数据集提供的BM25负例,而是采用从12个不同稠密检索器中挖掘的更难负例,这些负例来自msmarco-hard-negatives蒸馏数据集。最终我们采样了260万组(查询,段落,相关性)形式的三元组,正负样本比例为1:1。
实现细节
模型基于FacebookAI/xlm-roberta-base检查点初始化,通过二元交叉熵损失进行优化(采用monoBERT方法)。在80GB NVIDIA H100 GPU上使用AdamW优化器微调2万步,批次大小为128,恒定学习率2e-5。设置拼接后的问题-段落对最大序列长度为256个token,使用sigmoid函数将分数映射到0-1区间。
引用文献
@online{louis2024decouvrir,
author = '安托万·路易',
title = 'DécouvrIR:法语信息检索模型鲁棒性评估基准',
publisher = 'Hugging Face',
month = '三月',
year = '2024',
url = 'https://huggingface.co/spaces/antoinelouis/decouvrir',
}