Text Ranking
sentence-transformers
Safetensors
multilingual
xlm-roberta
cross-encoder
reranker
cross-lingual
text-embeddings-inference
Instructions to use nlpai-lab/LAMAR-600m with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use nlpai-lab/LAMAR-600m with sentence-transformers:
from sentence_transformers import CrossEncoder model = CrossEncoder("nlpai-lab/LAMAR-600m") query = "Which planet is known as the Red Planet?" passages = [ "Venus is often called Earth's twin because of its similar size and proximity.", "Mars, known for its reddish appearance, is often referred to as the Red Planet.", "Jupiter, the largest planet in our solar system, has a prominent red spot.", "Saturn, famous for its rings, is sometimes mistaken for the Red Planet." ] scores = model.predict([(query, passage) for passage in passages]) print(scores) - Notebooks
- Google Colab
- Kaggle
Commit ·
52046e7
0
Parent(s):
init
Browse files- .gitattributes +36 -0
- README.md +272 -0
- assets/languages.png +0 -0
- config.json +36 -0
- config_sentence_transformers.json +11 -0
- model.safetensors +3 -0
- modules.json +8 -0
- sentence_bert_config.json +10 -0
- tokenizer.json +3 -0
- tokenizer_config.json +23 -0
.gitattributes
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
tokenizer.json filter=lfs diff=lfs merge=lfs -text
|
README.md
ADDED
|
@@ -0,0 +1,272 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
pipeline_tag: text-ranking
|
| 3 |
+
library_name: sentence-transformers
|
| 4 |
+
license: mit
|
| 5 |
+
language:
|
| 6 |
+
- multilingual
|
| 7 |
+
base_model:
|
| 8 |
+
- BAAI/bge-m3-retromae
|
| 9 |
+
datasets:
|
| 10 |
+
- rlhn/rlhn-250K
|
| 11 |
+
- miracl/miracl
|
| 12 |
+
- nlpai-lab/miracl-multilingual-triplets
|
| 13 |
+
tags:
|
| 14 |
+
- sentence-transformers
|
| 15 |
+
- cross-encoder
|
| 16 |
+
- reranker
|
| 17 |
+
- multilingual
|
| 18 |
+
- cross-lingual
|
| 19 |
+
---
|
| 20 |
+
|
| 21 |
+
# LAMAR: Language-Aware Multilingual Alignment Reranker
|
| 22 |
+
|
| 23 |
+
LAMAR is a 600m-parameter multilingual cross-encoder reranker designed for **language-aware multilingual retrieval**. It jointly considers **semantic relevance** and **language coherence**, producing rankings that preserve topical relevance while accounting for language consistency between the query and the retrieved document.
|
| 24 |
+
|
| 25 |
+
**Paper:** The paper describing LAMAR will be released soon.
|
| 26 |
+
|
| 27 |
+
## Highlights
|
| 28 |
+
|
| 29 |
+
- **Language-aware reranking:** Jointly optimizes semantic relevance and query-document language coherence.
|
| 30 |
+
- **Multilingual coverage:** Trained on 51 languages and evaluated on 31 languages.
|
| 31 |
+
- **Strong language-coherence performance:** Achieves the best performance among the compared models on a language-coherence evaluation using oracle subsets from multilingual parallel datasets.
|
| 32 |
+
- **General multilingual reranking:** Delivers competitive performance across MIRACL, XGLUE, HUME, MLDR, and Wikipedia reranking benchmarks.
|
| 33 |
+
|
| 34 |
+
LAMAR is initialized from `BAAI/bge-m3-retromae` and trained in two stages. The first stage performs English-anchored multilingual relevance alignment using relevance scores from `Qwen/Qwen3-Reranker-4B`. The second stage applies language-coherence training to account for consistency between the query and document languages.
|
| 35 |
+
|
| 36 |
+
The figure below shows nDCG@1 for the six languages shared by XQuAD and BELEBELE: `ar`, `de`, `en`, `ru`, `vi`, and `zh`.
|
| 37 |
+
|
| 38 |
+

|
| 39 |
+
|
| 40 |
+
The XQuAD and BELEBELE evaluation subsets consist of parallel gold documents in 12 and 14 languages, respectively. For each query, we evaluate whether the document written in the same language as the query is ranked first. The full language lists and results across all languages are reported in the [**Language-Coherence Evaluation**](#language-coherence-evaluation) section below.
|
| 41 |
+
|
| 42 |
+
## Model Overview
|
| 43 |
+
|
| 44 |
+
| Property | Value |
|
| 45 |
+
|---|---|
|
| 46 |
+
| Base model | [`BAAI/bge-m3-retromae`](https://huggingface.co/BAAI/bge-m3-retromae) |
|
| 47 |
+
| Parameters | 600m |
|
| 48 |
+
| Maximum input length | 8,192 tokens |
|
| 49 |
+
| Training languages | 51 |
|
| 50 |
+
| Output | Scalar relevance logit |
|
| 51 |
+
|
| 52 |
+
## Intended Use
|
| 53 |
+
|
| 54 |
+
LAMAR is intended for the following multilingual retrieval settings:
|
| 55 |
+
|
| 56 |
+
- Multilingual retrieval
|
| 57 |
+
- Cross-lingual retrieval
|
| 58 |
+
- Multilingual retrieval-augmented generation
|
| 59 |
+
- Retrieval settings that jointly consider document relevance and query-document language coherence
|
| 60 |
+
- Multilingual search systems that need to account for document in the query language
|
| 61 |
+
|
| 62 |
+
## Usage
|
| 63 |
+
|
| 64 |
+
### Sentence Transformers
|
| 65 |
+
|
| 66 |
+
```python
|
| 67 |
+
# pip install -U sentence-transformers
|
| 68 |
+
|
| 69 |
+
from sentence_transformers import CrossEncoder
|
| 70 |
+
|
| 71 |
+
model = CrossEncoder("nlpai-lab/LAMAR-600m")
|
| 72 |
+
|
| 73 |
+
query = "프랑스의 수도는 어디인가요?"
|
| 74 |
+
documents = [
|
| 75 |
+
# Positive (ko)
|
| 76 |
+
"프랑스의 수도는 파리이며, 프랑스 북중부의 센강을 따라 자리하고 있습니다.",
|
| 77 |
+
# Positive (en)
|
| 78 |
+
"The capital of France is Paris, located along the Seine River in the north-central part of the country.",
|
| 79 |
+
# Negative (ko)
|
| 80 |
+
"데이터베이스 인덱스는 조회 속도를 높일 수 있지만, 지나치게 많으면 데이터 삽입과 갱신 비용이 증가합니다.",
|
| 81 |
+
# Negative (en)
|
| 82 |
+
"Database indexes can accelerate queries, but too many indexes increase the cost of inserting and updating records.",
|
| 83 |
+
]
|
| 84 |
+
|
| 85 |
+
rankings = model.rank(query, documents, return_documents=True)
|
| 86 |
+
|
| 87 |
+
for result in rankings:
|
| 88 |
+
print(f"Score: {result['score']:.4f}")
|
| 89 |
+
print(f"Document: {result['text'][:100]}...")
|
| 90 |
+
print()
|
| 91 |
+
|
| 92 |
+
# Output:
|
| 93 |
+
# Score: 5.7903
|
| 94 |
+
# Document: 프랑스의 수도는 파리이며, 프랑스 북중부의 센강을 따라 자리하고 있습니다....
|
| 95 |
+
#
|
| 96 |
+
# Score: 4.9918
|
| 97 |
+
# Document: The capital of France is Paris, located along the Seine River in the north-central part of the count...
|
| 98 |
+
#
|
| 99 |
+
# Score: -13.3835
|
| 100 |
+
# Document: 데이터베이스 인덱스는 조회 속도를 높일 수 있지만, 지나치게 많으면 데이터 삽입과 갱신 비용이 증가합니다....
|
| 101 |
+
#
|
| 102 |
+
# Score: -13.8347
|
| 103 |
+
# Document: Database indexes can accelerate queries, but too many indexes increase the cost of inserting and upd...
|
| 104 |
+
```
|
| 105 |
+
|
| 106 |
+
### Transformers
|
| 107 |
+
|
| 108 |
+
```python
|
| 109 |
+
# pip install -U transformers torch
|
| 110 |
+
|
| 111 |
+
import torch
|
| 112 |
+
from transformers import AutoModelForSequenceClassification, AutoTokenizer
|
| 113 |
+
|
| 114 |
+
model_id = "nlpai-lab/LAMAR-600m"
|
| 115 |
+
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
| 116 |
+
|
| 117 |
+
tokenizer = AutoTokenizer.from_pretrained(model_id)
|
| 118 |
+
model = AutoModelForSequenceClassification.from_pretrained(model_id).to(device)
|
| 119 |
+
model.eval()
|
| 120 |
+
|
| 121 |
+
query = "프랑스의 수도는 어디인가요?"
|
| 122 |
+
documents = [
|
| 123 |
+
# Positive (ko)
|
| 124 |
+
"��랑스의 수도는 파리이며, 프랑스 북중부의 센강을 따라 자리하고 있습니다.",
|
| 125 |
+
# Positive (en)
|
| 126 |
+
"The capital of France is Paris, located along the Seine River in the north-central part of the country.",
|
| 127 |
+
# Negative (ko)
|
| 128 |
+
"데이터베이스 인덱스는 조회 속도를 높일 수 있지만, 지나치게 많으면 데이터 삽입과 갱신 비용이 증가합니다.",
|
| 129 |
+
# Negative (en)
|
| 130 |
+
"Database indexes can accelerate queries, but too many indexes increase the cost of inserting and updating records.",
|
| 131 |
+
]
|
| 132 |
+
pairs = [[query, document] for document in documents]
|
| 133 |
+
|
| 134 |
+
inputs = tokenizer(
|
| 135 |
+
pairs,
|
| 136 |
+
padding=True,
|
| 137 |
+
truncation=True,
|
| 138 |
+
max_length=8192,
|
| 139 |
+
return_tensors="pt",
|
| 140 |
+
)
|
| 141 |
+
inputs = {key: value.to(device) for key, value in inputs.items()}
|
| 142 |
+
|
| 143 |
+
with torch.inference_mode():
|
| 144 |
+
scores = model(**inputs).logits.view(-1).float().cpu()
|
| 145 |
+
|
| 146 |
+
for index in torch.argsort(scores, descending=True).tolist():
|
| 147 |
+
print(f"Score: {scores[index]:.4f}")
|
| 148 |
+
print(f"Document: {documents[index][:100]}...")
|
| 149 |
+
print()
|
| 150 |
+
|
| 151 |
+
# Output:
|
| 152 |
+
# Score: 5.7903
|
| 153 |
+
# Document: 프랑스의 수도는 파리이며, 프랑스 북중부의 센강을 따라 자리하고 있습니다....
|
| 154 |
+
#
|
| 155 |
+
# Score: 4.9918
|
| 156 |
+
# Document: The capital of France is Paris, located along the Seine River in the north-central part of the count...
|
| 157 |
+
#
|
| 158 |
+
# Score: -13.3835
|
| 159 |
+
# Document: 데이터베이스 인덱스는 조회 속도를 높일 수 있지만, 지나치게 많으면 데이터 삽입과 갱신 비용이 증가합니다....
|
| 160 |
+
#
|
| 161 |
+
# Score: -13.8347
|
| 162 |
+
# Document: Database indexes can accelerate queries, but too many indexes increase the cost of inserting and upd...
|
| 163 |
+
```
|
| 164 |
+
|
| 165 |
+
## Input and Output
|
| 166 |
+
|
| 167 |
+
### Input
|
| 168 |
+
|
| 169 |
+
- **Type:** Query-document text pair
|
| 170 |
+
- **Query:** A search query or question
|
| 171 |
+
- **Document:** A passage or document candidate
|
| 172 |
+
- **Maximum length:** 8,192 tokens for the combined query-document input
|
| 173 |
+
|
| 174 |
+
### Output
|
| 175 |
+
|
| 176 |
+
- **Type:** Float
|
| 177 |
+
- **Shape:** One scalar per query-document pair
|
| 178 |
+
- **Meaning:** Raw relevance logit; higher values indicate greater relevance
|
| 179 |
+
|
| 180 |
+
## Languages
|
| 181 |
+
|
| 182 |
+
LAMAR was trained on the following 51 languages:
|
| 183 |
+
`ar`, `bg`, `bn`, `ca`, `cs`, `da`, `de`, `el`, `en`, `es`, `et`, `fa`, `fi`, `tl`, `fr`, `gu`, `he`, `hi`, `hr`, `hu`, `id`, `is`, `it`, `ja`, `kn`, `ko`, `lt`, `lv`, `ml`, `mr`, `nl`, `no`, `pa`, `pl`, `pt`, `ro`, `ru`, `sk`, `sl`, `sr`, `sv`, `sw`, `ta`, `te`, `th`, `tr`, `uk`, `ur`, `vi`, `zh`, `zu`
|
| 184 |
+
|
| 185 |
+
## Evaluation
|
| 186 |
+
|
| 187 |
+
The following tables report evaluation results for reranking models. The multilingual reranking evaluation was conducted using [MMTEB](https://github.com/embeddings-benchmark/mteb).
|
| 188 |
+
|
| 189 |
+
| Evaluation setting | Datasets |
|
| 190 |
+
|---|---|
|
| 191 |
+
| Language-Coherence Evaluation | XQuAD and BELEBELE |
|
| 192 |
+
| MMTEB Reranking Evaluation | MIRACL, XGLUE, HUME, MLDR, and Wikipedia Reranking |
|
| 193 |
+
|
| 194 |
+
### Language-Coherence Evaluation
|
| 195 |
+
|
| 196 |
+
We evaluate language coherence using XQuAD and BELEBELE, two multilingual parallel datasets. Each evaluation subset consists of corresponding gold documents across multiple languages. Language coherence is measured by whether the reranker ranks the document in the query language first.
|
| 197 |
+
|
| 198 |
+
> - **XQuAD (12):** `ar`, `de`, `el`, `en`, `es`, `hi`, `ro`, `ru`, `th`, `tr`, `vi`, `zh`
|
| 199 |
+
> - **BELEBELE (14):** `ar`, `de`, `en`, `es`, `fr`, `hi`, `id`, `it`, `ja`, `nl`, `pt`, `ru`, `vi`, `zh`
|
| 200 |
+
|
| 201 |
+
|
| 202 |
+
| Model | Size | XQuAD nDCG@1 | XQuAD nDCG@10 | XQuAD MRR@10 | BELEBELE nDCG@1 | BELEBELE nDCG@10 | BELEBELE MRR@10 |
|
| 203 |
+
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
| 204 |
+
| gte-multilingual-reranker-base | 0.3B | 82.59 | 91.51 | 88.89 | 77.05 | 88.58 | 85.08 |
|
| 205 |
+
| jina-reranker-v2-base-multilingual | 0.3B | 57.30 | 79.36 | 72.55 | 60.47 | 79.88 | 73.49 |
|
| 206 |
+
| bge-reranker-v2-m3 | 0.6B | 84.67 | 92.20 | 89.89 | 84.83 | 92.65 | 90.32 |
|
| 207 |
+
| Qwen3-Reranker-0.6B | 0.6B | 61.72 | 79.58 | 73.56 | 67.67 | 82.85 | 77.78 |
|
| 208 |
+
| jina-reranker-v3 | 0.6B | 77.75 | 88.31 | 84.79 | 78.10 | 88.43 | 85.10 |
|
| 209 |
+
| Prism-Qwen3.5-Reranker-0.8B | 0.8B | 72.28 | 86.74 | 82.21 | 71.11 | 85.81 | 79.70 |
|
| 210 |
+
| llama-nemotron-rerank-1b-v2 | 1B | <u>95.83</u> | <u>98.02</u> | <u>97.39</u> | 94.32 | 97.21 | 96.37 |
|
| 211 |
+
| ctxl-rerank-v2-instruct-multilingual-1b | 1B | 88.79 | 94.92 | 93.27 | <u>94.64</u> | <u>97.54</u> | <u>96.72</u> |
|
| 212 |
+
| Prism-Qwen3.5-Reranker-2B | 2B | 70.41 | 85.34 | 79.58 | 60.62 | 79.62 | 70.27 |
|
| 213 |
+
| bge-reranker-v2-gemma | 2B | 86.63 | 93.42 | 91.24 | 84.55 | 92.49 | 90.04 |
|
| 214 |
+
| Qwen3-Reranker-4B | 4B | 33.03 | 58.81 | 48.61 | 43.31 | 67.02 | 58.79 |
|
| 215 |
+
| zerank-2-reranker | 4B | 63.13 | 79.98 | 74.31 | 74.71 | 87.16 | 83.22 |
|
| 216 |
+
| Prism-Qwen3.5-Reranker-4B | 4B | 70.53 | 85.19 | 80.64 | 67.32 | 83.23 | 76.95 |
|
| 217 |
+
| **LAMAR (Ours)** | **0.6B** | **96.89** | **98.59** | **98.10** | **94.66** | **97.60** | **96.79** |
|
| 218 |
+
|
| 219 |
+
|
| 220 |
+
### MMTEB Reranking Evaluation
|
| 221 |
+
> - **MIRACL (18):** `ar`, `bn`, `de`, `en`, `es`, `fa`, `fi`, `fr`, `hi`, `id`, `ja`, `ko`, `ru`, `sw`, `te`, `th`, `yo`, `zh`
|
| 222 |
+
> - **XGLUE (7):** `de`, `en`, `es`, `fr`, `it`, `pt`, `zh`
|
| 223 |
+
> - **HUME (3):** `da`, `en`, `no`
|
| 224 |
+
> - **MLDR (13):** `ar`, `de`, `en`, `es`, `fr`, `hi`, `it`, `ja`, `ko`, `pt`, `ru`, `th`, `zh`
|
| 225 |
+
> - **Wikipedia Reranking (16):** `bg`, `bn`, `cs`, `da`, `de`, `en`, `fa`, `fi`, `hi`, `it`, `nl`, `no`, `pt`, `ro`, `sr`, `sv`
|
| 226 |
+
|
| 227 |
+
We report nDCG@10 on MIRACL, XGLUE, HUME, MLDR, and Wikipedia Reranking.
|
| 228 |
+
|
| 229 |
+
| Model | MIRACL | XGLUE | HUME | MLDR | Wikipedia | Avg |
|
| 230 |
+
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
|
| 231 |
+
| gte-multi-reranker-base | 67.34 | 76.27 | 94.23 | 98.81 | 92.11 | 85.75 |
|
| 232 |
+
| jina-reranker-v2-base-multi | 67.86 | 76.77 | 93.41 | 86.17 | 93.96 | 83.63 |
|
| 233 |
+
| bge-reranker-v2-m3 | 69.15 | 76.49 | 94.55 | 97.40 | 93.96 | 86.31 |
|
| 234 |
+
| Qwen3-Reranker-0.6B | 64.88 | 76.52 | 94.60 | <u>98.85</u> | 94.69 | 85.91 |
|
| 235 |
+
| jina-reranker-v3 | 68.56 | **80.69** | 94.79 | 93.41 | <u>94.83</u> | 86.46 |
|
| 236 |
+
| Prism-Qwen3.5-Reranker-0.8B | 52.11 | 74.11 | 94.11 | 96.35 | 92.80 | 81.90 |
|
| 237 |
+
| llama-nemotron-rerank-1b-v2 | 69.23 | 77.95 | <u>96.02</u> | 96.42 | 94.50 | 86.82 |
|
| 238 |
+
| ctxl-rerank-v2-inst-multi-1b | 65.80 | 77.81 | 93.60 | 97.37 | 93.65 | 85.65 |
|
| 239 |
+
| Prism-Qwen3.5-Reranker-2B | 56.96 | 74.80 | 95.15 | 96.46 | 93.79 | 83.43 |
|
| 240 |
+
| bge-reranker-v2-gemma | **69.72** | 76.75 | 94.21 | 89.07 | 94.63 | 84.88 |
|
| 241 |
+
| Qwen3-Reranker-4B | 68.88 | 76.40 | 95.73 | **99.39** | **96.31** | **87.34** |
|
| 242 |
+
| Prism-Qwen3.5-Reranker-4B | 58.03 | 74.96 | 94.78 | 97.32 | 94.28 | 83.87 |
|
| 243 |
+
| zerank-2-reranker | 63.31 | <u>78.01</u> | **96.13** | 98.03 | 94.51 | 86.00 |
|
| 244 |
+
| **LAMAR (Ours)** | <u>69.49</u> | 77.03 | 95.30 | 97.60 | 94.79 | <u>86.84</u> |
|
| 245 |
+
|
| 246 |
+
|
| 247 |
+
|
| 248 |
+
|
| 249 |
+
|
| 250 |
+
|
| 251 |
+
### MIRACL
|
| 252 |
+
|
| 253 |
+
| Model | ar | bn | de | en | es | fa | fi | fr | hi | id | ja | ko | ru | sw | te | th | yo | zh | Avg |
|
| 254 |
+
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
| 255 |
+
| gte-multi-reranker-base | 77.8 | 78.1 | 53.2 | 66.4 | 63.3 | 58.6 | 80.2 | 56.1 | 65.0 | 62.2 | 70.3 | 69.8 | 66.3 | 64.7 | 79.8 | 77.3 | 68.2 | 54.9 | 67.3 |
|
| 256 |
+
| jina-reranker-v2-base-multi | 76.9 | 80.0 | 54.6 | 65.4 | 64.8 | 59.8 | 79.1 | 55.7 | 64.2 | 63.3 | 70.5 | 72.7 | 65.1 | 67.9 | 82.6 | 79.1 | 66.0 | 53.9 | 67.9 |
|
| 257 |
+
| bge-reranker-v2-m3 | 79.2 | 80.2 | 56.3 | 66.0 | 67.3 | 61.7 | 81.2 | 58.7 | 68.3 | 65.4 | 71.0 | 69.9 | 67.4 | 69.8 | 79.5 | 78.7 | 69.9 | 54.2 | 69.1 |
|
| 258 |
+
| Qwen3-Reranker-0.6B | 76.5 | 65.0 | 55.5 | 65.6 | 66.9 | 60.5 | 79.2 | 55.7 | 62.0 | 62.8 | 69.2 | 72.8 | 64.2 | 60.9 | 52.8 | 77.8 | 65.4 | 55.3 | 64.9 |
|
| 259 |
+
| jina-reranker-v3 | 80.0 | 79.0 | 57.0 | 67.8 | 66.4 | 59.2 | 80.0 | 56.3 | 63.3 | 64.8 | 72.3 | 73.3 | 67.9 | 65.6 | 81.2 | 79.8 | 64.8 | 55.7 | 68.6 |
|
| 260 |
+
| Prism-Qwen3.5-Reranker-0.8B | 67.8 | 35.1 | 47.3 | 60.3 | 54.9 | 48.5 | 71.5 | 48.1 | 18.9 | 53.8 | 63.7 | 63.8 | 59.7 | 52.3 | 32.1 | 52.1 | 57.4 | 51.0 | 52.1 |
|
| 261 |
+
| llama-nemotron-rerank-1b-v2 | 80.7 | 77.7 | 57.0 | 66.6 | 67.9 | 61.2 | 82.5 | 57.9 | 67.2 | 63.6 | 72.7 | 70.9 | 68.8 | 68.0 | 79.6 | 80.4 | 67.7 | 55.9 | 69.2 |
|
| 262 |
+
| ctxl-rerank-v2-inst-multi-1b | 79.8 | 69.1 | 57.1 | 68.1 | 64.8 | 55.9 | 81.1 | 57.6 | 55.8 | 64.3 | 72.5 | 71.3 | 68.8 | 62.5 | 57.4 | 78.8 | 65.0 | 54.8 | 65.8 |
|
| 263 |
+
| Prism-Qwen3.5-Reranker-2B | 70.6 | 54.1 | 52.9 | 61.8 | 59.7 | 53.8 | 75.3 | 51.8 | 34.0 | 55.5 | 67.1 | 65.8 | 61.5 | 57.4 | 45.0 | 52.7 | 54.7 | 51.8 | 57.0 |
|
| 264 |
+
| bge-reranker-v2-gemma | 80.9 | 80.6 | 57.2 | 67.3 | 67.7 | 61.8 | 82.1 | 59.0 | 68.0 | 62.9 | 73.6 | 71.8 | 68.8 | 68.8 | 83.6 | 80.8 | 65.9 | 54.4 | **69.7** |
|
| 265 |
+
| Qwen3-Reranker-4B | 81.0 | 70.7 | 59.5 | 70.3 | 67.2 | 64.2 | 83.9 | 62.0 | 65.1 | 64.2 | 76.2 | 73.7 | 69.4 | 68.2 | 58.3 | 81.1 | 68.3 | 56.6 | 68.9 |
|
| 266 |
+
| Prism-Qwen3.5-Reranker-4B | 71.3 | 51.4 | 54.3 | 62.4 | 58.4 | 50.7 | 77.3 | 54.4 | 32.6 | 55.7 | 68.4 | 66.8 | 64.2 | 62.3 | 48.5 | 55.0 | 59.8 | 51.4 | 58.0 |
|
| 267 |
+
| zerank-2-reranker | 76.7 | 68.3 | 55.0 | 64.2 | 61.5 | 54.8 | 79.6 | 55.4 | 56.6 | 56.7 | 70.7 | 67.0 | 66.7 | 58.7 | 53.7 | 76.7 | 63.4 | 53.6 | 63.3 |
|
| 268 |
+
| **LAMAR (Ours)** | 78.9 | 79.3 | 56.6 | 68.8 | 66.2 | 62.5 | 82.3 | 59.9 | 67.8 | 62.9 | 71.1 | 71.1 | 67.5 | 68.7 | 83.1 | 80.4 | 68.4 | 55.4 | <u>69.5</u> |
|
| 269 |
+
|
| 270 |
+
## License
|
| 271 |
+
|
| 272 |
+
LAMAR is released under the MIT License.
|
assets/languages.png
ADDED
|
config.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"add_cross_attention": false,
|
| 3 |
+
"architectures": [
|
| 4 |
+
"XLMRobertaForSequenceClassification"
|
| 5 |
+
],
|
| 6 |
+
"attention_probs_dropout_prob": 0.1,
|
| 7 |
+
"bos_token_id": 0,
|
| 8 |
+
"classifier_dropout": null,
|
| 9 |
+
"dtype": "float32",
|
| 10 |
+
"eos_token_id": 2,
|
| 11 |
+
"hidden_act": "gelu",
|
| 12 |
+
"hidden_dropout_prob": 0.1,
|
| 13 |
+
"hidden_size": 1024,
|
| 14 |
+
"id2label": {
|
| 15 |
+
"0": "LABEL_0"
|
| 16 |
+
},
|
| 17 |
+
"initializer_range": 0.02,
|
| 18 |
+
"intermediate_size": 4096,
|
| 19 |
+
"is_decoder": false,
|
| 20 |
+
"label2id": {
|
| 21 |
+
"LABEL_0": 0
|
| 22 |
+
},
|
| 23 |
+
"layer_norm_eps": 1e-05,
|
| 24 |
+
"max_position_embeddings": 8194,
|
| 25 |
+
"model_type": "xlm-roberta",
|
| 26 |
+
"num_attention_heads": 16,
|
| 27 |
+
"num_hidden_layers": 24,
|
| 28 |
+
"output_past": true,
|
| 29 |
+
"pad_token_id": 1,
|
| 30 |
+
"position_embedding_type": "absolute",
|
| 31 |
+
"tie_word_embeddings": true,
|
| 32 |
+
"transformers_version": "5.9.0",
|
| 33 |
+
"type_vocab_size": 1,
|
| 34 |
+
"use_cache": false,
|
| 35 |
+
"vocab_size": 250002
|
| 36 |
+
}
|
config_sentence_transformers.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"__version__": {
|
| 3 |
+
"pytorch": "2.11.0+cu128",
|
| 4 |
+
"sentence_transformers": "5.6.0.dev0",
|
| 5 |
+
"transformers": "5.9.0"
|
| 6 |
+
},
|
| 7 |
+
"activation_fn": "torch.nn.modules.linear.Identity",
|
| 8 |
+
"default_prompt_name": null,
|
| 9 |
+
"model_type": "CrossEncoder",
|
| 10 |
+
"prompts": {}
|
| 11 |
+
}
|
model.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b6f75184b381c2404972a8158cbdbd5ff05fdddf37aef1462857879b17a7430e
|
| 3 |
+
size 2271071852
|
modules.json
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
{
|
| 3 |
+
"idx": 0,
|
| 4 |
+
"name": "0",
|
| 5 |
+
"path": "",
|
| 6 |
+
"type": "sentence_transformers.base.modules.transformer.Transformer"
|
| 7 |
+
}
|
| 8 |
+
]
|
sentence_bert_config.json
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"transformer_task": "sequence-classification",
|
| 3 |
+
"modality_config": {
|
| 4 |
+
"text": {
|
| 5 |
+
"method": "forward",
|
| 6 |
+
"method_output_name": "logits"
|
| 7 |
+
}
|
| 8 |
+
},
|
| 9 |
+
"module_output_name": "scores"
|
| 10 |
+
}
|
tokenizer.json
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:bd180c21060a154724c58ebcd2ccc407f0f10e950b24ced7ca39b4f582fc5174
|
| 3 |
+
size 17098339
|
tokenizer_config.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"add_prefix_space": true,
|
| 3 |
+
"backend": "tokenizers",
|
| 4 |
+
"bos_token": "<s>",
|
| 5 |
+
"clean_up_tokenization_spaces": true,
|
| 6 |
+
"cls_token": "<s>",
|
| 7 |
+
"eos_token": "</s>",
|
| 8 |
+
"is_local": true,
|
| 9 |
+
"local_files_only": false,
|
| 10 |
+
"mask_token": "<mask>",
|
| 11 |
+
"max_length": 4096,
|
| 12 |
+
"model_max_length": 8192,
|
| 13 |
+
"pad_to_multiple_of": null,
|
| 14 |
+
"pad_token": "<pad>",
|
| 15 |
+
"pad_token_type_id": 0,
|
| 16 |
+
"padding_side": "right",
|
| 17 |
+
"sep_token": "</s>",
|
| 18 |
+
"stride": 0,
|
| 19 |
+
"tokenizer_class": "XLMRobertaTokenizer",
|
| 20 |
+
"truncation_side": "right",
|
| 21 |
+
"truncation_strategy": "longest_first",
|
| 22 |
+
"unk_token": "<unk>"
|
| 23 |
+
}
|