rekabytes commited on
Commit
ed5f593
·
verified ·
1 Parent(s): dcdc7b0

Upload folder using huggingface_hub

Browse files
Files changed (6) hide show
  1. .gitattributes +1 -0
  2. README.md +89 -0
  3. config.json +36 -0
  4. model.safetensors +3 -0
  5. tokenizer.json +3 -0
  6. tokenizer_config.json +17 -0
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* 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
 
 
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,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language:
3
+ - en
4
+ - ms
5
+ tags:
6
+ - cross-encoder
7
+ - reranker
8
+ - retrieval
9
+ - rag
10
+ - malaysian
11
+ - manglish
12
+ - multilingual
13
+ license: mit
14
+ base_model: BAAI/bge-reranker-v2-m3
15
+ ---
16
+
17
+ # Aranda-Reranker-v1
18
+
19
+ Cross-encoder reranker specialized for **Malaysian text**, designed to work as Stage 2 after [Aranda-v1](https://huggingface.co/rekabytes/Aranda-v1) dense retrieval.
20
+
21
+ ## Pipeline
22
+
23
+ ```
24
+ Query → Aranda-v1 (retrieve top-25) → Aranda-Reranker-v1 (rerank) → top-5 results
25
+ ```
26
+
27
+ Aranda-v1 is fast but encodes query and documents separately. Aranda-Reranker-v1 processes query+document **together** with cross-attention, catching subtle mismatches the bi-encoder misses.
28
+
29
+ ## Evaluation (4,149 queries, BM + Manglish + English + Cross-lingual)
30
+
31
+ ### Overall Pipeline vs Aranda-v1 Alone
32
+
33
+ | Metric | Aranda-v1 alone | + Aranda-Reranker-v1 | Improvement |
34
+ |---|---:|---:|---:|
35
+ | Recall@1 | 0.8891 | **0.9311** | **+4.2** |
36
+ | Recall@5 | 0.9961 | 0.9867 | -0.9 |
37
+ | Recall@10 | 0.9998 | 0.9971 | -0.3 |
38
+ | MRR | 0.9364 | **0.9563** | **+2.0** |
39
+
40
+ ### Per-Language Recall@1
41
+
42
+ | Language | Aranda-v1 alone | + Aranda-Reranker-v1 | Improvement |
43
+ |---|---:|---:|---:|
44
+ | BM | 0.8431 | **0.8874** | **+4.4** |
45
+ | Cross-lingual | 0.8500 | **0.9833** | **+13.3** |
46
+ | English | 0.8792 | **0.8940** | **+1.5** |
47
+ | Manglish | 0.9290 | **0.9656** | **+3.7** |
48
+
49
+ The reranker improves Recall@1 on **all four languages**, with a dramatic +13.3 point gain on cross-lingual (BM↔English) retrieval.
50
+
51
+ ## Training
52
+
53
+ Fine-tuned from `BAAI/bge-reranker-v2-m3` on 30,925 Malaysian hard-negative triplets:
54
+ - 20K social media (Lowyat, Twitter, Facebook)
55
+ - 5.6K formal BM QA (mesolitica common-crawl-qa)
56
+ - 3.5K English + cross-lingual anchors (up-sampled)
57
+ - 1.8K holdout + negation pairs
58
+
59
+ Only top 4 of 24 transformer layers were fine-tuned (9.1% of parameters). Contrastive ranking loss. LR=2e-5, bf16.
60
+
61
+ ## Usage
62
+
63
+ ```python
64
+ from sentence_transformers import SentenceTransformer, CrossEncoder
65
+
66
+ # Stage 1: Dense retrieval with Aranda-v1
67
+ retriever = SentenceTransformer("rekabytes/Aranda-v1")
68
+ query_emb = retriever.encode([query], normalize_embeddings=True)
69
+ doc_embs = retrieaver.encode(documents, normalize_embeddings=True)
70
+ scores = query_emb @ doc_embs.T
71
+ top_25 = scores.argsort()[0][-25:][::-1]
72
+
73
+ # Stage 2: Rerank with Aranda-Reranker-v1
74
+ reranker = CrossEncoder("rekabytes/Aranda-Reranker-v1")
75
+ candidates = [documents[i] for i in top_25]
76
+ pairs = [[query, doc] for doc in candidates]
77
+ rerank_scores = reranker.predict(pairs)
78
+ final_order = rerank_scores.argsort()[::-1]
79
+ top_5 = [candidates[i] for i in final_order[:5]]
80
+ ```
81
+
82
+ ## Model Details
83
+
84
+ - **Architecture:** XLM-RoBERTa (24 layers, 1024 hidden) with sequence classification head
85
+ - **Base model:** BAAI/bge-reranker-v2-m3
86
+ - **Max sequence length:** 512 tokens (query + document)
87
+ - **Input:** `[CLS] query [SEP] document [SEP]`
88
+ - **Output:** Single relevance score (higher = more relevant)
89
+ - **Latency:** ~2ms per (query, document) pair on GPU
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.12.1",
33
+ "type_vocab_size": 1,
34
+ "use_cache": true,
35
+ "vocab_size": 250002
36
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d28125b84fd28cc67d9adaf97f9df9e6ebe91bd6a8693be9757bf3a19ef0bef9
3
+ size 2271071852
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c4eb3c56fdc75b2990e1a823ea409c1de3c30cd7bcb56d07806059d643718281
3
+ size 17098338
tokenizer_config.json ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ "model_max_length": 8192,
12
+ "pad_token": "<pad>",
13
+ "sep_token": "</s>",
14
+ "sp_model_kwargs": {},
15
+ "tokenizer_class": "XLMRobertaTokenizer",
16
+ "unk_token": "<unk>"
17
+ }