🚀 MMLW-retrieval-e5-base
MMLW(必须有更好的消息)是用于波兰语的神经文本编码器。该模型针对信息检索任务进行了优化,能够将查询和段落转换为768维的向量。
🚀 快速开始
MMLW是专为波兰语设计的神经文本编码器,此模型在信息检索任务中表现出色,可将查询和段落转化为768维向量。
✨ 主要特性
- 针对信息检索任务进行了优化。
- 能将查询和段落转换为768维向量。
- 采用两步训练流程,结合多语言知识蒸馏方法和对比损失微调。
📦 安装指南
暂未提供相关安装步骤。
💻 使用示例
基础用法
from sentence_transformers import SentenceTransformer
from sentence_transformers.util import cos_sim
query_prefix = "query: "
answer_prefix = "passage: "
queries = [query_prefix + "Jak dożyć 100 lat?"]
answers = [
answer_prefix + "Trzeba zdrowo się odżywiać i uprawiać sport.",
answer_prefix + "Trzeba pić alkohol, imprezować i jeździć szybkimi autami.",
answer_prefix + "Gdy trwała kampania politycy zapewniali, że rozprawią się z zakazem niedzielnego handlu."
]
model = SentenceTransformer("sdadas/mmlw-retrieval-e5-base")
queries_emb = model.encode(queries, convert_to_tensor=True, show_progress_bar=False)
answers_emb = model.encode(answers, convert_to_tensor=True, show_progress_bar=False)
best_answer = cos_sim(queries_emb, answers_emb).argmax().item()
print(answers[best_answer])
高级用法
暂未提供相关高级用法示例。
📚 详细文档
模型训练过程
该模型的开发采用了两步流程:
- 第一步,使用多语言E5检查点进行初始化,然后在包含6000万对波兰语 - 英语文本的多样化语料库上,使用多语言知识蒸馏方法进行训练。我们使用英语FlagEmbeddings (BGE)作为蒸馏的教师模型。
- 第二步,在波兰语MS MARCO训练分割集上,使用对比损失对得到的模型进行微调。为了提高对比训练的效率,我们使用了较大的批量大小 - 小型模型为1152,基础模型为768,大型模型为288。微调在由12个A100 GPU组成的集群上进行。
评估结果
该模型在波兰语信息检索基准测试中达到了NDCG@10为56.09的成绩。详细结果请参阅PIRB排行榜。
致谢
该模型的训练得到了格但斯克工业大学在TASK中心倡议下提供的A100 GPU集群的支持。
引用
@article{dadas2024pirb,
title={{PIRB}: A Comprehensive Benchmark of Polish Dense and Hybrid Text Retrieval Methods},
author={Sławomir Dadas and Michał Perełkiewicz and Rafał Poświata},
year={2024},
eprint={2402.13350},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
🔧 技术细节
该模型是针对波兰语的信息检索任务进行优化的神经文本编码器。它通过两步训练过程得到:首先基于多语言E5检查点初始化,并利用多语言知识蒸馏方法在大规模的波兰语 - 英语文本对上进行训练;然后在波兰语MS MARCO数据集上使用对比损失进行微调。模型最终能够将查询和段落转换为768维的向量,以用于信息检索任务。
📄 许可证
本模型采用Apache 2.0许可证。
⚠️ 重要提示
2023 - 12 - 26:我们已将模型更新到新版本,结果有所改进。你仍然可以使用 v1 标签下载之前的版本:AutoModel.from_pretrained("sdadas/mmlw-retrieval-e5-base", revision="v1")
⚠️ 重要提示
我们的密集检索器在编码文本时需要使用特定的前缀和后缀。对于此模型,查询应加上 "query: " 前缀,段落应加上 "passage: " 前缀。