GraySoft
Projects Models About FAQ Contact Download guIDE →
Model Intelligence Sheet

richarderkhov/baai_-_bge-reranker-v2-gemma-gguf overview

More details please refer to our Github: FlagEmbedding. Different from embedding model, reranker uses question and document as input and directly output similarity instead of embedding. You can get a relevance score by inputting query and passage to the reranker. And the score can be mapped to a float value in [0,1] by sigmoid function.

sentence-transformersgguftext-rankingarxiv:2312.15503arxiv:2402.03216endpoints_compatibleregion:us
richarderkhov/baai_-_bge-reranker-v2-gemma-gguf visual
Downloads
507
Likes
1
Pipeline
text-ranking
Library
sentence-transformers
Visibility
Public
Access
Open

Repository Files & Downloads

22 files detected
Direct downloads for all repository files
FileTypeQuantizationSizeLink
bge-reranker-v2-gemma.IQ3_M.gguf GGUF IQ3_M 1.22 GB Download
bge-reranker-v2-gemma.IQ3_S.gguf GGUF IQ3_S 1.20 GB Download
bge-reranker-v2-gemma.IQ3_XS.gguf GGUF IQ3_XS 1.16 GB Download
bge-reranker-v2-gemma.IQ4_NL.gguf GGUF IQ4_NL 1.45 GB Download
bge-reranker-v2-gemma.IQ4_XS.gguf GGUF IQ4_XS 1.40 GB Download
bge-reranker-v2-gemma.Q2_K.gguf GGUF Q2_K 1.08 GB Download
bge-reranker-v2-gemma.Q3_K.gguf GGUF Q3_K 1.29 GB Download
bge-reranker-v2-gemma.Q3_K_L.gguf GGUF Q3_K_L 1.36 GB Download
bge-reranker-v2-gemma.Q3_K_M.gguf GGUF Q3_K_M 1.29 GB Download
bge-reranker-v2-gemma.Q3_K_S.gguf GGUF Q3_K_S 1.20 GB Download
bge-reranker-v2-gemma.Q4_0.gguf GGUF 1.44 GB Download
bge-reranker-v2-gemma.Q4_1.gguf GGUF 1.56 GB Download
bge-reranker-v2-gemma.Q4_K.gguf GGUF Q4_K 1.52 GB Download
bge-reranker-v2-gemma.Q4_K_M.gguf GGUF Q4_K_M 1.52 GB Download
bge-reranker-v2-gemma.Q4_K_S.gguf GGUF Q4_K_S 1.45 GB Download
bge-reranker-v2-gemma.Q5_0.gguf GGUF 1.68 GB Download
bge-reranker-v2-gemma.Q5_1.gguf GGUF 1.79 GB Download
bge-reranker-v2-gemma.Q5_K.gguf GGUF Q5_K 1.71 GB Download
bge-reranker-v2-gemma.Q5_K_M.gguf GGUF Q5_K_M 1.71 GB Download
bge-reranker-v2-gemma.Q5_K_S.gguf GGUF Q5_K_S 1.68 GB Download
bge-reranker-v2-gemma.Q6_K.gguf GGUF Q6_K 1.92 GB Download
bge-reranker-v2-gemma.Q8_0.gguf GGUF 2.49 GB Download

Model Details Live

Model Slug
richarderkhov/baai_-_bge-reranker-v2-gemma-gguf
Author
RichardErkhov
Pipeline Task
text-ranking
Library
sentence-transformers
Created
2024-10-07
Last Modified
2025-04-02
Gated
No
Private
No
HF SHA
49b479f79e181f8ac1ddefddb3074ff3143b0570
License
Unknown
Language
Unknown
Base Model
Unknown

Metadata Inspector

Normalized metadata (stored in metadata_json)
{
  "metadata": {},
  "card_data": {
    "library_name": "sentence-transformers",
    "pipeline_tag": "text-ranking",
    "frontmatter": {
      "library_name": "sentence-transformers",
      "pipeline_tag": "text-ranking"
    },
    "hero_image_url": "./assets/llama-index.png",
    "summary": "**More details please refer to our Github: FlagEmbedding.** Different from embedding model, reranker uses question and document as input and directly output similarity instead of embedding. You can get a relevance score by inputting query and passage to the reranker. And the score can be mapped to a float value in [0,1] by sigmoid function.",
    "quick_links": [],
    "benchmark_table_html": "",
    "readme_markdown": "---\nlibrary_name: sentence-transformers\npipeline_tag: text-ranking\n---\nQuantization made by Richard Erkhov.\n\n[Github](https://github.com/RichardErkhov)\n\n[Discord](https://discord.gg/pvy7H8DZMG)\n\n[Request more models](https://github.com/RichardErkhov/quant_request)\n\n\nbge-reranker-v2-gemma - GGUF\n- Model creator: https://huggingface.co/BAAI/\n- Original model: https://huggingface.co/BAAI/bge-reranker-v2-gemma/\n\n\n| Name | Quant method | Size |\n| ---- | ---- | ---- |\n| [bge-reranker-v2-gemma.Q2_K.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.Q2_K.gguf) | Q2_K | 1.08GB |\n| [bge-reranker-v2-gemma.IQ3_XS.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.IQ3_XS.gguf) | IQ3_XS | 1.16GB |\n| [bge-reranker-v2-gemma.IQ3_S.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.IQ3_S.gguf) | IQ3_S | 1.2GB |\n| [bge-reranker-v2-gemma.Q3_K_S.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.Q3_K_S.gguf) | Q3_K_S | 1.2GB |\n| [bge-reranker-v2-gemma.IQ3_M.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.IQ3_M.gguf) | IQ3_M | 1.22GB |\n| [bge-reranker-v2-gemma.Q3_K.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.Q3_K.gguf) | Q3_K | 1.29GB |\n| [bge-reranker-v2-gemma.Q3_K_M.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.Q3_K_M.gguf) | Q3_K_M | 1.29GB |\n| [bge-reranker-v2-gemma.Q3_K_L.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.Q3_K_L.gguf) | Q3_K_L | 1.36GB |\n| [bge-reranker-v2-gemma.IQ4_XS.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.IQ4_XS.gguf) | IQ4_XS | 1.4GB |\n| [bge-reranker-v2-gemma.Q4_0.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.Q4_0.gguf) | Q4_0 | 1.44GB |\n| [bge-reranker-v2-gemma.IQ4_NL.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.IQ4_NL.gguf) | IQ4_NL | 1.45GB |\n| [bge-reranker-v2-gemma.Q4_K_S.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.Q4_K_S.gguf) | Q4_K_S | 1.45GB |\n| [bge-reranker-v2-gemma.Q4_K.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.Q4_K.gguf) | Q4_K | 1.52GB |\n| [bge-reranker-v2-gemma.Q4_K_M.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.Q4_K_M.gguf) | Q4_K_M | 1.52GB |\n| [bge-reranker-v2-gemma.Q4_1.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.Q4_1.gguf) | Q4_1 | 1.56GB |\n| [bge-reranker-v2-gemma.Q5_0.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.Q5_0.gguf) | Q5_0 | 1.68GB |\n| [bge-reranker-v2-gemma.Q5_K_S.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.Q5_K_S.gguf) | Q5_K_S | 1.68GB |\n| [bge-reranker-v2-gemma.Q5_K.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.Q5_K.gguf) | Q5_K | 1.71GB |\n| [bge-reranker-v2-gemma.Q5_K_M.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.Q5_K_M.gguf) | Q5_K_M | 1.71GB |\n| [bge-reranker-v2-gemma.Q5_1.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.Q5_1.gguf) | Q5_1 | 1.79GB |\n| [bge-reranker-v2-gemma.Q6_K.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.Q6_K.gguf) | Q6_K | 1.92GB |\n| [bge-reranker-v2-gemma.Q8_0.gguf](https://huggingface.co/RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf/blob/main/bge-reranker-v2-gemma.Q8_0.gguf) | Q8_0 | 2.49GB |\n\n\n\n\nOriginal model description:\n---\nlicense: apache-2.0\npipeline_tag: text-classification\ntags:\n- transformers\n- sentence-transformers\nlanguage:\n- multilingual\n---\n\n# Reranker\n\n**More details please refer to our Github: [FlagEmbedding](https://github.com/FlagOpen/FlagEmbedding/tree/master).**\n\n- [Model List](#model-list)\n- [Usage](#usage)\n- [Fine-tuning](#fine-tune)\n- [Evaluation](#evaluation)\n- [Citation](#citation)\n\nDifferent from embedding model, reranker uses question and document as input and directly output similarity instead of embedding. \nYou can get a relevance score by inputting query and passage to the reranker. \nAnd the score can be mapped to a float value in [0,1] by sigmoid function.\n\n\n## Model List\n\n| Model                                                                     | Base model                                                           | Language | layerwise |                           feature                            |\n|:--------------------------------------------------------------------------|:--------:|:-----------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------:|\n| [BAAI/bge-reranker-base](https://huggingface.co/BAAI/bge-reranker-base) | [xlm-roberta-base](https://huggingface.co/xlm-roberta-base) | Chinese and English |     -     | Lightweight reranker model, easy to deploy, with fast inference. |\n| [BAAI/bge-reranker-large](https://huggingface.co/BAAI/bge-reranker-large) | [xlm-roberta-large](https://huggingface.co/FacebookAI/xlm-roberta-large) | Chinese and English |     -     | Lightweight reranker model, easy to deploy, with fast inference. |\n| [BAAI/bge-reranker-v2-m3](https://huggingface.co/BAAI/bge-reranker-v2-m3) | [bge-m3](https://huggingface.co/BAAI/bge-m3) |    Multilingual     |     -     | Lightweight reranker model, possesses strong multilingual capabilities, easy to deploy, with fast inference. |\n| [BAAI/bge-reranker-v2-gemma](https://huggingface.co/BAAI/bge-reranker-v2-gemma) |      [gemma-2b](https://huggingface.co/google/gemma-2b)      |    Multilingual     |     -     | Suitable for multilingual contexts, performs well in both English proficiency and multilingual capabilities. |\n| [BAAI/bge-reranker-v2-minicpm-layerwise](https://huggingface.co/BAAI/bge-reranker-v2-minicpm-layerwise) | [MiniCPM-2B-dpo-bf16](https://huggingface.co/openbmb/MiniCPM-2B-dpo-bf16) |    Multilingual     |   8-40    | Suitable for multilingual contexts, performs well in both English and Chinese proficiency, allows freedom to select layers for output, facilitating accelerated inference. |\n\n\nYou can select the model according your senario and resource. \n- For **multilingual**, utilize [BAAI/bge-reranker-v2-m3](https://huggingface.co/BAAI/bge-reranker-v2-m3) and [BAAI/bge-reranker-v2-gemma](https://huggingface.co/BAAI/bge-reranker-v2-gemma)\n\n- For **Chinese or English**, utilize [BAAI/bge-reranker-v2-m3](https://huggingface.co/BAAI/bge-reranker-v2-m3) and [BAAI/bge-reranker-v2-minicpm-layerwise](https://huggingface.co/BAAI/bge-reranker-v2-minicpm-layerwise). \n\n- For **efficiency**, utilize [BAAI/bge-reranker-v2-m3](https://huggingface.co/BAAI/bge-reranker-v2-m3) and the low layer of [BAAI/bge-reranker-v2-minicpm-layerwise](https://huggingface.co/BAAI/bge-reranker-v2-minicpm-layerwise). \n\n- For better performance, recommand [BAAI/bge-reranker-v2-minicpm-layerwise](https://huggingface.co/BAAI/bge-reranker-v2-minicpm-layerwise) and [BAAI/bge-reranker-v2-gemma](https://huggingface.co/BAAI/bge-reranker-v2-gemma)\n\n## Usage \n### Using FlagEmbedding\n\n```\npip install -U FlagEmbedding\n```\n\n#### For normal reranker (bge-reranker-base / bge-reranker-large / bge-reranker-v2-m3 )\n\nGet relevance scores (higher scores indicate more relevance):\n\n```python\nfrom FlagEmbedding import FlagReranker\nreranker = FlagReranker('BAAI/bge-reranker-v2-m3', use_fp16=True) # Setting use_fp16 to True speeds up computation with a slight performance degradation\n\nscore = reranker.compute_score(['query', 'passage'])\nprint(score) # -5.65234375\n\n# You can map the scores into 0-1 by set \"normalize=True\", which will apply sigmoid function to the score\nscore = reranker.compute_score(['query', 'passage'], normalize=True)\nprint(score) # 0.003497010252573502\n\nscores = 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.']])\nprint(scores) # [-8.1875, 5.26171875]\n\n# You can map the scores into 0-1 by set \"normalize=True\", which will apply sigmoid function to the score\nscores = 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)\nprint(scores) # [0.00027803096387751553, 0.9948403768236574]\n```\n\n#### For LLM-based reranker\n\n```python\nfrom FlagEmbedding import FlagLLMReranker\nreranker = FlagLLMReranker('BAAI/bge-reranker-v2-gemma', use_fp16=True) # Setting use_fp16 to True speeds up computation with a slight performance degradation\n# reranker = FlagLLMReranker('BAAI/bge-reranker-v2-gemma', use_bf16=True) # You can also set use_bf16=True to speed up computation with a slight performance degradation\n\nscore = reranker.compute_score(['query', 'passage'])\nprint(score)\n\nscores = 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.']])\nprint(scores)\n```\n\n#### For LLM-based layerwise reranker\n\n```python\nfrom FlagEmbedding import LayerWiseFlagLLMReranker\nreranker = LayerWiseFlagLLMReranker('BAAI/bge-reranker-v2-minicpm-layerwise', use_fp16=True) # Setting use_fp16 to True speeds up computation with a slight performance degradation\n# reranker = LayerWiseFlagLLMReranker('BAAI/bge-reranker-v2-minicpm-layerwise', use_bf16=True) # You can also set use_bf16=True to speed up computation with a slight performance degradation\n\nscore = reranker.compute_score(['query', 'passage'], cutoff_layers=[28]) # Adjusting 'cutoff_layers' to pick which layers are used for computing the score.\nprint(score)\n\nscores = 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])\nprint(scores)\n```\n\n### Using Huggingface transformers\n\n#### For normal reranker (bge-reranker-base / bge-reranker-large / bge-reranker-v2-m3 )\n\nGet relevance scores (higher scores indicate more relevance):\n\n```python\nimport torch\nfrom transformers import AutoModelForSequenceClassification, AutoTokenizer\n\ntokenizer = AutoTokenizer.from_pretrained('BAAI/bge-reranker-v2-m3')\nmodel = AutoModelForSequenceClassification.from_pretrained('BAAI/bge-reranker-v2-m3')\nmodel.eval()\n\npairs = [['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.']]\nwith torch.no_grad():\n    inputs = tokenizer(pairs, padding=True, truncation=True, return_tensors='pt', max_length=512)\n    scores = model(**inputs, return_dict=True).logits.view(-1, ).float()\n    print(scores)\n```\n\n#### For LLM-based reranker\n\n```python\nimport torch\nfrom transformers import AutoModelForCausalLM, AutoTokenizer\n\ndef get_inputs(pairs, tokenizer, prompt=None, max_length=1024):\n    if prompt is None:\n        prompt = \"Given a query A and a passage B, determine whether the passage contains an answer to the query by providing a prediction of either 'Yes' or 'No'.\"\n    sep = \"\\n\"\n    prompt_inputs = tokenizer(prompt,\n                              return_tensors=None,\n                              add_special_tokens=False)['input_ids']\n    sep_inputs = tokenizer(sep,\n                           return_tensors=None,\n                           add_special_tokens=False)['input_ids']\n    inputs = []\n    for query, passage in pairs:\n        query_inputs = tokenizer(f'A: {query}',\n                                 return_tensors=None,\n                                 add_special_tokens=False,\n                                 max_length=max_length * 3 // 4,\n                                 truncation=True)\n        passage_inputs = tokenizer(f'B: {passage}',\n                                   return_tensors=None,\n                                   add_special_tokens=False,\n                                   max_length=max_length,\n                                   truncation=True)\n        item = tokenizer.prepare_for_model(\n            [tokenizer.bos_token_id] + query_inputs['input_ids'],\n            sep_inputs + passage_inputs['input_ids'],\n            truncation='only_second',\n            max_length=max_length,\n            padding=False,\n            return_attention_mask=False,\n            return_token_type_ids=False,\n            add_special_tokens=False\n        )\n        item['input_ids'] = item['input_ids'] + sep_inputs + prompt_inputs\n        item['attention_mask'] = [1] * len(item['input_ids'])\n        inputs.append(item)\n    return tokenizer.pad(\n            inputs,\n            padding=True,\n            max_length=max_length + len(sep_inputs) + len(prompt_inputs),\n            pad_to_multiple_of=8,\n            return_tensors='pt',\n    )\n\ntokenizer = AutoTokenizer.from_pretrained('BAAI/bge-reranker-v2-gemma')\nmodel = AutoModelForCausalLM.from_pretrained('BAAI/bge-reranker-v2-gemma')\nyes_loc = tokenizer('Yes', add_special_tokens=False)['input_ids'][0]\nmodel.eval()\n\npairs = [['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.']]\nwith torch.no_grad():\n    inputs = get_inputs(pairs, tokenizer)\n    scores = model(**inputs, return_dict=True).logits[:, -1, yes_loc].view(-1, ).float()\n    print(scores)\n```\n\n#### For LLM-based layerwise reranker\n\n```python\nimport torch\nfrom transformers import AutoModelForCausalLM, AutoTokenizer\n\ndef get_inputs(pairs, tokenizer, prompt=None, max_length=1024):\n    if prompt is None:\n        prompt = \"Given a query A and a passage B, determine whether the passage contains an answer to the query by providing a prediction of either 'Yes' or 'No'.\"\n    sep = \"\\n\"\n    prompt_inputs = tokenizer(prompt,\n                              return_tensors=None,\n                              add_special_tokens=False)['input_ids']\n    sep_inputs = tokenizer(sep,\n                           return_tensors=None,\n                           add_special_tokens=False)['input_ids']\n    inputs = []\n    for query, passage in pairs:\n        query_inputs = tokenizer(f'A: {query}',\n                                 return_tensors=None,\n                                 add_special_tokens=False,\n                                 max_length=max_length * 3 // 4,\n                                 truncation=True)\n        passage_inputs = tokenizer(f'B: {passage}',\n                                   return_tensors=None,\n                                   add_special_tokens=False,\n                                   max_length=max_length,\n                                   truncation=True)\n        item = tokenizer.prepare_for_model(\n            [tokenizer.bos_token_id] + query_inputs['input_ids'],\n            sep_inputs + passage_inputs['input_ids'],\n            truncation='only_second',\n            max_length=max_length,\n            padding=False,\n            return_attention_mask=False,\n            return_token_type_ids=False,\n            add_special_tokens=False\n        )\n        item['input_ids'] = item['input_ids'] + sep_inputs + prompt_inputs\n        item['attention_mask'] = [1] * len(item['input_ids'])\n        inputs.append(item)\n    return tokenizer.pad(\n            inputs,\n            padding=True,\n            max_length=max_length + len(sep_inputs) + len(prompt_inputs),\n            pad_to_multiple_of=8,\n            return_tensors='pt',\n    )\n\ntokenizer = AutoTokenizer.from_pretrained('BAAI/bge-reranker-v2-minicpm-layerwise', trust_remote_code=True)\nmodel = AutoModelForCausalLM.from_pretrained('BAAI/bge-reranker-v2-minicpm-layerwise', trust_remote_code=True, torch_dtype=torch.bfloat16)\nmodel = model.to('cuda')\nmodel.eval()\n\npairs = [['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.']]\nwith torch.no_grad():\n    inputs = get_inputs(pairs, tokenizer).to(model.device)\n    all_scores = model(**inputs, return_dict=True, cutoff_layers=[28])\n    all_scores = [scores[:, -1].view(-1, ).float() for scores in all_scores[0]]\n    print(all_scores)\n```\n\n## Fine-tune\n\n### Data Format\n\nTrain data should be a json file, where each line is a dict like this:\n\n```\n{\"query\": str, \"pos\": List[str], \"neg\":List[str], \"prompt\": str}\n```\n\n`query` is the query, and `pos` is a list of positive texts, `neg` is a list of negative texts, `prompt` indicates the relationship between query and texts. If you have no negative texts for a query, you can random sample some from the entire corpus as the negatives.\n\nSee [toy_finetune_data.jsonl](https://github.com/FlagOpen/FlagEmbedding/tree/master/FlagEmbedding/llm_reranker/toy_finetune_data.jsonl) for a toy data file.\n\n### Train\n\nYou can fine-tune the reranker with the following code:\n\n**For llm-based reranker**\n\n```shell\ntorchrun --nproc_per_node {number of gpus} \\\n-m FlagEmbedding.llm_reranker.finetune_for_instruction.run \\\n--output_dir {path to save model} \\\n--model_name_or_path google/gemma-2b \\\n--train_data ./toy_finetune_data.jsonl \\\n--learning_rate 2e-4 \\\n--num_train_epochs 1 \\\n--per_device_train_batch_size 1 \\\n--gradient_accumulation_steps 16 \\\n--dataloader_drop_last True \\\n--query_max_len 512 \\\n--passage_max_len 512 \\\n--train_group_size 16 \\\n--logging_steps 1 \\\n--save_steps 2000 \\\n--save_total_limit 50 \\\n--ddp_find_unused_parameters False \\\n--gradient_checkpointing \\\n--deepspeed stage1.json \\\n--warmup_ratio 0.1 \\\n--bf16 \\\n--use_lora True \\\n--lora_rank 32 \\\n--lora_alpha 64 \\\n--use_flash_attn True \\\n--target_modules q_proj k_proj v_proj o_proj\n```\n\n**For llm-based layerwise reranker**\n\n```shell\ntorchrun --nproc_per_node {number of gpus} \\\n-m FlagEmbedding.llm_reranker.finetune_for_layerwise.run \\\n--output_dir {path to save model} \\\n--model_name_or_path openbmb/MiniCPM-2B-dpo-bf16 \\\n--train_data ./toy_finetune_data.jsonl \\\n--learning_rate 2e-4 \\\n--num_train_epochs 1 \\\n--per_device_train_batch_size 1 \\\n--gradient_accumulation_steps 16 \\\n--dataloader_drop_last True \\\n--query_max_len 512 \\\n--passage_max_len 512 \\\n--train_group_size 16 \\\n--logging_steps 1 \\\n--save_steps 2000 \\\n--save_total_limit 50 \\\n--ddp_find_unused_parameters False \\\n--gradient_checkpointing \\\n--deepspeed stage1.json \\\n--warmup_ratio 0.1 \\\n--bf16 \\\n--use_lora True \\\n--lora_rank 32 \\\n--lora_alpha 64 \\\n--use_flash_attn True \\\n--target_modules q_proj k_proj v_proj o_proj \\\n--start_layer 8 \\\n--head_multi True \\\n--head_type simple \\\n--lora_extra_parameters linear_head\n```\n\nOur rerankers are initialized from [google/gemma-2b](https://huggingface.co/google/gemma-2b) (for llm-based reranker) and [openbmb/MiniCPM-2B-dpo-bf16](https://huggingface.co/openbmb/MiniCPM-2B-dpo-bf16) (for llm-based layerwise reranker), and we train it on a mixture of multilingual datasets:\n\n- [bge-m3-data](https://huggingface.co/datasets/Shitao/bge-m3-data)\n- [quora train data](https://huggingface.co/datasets/quora)\n- [fever train data](https://fever.ai/dataset/fever.html)\n\n## Evaluation\n\n- llama-index.\n\n![image-20240317193909373](./assets/llama-index.png)\n\n\n- BEIR.   \n\nrereank the top 100 results from bge-en-v1.5 large.\n\n![image-20240317174633333](./assets/BEIR-bge-en-v1.5.png)\n\nrereank the top 100 results from e5 mistral 7b instruct.\n\n![image-20240317172949713](./assets/BEIR-e5-mistral.png)\n\n- CMTEB-retrieval.   \nIt rereank the top 100 results from bge-zh-v1.5 large.\n\n![image-20240317173026235](./assets/CMTEB-retrieval-bge-zh-v1.5.png)\n\n- miracl (multi-language).   \nIt rereank the top 100 results from bge-m3.\n\n![image-20240317173117639](./assets/miracl-bge-m3.png)\n\n\n\n## Citation\n\nIf you find this repository useful, please consider giving a star and citation\n\n```bibtex\n@misc{li2023making,\n      title={Making Large Language Models A Better Foundation For Dense Retrieval}, \n      author={Chaofan Li and Zheng Liu and Shitao Xiao and Yingxia Shao},\n      year={2023},\n      eprint={2312.15503},\n      archivePrefix={arXiv},\n      primaryClass={cs.CL}\n}\n@misc{chen2024bge,\n      title={BGE M3-Embedding: Multi-Lingual, Multi-Functionality, Multi-Granularity Text Embeddings Through Self-Knowledge Distillation}, \n      author={Jianlv Chen and Shitao Xiao and Peitian Zhang and Kun Luo and Defu Lian and Zheng Liu},\n      year={2024},\n      eprint={2402.03216},\n      archivePrefix={arXiv},\n      primaryClass={cs.CL}\n}\n```\n\n",
    "related_quantizations": []
  },
  "tags": [
    "sentence-transformers",
    "gguf",
    "text-ranking",
    "arxiv:2312.15503",
    "arxiv:2402.03216",
    "endpoints_compatible",
    "region:us"
  ],
  "likes": 1,
  "downloads": 507,
  "gated": false,
  "private": false,
  "last_modified": "2025-04-02T15:17:14.000Z",
  "created_at": "2024-10-07T13:46:52.000Z",
  "pipeline_tag": "text-ranking",
  "library_name": "sentence-transformers"
}
Source payload excerpt (from Hugging Face API)
{
  "_id": "6703e64c4530a4cf96d28621",
  "id": "RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf",
  "modelId": "RichardErkhov/BAAI_-_bge-reranker-v2-gemma-gguf",
  "sha": "49b479f79e181f8ac1ddefddb3074ff3143b0570",
  "createdAt": "2024-10-07T13:46:52.000Z",
  "lastModified": "2025-04-02T15:17:14.000Z",
  "author": "RichardErkhov",
  "downloads": 507,
  "likes": 1,
  "gated": false,
  "private": false,
  "pipeline_tag": "text-ranking",
  "library_name": "sentence-transformers",
  "siblings_count": 24
}