🚀 跨编码器CamemBERT大模型mMARCO法语版
这是一个用于法语的跨编码器模型。它在问题 - 段落对之间执行交叉注意力,并输出相关性得分。该模型可作为语义搜索的重排器:给定一个查询和一组由高效的第一阶段检索系统(如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-camembert-large-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-camembert-large-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-camembert-large-mmarcoFR')
model = AutoModelForSequenceClassification.from_pretrained('antoinelouis/crossencoder-camembert-large-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的较小开发集上进行评估,该开发集包含6980个查询,需要对包含正例和ColBERTv2硬负例的1000个段落集合进行重排。我们报告了平均倒数排名(MRR)和不同截断点的召回率(R@k)。若要查看该模型与其他法语神经检索器的对比情况,请查看DécouvrIR排行榜。
训练
数据
我们使用了mmarco数据集中的法语训练样本,这是MS MARCO的多语言机器翻译版本,包含880万个段落和53.9万个训练查询。我们没有使用官方数据集提供的BM25负例,而是使用msmarco - hard - negatives蒸馏数据集,从12个不同的密集检索器中挖掘出的更难的负例。最终,我们采样了260万个形式为(查询、段落、相关性)的训练三元组,正例与负例的比例为1(即50%的对是相关的,50%是不相关的)。
实现
该模型从almanach/camembert - large检查点初始化,并通过二元交叉熵损失进行优化(如monoBERT)。使用AdamW优化器在一块80GB的NVIDIA H100 GPU上进行20000步的微调,批量大小为128,恒定学习率为2e - 5。我们将连接后的问题 - 段落对的最大序列长度设置为256个标记。我们使用sigmoid函数来获得0到1之间的分数。
📄 许可证
本项目采用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',
}
📋 模型信息
属性 |
详情 |
管道标签 |
文本排序 |
语言 |
法语 |
许可证 |
MIT |
数据集 |
unicamp - dl/mmarco |
指标 |
召回率 |
标签 |
段落重排 |
库名称 |
sentence - transformers |
基础模型 |
almanach/camembert - large |
模型名称 |
crossencoder - camembert - large - mmarcoFR |
任务类型 |
文本分类(段落重排) |
评估数据集 |
mMARCO - fr(unicamp - dl/mmarco,法语验证集) |
Recall@500 |
97.33 |
Recall@100 |
88.1 |
Recall@10 |
62.61 |
MRR@10 |
35.23 |