🚀 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}
}