项目介绍:bge-reranker-v2-gemma
背景介绍
bge-reranker-v2-gemma 项目是一个智能文本重排序工具,其重点在于对文本查询与文档之间的相关性进行评分。不同于传统的嵌入模型,该项目中的重排序器直接输入问题和文档,然后直接输出相似度得分,而不进行向量嵌入。最终得分可以使用 sigmoid 函数映射到 [0,1] 的区间内,从而反映出查询和文档的相关性程度。
模型列表
bge-reranker-v2-gemma 提供多个适用于不同需求的模型:
- bge-reranker-base 和 bge-reranker-large:轻量级的中英文支持模型,容易部署,推理速度快。
- bge-reranker-v2-m3:多语言支持的轻量级模型,拥有强大的多语言处理能力。
- bge-reranker-v2-gemma:适用于多语言情境,特别在英语能力和多语言能力上表现出色。
- bge-reranker-v2-minicpm-layerwise:允许自由选择输出层以加速推理,适用于多语言情境下的应用。
使用指南
通过 FlagEmbedding 使用
首先,通过 pip 安装 FlagEmbedding:
pip install -U FlagEmbedding
使用正常的重排序器来获取相关性评分:
from FlagEmbedding import FlagReranker
reranker = FlagReranker('BAAI/bge-reranker-v2-gemma', use_fp16=True)
score = reranker.compute_score(['query', 'passage'], normalize=True)
print(score)
对于基于大语言模型 (LLM) 的重排序:
from FlagEmbedding import FlagLLMReranker
reranker = FlagLLMReranker('BAAI/bge-reranker-v2-gemma', use_fp16=True)
score = reranker.compute_score(['query', 'passage'])
print(score)
使用 Huggingface transformers
正常的重排序器模型使用示例:
import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('BAAI/bge-reranker-v2-gemma')
model = AutoModelForSequenceClassification.from_pretrained('BAAI/bge-reranker-v2-gemma')
model.eval()
pairs = [['what is panda?', 'hi'], ['what is panda?', 'The giant panda...']]
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)
微调指南
可以通过 JSON 格式的数据文件进行训练,以便微调模型以更好地适应特定的上下文和数据集。
评价与测试
bge-reranker-v2-gemma 使用以下基准进行评估:
- llama-index 和 BEIR 基准
- 翻译:在多语言情景下的准确率测试
- CMTEB-retrieval 和 miracl 多语言评估
此项目集合了多语言、多功能、多粒度的文本嵌入技术,旨在提高在检索任务中重排序的性能。如果您发现这个项目有用,请考虑给予 star 及引用:
@misc{li2023making,
title={Making Large Language Models A Better Foundation For Dense Retrieval},
author={Chaofan Li et al.},
year={2023},
eprint={2312.15503},
archivePrefix={arXiv},
primaryClass={cs.CL}
}