🚀 重排器(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},
}