BAAI Bge Reranker V2 Gemma Gguf
模型简介
该模型直接以问题和文档作为输入,输出相似度分数而非嵌入向量,适用于文本重排序任务。
模型特点
多语言支持
适用于多语言场景,在英语能力和多语言能力上均表现优异。
轻量级设计
模型设计轻量,易于部署,推理速度快。
直接相似度输出
直接输出查询和文档的相关性分数,无需额外计算。
模型能力
文本相关性评分
多语言文本处理
文档重排序
使用案例
信息检索
搜索引擎结果排序
对搜索引擎返回的结果进行重排序,提升相关性。
提高搜索结果的相关性和用户满意度。
推荐系统
内容推荐
对推荐内容进行相关性排序,提升推荐质量。
提高推荐内容的准确性和用户点击率。
🚀 Sentence-Transformers 文本重排器
Sentence-Transformers 是一个用于文本重排的库,通过输入问题和文档,直接输出相似度得分,而非嵌入向量。该库提供了多种重排模型,适用于不同的语言和场景,可帮助用户快速获取文本相关性评分。
🚀 快速开始
安装依赖库
pip install -U FlagEmbedding
使用示例
普通重排器(bge-reranker-base / bge-reranker-large / bge-reranker-v2-m3 )
from FlagEmbedding import FlagReranker
reranker = FlagReranker('BAAI/bge-reranker-v2-m3', use_fp16=True) # 设置 use_fp16 为 True 可在轻微降低性能的情况下加速计算
score = reranker.compute_score(['query', 'passage'])
print(score) # -5.65234375
# 可以通过设置 "normalize=True" 将分数映射到 0-1 之间,这将对分数应用 sigmoid 函数
score = reranker.compute_score(['query', 'passage'], normalize=True)
print(score) # 0.003497010252573502
scores = reranker.compute_score([['what is panda?', 'hi'], ['what is panda?', 'The giant panda (Ailuropoda melanoleuca), sometimes called a panda bear or simply panda, is a bear species endemic to China.']])
print(scores) # [-8.1875, 5.26171875]
# 可以通过设置 "normalize=True" 将分数映射到 0-1 之间,这将对分数应用 sigmoid 函数
scores = reranker.compute_score([['what is panda?', 'hi'], ['what is panda?', 'The giant panda (Ailuropoda melanoleuca), sometimes called a panda bear or simply panda, is a bear species endemic to China.']], normalize=True)
print(scores) # [0.00027803096387751553, 0.9948403768236574]
基于大语言模型的重排器
from FlagEmbedding import FlagLLMReranker
reranker = FlagLLMReranker('BAAI/bge-reranker-v2-gemma', use_fp16=True) # 设置 use_fp16 为 True 可在轻微降低性能的情况下加速计算
# reranker = FlagLLMReranker('BAAI/bge-reranker-v2-gemma', use_bf16=True) # 也可以设置 use_bf16=True 来在轻微降低性能的情况下加速计算
score = reranker.compute_score(['query', 'passage'])
print(score)
scores = reranker.compute_score([['what is panda?', 'hi'], ['what is panda?', 'The giant panda (Ailuropoda melanoleuca), sometimes called a panda bear or simply panda, is a bear species endemic to China.']])
print(scores)
基于大语言模型的分层重排器
from FlagEmbedding import LayerWiseFlagLLMReranker
reranker = LayerWiseFlagLLMReranker('BAAI/bge-reranker-v2-minicpm-layerwise', use_fp16=True) # 设置 use_fp16 为 True 可在轻微降低性能的情况下加速计算
# reranker = LayerWiseFlagLLMReranker('BAAI/bge-reranker-v2-minicpm-layerwise', use_bf16=True) # 也可以设置 use_bf16=True 来在轻微降低性能的情况下加速计算
score = reranker.compute_score(['query', 'passage'], cutoff_layers=[28]) # 调整 'cutoff_layers' 以选择用于计算分数的层
print(score)
scores = reranker.compute_score([['what is panda?', 'hi'], ['what is panda?', 'The giant panda (Ailuropoda melanoleuca), sometimes called a panda bear or simply panda, is a bear species endemic to China.']], cutoff_layers=[28])
print(scores)
✨ 主要特性
- 与嵌入模型不同,重排器以问题和文档作为输入,直接输出相似度得分,而非嵌入向量。
- 提供多种重排模型,支持中文和英文,部分模型支持多语言。
- 轻量级重排模型,易于部署,推理速度快。
- 可通过微调进一步优化模型性能。
📦 安装指南
使用 pip
安装 FlagEmbedding
库:
pip install -U FlagEmbedding
📚 详细文档
模型列表
模型 | 基础模型 | 语言 | 分层 | 特性 |
---|---|---|---|---|
BAAI/bge-reranker-base | xlm-roberta-base | 中文和英文 | - | 轻量级重排模型,易于部署,推理速度快。 |
BAAI/bge-reranker-large | xlm-roberta-large | 中文和英文 | - | 轻量级重排模型,易于部署,推理速度快。 |
BAAI/bge-reranker-v2-m3 | bge-m3 | 多语言 | - | 轻量级重排模型,具备强大的多语言能力,易于部署,推理速度快。 |
BAAI/bge-reranker-v2-gemma | gemma-2b | 多语言 | - | 适用于多语言场景,在英语能力和多语言能力方面表现良好。 |
BAAI/bge-reranker-v2-minicpm-layerwise | MiniCPM-2B-dpo-bf16 | 多语言 | 8 - 40 | 适用于多语言场景,在英语和中文能力方面表现良好,可自由选择输出层,便于加速推理。 |
模型选择建议
- 多语言场景:使用 BAAI/bge-reranker-v2-m3 和 BAAI/bge-reranker-v2-gemma。
- 中文或英文场景:使用 BAAI/bge-reranker-v2-m3 和 BAAI/bge-reranker-v2-minicpm-layerwise。
- 追求效率:使用 BAAI/bge-reranker-v2-m3 和 BAAI/bge-reranker-v2-minicpm-layerwise 的较低层。
- 追求更好性能:推荐使用 BAAI/bge-reranker-v2-minicpm-layerwise 和 BAAI/bge-reranker-v2-gemma。
量化模型
微调
数据格式
训练数据应为一个 JSON 文件,每行是一个如下的字典:
{"query": str, "pos": List[str], "neg":List[str], "prompt": str}
query
是查询,pos
是正文本列表,neg
是负文本列表,prompt
表示查询和文本之间的关系。如果某个查询没有负文本,可以从整个语料库中随机采样一些作为负样本。
示例数据文件见 toy_finetune_data.jsonl。
训练
可以使用以下代码微调重排器:
基于大语言模型的重排器
torchrun --nproc_per_node {number of gpus} \
-m FlagEmbedding.llm_reranker.finetune_for_instruction.run \
--output_dir {path to save model} \
--model_name_or_path google/gemma-2b \
--train_data ./toy_finetune_data.jsonl \
--learning_rate 2e-4 \
--num_train_epochs 1 \
--per_device_train_batch_size 1 \
--gradient_accumulation_steps 16 \
--dataloader_drop_last True \
--query_max_len 512 \
--passage_max_len 512 \
--train_group_size 16 \
--logging_steps 1 \
--save_steps 2000 \
--save_total_limit 50 \
--ddp_find_unused_parameters False \
--gradient_checkpointing \
--deepspeed stage1.json \
--warmup_ratio 0.1 \
--bf16 \
--use_lora True \
--lora_rank 32 \
--lora_alpha 64 \
--use_flash_attn True \
--target_modules q_proj k_proj v_proj o_proj
基于大语言模型的分层重排器
torchrun --nproc_per_node {number of gpus} \
-m FlagEmbedding.llm_reranker.finetune_for_layerwise.run \
--output_dir {path to save model} \
--model_name_or_path openbmb/MiniCPM-2B-dpo-bf16 \
--train_data ./toy_finetune_data.jsonl \
--learning_rate 2e-4 \
--num_train_epochs 1 \
--per_device_train_batch_size 1 \
--gradient_accumulation_steps 16 \
--dataloader_drop_last True \
--query_max_len 512 \
--passage_max_len 512 \
--train_group_size 16 \
--logging_steps 1 \
--save_steps 2000 \
--save_total_limit 50 \
--ddp_find_unused_parameters False \
--gradient_checkpointing \
--deepspeed stage1.json \
--warmup_ratio 0.1 \
--bf16 \
--use_lora True \
--lora_rank 32 \
--lora_alpha 64 \
--use_flash_attn True \
--target_modules q_proj k_proj v_proj o_proj \
--start_layer 8 \
--head_multi True \
--head_type simple \
--lora_extra_parameters linear_head
评估
-
llama-index
-
BEIR 对 bge-en-v1.5 large 的前 100 个结果进行重排。
对 e5 mistral 7b instruct 的前 100 个结果进行重排。
-
CMTEB-retrieval 对 bge-zh-v1.5 large 的前 100 个结果进行重排。
-
miracl(多语言) 对 bge-m3 的前 100 个结果进行重排。
📄 许可证
本项目采用 Apache-2.0 许可证。
📚 引用
如果您觉得这个仓库有用,请考虑给它加星并引用:
@misc{li2023making,
title={Making Large Language Models A Better Foundation For Dense Retrieval},
author={Chaofan Li and Zheng Liu and Shitao Xiao and Yingxia Shao},
year={2023},
eprint={2312.15503},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
@misc{chen2024bge,
title={BGE M3-Embedding: Multi-Lingual, Multi-Functionality, Multi-Granularity Text Embeddings Through Self-Knowledge Distillation},
author={Jianlv Chen and Shitao Xiao and Peitian Zhang and Kun Luo and Defu Lian and Zheng Liu},
year={2024},
eprint={2402.03216},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
更多信息
- 量化作者:Richard Erkhov
- GitHub:https://github.com/RichardErkhov
- Discord:https://discord.gg/pvy7H8DZMG
- 请求更多模型:https://github.com/RichardErkhov/quant_request
- 模型创建者:https://huggingface.co/BAAI/
- 原始模型:https://huggingface.co/BAAI/bge-reranker-v2-gemma/
Jina Embeddings V3
Jina Embeddings V3 是一个多语言句子嵌入模型,支持超过100种语言,专注于句子相似度和特征提取任务。
文本嵌入
Transformers 支持多种语言

J
jinaai
3.7M
911
Ms Marco MiniLM L6 V2
Apache-2.0
基于MS Marco段落排序任务训练的交叉编码器模型,用于信息检索中的查询-段落相关性评分
文本嵌入 英语
M
cross-encoder
2.5M
86
Opensearch Neural Sparse Encoding Doc V2 Distill
Apache-2.0
基于蒸馏技术的稀疏检索模型,专为OpenSearch优化,支持免推理文档编码,在搜索相关性和效率上优于V1版本
文本嵌入
Transformers 英语

O
opensearch-project
1.8M
7
Sapbert From PubMedBERT Fulltext
Apache-2.0
基于PubMedBERT的生物医学实体表征模型,通过自对齐预训练优化语义关系捕捉
文本嵌入 英语
S
cambridgeltl
1.7M
49
Gte Large
MIT
GTE-Large 是一个强大的句子转换器模型,专注于句子相似度和文本嵌入任务,在多个基准测试中表现出色。
文本嵌入 英语
G
thenlper
1.5M
278
Gte Base En V1.5
Apache-2.0
GTE-base-en-v1.5 是一个英文句子转换器模型,专注于句子相似度任务,在多个文本嵌入基准测试中表现优异。
文本嵌入
Transformers 支持多种语言

G
Alibaba-NLP
1.5M
63
Gte Multilingual Base
Apache-2.0
GTE Multilingual Base 是一个多语言的句子嵌入模型,支持超过50种语言,适用于句子相似度计算等任务。
文本嵌入
Transformers 支持多种语言

G
Alibaba-NLP
1.2M
246
Polybert
polyBERT是一个化学语言模型,旨在实现完全由机器驱动的超快聚合物信息学。它将PSMILES字符串映射为600维密集指纹,以数值形式表示聚合物化学结构。
文本嵌入
Transformers

P
kuelumbus
1.0M
5
Bert Base Turkish Cased Mean Nli Stsb Tr
Apache-2.0
基于土耳其语BERT的句子嵌入模型,专为语义相似度任务优化
文本嵌入
Transformers 其他

B
emrecan
1.0M
40
GIST Small Embedding V0
MIT
基于BAAI/bge-small-en-v1.5模型微调的文本嵌入模型,通过MEDI数据集与MTEB分类任务数据集训练,优化了检索任务的查询编码能力。
文本嵌入
Safetensors 英语
G
avsolatorio
945.68k
29
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers 支持多种语言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers 英语

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统 中文
R
uer
2,694
98