🚀 重排器(Reranker)
重排器(Reranker)與嵌入模型不同,它以問題和文檔作為輸入,直接輸出相似度而非嵌入向量。通過向重排器輸入查詢和段落,你可以得到一個相關性得分,該得分可通過Sigmoid函數映射為[0, 1]範圍內的浮點值。
🚀 快速開始
✨ 主要特性
- 以查詢和文檔為輸入,直接輸出相似度得分。
- 得分可通過Sigmoid函數映射到[0, 1]範圍。
📦 安裝指南
使用FlagEmbedding
pip install -U FlagEmbedding
使用Huggingface transformers
pip install -U transformers
💻 使用示例
基礎用法
使用FlagEmbedding
from FlagEmbedding import FlagReranker
reranker = FlagReranker('namdp-ptit/ViRanker',
use_fp16=True)
score = reranker.compute_score(['ai là vị vua cuối cùng của việt nam', 'vua bảo đại là vị vua cuối cùng của nước ta'])
print(score)
score = reranker.compute_score(['ai là vị vua cuối cùng của việt nam', 'vua bảo đại là vị vua cuối cùng của nước ta'],
normalize=True)
print(score)
scores = reranker.compute_score(
[
['ai là vị vua cuối cùng của việt nam', 'vua bảo đại là vị vua cuối cùng của nước ta'],
['ai là vị vua cuối cùng của việt nam', 'lý nam đế là vị vua đầu tiên của nước ta']
]
)
print(scores)
scores = reranker.compute_score(
[
['ai là vị vua cuối cùng của việt nam', 'vua bảo đại là vị vua cuối của nước ta'],
['ai là vị vua cuối cùng của việt nam', 'lý nam đế là vị vua đầu tiên của nước ta']
],
normalize=True
)
print(scores)
使用Huggingface transformers
import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('namdp-ptit/ViRanker')
model = AutoModelForSequenceClassification.from_pretrained('namdp-ptit/ViRanker')
model.eval()
pairs = [
['ai là vị vua cuối cùng của việt nam', 'vua bảo đại là vị vua cuối cùng của nước ta'],
['ai là vị vua cuối cùng của việt nam', 'lý nam đế là vị vua đầu tiên của nước ta']
],
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)
📚 詳細文檔
微調(Fine-tune)
數據格式
訓練數據應為JSON文件,每行是一個如下格式的字典:
{"query": str, "pos": List[str], "neg": List[str]}
query
是查詢內容,pos
是正文本列表,neg
是負文本列表。如果某個查詢沒有負文本,可以從整個語料庫中隨機採樣一些作為負樣本。此外,對於訓練數據中的每個查詢,我們使用大語言模型(LLMs)為其生成難負樣本,方法是讓LLMs創建與 pos
中文檔相反的文檔。
🔧 技術細節
性能表現
以下是我們的模型與其他一些預訓練交叉編碼器在MS MMarco Passage Reranking - Vi - Dev數據集上的對比結果:
📄 許可證
本項目採用Apache-2.0許可證。
聯繫方式
支持項目
如果您認為本項目有幫助並希望支持其持續開發,可以通過以下方式做出貢獻:
- 為倉庫加星:通過為倉庫加星來表達您的認可,您的支持將激勵我們進行更多的開發和改進。
- 貢獻代碼:我們歡迎您的貢獻!您可以通過報告錯誤、提交拉取請求或提出新功能建議來提供幫助。
- 捐贈:如果您希望提供資金支持,可以考慮進行捐贈。您可以通過以下方式捐贈:
- 越南商業銀行(Vietcombank):9912692172 - DANG PHUONG NAM
感謝您的支持!
引用
請按以下格式引用:
@misc{ViRanker,
title={ViRanker: A Cross-encoder Model for Vietnamese Text Ranking},
author={Nam Dang Phuong},
year={2024},
publisher={Huggingface},
}