🚀 MMLW-e5-base
MMLW(必须有更好的消息)是用于波兰语的神经文本编码器。该模型是一个蒸馏模型,可用于生成适用于多种任务的嵌入向量,如语义相似度计算、聚类、信息检索等。它也可以作为进一步微调的基础模型。该模型能够将文本转换为 768 维的向量。
模型以多语言 E5 检查点进行初始化,然后使用多语言知识蒸馏方法在包含 6000 万对波兰语 - 英语文本对的多样化语料库上进行训练。在蒸馏过程中,我们使用了英语 FlagEmbeddings (BGE)作为教师模型。
🚀 快速开始
安装依赖
你可以使用以下命令安装 sentence-transformers
库:
pip install sentence-transformers
代码示例
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-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])
✨ 主要特性
- 多任务适用性:可用于语义相似度计算、聚类、信息检索等多种自然语言处理任务。
- 可微调性:可以作为基础模型进行进一步的微调,以适应特定的任务需求。
- 向量转换:能够将文本转换为 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-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])
高级用法
以下是一个更复杂的示例,展示如何在一个循环中处理多个查询和段落:
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?",
query_prefix + "Jak zwiększyć swoją wytrzymałość?"
]
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-e5-base")
for query in queries:
query_emb = model.encode([query], convert_to_tensor=True, show_progress_bar=False)
answers_emb = model.encode(answers, convert_to_tensor=True, show_progress_bar=False)
best_answer_index = cos_sim(query_emb, answers_emb).argmax().item()
print(f"Query: {query}, Best answer: {answers[best_answer_index]}")
📚 详细文档
评估结果
- 波兰大规模文本嵌入基准测试(MTEB):该模型在 MTEB 上的平均得分达到了 59.71。详细结果请参考 MTEB 排行榜。
- 波兰信息检索基准测试:该模型在该基准测试中的 NDCG@10 达到了 53.56。详细结果请参考 PIRB 排行榜。
模型信息表格
重要提示
⚠️ 重要提示
我们的嵌入模型在编码文本时需要使用特定的前缀和后缀。对于此模型,查询应前缀为 "query: ",段落应前缀为 "passage: "。
使用建议
💡 使用建议
在使用模型进行推理时,确保输入的文本按照要求添加了正确的前缀,以获得准确的结果。
🔧 技术细节
模型以多语言 E5 检查点进行初始化,然后使用多语言知识蒸馏方法在包含 6000 万对波兰语 - 英语文本对的多样化语料库上进行训练。在蒸馏过程中,使用了英语 FlagEmbeddings (BGE)作为教师模型。这种训练方式使得模型能够学习到教师模型的知识,从而在波兰语相关的任务中表现出色。
📄 许可证
本模型使用 Apache 2.0 许可证。
致谢
本模型的训练得到了格但斯克工业大学 TASK 中心计划提供的 A100 GPU 集群的支持。
引用
如果你在研究中使用了本模型,请使用以下 BibTeX 引用:
@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}
}