Horizon-Labs commited on
Commit
1b929be
·
verified ·
1 Parent(s): 8658d09

Multilingual embedding base v1.0 (bge-m3 compatible)

Browse files
.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
1_Pooling/config.json ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "word_embedding_dimension": 768,
3
+ "pooling_mode_cls_token": false,
4
+ "pooling_mode_mean_tokens": true,
5
+ "pooling_mode_max_tokens": false,
6
+ "pooling_mode_mean_sqrt_len_tokens": false,
7
+ "pooling_mode_weightedmean_tokens": false,
8
+ "pooling_mode_lasttoken": false,
9
+ "include_prompt": true
10
+ }
2_Dense/config.json ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "in_features": 768,
3
+ "out_features": 1024,
4
+ "bias": false,
5
+ "activation_function": "torch.nn.modules.linear.Identity"
6
+ }
2_Dense/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:54079ba3cc4f5a530208442dc5edc992959a0302bfc029d823cb2ecbc400fbc1
3
+ size 3145816
README.md ADDED
@@ -0,0 +1,147 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ language:
4
+ - multilingual
5
+ - en
6
+ - de
7
+ - fr
8
+ - es
9
+ - pt
10
+ - it
11
+ - nl
12
+ - pl
13
+ - ru
14
+ - uk
15
+ - cs
16
+ - ro
17
+ - bg
18
+ - sv
19
+ - da
20
+ - 'no'
21
+ - fi
22
+ - hu
23
+ - el
24
+ - tr
25
+ - ar
26
+ - he
27
+ - fa
28
+ - ur
29
+ - hi
30
+ - bn
31
+ - ta
32
+ - te
33
+ - mr
34
+ - zh
35
+ - ja
36
+ - ko
37
+ - vi
38
+ - th
39
+ - id
40
+ - ms
41
+ - sw
42
+ - af
43
+ - am
44
+ - hy
45
+ - az
46
+ - eu
47
+ - ka
48
+ - kk
49
+ - km
50
+ library_name: sentence-transformers
51
+ pipeline_tag: sentence-similarity
52
+ base_model: jhu-clsp/mmBERT-base
53
+ datasets:
54
+ - HuggingFaceFW/fineweb-2
55
+ - HuggingFaceFW/fineweb
56
+ tags:
57
+ - sentence-transformers
58
+ - feature-extraction
59
+ - sentence-similarity
60
+ - embeddings
61
+ - retrieval
62
+ - multilingual
63
+ - bge-m3
64
+ - distillation
65
+ - modernbert
66
+ - mmbert
67
+ - onnx
68
+ - transformers.js
69
+ ---
70
+
71
+ # Multilingual Embedding (base, 308M) - bge-m3 compatible
72
+
73
+ A multilingual sentence and passage embedding model distilled from [BAAI/bge-m3](https://huggingface.co/BAAI/bge-m3) into
74
+ [mmBERT-base](https://huggingface.co/jhu-clsp/mmBERT-base). It outputs 1024-dimensional vectors **in bge-m3's dense vector
75
+ space**, so you can:
76
+
77
+ - use it on its own for search, RAG, clustering and similarity in about 90 languages, 2x smaller than bge-m3;
78
+ - or **query an existing bge-m3 index** with it: embed queries with this model and keep the passages you already embedded
79
+ with bge-m3 (see the "→ bge-m3 index" row below). That gives cheap query encoding on CPU or in the browser.
80
+
81
+ A smaller, faster version is available as [Horizon-Labs/multilingual-embedding-small](https://huggingface.co/Horizon-Labs/multilingual-embedding-small). Apache-2.0. ONNX files for CPU and the browser (transformers.js) are included.
82
+
83
+ - Vectors are L2-normalised. Use cosine similarity (= dot product). No query/passage prefixes are needed.
84
+ - `onnx/model_quantized.onnx` (int8 embeddings, 642 MB; cosine >= 0.99997 to the fp32 model on test sentences) outputs the final normalised embedding as `sentence_embedding`.
85
+
86
+ ## Usage
87
+
88
+ ```python
89
+ from sentence_transformers import SentenceTransformer
90
+
91
+ model = SentenceTransformer("Horizon-Labs/multilingual-embedding-base")
92
+ q = model.encode(["How tall is the Eiffel Tower?"])
93
+ p = model.encode(["La tour Eiffel mesure 330 mètres.", "The Statue of Liberty is 93 metres tall."])
94
+ print(q @ p.T) # higher = more similar
95
+
96
+ # Querying an existing bge-m3 index: passages embedded earlier with BAAI/bge-m3 (dense, normalised)
97
+ # scores = model.encode(queries) @ bge_m3_passage_vectors.T
98
+ ```
99
+
100
+ transformers.js:
101
+
102
+ ```js
103
+ import { AutoTokenizer, AutoModel } from "@huggingface/transformers";
104
+ const tok = await AutoTokenizer.from_pretrained("Horizon-Labs/multilingual-embedding-base");
105
+ const model = await AutoModel.from_pretrained("Horizon-Labs/multilingual-embedding-base", { dtype: "q8" });
106
+ const { sentence_embedding } = await model(await tok(["Wie hoch ist der Eiffelturm?"], { padding: true, truncation: true }));
107
+ ```
108
+
109
+ ## Evaluation
110
+
111
+ nDCG@10 for ranking each query's candidates by cosine similarity, on public reranking benchmarks (MTEB versions; used
112
+ only for evaluation). MIRACL: 60 queries per language with 100 candidates each. Wikipedia: 60 queries per language with 9
113
+ candidates each. "Other" = ESCI (es, jp, us), RuBQ, T2Reranking, mMARCO-ja and AskUbuntu. Same script for every model
114
+ (`code/`); multilingual-e5 is run with its "query: "/"passage: " prefixes.
115
+
116
+ | model | MIRACL (18 languages) | Wikipedia (16 languages) | other (6 sets) | mean | note |
117
+ |---|---|---|---|---|---|
118
+ | **this model** (308M) | 0.753 | 0.934 | 0.777 | 0.821 | queries and passages embedded by this model |
119
+ | **this model** → bge-m3 index (308M) | 0.742 | 0.934 | 0.774 | 0.817 | queries by this model, passages by bge-m3 |
120
+ | [Horizon-Labs/multilingual-embedding-small](https://huggingface.co/Horizon-Labs/multilingual-embedding-small) (141M) | 0.750 | 0.935 | 0.768 | 0.818 | |
121
+ | [BAAI/bge-m3](https://huggingface.co/BAAI/bge-m3) (568M) | 0.797 | 0.927 | 0.788 | 0.837 | the teacher |
122
+ | [intfloat/multilingual-e5-small](https://huggingface.co/intfloat/multilingual-e5-small) (118M) | 0.721 | 0.915 | 0.776 | 0.804 | |
123
+ | [intfloat/multilingual-e5-base](https://huggingface.co/intfloat/multilingual-e5-base) (278M) | 0.736 | 0.918 | 0.775 | 0.810 | |
124
+ | [sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2](https://huggingface.co/sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2) (118M) | 0.387 | 0.837 | 0.687 | 0.637 | |
125
+ | [sentence-transformers/all-MiniLM-L6-v2](https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2) (23M) | 0.172 | 0.720 | 0.621 | 0.504 | English |
126
+
127
+ - The table shows the released checkpoint. Means over two training seeds: small own .817 / against a bge-m3 index .818; base own .822 / against a bge-m3 index .816.
128
+ - Models ahead of this one (own embeddings): MIRACL: bge-m3; Wikipedia: none;
129
+ other: bge-m3.
130
+ - This is a reranking-style test over given candidate lists, not a full-corpus retrieval benchmark.
131
+
132
+ ## Training
133
+
134
+ - **Distillation**: the student (mmBERT-base + mean pooling + a linear layer to 1024 dimensions) learns to reproduce bge-m3's
135
+ normalised dense embeddings: cosine + squared-error loss, plus a loss on the in-batch similarity matrix that keeps the
136
+ relative geometry.
137
+ - **Text**: about 4.65 million texts: snippets of 1-8 sentences and short spans from [FineWeb-2](https://huggingface.co/datasets/HuggingFaceFW/fineweb-2)
138
+ and [FineWeb](https://huggingface.co/datasets/HuggingFaceFW/fineweb) (ODC-BY) in 92 languages, plus about 850k search queries
139
+ written by Qwen3.8-27B (Apache-2.0) for web passages in 47 languages.
140
+ - Code: `code/` in this repository.
141
+
142
+ ## Limitations
143
+
144
+ - The student approximates bge-m3 and is weaker than it. The gap is larger for long passages, rare languages and
145
+ specialised domains.
146
+ - Only bge-m3's **dense** vectors are reproduced, not its sparse or multi-vector (ColBERT) outputs.
147
+ - Max length 512 tokens (trained with 256). Split long documents into passages.
code/emb/build_release.py ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Package an embedding student as a sentence-transformers model + ONNX (sentence_embedding output) + int8 check.
2
+ python emb/build_release.py SRC_DIR BASE_HUB_ID OUT_DIR
3
+ SRC_DIR: emb/train_emb.py output (encoder + projection.pt). OUT_DIR: Transformer weights at the root, 1_Pooling (mean),
4
+ 2_Dense (hidden -> 1024, no bias), 3_Normalize; onnx/model.onnx + onnx/model_quantized.onnx (inputs input_ids,
5
+ attention_mask; output sentence_embedding = normalised mean-pooled projection) and onnx_sweep.json (cosine fp32 vs int8).
6
+ """
7
+ import json, os, shutil, sys
8
+ import numpy as np, torch
9
+ from huggingface_hub import hf_hub_download
10
+ from safetensors.torch import save_file
11
+ from transformers import AutoModel, AutoTokenizer
12
+
13
+ src, base, out = sys.argv[1:4]
14
+ os.makedirs(out, exist_ok=True)
15
+ for f in ["config.json", "model.safetensors", "tokenizer.json", "val_metrics.json", "train_log.json"]:
16
+ if os.path.exists(f"{src}/{f}"):
17
+ shutil.copy(f"{src}/{f}", f"{out}/{f}")
18
+ for f in ["tokenizer_config.json", "special_tokens_map.json"]:
19
+ shutil.copy(hf_hub_download(base, f), f"{out}/{f}")
20
+ P = torch.load(f"{src}/projection.pt", map_location="cpu").float() # (hidden, 1024)
21
+ hid = P.shape[0]
22
+ json.dump([{"idx": 0, "name": "0", "path": "", "type": "sentence_transformers.models.Transformer"},
23
+ {"idx": 1, "name": "1", "path": "1_Pooling", "type": "sentence_transformers.models.Pooling"},
24
+ {"idx": 2, "name": "2", "path": "2_Dense", "type": "sentence_transformers.models.Dense"},
25
+ {"idx": 3, "name": "3", "path": "3_Normalize", "type": "sentence_transformers.models.Normalize"}], open(f"{out}/modules.json", "w"), indent=1)
26
+ json.dump({"max_seq_length": 512, "do_lower_case": False}, open(f"{out}/sentence_bert_config.json", "w"))
27
+ json.dump({"similarity_fn_name": "cosine", "prompts": {}, "default_prompt_name": None}, open(f"{out}/config_sentence_transformers.json", "w"))
28
+ os.makedirs(f"{out}/1_Pooling", exist_ok=True); os.makedirs(f"{out}/2_Dense", exist_ok=True); os.makedirs(f"{out}/3_Normalize", exist_ok=True)
29
+ json.dump({"word_embedding_dimension": hid, "pooling_mode_cls_token": False, "pooling_mode_mean_tokens": True, "pooling_mode_max_tokens": False,
30
+ "pooling_mode_mean_sqrt_len_tokens": False, "pooling_mode_weightedmean_tokens": False, "pooling_mode_lasttoken": False,
31
+ "include_prompt": True}, open(f"{out}/1_Pooling/config.json", "w"), indent=1)
32
+ json.dump({"in_features": hid, "out_features": 1024, "bias": False, "activation_function": "torch.nn.modules.linear.Identity"},
33
+ open(f"{out}/2_Dense/config.json", "w"), indent=1)
34
+ save_file({"linear.weight": P.T.contiguous()}, f"{out}/2_Dense/model.safetensors")
35
+
36
+ tok = AutoTokenizer.from_pretrained(out); enc_m = AutoModel.from_pretrained(out, attn_implementation="eager").eval()
37
+
38
+
39
+ class Wrap(torch.nn.Module):
40
+ def __init__(self, m, P):
41
+ super().__init__(); self.m = m; self.P = torch.nn.Parameter(P, requires_grad=False)
42
+
43
+ def forward(self, input_ids, attention_mask):
44
+ h = self.m(input_ids=input_ids, attention_mask=attention_mask).last_hidden_state
45
+ a = attention_mask.unsqueeze(-1).to(h.dtype); v = (h * a).sum(1) / a.sum(1)
46
+ return torch.nn.functional.normalize(v @ self.P, dim=-1)
47
+
48
+
49
+ texts = ["How tall is the Eiffel Tower?", "La tour Eiffel mesure 330 mètres.", "电动汽车电池能用多久", "Der Eiffelturm ist mit 330 Metern das höchste Bauwerk von Paris. " * 8]
50
+ e = tok(texts, return_tensors="pt", padding=True)
51
+ os.makedirs(f"{out}/onnx", exist_ok=True); w = Wrap(enc_m, P).eval()
52
+ with torch.no_grad():
53
+ ref = w(e["input_ids"], e["attention_mask"]).numpy()
54
+ torch.onnx.export(w, (e["input_ids"], e["attention_mask"]), f"{out}/onnx/model.onnx", input_names=["input_ids", "attention_mask"],
55
+ output_names=["sentence_embedding"], dynamic_axes={"input_ids": {0: "batch", 1: "seq"}, "attention_mask": {0: "batch", 1: "seq"},
56
+ "sentence_embedding": {0: "batch"}}, opset_version=17, dynamo=False)
57
+ import onnxruntime as ort
58
+ from onnxruntime.quantization import quantize_dynamic, QuantType
59
+ quantize_dynamic(f"{out}/onnx/model.onnx", f"{out}/onnx/model_quantized.onnx", weight_type=QuantType.QInt8, op_types_to_quantize=["Gather"])
60
+ feeds = {k: e[k].numpy() for k in ["input_ids", "attention_mask"]}
61
+ r = {}
62
+ for f in ["model.onnx", "model_quantized.onnx"]:
63
+ o = ort.InferenceSession(f"{out}/onnx/{f}", providers=["CPUExecutionProvider"]).run(None, feeds)[0]
64
+ r[f] = dict(cos_to_torch=float((o * ref).sum(-1).min()), mb=os.path.getsize(f"{out}/onnx/{f}") / 1e6)
65
+ json.dump(dict(gather_only=dict(min_cos=r["model_quantized.onnx"]["cos_to_torch"], mb=r["model_quantized.onnx"]["mb"]), fp32=r["model.onnx"], n=len(texts)),
66
+ open(f"{out}/onnx_sweep.json", "w"), indent=1)
67
+ print(r, flush=True)
code/emb/build_texts.py ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Text pool for embedding distillation: FineWeb-2 / FineWeb (ODC-BY) snippets of 1-8 consecutive sentences (20-2000 chars;
2
+ a third are single sentences or short spans), ~90 languages. python emb/build_texts.py OUT.parquet [PER_LANG] (CPU job)
3
+ Columns: pid, text, lang, url. English gets 4x PER_LANG. Different random seed and documents than rerank/build_passages.py.
4
+ """
5
+ import json, os, random, re, sys, time
6
+ from multiprocessing import Pool
7
+
8
+ OUT = sys.argv[1]
9
+ PER = int(sys.argv[2]) if len(sys.argv) > 2 else 8000
10
+ FW = json.load(open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lid", "fw_files.json")))
11
+ LANGS2 = ("afr_Latn als_Latn amh_Ethi hye_Armn azj_Latn eus_Latn bel_Cyrl bos_Latn cym_Latn epo_Latn glg_Latn guj_Gujr hau_Latn "
12
+ "isl_Latn gle_Latn jav_Latn kan_Knda kat_Geor kaz_Cyrl khm_Khmr kir_Cyrl lao_Laoo mal_Mlym mkd_Cyrl mlt_Latn khk_Cyrl mya_Mymr "
13
+ "npi_Deva ory_Orya pan_Guru pbt_Arab sin_Sinh som_Latn sun_Latn tgk_Cyrl tat_Cyrl uig_Arab uzn_Latn xho_Latn zul_Latn "
14
+ "ltz_Latn fao_Latn snd_Arab ckb_Arab kin_Latn").split()
15
+ LANGS = ("arb_Arab ben_Beng deu_Latn spa_Latn fas_Arab fin_Latn fra_Latn hin_Deva ind_Latn jpn_Jpan kor_Hang rus_Cyrl swh_Latn "
16
+ "tel_Telu tha_Thai yor_Latn cmn_Hani bul_Cyrl ces_Latn dan_Latn ita_Latn nld_Latn nob_Latn por_Latn ron_Latn srp_Cyrl "
17
+ "swe_Latn pol_Latn tur_Latn ukr_Cyrl vie_Latn heb_Hebr ell_Grek hun_Latn zsm_Latn fil_Latn urd_Arab tam_Taml mar_Deva "
18
+ "slk_Latn hrv_Latn cat_Latn lit_Latn ekk_Latn lvs_Latn slv_Latn").split()
19
+ SPLIT = re.compile(r"(?<=[.!?。!?।؟።])\s+|\n+")
20
+
21
+
22
+ def collect(args):
23
+ lang, repo, files, per = args
24
+ import pyarrow.parquet as pq
25
+ from huggingface_hub import HfFileSystem
26
+ rng = random.Random(1007 + sum(map(ord, lang))); fs = HfFileSystem(); rows = []
27
+
28
+ def retry(fn):
29
+ for k in range(6):
30
+ try:
31
+ return fn()
32
+ except Exception:
33
+ if k == 5:
34
+ raise
35
+ time.sleep(20 * (k + 1))
36
+ try:
37
+ for f in files:
38
+ pf = retry(lambda: pq.ParquetFile(fs.open(f"datasets/{repo}/{f}")))
39
+ for g in range(pf.num_row_groups - 1, -1, -1): # last row groups first: other documents than the passage pool
40
+ tb = retry(lambda: pf.read_row_group(g, columns=["text", "url"]))
41
+ for text, url in zip(tb.column("text").to_pylist(), tb.column("url").to_pylist()):
42
+ sents = [s.strip() for s in SPLIT.split(text or "") if len(s.strip()) >= 10]
43
+ if len(sents) < 2:
44
+ continue
45
+ k = rng.choice([1, 1, 2, 3, 4, 6, 8]); i = rng.randrange(max(1, len(sents) - k + 1))
46
+ t = " ".join(sents[i:i + k])
47
+ if rng.random() < 0.15 and len(t) > 60: # short span (query-like)
48
+ st = rng.randrange(0, len(t) - 40); t = t[st:st + rng.randint(20, 60)]
49
+ if 20 <= len(t) <= 2000:
50
+ rows.append((t, lang, url))
51
+ if len(rows) >= per:
52
+ break
53
+ if len(rows) >= per:
54
+ break
55
+ if len(rows) >= per:
56
+ break
57
+ except Exception as e:
58
+ print(lang, "failed", e, flush=True)
59
+ print(lang, len(rows), flush=True)
60
+ return rows
61
+
62
+
63
+ if __name__ == "__main__":
64
+ import pandas as pd
65
+ jobs = [("eng_Latn", "HuggingFaceFW/fineweb", FW["fineweb_eng"], PER * 4)] + [(l, "HuggingFaceFW/fineweb-2", FW["fineweb2"][l], PER) for l in LANGS + [x for x in LANGS2 if x in FW["fineweb2"]]]
66
+ with Pool(int(os.environ.get("NPROC", 14))) as p:
67
+ res = p.map(collect, jobs)
68
+ df = pd.DataFrame([r for rs in res for r in rs], columns=["text", "lang", "url"]).drop_duplicates("text").reset_index(drop=True)
69
+ df.insert(0, "pid", range(len(df)))
70
+ df.to_parquet(OUT); print("passages", len(df), df.lang.nunique(), "langs", flush=True)
71
+ os._exit(0)
code/emb/embed_teacher.py ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """bge-m3 (MIT) dense embeddings as distillation targets. python emb/embed_teacher.py OUT_DIR SRC [SRC ...]
2
+ SRC = parquet path[:column] (default column "text"). Writes OUT_DIR/texts.parquet (text, src) and OUT_DIR/emb.npy
3
+ (float16, n x 1024, CLS pooling, L2-normalised, max 512 tokens) in the same order. Duplicated texts are embedded once.
4
+ """
5
+ import os, sys
6
+ import numpy as np, pandas as pd, torch
7
+ from transformers import AutoModel, AutoTokenizer
8
+
9
+ out = sys.argv[1]; os.makedirs(out, exist_ok=True)
10
+ parts = []
11
+ for spec in sys.argv[2:]:
12
+ path, col = (spec.rsplit(":", 1) if spec.endswith((":text", ":query")) else (spec, "text"))
13
+ parts.append(pd.DataFrame({"text": pd.read_parquet(path, columns=[col])[col].astype(str), "src": os.path.basename(path) + ":" + col}))
14
+ df = pd.concat(parts, ignore_index=True).drop_duplicates("text").reset_index(drop=True)
15
+ sh, ns = int(os.environ.get("SHARD", 0)), int(os.environ.get("NSHARD", 1)) # optional sharding (rows sh::ns)
16
+ df = df.iloc[sh::ns].reset_index(drop=True)
17
+ print("texts", len(df), df.src.value_counts().to_dict(), flush=True)
18
+ tok = AutoTokenizer.from_pretrained("BAAI/bge-m3"); m = AutoModel.from_pretrained("BAAI/bge-m3", torch_dtype=torch.float16).cuda().eval()
19
+ E = np.lib.format.open_memmap(f"{out}/emb.npy", mode="w+", dtype=np.float16, shape=(len(df), 1024))
20
+ texts = df.text.tolist(); order = np.argsort([len(t) for t in texts]); bs = 256
21
+ with torch.no_grad():
22
+ for s in range(0, len(texts), bs):
23
+ b = order[s:s + bs]
24
+ e = tok([texts[i] for i in b], truncation=True, max_length=512, padding=True, return_tensors="pt").to("cuda")
25
+ h = m(**e).last_hidden_state[:, 0]
26
+ E[np.sort(b)] = torch.nn.functional.normalize(h.float(), dim=-1).half().cpu().numpy()[np.argsort(b)]
27
+ if s % (bs * 400) == 0:
28
+ print(s, flush=True)
29
+ E.flush(); df.to_parquet(f"{out}/texts.parquet"); print("done", flush=True)
code/emb/eval_emb.py ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Evaluate embedding models by cosine reranking on rerank/evals (nDCG@10, same sets/metric as rerank/eval_rerank.py).
2
+ python emb/eval_emb.py --models A,B --evals rerank/evals --out R.json
3
+ Specs: cls:<id> (CLS pooling, e.g. BAAI/bge-m3) | mean:<id> (mean pooling) | e5:<id> (mean pooling + "query: "/"passage: "
4
+ prefixes) | ours:<dir> (our student: mean pooling + dir/projection.pt) | asym:<dir> (queries by our student, documents by
5
+ bge-m3 - querying an existing bge-m3 index). All embeddings L2-normalised; documents truncated to 512 tokens.
6
+ """
7
+ import argparse, glob, json, math, os, sys, time
8
+ import numpy as np, pandas as pd, torch
9
+ sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
10
+
11
+ ap = argparse.ArgumentParser()
12
+ ap.add_argument("--models", required=True); ap.add_argument("--evals", required=True); ap.add_argument("--out", required=True)
13
+ ap.add_argument("--bs", type=int, default=128)
14
+ args = ap.parse_args()
15
+ EV = {os.path.basename(p)[:-8]: pd.read_parquet(p) for p in sorted(glob.glob(f"{args.evals}/*.parquet"))}
16
+
17
+
18
+ def ndcg10(rels, scores):
19
+ order = np.argsort(-np.asarray(scores), kind="stable")[:10]
20
+ dcg = sum((2 ** rels[i] - 1) / math.log2(k + 2) for k, i in enumerate(order))
21
+ idcg = sum((2 ** r - 1) / math.log2(k + 2) for k, r in enumerate(sorted(rels, reverse=True)[:10]))
22
+ return dcg / idcg if idcg > 0 else 0.0
23
+
24
+
25
+ class Enc:
26
+ def __init__(self, spec):
27
+ from transformers import AutoModel, AutoTokenizer
28
+ self.kind, mid = spec.split(":", 1)
29
+ self.tok = AutoTokenizer.from_pretrained(mid); self.m = AutoModel.from_pretrained(mid, torch_dtype=torch.float16).cuda().eval()
30
+ self.proj = None
31
+ if self.kind == "ours":
32
+ self.proj = torch.load(f"{mid}/projection.pt", map_location="cuda").half()
33
+
34
+ @torch.no_grad()
35
+ def __call__(self, texts, is_query):
36
+ if self.kind == "e5":
37
+ texts = [("query: " if is_query else "passage: ") + t for t in texts]
38
+ out = np.zeros((len(texts), 0), dtype=np.float32); chunks = [None] * len(texts); order = np.argsort([len(t) for t in texts])
39
+ for s in range(0, len(texts), args.bs):
40
+ b = order[s:s + args.bs]
41
+ e = self.tok([texts[i] for i in b], truncation=True, max_length=64 if is_query else 512, padding=True, return_tensors="pt").to("cuda")
42
+ h = self.m(input_ids=e["input_ids"], attention_mask=e["attention_mask"]).last_hidden_state
43
+ if self.kind == "cls":
44
+ v = h[:, 0]
45
+ else:
46
+ a = e["attention_mask"].unsqueeze(-1).to(h.dtype); v = (h * a).sum(1) / a.sum(1)
47
+ if self.proj is not None:
48
+ v = v @ self.proj
49
+ v = torch.nn.functional.normalize(v.float(), dim=-1).cpu().numpy()
50
+ for j, i in enumerate(b):
51
+ chunks[i] = v[j]
52
+ return np.stack(chunks)
53
+
54
+
55
+ res = json.load(open(args.out)) if os.path.exists(args.out) else {}
56
+ bge = None
57
+ for spec in args.models.split(","):
58
+ if spec.startswith("asym:"):
59
+ bge = bge or Enc("cls:BAAI/bge-m3"); qenc, denc = Enc("ours:" + spec[5:]), bge
60
+ else:
61
+ qenc = denc = Enc(spec)
62
+ r, t0, n = {}, time.time(), 0
63
+ for name, df in EV.items():
64
+ Q = qenc(df["query"].tolist(), True)
65
+ docs = [d for ds in df.docs for d in ds]; D = denc(docs, False); n += len(docs)
66
+ k = 0; nd = []
67
+ for qi, rels in enumerate(df.rels):
68
+ s = D[k:k + len(rels)] @ Q[qi]; k += len(rels); nd.append(ndcg10(list(rels), s))
69
+ r[name] = dict(n=len(df), ndcg10=float(np.mean(nd)))
70
+ fam = lambda p: [v["ndcg10"] for k2, v in r.items() if k2.startswith(p)]
71
+ r["_miracl"], r["_wiki"] = float(np.mean(fam("miracl_"))), float(np.mean(fam("wiki_")))
72
+ r["_other"] = float(np.mean([v["ndcg10"] for k2, v in r.items() if not k2.startswith(("miracl_", "wiki_", "_"))]))
73
+ r["_all"] = float(np.mean([r["_miracl"], r["_wiki"], r["_other"]])); r["_docs_per_s"] = n / (time.time() - t0)
74
+ print(spec, {k2: round(v, 4) for k2, v in r.items() if k2.startswith("_")}, flush=True)
75
+ res[spec] = r; json.dump(res, open(args.out, "w"), indent=1)
76
+ if not spec.startswith("asym:"):
77
+ del qenc, denc
78
+ torch.cuda.empty_cache()
code/emb/train_emb.py ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Distil BAAI/bge-m3 dense embeddings into a smaller encoder (same 1024-d vector space).
2
+ python emb/train_emb.py --base jhu-clsp/mmBERT-small --teacher DIR[,DIR] --out OUT
3
+ Student = encoder + mean pooling + linear projection (hidden -> 1024, saved as OUT/projection.pt), L2-normalised.
4
+ Loss = (1 - cos(student, teacher)) + mse_w * ||student - teacher||^2 + sim_w * in-batch similarity-matrix MSE (keeps the
5
+ relative geometry). Val = 0.5% of texts: mean cosine to the teacher and top-1 in-batch retrieval agreement.
6
+ """
7
+ import argparse, json, os, random, time
8
+ import numpy as np, pandas as pd, torch
9
+ import torch.nn.functional as F
10
+ from transformers import AutoModel, AutoTokenizer, get_cosine_schedule_with_warmup
11
+
12
+ ap = argparse.ArgumentParser()
13
+ ap.add_argument("--base", default="jhu-clsp/mmBERT-small"); ap.add_argument("--teacher", required=True); ap.add_argument("--out", required=True)
14
+ ap.add_argument("--max_len", type=int, default=256); ap.add_argument("--bs", type=int, default=256); ap.add_argument("--lr", type=float, default=1e-4)
15
+ ap.add_argument("--epochs", type=float, default=2.0); ap.add_argument("--warmup", type=float, default=0.03)
16
+ ap.add_argument("--mse_w", type=float, default=1.0); ap.add_argument("--sim_w", type=float, default=1.0)
17
+ ap.add_argument("--seed", type=int, default=0); ap.add_argument("--eval_every", type=int, default=2000)
18
+ args = ap.parse_args()
19
+ random.seed(args.seed); np.random.seed(args.seed); torch.manual_seed(args.seed)
20
+ os.makedirs(args.out, exist_ok=True)
21
+ texts, embs = [], []
22
+ for d in args.teacher.split(","):
23
+ texts += pd.read_parquet(f"{d}/texts.parquet").text.tolist(); embs.append(np.load(f"{d}/emb.npy", mmap_mode="r"))
24
+ E = np.concatenate([np.asarray(e) for e in embs]).astype(np.float16)
25
+ n = len(texts); rng = np.random.RandomState(0); isval = rng.rand(n) < 0.005
26
+ tr_idx, va_idx = np.where(~isval)[0], np.where(isval)[0][:4096]
27
+ print("texts", n, "train", len(tr_idx), "val", len(va_idx), flush=True)
28
+ tok = AutoTokenizer.from_pretrained(args.base); enc = AutoModel.from_pretrained(args.base).cuda()
29
+ proj = torch.nn.Linear(enc.config.hidden_size, 1024, bias=False).cuda()
30
+ params = list(enc.parameters()) + list(proj.parameters())
31
+
32
+
33
+ def embed(idx):
34
+ e = tok([texts[i] for i in idx], truncation=True, max_length=args.max_len, padding=True, return_tensors="pt").to("cuda")
35
+ with torch.autocast("cuda", dtype=torch.bfloat16):
36
+ h = enc(input_ids=e["input_ids"], attention_mask=e["attention_mask"]).last_hidden_state
37
+ a = e["attention_mask"].unsqueeze(-1).float(); v = (h.float() * a).sum(1) / a.sum(1)
38
+ return F.normalize(proj(v), dim=-1)
39
+
40
+
41
+ def loss_fn(s, t):
42
+ cos = (s * t).sum(-1)
43
+ return (1 - cos).mean() + args.mse_w * ((s - t) ** 2).sum(-1).mean() + args.sim_w * ((s @ s.T - t @ t.T) ** 2).mean() * 100
44
+
45
+
46
+ @torch.no_grad()
47
+ def evaluate():
48
+ enc.eval(); S = []
49
+ for s in range(0, len(va_idx), 256):
50
+ S.append(embed(va_idx[s:s + 256]))
51
+ enc.train(); S = torch.cat(S); T = torch.tensor(E[va_idx], dtype=torch.float32, device="cuda")
52
+ top = ((S @ T.T).argmax(1) == torch.arange(len(S), device="cuda")).float().mean().item()
53
+ return dict(cos=float((S * T).sum(-1).mean().item()), top1=top)
54
+
55
+
56
+ steps = int(len(tr_idx) / args.bs * args.epochs)
57
+ opt = torch.optim.AdamW(params, lr=args.lr, weight_decay=0.01, betas=(0.9, 0.98), eps=1e-6, fused=True)
58
+ sch = get_cosine_schedule_with_warmup(opt, int(args.warmup * steps), steps)
59
+ print("steps", steps, flush=True)
60
+ step, best, log, t0 = 0, -1, [], time.time()
61
+ while step < steps:
62
+ perm = np.random.permutation(tr_idx)
63
+ for s in range(0, len(perm) - args.bs + 1, args.bs):
64
+ b = perm[s:s + args.bs]
65
+ st = embed(b); tt = torch.tensor(E[b], dtype=torch.float32, device="cuda")
66
+ loss = loss_fn(st, tt); loss.backward(); torch.nn.utils.clip_grad_norm_(params, 1.0)
67
+ opt.step(); sch.step(); opt.zero_grad(set_to_none=True); step += 1
68
+ if step % 200 == 0:
69
+ print(f"step {step}/{steps} loss {loss.item():.4f} {time.time()-t0:.0f}s", flush=True)
70
+ if step % args.eval_every == 0 or step == steps:
71
+ r = evaluate(); log.append(dict(step=step, **r)); print("EVAL", step, json.dumps(r), flush=True)
72
+ if r["cos"] > best:
73
+ best = r["cos"]; enc.save_pretrained(args.out); tok.save_pretrained(args.out); torch.save(proj.weight.detach().T.contiguous().cpu(), f"{args.out}/projection.pt")
74
+ json.dump(dict(step=step, **r), open(f"{args.out}/val_metrics.json", "w"), indent=1)
75
+ if step >= steps:
76
+ break
77
+ json.dump(dict(args=vars(args), log=log), open(f"{args.out}/train_log.json", "w"), indent=1)
78
+ print("done; best val cos", best)
code/lid/fw_files.json ADDED
The diff for this file is too large to render. See raw diff
 
code/rerank/build_evals.py ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Reranking evaluation sets from MTEB reranking datasets (evaluation only). python rerank/build_evals.py OUT_DIR
2
+ Each output parquet = one (dataset, language): rows qid, query, docs (candidate texts, in the dataset's candidate order),
3
+ rels (graded relevance per candidate). Queries are sampled (seed 0) up to CAP per set; all candidates of a query are kept.
4
+ Sets: MIRACL (18 languages, dev, CC-BY-SA-4.0), WikipediaRerankingMultilingual (CC-BY-SA-3.0), ESCI (product search,
5
+ Apache-2.0), RuBQ (ru), T2Reranking (zh), VoyageMMarco (ja), AskUbuntuDupQuestions and StackOverflowDupQuestions (en).
6
+ """
7
+ import os, sys
8
+ import pandas as pd
9
+ from huggingface_hub import HfApi, hf_hub_download
10
+
11
+ OUT = sys.argv[1]
12
+ os.makedirs(OUT, exist_ok=True)
13
+ api = HfApi()
14
+ SETS = [("mteb/MIRACLReranking", "miracl", 60), ("mteb/WikipediaRerankingMultilingual", "wiki", 60), ("mteb/ESCIReranking", "esci", 150),
15
+ ("mteb/RuBQReranking", "rubq", 150), ("mteb/T2Reranking", "t2", 150), ("mteb/VoyageMMarcoReranking", "mmarco", 150),
16
+ ("mteb/AskUbuntuDupQuestions", "askubuntu", 361), ("mteb/stackoverflowdupquestions-reranking", "stackoverflow", 300)]
17
+
18
+
19
+ def load(repo, files, part, split):
20
+ cand = [f for f in files if (f.startswith(part + "/") or f.split("/")[0].endswith("-" + part)) and f.split("/")[-1].startswith(split)]
21
+ return cand
22
+
23
+
24
+ for repo, name, cap in SETS:
25
+ files = [s.rfilename for s in api.dataset_info(repo).siblings if s.rfilename.endswith(".parquet")]
26
+ split = "test" if any("/test-" in f for f in files) else "dev"
27
+ prefixes = sorted({f.split("/")[0].rsplit("-", 1)[0] for f in files if "-" in f.split("/")[0]}) or [""]
28
+ for pre in prefixes:
29
+ def part(p):
30
+ alts = [f"{pre}-{p}/{split}" if pre else f"{p}/{split}"] + ([f"{pre}-qrels/{split}"] if p == "data" else [])
31
+ for f in files:
32
+ if any(f.startswith(a) for a in alts):
33
+ return pd.read_parquet(hf_hub_download(repo, f, repo_type="dataset"))
34
+ return None
35
+ corpus, queries, top = part("corpus"), part("queries"), part("top_ranked")
36
+ qrels = part("qrels")
37
+ if qrels is None:
38
+ qrels = part("data")
39
+ if corpus is None or queries is None or top is None or qrels is None:
40
+ print(name, pre, "incomplete; skipped"); continue
41
+ ctext = dict(zip(corpus["_id"], (corpus.get("title", "").fillna("") + " " + corpus.text).str.strip().str.slice(0, 2000)))
42
+ qtext = dict(zip(queries["_id"], queries.text))
43
+ rel = {(q, c): s for q, c, s in zip(qrels["query-id"], qrels["corpus-id"], qrels["score"])}
44
+ top = top[top["query-id"].isin(qtext)].sample(frac=1.0, random_state=0)
45
+ rows = []
46
+ for q, cids in zip(top["query-id"], top["corpus-ids"]):
47
+ cids = [c for c in cids if c in ctext]
48
+ rels = [int(rel.get((q, c), 0)) for c in cids]
49
+ if not any(r > 0 for r in rels) or all(r > 0 for r in rels):
50
+ continue
51
+ rows.append((q, qtext[q], [ctext[c] for c in cids], rels))
52
+ if len(rows) >= cap:
53
+ break
54
+ tag = f"{name}_{pre}" if pre else name
55
+ pd.DataFrame(rows, columns=["qid", "query", "docs", "rels"]).to_parquet(f"{OUT}/{tag}.parquet")
56
+ print(tag, len(rows), "queries,", sum(len(r[2]) for r in rows), "pairs", flush=True)
code/rerank/build_passages.py ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Passage pool for reranker training: FineWeb-2 / FineWeb (ODC-BY) chunks of 2-6 consecutive sentences (120-1200 chars).
2
+ python rerank/build_passages.py OUT.parquet [PER_LANG] (CPU job; file list from lid/fw_files.json)
3
+ Columns: pid, text, lang (FineWeb-2 subset code), url. English gets 4x PER_LANG.
4
+ """
5
+ import json, os, random, re, sys, time
6
+ from multiprocessing import Pool
7
+
8
+ OUT = sys.argv[1]
9
+ PER = int(sys.argv[2]) if len(sys.argv) > 2 else 8000
10
+ FW = json.load(open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lid", "fw_files.json")))
11
+ LANGS = ("arb_Arab ben_Beng deu_Latn spa_Latn fas_Arab fin_Latn fra_Latn hin_Deva ind_Latn jpn_Jpan kor_Hang rus_Cyrl swh_Latn "
12
+ "tel_Telu tha_Thai yor_Latn cmn_Hani bul_Cyrl ces_Latn dan_Latn ita_Latn nld_Latn nob_Latn por_Latn ron_Latn srp_Cyrl "
13
+ "swe_Latn pol_Latn tur_Latn ukr_Cyrl vie_Latn heb_Hebr ell_Grek hun_Latn zsm_Latn fil_Latn urd_Arab tam_Taml mar_Deva "
14
+ "slk_Latn hrv_Latn cat_Latn lit_Latn ekk_Latn lvs_Latn slv_Latn").split()
15
+ SPLIT = re.compile(r"(?<=[.!?。!?।؟።])\s+|\n+")
16
+
17
+
18
+ def collect(args):
19
+ lang, repo, files, per = args
20
+ import pyarrow.parquet as pq
21
+ from huggingface_hub import HfFileSystem
22
+ rng = random.Random(7 + sum(map(ord, lang))); fs = HfFileSystem(); rows = []
23
+
24
+ def retry(fn):
25
+ for k in range(6):
26
+ try:
27
+ return fn()
28
+ except Exception:
29
+ if k == 5:
30
+ raise
31
+ time.sleep(20 * (k + 1))
32
+ try:
33
+ for f in files:
34
+ pf = retry(lambda: pq.ParquetFile(fs.open(f"datasets/{repo}/{f}")))
35
+ for g in range(pf.num_row_groups):
36
+ tb = retry(lambda: pf.read_row_group(g, columns=["text", "url"]))
37
+ for text, url in zip(tb.column("text").to_pylist(), tb.column("url").to_pylist()):
38
+ sents = [s.strip() for s in SPLIT.split(text or "") if len(s.strip()) >= 10]
39
+ if len(sents) < 2:
40
+ continue
41
+ k = rng.randint(2, 6); i = rng.randrange(max(1, len(sents) - k + 1))
42
+ t = " ".join(sents[i:i + k])
43
+ if 120 <= len(t) <= 1200:
44
+ rows.append((t, lang, url))
45
+ if len(rows) >= per:
46
+ break
47
+ if len(rows) >= per:
48
+ break
49
+ if len(rows) >= per:
50
+ break
51
+ except Exception as e:
52
+ print(lang, "failed", e, flush=True)
53
+ print(lang, len(rows), flush=True)
54
+ return rows
55
+
56
+
57
+ if __name__ == "__main__":
58
+ import pandas as pd
59
+ jobs = [("eng_Latn", "HuggingFaceFW/fineweb", FW["fineweb_eng"], PER * 4)] + [(l, "HuggingFaceFW/fineweb-2", FW["fineweb2"][l], PER) for l in LANGS]
60
+ with Pool(int(os.environ.get("NPROC", 14))) as p:
61
+ res = p.map(collect, jobs)
62
+ df = pd.DataFrame([r for rs in res for r in rs], columns=["text", "lang", "url"]).drop_duplicates("text").reset_index(drop=True)
63
+ df.insert(0, "pid", range(len(df)))
64
+ df.to_parquet(OUT); print("passages", len(df), df.lang.nunique(), "langs", flush=True)
65
+ os._exit(0)
code/rerank/gen_queries.py ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Search queries for passages, Qwen3.8-27B via vLLM (Apache-2.0 outputs).
2
+ IN=passages.parquet SHARD=i NSHARD=n OUT=dir python rerank/gen_queries.py -> $OUT/q_<shard>.jsonl {pid, query, qtype, qlang}
3
+ Per passage: one natural-language question and one short keyword-style query, in the passage's language; for 15% of
4
+ non-English passages one more query in English (cross-lingual search). Queries must be answerable by the passage but
5
+ should not copy long phrases from it.
6
+ """
7
+ import json, os, random, re, sys
8
+ sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "sentiment"))
9
+
10
+
11
+ def parse_json(t):
12
+ t = re.sub(r"^```(?:json)?|```$", "", t.strip(), flags=re.M).strip()
13
+ s, e = t.find("{"), t.rfind("}")
14
+ try:
15
+ return json.loads(t[s: e + 1])
16
+ except Exception:
17
+ return None
18
+
19
+
20
+ def prompt(text, xl):
21
+ extra = ('\n- "english": a natural question in English that this passage answers (for cross-lingual search)' if xl else "")
22
+ return f"""Passage:
23
+ <<<
24
+ {text}
25
+ >>>
26
+
27
+ Write search queries that a user might type into a search engine and for which this passage is a good result.
28
+ - "question": a natural question in the same language as the passage, answered by the passage
29
+ - "keywords": a short keyword-style query (2-6 words) in the same language as the passage{extra}
30
+ Do not copy long phrases from the passage; use the words a searcher would use. Return only JSON with these keys."""
31
+
32
+
33
+ if __name__ == "__main__":
34
+ import pandas as pd
35
+ from vllm import LLM, SamplingParams
36
+ from common import hard_exit
37
+ df = pd.read_parquet(os.environ["IN"]); sh, ns = int(os.environ.get("SHARD", 0)), int(os.environ.get("NSHARD", 1))
38
+ df = df.iloc[sh::ns]
39
+ rng = random.Random(11 + sh)
40
+ xl = [l != "eng_Latn" and rng.random() < 0.15 for l in df.lang]
41
+ llm = LLM(os.environ.get("MODEL", "Qwen/Qwen3.8-27B-FP8"), max_model_len=4096, gpu_memory_utilization=0.92, max_num_seqs=512,
42
+ limit_mm_per_prompt={"image": 0, "video": 0})
43
+ outs = llm.chat([[{"role": "user", "content": prompt(t, x)}] for t, x in zip(df.text, xl)],
44
+ SamplingParams(temperature=0.7, top_p=0.95, max_tokens=300, seed=5 + sh), chat_template_kwargs={"enable_thinking": False})
45
+ os.makedirs(os.environ["OUT"], exist_ok=True); n = 0
46
+ with open(f"{os.environ['OUT']}/q_{sh}.jsonl", "w") as f:
47
+ for pid, lang, o in zip(df.pid, df.lang, outs):
48
+ j = parse_json(o.outputs[0].text)
49
+ if not isinstance(j, dict):
50
+ continue
51
+ for qt in ["question", "keywords", "english"]:
52
+ q = j.get(qt)
53
+ if isinstance(q, str) and 3 <= len(q.strip()) <= 300:
54
+ f.write(json.dumps(dict(pid=int(pid), query=q.strip(), qtype=qt, qlang="eng_Latn" if qt == "english" else lang), ensure_ascii=False) + "\n"); n += 1
55
+ print("queries", n, "for", len(df), "passages", flush=True)
56
+ hard_exit(0)
config.json ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "ModernBertModel"
4
+ ],
5
+ "attention_bias": false,
6
+ "attention_dropout": 0.0,
7
+ "bos_token_id": 2,
8
+ "classifier_activation": "gelu",
9
+ "classifier_bias": false,
10
+ "classifier_dropout": 0.0,
11
+ "classifier_pooling": "mean",
12
+ "cls_token_id": 1,
13
+ "decoder_bias": true,
14
+ "deterministic_flash_attn": false,
15
+ "dtype": "float32",
16
+ "embedding_dropout": 0.0,
17
+ "eos_token_id": 1,
18
+ "global_attn_every_n_layers": 3,
19
+ "gradient_checkpointing": false,
20
+ "hidden_activation": "gelu",
21
+ "hidden_size": 768,
22
+ "initializer_cutoff_factor": 2.0,
23
+ "initializer_range": 0.02,
24
+ "intermediate_size": 1152,
25
+ "layer_norm_eps": 1e-05,
26
+ "layer_types": [
27
+ "full_attention",
28
+ "sliding_attention",
29
+ "sliding_attention",
30
+ "full_attention",
31
+ "sliding_attention",
32
+ "sliding_attention",
33
+ "full_attention",
34
+ "sliding_attention",
35
+ "sliding_attention",
36
+ "full_attention",
37
+ "sliding_attention",
38
+ "sliding_attention",
39
+ "full_attention",
40
+ "sliding_attention",
41
+ "sliding_attention",
42
+ "full_attention",
43
+ "sliding_attention",
44
+ "sliding_attention",
45
+ "full_attention",
46
+ "sliding_attention",
47
+ "sliding_attention",
48
+ "full_attention"
49
+ ],
50
+ "local_attention": 128,
51
+ "mask_token_id": 4,
52
+ "max_position_embeddings": 8192,
53
+ "mlp_bias": false,
54
+ "mlp_dropout": 0.0,
55
+ "model_type": "modernbert",
56
+ "norm_bias": false,
57
+ "norm_eps": 1e-05,
58
+ "num_attention_heads": 12,
59
+ "num_hidden_layers": 22,
60
+ "pad_token_id": 0,
61
+ "position_embedding_type": "sans_pos",
62
+ "rope_parameters": {
63
+ "full_attention": {
64
+ "rope_theta": 160000,
65
+ "rope_type": "default"
66
+ },
67
+ "sliding_attention": {
68
+ "rope_theta": 160000,
69
+ "rope_type": "default"
70
+ }
71
+ },
72
+ "sep_token_id": 1,
73
+ "sparse_pred_ignore_index": -100,
74
+ "sparse_prediction": false,
75
+ "tie_word_embeddings": true,
76
+ "transformers_version": "5.17.0",
77
+ "vocab_size": 256000
78
+ }
config_sentence_transformers.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"similarity_fn_name": "cosine", "prompts": {}, "default_prompt_name": null}
eval/baselines.json ADDED
@@ -0,0 +1,857 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cls:BAAI/bge-m3": {
3
+ "askubuntu": {
4
+ "n": 361,
5
+ "ndcg10": 0.6656703810422914
6
+ },
7
+ "esci_es": {
8
+ "n": 150,
9
+ "ndcg10": 0.8353929290687163
10
+ },
11
+ "esci_jp": {
12
+ "n": 150,
13
+ "ndcg10": 0.8446809252178239
14
+ },
15
+ "esci_us": {
16
+ "n": 150,
17
+ "ndcg10": 0.8916635813106158
18
+ },
19
+ "miracl_ar": {
20
+ "n": 60,
21
+ "ndcg10": 0.8337544453555171
22
+ },
23
+ "miracl_bn": {
24
+ "n": 60,
25
+ "ndcg10": 0.8520468326002711
26
+ },
27
+ "miracl_de": {
28
+ "n": 60,
29
+ "ndcg10": 0.7296717789784314
30
+ },
31
+ "miracl_en": {
32
+ "n": 60,
33
+ "ndcg10": 0.6891871275339615
34
+ },
35
+ "miracl_es": {
36
+ "n": 60,
37
+ "ndcg10": 0.7581471021545895
38
+ },
39
+ "miracl_fa": {
40
+ "n": 60,
41
+ "ndcg10": 0.7846033120178257
42
+ },
43
+ "miracl_fi": {
44
+ "n": 60,
45
+ "ndcg10": 0.8202730056912013
46
+ },
47
+ "miracl_fr": {
48
+ "n": 60,
49
+ "ndcg10": 0.7004643716210734
50
+ },
51
+ "miracl_hi": {
52
+ "n": 60,
53
+ "ndcg10": 0.7604715990318043
54
+ },
55
+ "miracl_id": {
56
+ "n": 60,
57
+ "ndcg10": 0.6691216387932252
58
+ },
59
+ "miracl_ja": {
60
+ "n": 60,
61
+ "ndcg10": 0.7880794629562834
62
+ },
63
+ "miracl_ko": {
64
+ "n": 60,
65
+ "ndcg10": 0.7947333617834975
66
+ },
67
+ "miracl_ru": {
68
+ "n": 60,
69
+ "ndcg10": 0.8290247596475008
70
+ },
71
+ "miracl_sw": {
72
+ "n": 60,
73
+ "ndcg10": 0.8654063286257364
74
+ },
75
+ "miracl_te": {
76
+ "n": 60,
77
+ "ndcg10": 0.9329244281890277
78
+ },
79
+ "miracl_th": {
80
+ "n": 60,
81
+ "ndcg10": 0.8701537454495231
82
+ },
83
+ "miracl_yo": {
84
+ "n": 60,
85
+ "ndcg10": 0.870938042119561
86
+ },
87
+ "miracl_zh": {
88
+ "n": 60,
89
+ "ndcg10": 0.7891453552250133
90
+ },
91
+ "mmarco": {
92
+ "n": 150,
93
+ "ndcg10": 0.7100696637459445
94
+ },
95
+ "rubq": {
96
+ "n": 150,
97
+ "ndcg10": 0.8277617323379156
98
+ },
99
+ "t2": {
100
+ "n": 150,
101
+ "ndcg10": 0.7377569266122763
102
+ },
103
+ "wiki_bg": {
104
+ "n": 60,
105
+ "ndcg10": 0.929533513890146
106
+ },
107
+ "wiki_bn": {
108
+ "n": 60,
109
+ "ndcg10": 0.9108180336973224
110
+ },
111
+ "wiki_cs": {
112
+ "n": 60,
113
+ "ndcg10": 0.9553910969797961
114
+ },
115
+ "wiki_da": {
116
+ "n": 60,
117
+ "ndcg10": 0.9281230886209774
118
+ },
119
+ "wiki_de": {
120
+ "n": 60,
121
+ "ndcg10": 0.9520535437214951
122
+ },
123
+ "wiki_en": {
124
+ "n": 60,
125
+ "ndcg10": 0.9732131543452396
126
+ },
127
+ "wiki_fa": {
128
+ "n": 60,
129
+ "ndcg10": 0.9149356156733105
130
+ },
131
+ "wiki_fi": {
132
+ "n": 60,
133
+ "ndcg10": 0.9264564969075482
134
+ },
135
+ "wiki_hi": {
136
+ "n": 60,
137
+ "ndcg10": 0.8651733338339528
138
+ },
139
+ "wiki_it": {
140
+ "n": 60,
141
+ "ndcg10": 0.9356964284756129
142
+ },
143
+ "wiki_nl": {
144
+ "n": 60,
145
+ "ndcg10": 0.9587644899758274
146
+ },
147
+ "wiki_no": {
148
+ "n": 60,
149
+ "ndcg10": 0.8693061025833905
150
+ },
151
+ "wiki_pt": {
152
+ "n": 60,
153
+ "ndcg10": 0.9300560180372457
154
+ },
155
+ "wiki_ro": {
156
+ "n": 60,
157
+ "ndcg10": 0.947093603384193
158
+ },
159
+ "wiki_sr": {
160
+ "n": 60,
161
+ "ndcg10": 0.9265851157455774
162
+ },
163
+ "wiki_sv": {
164
+ "n": 60,
165
+ "ndcg10": 0.9141411337372607
166
+ },
167
+ "_miracl": 0.7965637054318913,
168
+ "_wiki": 0.927333798100556,
169
+ "_other": 0.7875708770479406,
170
+ "_all": 0.8371561268601293,
171
+ "_docs_per_s": 755.3071503037847
172
+ },
173
+ "e5:intfloat/multilingual-e5-small": {
174
+ "askubuntu": {
175
+ "n": 361,
176
+ "ndcg10": 0.6145866408660092
177
+ },
178
+ "esci_es": {
179
+ "n": 150,
180
+ "ndcg10": 0.8345672085259446
181
+ },
182
+ "esci_jp": {
183
+ "n": 150,
184
+ "ndcg10": 0.8386913872006542
185
+ },
186
+ "esci_us": {
187
+ "n": 150,
188
+ "ndcg10": 0.8975901738338674
189
+ },
190
+ "miracl_ar": {
191
+ "n": 60,
192
+ "ndcg10": 0.8094871343793595
193
+ },
194
+ "miracl_bn": {
195
+ "n": 60,
196
+ "ndcg10": 0.7114476822775221
197
+ },
198
+ "miracl_de": {
199
+ "n": 60,
200
+ "ndcg10": 0.6345644496075646
201
+ },
202
+ "miracl_en": {
203
+ "n": 60,
204
+ "ndcg10": 0.6191988201431645
205
+ },
206
+ "miracl_es": {
207
+ "n": 60,
208
+ "ndcg10": 0.7190329885079266
209
+ },
210
+ "miracl_fa": {
211
+ "n": 60,
212
+ "ndcg10": 0.6469699209144593
213
+ },
214
+ "miracl_fi": {
215
+ "n": 60,
216
+ "ndcg10": 0.7849846996428437
217
+ },
218
+ "miracl_fr": {
219
+ "n": 60,
220
+ "ndcg10": 0.5726760391631708
221
+ },
222
+ "miracl_hi": {
223
+ "n": 60,
224
+ "ndcg10": 0.6969545158673398
225
+ },
226
+ "miracl_id": {
227
+ "n": 60,
228
+ "ndcg10": 0.6005428547088218
229
+ },
230
+ "miracl_ja": {
231
+ "n": 60,
232
+ "ndcg10": 0.739137618018943
233
+ },
234
+ "miracl_ko": {
235
+ "n": 60,
236
+ "ndcg10": 0.7541787050586695
237
+ },
238
+ "miracl_ru": {
239
+ "n": 60,
240
+ "ndcg10": 0.745509866527369
241
+ },
242
+ "miracl_sw": {
243
+ "n": 60,
244
+ "ndcg10": 0.828129561398711
245
+ },
246
+ "miracl_te": {
247
+ "n": 60,
248
+ "ndcg10": 0.8646378971952645
249
+ },
250
+ "miracl_th": {
251
+ "n": 60,
252
+ "ndcg10": 0.7924128155944588
253
+ },
254
+ "miracl_yo": {
255
+ "n": 60,
256
+ "ndcg10": 0.8057363795220341
257
+ },
258
+ "miracl_zh": {
259
+ "n": 60,
260
+ "ndcg10": 0.6595681407849309
261
+ },
262
+ "mmarco": {
263
+ "n": 150,
264
+ "ndcg10": 0.7132981868433429
265
+ },
266
+ "rubq": {
267
+ "n": 150,
268
+ "ndcg10": 0.803404138209388
269
+ },
270
+ "t2": {
271
+ "n": 150,
272
+ "ndcg10": 0.7330930094196078
273
+ },
274
+ "wiki_bg": {
275
+ "n": 60,
276
+ "ndcg10": 0.8929525432074239
277
+ },
278
+ "wiki_bn": {
279
+ "n": 60,
280
+ "ndcg10": 0.9245838857688082
281
+ },
282
+ "wiki_cs": {
283
+ "n": 60,
284
+ "ndcg10": 0.9163377495151477
285
+ },
286
+ "wiki_da": {
287
+ "n": 60,
288
+ "ndcg10": 0.9330340941285132
289
+ },
290
+ "wiki_de": {
291
+ "n": 60,
292
+ "ndcg10": 0.9352582582167991
293
+ },
294
+ "wiki_en": {
295
+ "n": 60,
296
+ "ndcg10": 0.9720577636464628
297
+ },
298
+ "wiki_fa": {
299
+ "n": 60,
300
+ "ndcg10": 0.8823075178753691
301
+ },
302
+ "wiki_fi": {
303
+ "n": 60,
304
+ "ndcg10": 0.921830203917103
305
+ },
306
+ "wiki_hi": {
307
+ "n": 60,
308
+ "ndcg10": 0.8707020746341965
309
+ },
310
+ "wiki_it": {
311
+ "n": 60,
312
+ "ndcg10": 0.9267184647789447
313
+ },
314
+ "wiki_nl": {
315
+ "n": 60,
316
+ "ndcg10": 0.9266840566369079
317
+ },
318
+ "wiki_no": {
319
+ "n": 60,
320
+ "ndcg10": 0.8696024785968237
321
+ },
322
+ "wiki_pt": {
323
+ "n": 60,
324
+ "ndcg10": 0.9194119033063589
325
+ },
326
+ "wiki_ro": {
327
+ "n": 60,
328
+ "ndcg10": 0.9182876221499743
329
+ },
330
+ "wiki_sr": {
331
+ "n": 60,
332
+ "ndcg10": 0.9048929910571798
333
+ },
334
+ "wiki_sv": {
335
+ "n": 60,
336
+ "ndcg10": 0.9179815231135162
337
+ },
338
+ "_miracl": 0.7213983382951419,
339
+ "_wiki": 0.9145401956593455,
340
+ "_other": 0.7764615349855449,
341
+ "_all": 0.804133356313344,
342
+ "_docs_per_s": 1510.6246846209397
343
+ },
344
+ "e5:intfloat/multilingual-e5-base": {
345
+ "askubuntu": {
346
+ "n": 361,
347
+ "ndcg10": 0.6410350401013797
348
+ },
349
+ "esci_es": {
350
+ "n": 150,
351
+ "ndcg10": 0.8264960201468888
352
+ },
353
+ "esci_jp": {
354
+ "n": 150,
355
+ "ndcg10": 0.8527631585196286
356
+ },
357
+ "esci_us": {
358
+ "n": 150,
359
+ "ndcg10": 0.8979362353736146
360
+ },
361
+ "miracl_ar": {
362
+ "n": 60,
363
+ "ndcg10": 0.7741335914439994
364
+ },
365
+ "miracl_bn": {
366
+ "n": 60,
367
+ "ndcg10": 0.7470673775058853
368
+ },
369
+ "miracl_de": {
370
+ "n": 60,
371
+ "ndcg10": 0.6707476561103582
372
+ },
373
+ "miracl_en": {
374
+ "n": 60,
375
+ "ndcg10": 0.6434888531498094
376
+ },
377
+ "miracl_es": {
378
+ "n": 60,
379
+ "ndcg10": 0.7083119685592874
380
+ },
381
+ "miracl_fa": {
382
+ "n": 60,
383
+ "ndcg10": 0.7286007749434021
384
+ },
385
+ "miracl_fi": {
386
+ "n": 60,
387
+ "ndcg10": 0.769050059159852
388
+ },
389
+ "miracl_fr": {
390
+ "n": 60,
391
+ "ndcg10": 0.6438219522680882
392
+ },
393
+ "miracl_hi": {
394
+ "n": 60,
395
+ "ndcg10": 0.6879644832386964
396
+ },
397
+ "miracl_id": {
398
+ "n": 60,
399
+ "ndcg10": 0.5880643589648785
400
+ },
401
+ "miracl_ja": {
402
+ "n": 60,
403
+ "ndcg10": 0.7177894738320753
404
+ },
405
+ "miracl_ko": {
406
+ "n": 60,
407
+ "ndcg10": 0.733115368969295
408
+ },
409
+ "miracl_ru": {
410
+ "n": 60,
411
+ "ndcg10": 0.7557340800995906
412
+ },
413
+ "miracl_sw": {
414
+ "n": 60,
415
+ "ndcg10": 0.8440969533590856
416
+ },
417
+ "miracl_te": {
418
+ "n": 60,
419
+ "ndcg10": 0.8213691500565956
420
+ },
421
+ "miracl_th": {
422
+ "n": 60,
423
+ "ndcg10": 0.7775501105526337
424
+ },
425
+ "miracl_yo": {
426
+ "n": 60,
427
+ "ndcg10": 0.8602216409451844
428
+ },
429
+ "miracl_zh": {
430
+ "n": 60,
431
+ "ndcg10": 0.7718196626379744
432
+ },
433
+ "mmarco": {
434
+ "n": 150,
435
+ "ndcg10": 0.6860563287688956
436
+ },
437
+ "rubq": {
438
+ "n": 150,
439
+ "ndcg10": 0.8009261488182178
440
+ },
441
+ "t2": {
442
+ "n": 150,
443
+ "ndcg10": 0.7196655904910614
444
+ },
445
+ "wiki_bg": {
446
+ "n": 60,
447
+ "ndcg10": 0.888493096791215
448
+ },
449
+ "wiki_bn": {
450
+ "n": 60,
451
+ "ndcg10": 0.9053882337884093
452
+ },
453
+ "wiki_cs": {
454
+ "n": 60,
455
+ "ndcg10": 0.9353868770548284
456
+ },
457
+ "wiki_da": {
458
+ "n": 60,
459
+ "ndcg10": 0.9145106208218478
460
+ },
461
+ "wiki_de": {
462
+ "n": 60,
463
+ "ndcg10": 0.9382904104792485
464
+ },
465
+ "wiki_en": {
466
+ "n": 60,
467
+ "ndcg10": 0.9670619835714305
468
+ },
469
+ "wiki_fa": {
470
+ "n": 60,
471
+ "ndcg10": 0.8992370630146003
472
+ },
473
+ "wiki_fi": {
474
+ "n": 60,
475
+ "ndcg10": 0.9178611957028182
476
+ },
477
+ "wiki_hi": {
478
+ "n": 60,
479
+ "ndcg10": 0.8466475183304261
480
+ },
481
+ "wiki_it": {
482
+ "n": 60,
483
+ "ndcg10": 0.9428743711101694
484
+ },
485
+ "wiki_nl": {
486
+ "n": 60,
487
+ "ndcg10": 0.9461643408190826
488
+ },
489
+ "wiki_no": {
490
+ "n": 60,
491
+ "ndcg10": 0.8822254458686295
492
+ },
493
+ "wiki_pt": {
494
+ "n": 60,
495
+ "ndcg10": 0.93223818059677
496
+ },
497
+ "wiki_ro": {
498
+ "n": 60,
499
+ "ndcg10": 0.9240123664766273
500
+ },
501
+ "wiki_sr": {
502
+ "n": 60,
503
+ "ndcg10": 0.9236918945371214
504
+ },
505
+ "wiki_sv": {
506
+ "n": 60,
507
+ "ndcg10": 0.9298929910571798
508
+ },
509
+ "_miracl": 0.7357193064331494,
510
+ "_wiki": 0.9183735368762752,
511
+ "_other": 0.7749826460313837,
512
+ "_all": 0.8096918297802694,
513
+ "_docs_per_s": 1294.14767662913
514
+ },
515
+ "mean:sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2": {
516
+ "askubuntu": {
517
+ "n": 361,
518
+ "ndcg10": 0.6593311764088963
519
+ },
520
+ "esci_es": {
521
+ "n": 150,
522
+ "ndcg10": 0.8030820996228589
523
+ },
524
+ "esci_jp": {
525
+ "n": 150,
526
+ "ndcg10": 0.8292774648180925
527
+ },
528
+ "esci_us": {
529
+ "n": 150,
530
+ "ndcg10": 0.8558446274620043
531
+ },
532
+ "miracl_ar": {
533
+ "n": 60,
534
+ "ndcg10": 0.33995870060071187
535
+ },
536
+ "miracl_bn": {
537
+ "n": 60,
538
+ "ndcg10": 0.10062772888052027
539
+ },
540
+ "miracl_de": {
541
+ "n": 60,
542
+ "ndcg10": 0.49745229598874496
543
+ },
544
+ "miracl_en": {
545
+ "n": 60,
546
+ "ndcg10": 0.49430369069596836
547
+ },
548
+ "miracl_es": {
549
+ "n": 60,
550
+ "ndcg10": 0.49376054190150254
551
+ },
552
+ "miracl_fa": {
553
+ "n": 60,
554
+ "ndcg10": 0.33784773084632214
555
+ },
556
+ "miracl_fi": {
557
+ "n": 60,
558
+ "ndcg10": 0.5391379742395018
559
+ },
560
+ "miracl_fr": {
561
+ "n": 60,
562
+ "ndcg10": 0.4029746959581783
563
+ },
564
+ "miracl_hi": {
565
+ "n": 60,
566
+ "ndcg10": 0.3933734511901455
567
+ },
568
+ "miracl_id": {
569
+ "n": 60,
570
+ "ndcg10": 0.4195277671370329
571
+ },
572
+ "miracl_ja": {
573
+ "n": 60,
574
+ "ndcg10": 0.4299776871592214
575
+ },
576
+ "miracl_ko": {
577
+ "n": 60,
578
+ "ndcg10": 0.4232108800794022
579
+ },
580
+ "miracl_ru": {
581
+ "n": 60,
582
+ "ndcg10": 0.38301162077718887
583
+ },
584
+ "miracl_sw": {
585
+ "n": 60,
586
+ "ndcg10": 0.27333741060276756
587
+ },
588
+ "miracl_te": {
589
+ "n": 60,
590
+ "ndcg10": 0.10235710228305292
591
+ },
592
+ "miracl_th": {
593
+ "n": 60,
594
+ "ndcg10": 0.3751229772636128
595
+ },
596
+ "miracl_yo": {
597
+ "n": 60,
598
+ "ndcg10": 0.41564536084544285
599
+ },
600
+ "miracl_zh": {
601
+ "n": 60,
602
+ "ndcg10": 0.5455112257398346
603
+ },
604
+ "mmarco": {
605
+ "n": 150,
606
+ "ndcg10": 0.4529963705977627
607
+ },
608
+ "rubq": {
609
+ "n": 150,
610
+ "ndcg10": 0.5911557734552291
611
+ },
612
+ "t2": {
613
+ "n": 150,
614
+ "ndcg10": 0.6175956685016418
615
+ },
616
+ "wiki_bg": {
617
+ "n": 60,
618
+ "ndcg10": 0.8431693155279092
619
+ },
620
+ "wiki_bn": {
621
+ "n": 60,
622
+ "ndcg10": 0.51027776651553
623
+ },
624
+ "wiki_cs": {
625
+ "n": 60,
626
+ "ndcg10": 0.8739110090544683
627
+ },
628
+ "wiki_da": {
629
+ "n": 60,
630
+ "ndcg10": 0.8220310914235321
631
+ },
632
+ "wiki_de": {
633
+ "n": 60,
634
+ "ndcg10": 0.8539397656758437
635
+ },
636
+ "wiki_en": {
637
+ "n": 60,
638
+ "ndcg10": 0.9295452577018037
639
+ },
640
+ "wiki_fa": {
641
+ "n": 60,
642
+ "ndcg10": 0.8466261318110585
643
+ },
644
+ "wiki_fi": {
645
+ "n": 60,
646
+ "ndcg10": 0.8430048569521499
647
+ },
648
+ "wiki_hi": {
649
+ "n": 60,
650
+ "ndcg10": 0.7953517649819623
651
+ },
652
+ "wiki_it": {
653
+ "n": 60,
654
+ "ndcg10": 0.8847437240888024
655
+ },
656
+ "wiki_nl": {
657
+ "n": 60,
658
+ "ndcg10": 0.8861129781150623
659
+ },
660
+ "wiki_no": {
661
+ "n": 60,
662
+ "ndcg10": 0.8330340596148136
663
+ },
664
+ "wiki_pt": {
665
+ "n": 60,
666
+ "ndcg10": 0.8745424640104518
667
+ },
668
+ "wiki_ro": {
669
+ "n": 60,
670
+ "ndcg10": 0.8706507172922537
671
+ },
672
+ "wiki_sr": {
673
+ "n": 60,
674
+ "ndcg10": 0.8418999129941477
675
+ },
676
+ "wiki_sv": {
677
+ "n": 60,
678
+ "ndcg10": 0.8759933201214941
679
+ },
680
+ "_miracl": 0.3870632690105084,
681
+ "_wiki": 0.8365521334925803,
682
+ "_other": 0.687040454409498,
683
+ "_all": 0.636885285637529,
684
+ "_docs_per_s": 1368.597113329957
685
+ },
686
+ "mean:sentence-transformers/all-MiniLM-L6-v2": {
687
+ "askubuntu": {
688
+ "n": 361,
689
+ "ndcg10": 0.6950870859095775
690
+ },
691
+ "esci_es": {
692
+ "n": 150,
693
+ "ndcg10": 0.805459684054124
694
+ },
695
+ "esci_jp": {
696
+ "n": 150,
697
+ "ndcg10": 0.8190418405937759
698
+ },
699
+ "esci_us": {
700
+ "n": 150,
701
+ "ndcg10": 0.89287039530015
702
+ },
703
+ "miracl_ar": {
704
+ "n": 60,
705
+ "ndcg10": 0.038931957155848455
706
+ },
707
+ "miracl_bn": {
708
+ "n": 60,
709
+ "ndcg10": 0.030062987091536823
710
+ },
711
+ "miracl_de": {
712
+ "n": 60,
713
+ "ndcg10": 0.19863579759718686
714
+ },
715
+ "miracl_en": {
716
+ "n": 60,
717
+ "ndcg10": 0.44637962019197014
718
+ },
719
+ "miracl_es": {
720
+ "n": 60,
721
+ "ndcg10": 0.16533372301666774
722
+ },
723
+ "miracl_fa": {
724
+ "n": 60,
725
+ "ndcg10": 0.08099172914531616
726
+ },
727
+ "miracl_fi": {
728
+ "n": 60,
729
+ "ndcg10": 0.318827777529499
730
+ },
731
+ "miracl_fr": {
732
+ "n": 60,
733
+ "ndcg10": 0.19648428931651676
734
+ },
735
+ "miracl_hi": {
736
+ "n": 60,
737
+ "ndcg10": 0.05974075434463789
738
+ },
739
+ "miracl_id": {
740
+ "n": 60,
741
+ "ndcg10": 0.19480044817902895
742
+ },
743
+ "miracl_ja": {
744
+ "n": 60,
745
+ "ndcg10": 0.0664399201863372
746
+ },
747
+ "miracl_ko": {
748
+ "n": 60,
749
+ "ndcg10": 0.07768323456188891
750
+ },
751
+ "miracl_ru": {
752
+ "n": 60,
753
+ "ndcg10": 0.0741022641360989
754
+ },
755
+ "miracl_sw": {
756
+ "n": 60,
757
+ "ndcg10": 0.4118178738845216
758
+ },
759
+ "miracl_te": {
760
+ "n": 60,
761
+ "ndcg10": 0.028812270540518346
762
+ },
763
+ "miracl_th": {
764
+ "n": 60,
765
+ "ndcg10": 0.037664201840444354
766
+ },
767
+ "miracl_yo": {
768
+ "n": 60,
769
+ "ndcg10": 0.5977167422457427
770
+ },
771
+ "miracl_zh": {
772
+ "n": 60,
773
+ "ndcg10": 0.07071352407283164
774
+ },
775
+ "mmarco": {
776
+ "n": 150,
777
+ "ndcg10": 0.26867494304404316
778
+ },
779
+ "rubq": {
780
+ "n": 150,
781
+ "ndcg10": 0.3064855273291065
782
+ },
783
+ "t2": {
784
+ "n": 150,
785
+ "ndcg10": 0.5577994137229116
786
+ },
787
+ "wiki_bg": {
788
+ "n": 60,
789
+ "ndcg10": 0.6167824030088364
790
+ },
791
+ "wiki_bn": {
792
+ "n": 60,
793
+ "ndcg10": 0.4546528384572809
794
+ },
795
+ "wiki_cs": {
796
+ "n": 60,
797
+ "ndcg10": 0.7362788337728153
798
+ },
799
+ "wiki_da": {
800
+ "n": 60,
801
+ "ndcg10": 0.7773546957318817
802
+ },
803
+ "wiki_de": {
804
+ "n": 60,
805
+ "ndcg10": 0.7759664941138815
806
+ },
807
+ "wiki_en": {
808
+ "n": 60,
809
+ "ndcg10": 0.950431156642494
810
+ },
811
+ "wiki_fa": {
812
+ "n": 60,
813
+ "ndcg10": 0.5099313956928329
814
+ },
815
+ "wiki_fi": {
816
+ "n": 60,
817
+ "ndcg10": 0.801663620538976
818
+ },
819
+ "wiki_hi": {
820
+ "n": 60,
821
+ "ndcg10": 0.5357898617158996
822
+ },
823
+ "wiki_it": {
824
+ "n": 60,
825
+ "ndcg10": 0.8319465347786749
826
+ },
827
+ "wiki_nl": {
828
+ "n": 60,
829
+ "ndcg10": 0.8007722530139283
830
+ },
831
+ "wiki_no": {
832
+ "n": 60,
833
+ "ndcg10": 0.7436514286534031
834
+ },
835
+ "wiki_pt": {
836
+ "n": 60,
837
+ "ndcg10": 0.8185917340825137
838
+ },
839
+ "wiki_ro": {
840
+ "n": 60,
841
+ "ndcg10": 0.8534025214158526
842
+ },
843
+ "wiki_sr": {
844
+ "n": 60,
845
+ "ndcg10": 0.5560142087611005
846
+ },
847
+ "wiki_sv": {
848
+ "n": 60,
849
+ "ndcg10": 0.7582896375765296
850
+ },
851
+ "_miracl": 0.17195217305758848,
852
+ "_wiki": 0.7200949761223062,
853
+ "_other": 0.6207741271362411,
854
+ "_all": 0.5042737587720453,
855
+ "_docs_per_s": 1423.8455996927694
856
+ }
857
+ }
eval/this_model.json ADDED
@@ -0,0 +1,344 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "ours:/fast/awuhrmann/agent-outputs/run-20260923-130458/9ab0016a-b6ee-4764-994d-5154baf33dc7/model": {
3
+ "askubuntu": {
4
+ "n": 361,
5
+ "ndcg10": 0.6454024803892467
6
+ },
7
+ "esci_es": {
8
+ "n": 150,
9
+ "ndcg10": 0.8421130165954218
10
+ },
11
+ "esci_jp": {
12
+ "n": 150,
13
+ "ndcg10": 0.8485930209752721
14
+ },
15
+ "esci_us": {
16
+ "n": 150,
17
+ "ndcg10": 0.880127369013804
18
+ },
19
+ "miracl_ar": {
20
+ "n": 60,
21
+ "ndcg10": 0.8217118082576983
22
+ },
23
+ "miracl_bn": {
24
+ "n": 60,
25
+ "ndcg10": 0.799904189410707
26
+ },
27
+ "miracl_de": {
28
+ "n": 60,
29
+ "ndcg10": 0.6870982746080678
30
+ },
31
+ "miracl_en": {
32
+ "n": 60,
33
+ "ndcg10": 0.6669980874794317
34
+ },
35
+ "miracl_es": {
36
+ "n": 60,
37
+ "ndcg10": 0.7529764511365112
38
+ },
39
+ "miracl_fa": {
40
+ "n": 60,
41
+ "ndcg10": 0.7224917329012956
42
+ },
43
+ "miracl_fi": {
44
+ "n": 60,
45
+ "ndcg10": 0.8109735726187206
46
+ },
47
+ "miracl_fr": {
48
+ "n": 60,
49
+ "ndcg10": 0.7028965920193273
50
+ },
51
+ "miracl_hi": {
52
+ "n": 60,
53
+ "ndcg10": 0.6579653261024776
54
+ },
55
+ "miracl_id": {
56
+ "n": 60,
57
+ "ndcg10": 0.6438096608032022
58
+ },
59
+ "miracl_ja": {
60
+ "n": 60,
61
+ "ndcg10": 0.7225855446687406
62
+ },
63
+ "miracl_ko": {
64
+ "n": 60,
65
+ "ndcg10": 0.7598925416390455
66
+ },
67
+ "miracl_ru": {
68
+ "n": 60,
69
+ "ndcg10": 0.7720009403332085
70
+ },
71
+ "miracl_sw": {
72
+ "n": 60,
73
+ "ndcg10": 0.7914829344017279
74
+ },
75
+ "miracl_te": {
76
+ "n": 60,
77
+ "ndcg10": 0.8415466359969032
78
+ },
79
+ "miracl_th": {
80
+ "n": 60,
81
+ "ndcg10": 0.7793873296707757
82
+ },
83
+ "miracl_yo": {
84
+ "n": 60,
85
+ "ndcg10": 0.8945753374362755
86
+ },
87
+ "miracl_zh": {
88
+ "n": 60,
89
+ "ndcg10": 0.7285885887686003
90
+ },
91
+ "mmarco": {
92
+ "n": 150,
93
+ "ndcg10": 0.6673208259725423
94
+ },
95
+ "rubq": {
96
+ "n": 150,
97
+ "ndcg10": 0.8145785161115712
98
+ },
99
+ "t2": {
100
+ "n": 150,
101
+ "ndcg10": 0.7389363486924803
102
+ },
103
+ "wiki_bg": {
104
+ "n": 60,
105
+ "ndcg10": 0.9488921928506111
106
+ },
107
+ "wiki_bn": {
108
+ "n": 60,
109
+ "ndcg10": 0.9464263086904791
110
+ },
111
+ "wiki_cs": {
112
+ "n": 60,
113
+ "ndcg10": 0.9553910969797961
114
+ },
115
+ "wiki_da": {
116
+ "n": 60,
117
+ "ndcg10": 0.9725185982356556
118
+ },
119
+ "wiki_de": {
120
+ "n": 60,
121
+ "ndcg10": 0.9401761970253395
122
+ },
123
+ "wiki_en": {
124
+ "n": 60,
125
+ "ndcg10": 0.9430887554321781
126
+ },
127
+ "wiki_fa": {
128
+ "n": 60,
129
+ "ndcg10": 0.8937818799460686
130
+ },
131
+ "wiki_fi": {
132
+ "n": 60,
133
+ "ndcg10": 0.9587286502380972
134
+ },
135
+ "wiki_hi": {
136
+ "n": 60,
137
+ "ndcg10": 0.8568689804067117
138
+ },
139
+ "wiki_it": {
140
+ "n": 60,
141
+ "ndcg10": 0.9396795226984166
142
+ },
143
+ "wiki_nl": {
144
+ "n": 60,
145
+ "ndcg10": 0.9516840566369079
146
+ },
147
+ "wiki_no": {
148
+ "n": 60,
149
+ "ndcg10": 0.8828827306447898
150
+ },
151
+ "wiki_pt": {
152
+ "n": 60,
153
+ "ndcg10": 0.9383893513705791
154
+ },
155
+ "wiki_ro": {
156
+ "n": 60,
157
+ "ndcg10": 0.9399618127033308
158
+ },
159
+ "wiki_sr": {
160
+ "n": 60,
161
+ "ndcg10": 0.9659065928726538
162
+ },
163
+ "wiki_sv": {
164
+ "n": 60,
165
+ "ndcg10": 0.9096481897801829
166
+ },
167
+ "_miracl": 0.7531603082362621,
168
+ "_wiki": 0.9340015572819873,
169
+ "_other": 0.7767245111071912,
170
+ "_all": 0.8212954588751469,
171
+ "_docs_per_s": 871.5669460239191
172
+ },
173
+ "asym:/fast/awuhrmann/agent-outputs/run-20260923-130458/9ab0016a-b6ee-4764-994d-5154baf33dc7/model": {
174
+ "askubuntu": {
175
+ "n": 361,
176
+ "ndcg10": 0.6440774120514842
177
+ },
178
+ "esci_es": {
179
+ "n": 150,
180
+ "ndcg10": 0.8385399733212493
181
+ },
182
+ "esci_jp": {
183
+ "n": 150,
184
+ "ndcg10": 0.8562850126133227
185
+ },
186
+ "esci_us": {
187
+ "n": 150,
188
+ "ndcg10": 0.8862480984456198
189
+ },
190
+ "miracl_ar": {
191
+ "n": 60,
192
+ "ndcg10": 0.7954835090989633
193
+ },
194
+ "miracl_bn": {
195
+ "n": 60,
196
+ "ndcg10": 0.7815916462095401
197
+ },
198
+ "miracl_de": {
199
+ "n": 60,
200
+ "ndcg10": 0.7076742754712886
201
+ },
202
+ "miracl_en": {
203
+ "n": 60,
204
+ "ndcg10": 0.6700312003323375
205
+ },
206
+ "miracl_es": {
207
+ "n": 60,
208
+ "ndcg10": 0.7095367439753345
209
+ },
210
+ "miracl_fa": {
211
+ "n": 60,
212
+ "ndcg10": 0.6867360199962332
213
+ },
214
+ "miracl_fi": {
215
+ "n": 60,
216
+ "ndcg10": 0.8020650186446121
217
+ },
218
+ "miracl_fr": {
219
+ "n": 60,
220
+ "ndcg10": 0.6765686304868476
221
+ },
222
+ "miracl_hi": {
223
+ "n": 60,
224
+ "ndcg10": 0.6453188140969595
225
+ },
226
+ "miracl_id": {
227
+ "n": 60,
228
+ "ndcg10": 0.6360307891031997
229
+ },
230
+ "miracl_ja": {
231
+ "n": 60,
232
+ "ndcg10": 0.7344066663358962
233
+ },
234
+ "miracl_ko": {
235
+ "n": 60,
236
+ "ndcg10": 0.7342229813172885
237
+ },
238
+ "miracl_ru": {
239
+ "n": 60,
240
+ "ndcg10": 0.8072169697526407
241
+ },
242
+ "miracl_sw": {
243
+ "n": 60,
244
+ "ndcg10": 0.8259876439612289
245
+ },
246
+ "miracl_te": {
247
+ "n": 60,
248
+ "ndcg10": 0.8189061813409654
249
+ },
250
+ "miracl_th": {
251
+ "n": 60,
252
+ "ndcg10": 0.7803309379115535
253
+ },
254
+ "miracl_yo": {
255
+ "n": 60,
256
+ "ndcg10": 0.8552227103388154
257
+ },
258
+ "miracl_zh": {
259
+ "n": 60,
260
+ "ndcg10": 0.6921012777903786
261
+ },
262
+ "mmarco": {
263
+ "n": 150,
264
+ "ndcg10": 0.6369943090342021
265
+ },
266
+ "rubq": {
267
+ "n": 150,
268
+ "ndcg10": 0.8374024209496113
269
+ },
270
+ "t2": {
271
+ "n": 150,
272
+ "ndcg10": 0.7203977984132124
273
+ },
274
+ "wiki_bg": {
275
+ "n": 60,
276
+ "ndcg10": 0.957835227410717
277
+ },
278
+ "wiki_bn": {
279
+ "n": 60,
280
+ "ndcg10": 0.9295452577018037
281
+ },
282
+ "wiki_cs": {
283
+ "n": 60,
284
+ "ndcg10": 0.9676934385274142
285
+ },
286
+ "wiki_da": {
287
+ "n": 60,
288
+ "ndcg10": 0.945602223141698
289
+ },
290
+ "wiki_de": {
291
+ "n": 60,
292
+ "ndcg10": 0.9527749145863909
293
+ },
294
+ "wiki_en": {
295
+ "n": 60,
296
+ "ndcg10": 0.9587286502380972
297
+ },
298
+ "wiki_fa": {
299
+ "n": 60,
300
+ "ndcg10": 0.8920367429441932
301
+ },
302
+ "wiki_fi": {
303
+ "n": 60,
304
+ "ndcg10": 0.9613278834315966
305
+ },
306
+ "wiki_hi": {
307
+ "n": 60,
308
+ "ndcg10": 0.8604873920742336
309
+ },
310
+ "wiki_it": {
311
+ "n": 60,
312
+ "ndcg10": 0.9391197472178933
313
+ },
314
+ "wiki_nl": {
315
+ "n": 60,
316
+ "ndcg10": 0.9428743711101694
317
+ },
318
+ "wiki_no": {
319
+ "n": 60,
320
+ "ndcg10": 0.8924789738900906
321
+ },
322
+ "wiki_pt": {
323
+ "n": 60,
324
+ "ndcg10": 0.9261228495606912
325
+ },
326
+ "wiki_ro": {
327
+ "n": 60,
328
+ "ndcg10": 0.933600031400068
329
+ },
330
+ "wiki_sr": {
331
+ "n": 60,
332
+ "ndcg10": 0.9615422677536052
333
+ },
334
+ "wiki_sv": {
335
+ "n": 60,
336
+ "ndcg10": 0.9181101419515455
337
+ },
338
+ "_miracl": 0.7421906675646712,
339
+ "_wiki": 0.933742507058763,
340
+ "_other": 0.7742778606898144,
341
+ "_all": 0.8167370117710829,
342
+ "_docs_per_s": 789.6014879056063
343
+ }
344
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4492406536ba29beaaa21b891a13442a4ca81d3c7c96338ab9fec6aa599b5aaa
3
+ size 1227771776
modules.json ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "idx": 0,
4
+ "name": "0",
5
+ "path": "",
6
+ "type": "sentence_transformers.models.Transformer"
7
+ },
8
+ {
9
+ "idx": 1,
10
+ "name": "1",
11
+ "path": "1_Pooling",
12
+ "type": "sentence_transformers.models.Pooling"
13
+ },
14
+ {
15
+ "idx": 2,
16
+ "name": "2",
17
+ "path": "2_Dense",
18
+ "type": "sentence_transformers.models.Dense"
19
+ },
20
+ {
21
+ "idx": 3,
22
+ "name": "3",
23
+ "path": "3_Normalize",
24
+ "type": "sentence_transformers.models.Normalize"
25
+ }
26
+ ]
onnx/model.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4faca1585b2bb2ceb5443aa13e4ed543f9148a7f81bd4808cd4bb813cd0d82f7
3
+ size 1231445467
onnx/model_quantized.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7aace31160d136c30afca8e42de7dd398a8e62ab192063c735bb16886bb71b7d
3
+ size 641822905
onnx/quantization_check.json ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "gather_only": {
3
+ "min_cos": 0.9999687671661377,
4
+ "mb": 641.822905
5
+ },
6
+ "fp32": {
7
+ "cos_to_torch": 0.9999997615814209,
8
+ "mb": 1231.445467
9
+ },
10
+ "n": 4
11
+ }
sentence_bert_config.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"max_seq_length": 512, "do_lower_case": false}
special_tokens_map.json ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "additional_special_tokens": [
3
+ "<start_of_turn>",
4
+ "<end_of_turn>"
5
+ ],
6
+ "bos_token": {
7
+ "content": "<bos>",
8
+ "lstrip": false,
9
+ "normalized": false,
10
+ "rstrip": false,
11
+ "single_word": false
12
+ },
13
+ "eos_token": {
14
+ "content": "<eos>",
15
+ "lstrip": false,
16
+ "normalized": false,
17
+ "rstrip": false,
18
+ "single_word": false
19
+ },
20
+ "pad_token": {
21
+ "content": "<pad>",
22
+ "lstrip": false,
23
+ "normalized": false,
24
+ "rstrip": false,
25
+ "single_word": false
26
+ },
27
+ "unk_token": {
28
+ "content": "<unk>",
29
+ "lstrip": false,
30
+ "normalized": false,
31
+ "rstrip": false,
32
+ "single_word": false
33
+ }
34
+ }
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0a5069feab370ece9f452dcda41c0ba2c216eebf6cb49b06893698f53cdc2b0b
3
+ size 34363441
tokenizer_config.json ADDED
@@ -0,0 +1,2017 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_bos_token": true,
3
+ "added_tokens_decoder": {
4
+ "0": {
5
+ "content": "<pad>",
6
+ "lstrip": false,
7
+ "normalized": false,
8
+ "rstrip": false,
9
+ "single_word": false,
10
+ "special": true
11
+ },
12
+ "1": {
13
+ "content": "<eos>",
14
+ "lstrip": false,
15
+ "normalized": false,
16
+ "rstrip": false,
17
+ "single_word": false,
18
+ "special": true
19
+ },
20
+ "2": {
21
+ "content": "<bos>",
22
+ "lstrip": false,
23
+ "normalized": false,
24
+ "rstrip": false,
25
+ "single_word": false,
26
+ "special": true
27
+ },
28
+ "3": {
29
+ "content": "<unk>",
30
+ "lstrip": false,
31
+ "normalized": false,
32
+ "rstrip": false,
33
+ "single_word": false,
34
+ "special": true
35
+ },
36
+ "4": {
37
+ "content": "<mask>",
38
+ "lstrip": true,
39
+ "normalized": false,
40
+ "rstrip": false,
41
+ "single_word": false,
42
+ "special": false
43
+ },
44
+ "5": {
45
+ "content": "<2mass>",
46
+ "lstrip": false,
47
+ "normalized": false,
48
+ "rstrip": false,
49
+ "single_word": false,
50
+ "special": false
51
+ },
52
+ "6": {
53
+ "content": "[@BOS@]",
54
+ "lstrip": false,
55
+ "normalized": false,
56
+ "rstrip": false,
57
+ "single_word": false,
58
+ "special": false
59
+ },
60
+ "7": {
61
+ "content": "<unused0>",
62
+ "lstrip": false,
63
+ "normalized": false,
64
+ "rstrip": false,
65
+ "single_word": false,
66
+ "special": false
67
+ },
68
+ "8": {
69
+ "content": "<unused1>",
70
+ "lstrip": false,
71
+ "normalized": false,
72
+ "rstrip": false,
73
+ "single_word": false,
74
+ "special": false
75
+ },
76
+ "9": {
77
+ "content": "<unused2>",
78
+ "lstrip": false,
79
+ "normalized": false,
80
+ "rstrip": false,
81
+ "single_word": false,
82
+ "special": false
83
+ },
84
+ "10": {
85
+ "content": "<unused3>",
86
+ "lstrip": false,
87
+ "normalized": false,
88
+ "rstrip": false,
89
+ "single_word": false,
90
+ "special": false
91
+ },
92
+ "11": {
93
+ "content": "<unused4>",
94
+ "lstrip": false,
95
+ "normalized": false,
96
+ "rstrip": false,
97
+ "single_word": false,
98
+ "special": false
99
+ },
100
+ "12": {
101
+ "content": "<unused5>",
102
+ "lstrip": false,
103
+ "normalized": false,
104
+ "rstrip": false,
105
+ "single_word": false,
106
+ "special": false
107
+ },
108
+ "13": {
109
+ "content": "<unused6>",
110
+ "lstrip": false,
111
+ "normalized": false,
112
+ "rstrip": false,
113
+ "single_word": false,
114
+ "special": false
115
+ },
116
+ "14": {
117
+ "content": "<unused7>",
118
+ "lstrip": false,
119
+ "normalized": false,
120
+ "rstrip": false,
121
+ "single_word": false,
122
+ "special": false
123
+ },
124
+ "15": {
125
+ "content": "<unused8>",
126
+ "lstrip": false,
127
+ "normalized": false,
128
+ "rstrip": false,
129
+ "single_word": false,
130
+ "special": false
131
+ },
132
+ "16": {
133
+ "content": "<unused9>",
134
+ "lstrip": false,
135
+ "normalized": false,
136
+ "rstrip": false,
137
+ "single_word": false,
138
+ "special": false
139
+ },
140
+ "17": {
141
+ "content": "<unused10>",
142
+ "lstrip": false,
143
+ "normalized": false,
144
+ "rstrip": false,
145
+ "single_word": false,
146
+ "special": false
147
+ },
148
+ "18": {
149
+ "content": "<unused11>",
150
+ "lstrip": false,
151
+ "normalized": false,
152
+ "rstrip": false,
153
+ "single_word": false,
154
+ "special": false
155
+ },
156
+ "19": {
157
+ "content": "<unused12>",
158
+ "lstrip": false,
159
+ "normalized": false,
160
+ "rstrip": false,
161
+ "single_word": false,
162
+ "special": false
163
+ },
164
+ "20": {
165
+ "content": "<unused13>",
166
+ "lstrip": false,
167
+ "normalized": false,
168
+ "rstrip": false,
169
+ "single_word": false,
170
+ "special": false
171
+ },
172
+ "21": {
173
+ "content": "<unused14>",
174
+ "lstrip": false,
175
+ "normalized": false,
176
+ "rstrip": false,
177
+ "single_word": false,
178
+ "special": false
179
+ },
180
+ "22": {
181
+ "content": "<unused15>",
182
+ "lstrip": false,
183
+ "normalized": false,
184
+ "rstrip": false,
185
+ "single_word": false,
186
+ "special": false
187
+ },
188
+ "23": {
189
+ "content": "<unused16>",
190
+ "lstrip": false,
191
+ "normalized": false,
192
+ "rstrip": false,
193
+ "single_word": false,
194
+ "special": false
195
+ },
196
+ "24": {
197
+ "content": "<unused17>",
198
+ "lstrip": false,
199
+ "normalized": false,
200
+ "rstrip": false,
201
+ "single_word": false,
202
+ "special": false
203
+ },
204
+ "25": {
205
+ "content": "<unused18>",
206
+ "lstrip": false,
207
+ "normalized": false,
208
+ "rstrip": false,
209
+ "single_word": false,
210
+ "special": false
211
+ },
212
+ "26": {
213
+ "content": "<unused19>",
214
+ "lstrip": false,
215
+ "normalized": false,
216
+ "rstrip": false,
217
+ "single_word": false,
218
+ "special": false
219
+ },
220
+ "27": {
221
+ "content": "<unused20>",
222
+ "lstrip": false,
223
+ "normalized": false,
224
+ "rstrip": false,
225
+ "single_word": false,
226
+ "special": false
227
+ },
228
+ "28": {
229
+ "content": "<unused21>",
230
+ "lstrip": false,
231
+ "normalized": false,
232
+ "rstrip": false,
233
+ "single_word": false,
234
+ "special": false
235
+ },
236
+ "29": {
237
+ "content": "<unused22>",
238
+ "lstrip": false,
239
+ "normalized": false,
240
+ "rstrip": false,
241
+ "single_word": false,
242
+ "special": false
243
+ },
244
+ "30": {
245
+ "content": "<unused23>",
246
+ "lstrip": false,
247
+ "normalized": false,
248
+ "rstrip": false,
249
+ "single_word": false,
250
+ "special": false
251
+ },
252
+ "31": {
253
+ "content": "<unused24>",
254
+ "lstrip": false,
255
+ "normalized": false,
256
+ "rstrip": false,
257
+ "single_word": false,
258
+ "special": false
259
+ },
260
+ "32": {
261
+ "content": "<unused25>",
262
+ "lstrip": false,
263
+ "normalized": false,
264
+ "rstrip": false,
265
+ "single_word": false,
266
+ "special": false
267
+ },
268
+ "33": {
269
+ "content": "<unused26>",
270
+ "lstrip": false,
271
+ "normalized": false,
272
+ "rstrip": false,
273
+ "single_word": false,
274
+ "special": false
275
+ },
276
+ "34": {
277
+ "content": "<unused27>",
278
+ "lstrip": false,
279
+ "normalized": false,
280
+ "rstrip": false,
281
+ "single_word": false,
282
+ "special": false
283
+ },
284
+ "35": {
285
+ "content": "<unused28>",
286
+ "lstrip": false,
287
+ "normalized": false,
288
+ "rstrip": false,
289
+ "single_word": false,
290
+ "special": false
291
+ },
292
+ "36": {
293
+ "content": "<unused29>",
294
+ "lstrip": false,
295
+ "normalized": false,
296
+ "rstrip": false,
297
+ "single_word": false,
298
+ "special": false
299
+ },
300
+ "37": {
301
+ "content": "<unused30>",
302
+ "lstrip": false,
303
+ "normalized": false,
304
+ "rstrip": false,
305
+ "single_word": false,
306
+ "special": false
307
+ },
308
+ "38": {
309
+ "content": "<unused31>",
310
+ "lstrip": false,
311
+ "normalized": false,
312
+ "rstrip": false,
313
+ "single_word": false,
314
+ "special": false
315
+ },
316
+ "39": {
317
+ "content": "<unused32>",
318
+ "lstrip": false,
319
+ "normalized": false,
320
+ "rstrip": false,
321
+ "single_word": false,
322
+ "special": false
323
+ },
324
+ "40": {
325
+ "content": "<unused33>",
326
+ "lstrip": false,
327
+ "normalized": false,
328
+ "rstrip": false,
329
+ "single_word": false,
330
+ "special": false
331
+ },
332
+ "41": {
333
+ "content": "<unused34>",
334
+ "lstrip": false,
335
+ "normalized": false,
336
+ "rstrip": false,
337
+ "single_word": false,
338
+ "special": false
339
+ },
340
+ "42": {
341
+ "content": "<unused35>",
342
+ "lstrip": false,
343
+ "normalized": false,
344
+ "rstrip": false,
345
+ "single_word": false,
346
+ "special": false
347
+ },
348
+ "43": {
349
+ "content": "<unused36>",
350
+ "lstrip": false,
351
+ "normalized": false,
352
+ "rstrip": false,
353
+ "single_word": false,
354
+ "special": false
355
+ },
356
+ "44": {
357
+ "content": "<unused37>",
358
+ "lstrip": false,
359
+ "normalized": false,
360
+ "rstrip": false,
361
+ "single_word": false,
362
+ "special": false
363
+ },
364
+ "45": {
365
+ "content": "<unused38>",
366
+ "lstrip": false,
367
+ "normalized": false,
368
+ "rstrip": false,
369
+ "single_word": false,
370
+ "special": false
371
+ },
372
+ "46": {
373
+ "content": "<unused39>",
374
+ "lstrip": false,
375
+ "normalized": false,
376
+ "rstrip": false,
377
+ "single_word": false,
378
+ "special": false
379
+ },
380
+ "47": {
381
+ "content": "<unused40>",
382
+ "lstrip": false,
383
+ "normalized": false,
384
+ "rstrip": false,
385
+ "single_word": false,
386
+ "special": false
387
+ },
388
+ "48": {
389
+ "content": "<unused41>",
390
+ "lstrip": false,
391
+ "normalized": false,
392
+ "rstrip": false,
393
+ "single_word": false,
394
+ "special": false
395
+ },
396
+ "49": {
397
+ "content": "<unused42>",
398
+ "lstrip": false,
399
+ "normalized": false,
400
+ "rstrip": false,
401
+ "single_word": false,
402
+ "special": false
403
+ },
404
+ "50": {
405
+ "content": "<unused43>",
406
+ "lstrip": false,
407
+ "normalized": false,
408
+ "rstrip": false,
409
+ "single_word": false,
410
+ "special": false
411
+ },
412
+ "51": {
413
+ "content": "<unused44>",
414
+ "lstrip": false,
415
+ "normalized": false,
416
+ "rstrip": false,
417
+ "single_word": false,
418
+ "special": false
419
+ },
420
+ "52": {
421
+ "content": "<unused45>",
422
+ "lstrip": false,
423
+ "normalized": false,
424
+ "rstrip": false,
425
+ "single_word": false,
426
+ "special": false
427
+ },
428
+ "53": {
429
+ "content": "<unused46>",
430
+ "lstrip": false,
431
+ "normalized": false,
432
+ "rstrip": false,
433
+ "single_word": false,
434
+ "special": false
435
+ },
436
+ "54": {
437
+ "content": "<unused47>",
438
+ "lstrip": false,
439
+ "normalized": false,
440
+ "rstrip": false,
441
+ "single_word": false,
442
+ "special": false
443
+ },
444
+ "55": {
445
+ "content": "<unused48>",
446
+ "lstrip": false,
447
+ "normalized": false,
448
+ "rstrip": false,
449
+ "single_word": false,
450
+ "special": false
451
+ },
452
+ "56": {
453
+ "content": "<unused49>",
454
+ "lstrip": false,
455
+ "normalized": false,
456
+ "rstrip": false,
457
+ "single_word": false,
458
+ "special": false
459
+ },
460
+ "57": {
461
+ "content": "<unused50>",
462
+ "lstrip": false,
463
+ "normalized": false,
464
+ "rstrip": false,
465
+ "single_word": false,
466
+ "special": false
467
+ },
468
+ "58": {
469
+ "content": "<unused51>",
470
+ "lstrip": false,
471
+ "normalized": false,
472
+ "rstrip": false,
473
+ "single_word": false,
474
+ "special": false
475
+ },
476
+ "59": {
477
+ "content": "<unused52>",
478
+ "lstrip": false,
479
+ "normalized": false,
480
+ "rstrip": false,
481
+ "single_word": false,
482
+ "special": false
483
+ },
484
+ "60": {
485
+ "content": "<unused53>",
486
+ "lstrip": false,
487
+ "normalized": false,
488
+ "rstrip": false,
489
+ "single_word": false,
490
+ "special": false
491
+ },
492
+ "61": {
493
+ "content": "<unused54>",
494
+ "lstrip": false,
495
+ "normalized": false,
496
+ "rstrip": false,
497
+ "single_word": false,
498
+ "special": false
499
+ },
500
+ "62": {
501
+ "content": "<unused55>",
502
+ "lstrip": false,
503
+ "normalized": false,
504
+ "rstrip": false,
505
+ "single_word": false,
506
+ "special": false
507
+ },
508
+ "63": {
509
+ "content": "<unused56>",
510
+ "lstrip": false,
511
+ "normalized": false,
512
+ "rstrip": false,
513
+ "single_word": false,
514
+ "special": false
515
+ },
516
+ "64": {
517
+ "content": "<unused57>",
518
+ "lstrip": false,
519
+ "normalized": false,
520
+ "rstrip": false,
521
+ "single_word": false,
522
+ "special": false
523
+ },
524
+ "65": {
525
+ "content": "<unused58>",
526
+ "lstrip": false,
527
+ "normalized": false,
528
+ "rstrip": false,
529
+ "single_word": false,
530
+ "special": false
531
+ },
532
+ "66": {
533
+ "content": "<unused59>",
534
+ "lstrip": false,
535
+ "normalized": false,
536
+ "rstrip": false,
537
+ "single_word": false,
538
+ "special": false
539
+ },
540
+ "67": {
541
+ "content": "<unused60>",
542
+ "lstrip": false,
543
+ "normalized": false,
544
+ "rstrip": false,
545
+ "single_word": false,
546
+ "special": false
547
+ },
548
+ "68": {
549
+ "content": "<unused61>",
550
+ "lstrip": false,
551
+ "normalized": false,
552
+ "rstrip": false,
553
+ "single_word": false,
554
+ "special": false
555
+ },
556
+ "69": {
557
+ "content": "<unused62>",
558
+ "lstrip": false,
559
+ "normalized": false,
560
+ "rstrip": false,
561
+ "single_word": false,
562
+ "special": false
563
+ },
564
+ "70": {
565
+ "content": "<unused63>",
566
+ "lstrip": false,
567
+ "normalized": false,
568
+ "rstrip": false,
569
+ "single_word": false,
570
+ "special": false
571
+ },
572
+ "71": {
573
+ "content": "<unused64>",
574
+ "lstrip": false,
575
+ "normalized": false,
576
+ "rstrip": false,
577
+ "single_word": false,
578
+ "special": false
579
+ },
580
+ "72": {
581
+ "content": "<unused65>",
582
+ "lstrip": false,
583
+ "normalized": false,
584
+ "rstrip": false,
585
+ "single_word": false,
586
+ "special": false
587
+ },
588
+ "73": {
589
+ "content": "<unused66>",
590
+ "lstrip": false,
591
+ "normalized": false,
592
+ "rstrip": false,
593
+ "single_word": false,
594
+ "special": false
595
+ },
596
+ "74": {
597
+ "content": "<unused67>",
598
+ "lstrip": false,
599
+ "normalized": false,
600
+ "rstrip": false,
601
+ "single_word": false,
602
+ "special": false
603
+ },
604
+ "75": {
605
+ "content": "<unused68>",
606
+ "lstrip": false,
607
+ "normalized": false,
608
+ "rstrip": false,
609
+ "single_word": false,
610
+ "special": false
611
+ },
612
+ "76": {
613
+ "content": "<unused69>",
614
+ "lstrip": false,
615
+ "normalized": false,
616
+ "rstrip": false,
617
+ "single_word": false,
618
+ "special": false
619
+ },
620
+ "77": {
621
+ "content": "<unused70>",
622
+ "lstrip": false,
623
+ "normalized": false,
624
+ "rstrip": false,
625
+ "single_word": false,
626
+ "special": false
627
+ },
628
+ "78": {
629
+ "content": "<unused71>",
630
+ "lstrip": false,
631
+ "normalized": false,
632
+ "rstrip": false,
633
+ "single_word": false,
634
+ "special": false
635
+ },
636
+ "79": {
637
+ "content": "<unused72>",
638
+ "lstrip": false,
639
+ "normalized": false,
640
+ "rstrip": false,
641
+ "single_word": false,
642
+ "special": false
643
+ },
644
+ "80": {
645
+ "content": "<unused73>",
646
+ "lstrip": false,
647
+ "normalized": false,
648
+ "rstrip": false,
649
+ "single_word": false,
650
+ "special": false
651
+ },
652
+ "81": {
653
+ "content": "<unused74>",
654
+ "lstrip": false,
655
+ "normalized": false,
656
+ "rstrip": false,
657
+ "single_word": false,
658
+ "special": false
659
+ },
660
+ "82": {
661
+ "content": "<unused75>",
662
+ "lstrip": false,
663
+ "normalized": false,
664
+ "rstrip": false,
665
+ "single_word": false,
666
+ "special": false
667
+ },
668
+ "83": {
669
+ "content": "<unused76>",
670
+ "lstrip": false,
671
+ "normalized": false,
672
+ "rstrip": false,
673
+ "single_word": false,
674
+ "special": false
675
+ },
676
+ "84": {
677
+ "content": "<unused77>",
678
+ "lstrip": false,
679
+ "normalized": false,
680
+ "rstrip": false,
681
+ "single_word": false,
682
+ "special": false
683
+ },
684
+ "85": {
685
+ "content": "<unused78>",
686
+ "lstrip": false,
687
+ "normalized": false,
688
+ "rstrip": false,
689
+ "single_word": false,
690
+ "special": false
691
+ },
692
+ "86": {
693
+ "content": "<unused79>",
694
+ "lstrip": false,
695
+ "normalized": false,
696
+ "rstrip": false,
697
+ "single_word": false,
698
+ "special": false
699
+ },
700
+ "87": {
701
+ "content": "<unused80>",
702
+ "lstrip": false,
703
+ "normalized": false,
704
+ "rstrip": false,
705
+ "single_word": false,
706
+ "special": false
707
+ },
708
+ "88": {
709
+ "content": "<unused81>",
710
+ "lstrip": false,
711
+ "normalized": false,
712
+ "rstrip": false,
713
+ "single_word": false,
714
+ "special": false
715
+ },
716
+ "89": {
717
+ "content": "<unused82>",
718
+ "lstrip": false,
719
+ "normalized": false,
720
+ "rstrip": false,
721
+ "single_word": false,
722
+ "special": false
723
+ },
724
+ "90": {
725
+ "content": "<unused83>",
726
+ "lstrip": false,
727
+ "normalized": false,
728
+ "rstrip": false,
729
+ "single_word": false,
730
+ "special": false
731
+ },
732
+ "91": {
733
+ "content": "<unused84>",
734
+ "lstrip": false,
735
+ "normalized": false,
736
+ "rstrip": false,
737
+ "single_word": false,
738
+ "special": false
739
+ },
740
+ "92": {
741
+ "content": "<unused85>",
742
+ "lstrip": false,
743
+ "normalized": false,
744
+ "rstrip": false,
745
+ "single_word": false,
746
+ "special": false
747
+ },
748
+ "93": {
749
+ "content": "<unused86>",
750
+ "lstrip": false,
751
+ "normalized": false,
752
+ "rstrip": false,
753
+ "single_word": false,
754
+ "special": false
755
+ },
756
+ "94": {
757
+ "content": "<unused87>",
758
+ "lstrip": false,
759
+ "normalized": false,
760
+ "rstrip": false,
761
+ "single_word": false,
762
+ "special": false
763
+ },
764
+ "95": {
765
+ "content": "<unused88>",
766
+ "lstrip": false,
767
+ "normalized": false,
768
+ "rstrip": false,
769
+ "single_word": false,
770
+ "special": false
771
+ },
772
+ "96": {
773
+ "content": "<unused89>",
774
+ "lstrip": false,
775
+ "normalized": false,
776
+ "rstrip": false,
777
+ "single_word": false,
778
+ "special": false
779
+ },
780
+ "97": {
781
+ "content": "<unused90>",
782
+ "lstrip": false,
783
+ "normalized": false,
784
+ "rstrip": false,
785
+ "single_word": false,
786
+ "special": false
787
+ },
788
+ "98": {
789
+ "content": "<unused91>",
790
+ "lstrip": false,
791
+ "normalized": false,
792
+ "rstrip": false,
793
+ "single_word": false,
794
+ "special": false
795
+ },
796
+ "99": {
797
+ "content": "<unused92>",
798
+ "lstrip": false,
799
+ "normalized": false,
800
+ "rstrip": false,
801
+ "single_word": false,
802
+ "special": false
803
+ },
804
+ "100": {
805
+ "content": "<unused93>",
806
+ "lstrip": false,
807
+ "normalized": false,
808
+ "rstrip": false,
809
+ "single_word": false,
810
+ "special": false
811
+ },
812
+ "101": {
813
+ "content": "<unused94>",
814
+ "lstrip": false,
815
+ "normalized": false,
816
+ "rstrip": false,
817
+ "single_word": false,
818
+ "special": false
819
+ },
820
+ "102": {
821
+ "content": "<unused95>",
822
+ "lstrip": false,
823
+ "normalized": false,
824
+ "rstrip": false,
825
+ "single_word": false,
826
+ "special": false
827
+ },
828
+ "103": {
829
+ "content": "<unused96>",
830
+ "lstrip": false,
831
+ "normalized": false,
832
+ "rstrip": false,
833
+ "single_word": false,
834
+ "special": false
835
+ },
836
+ "104": {
837
+ "content": "<unused97>",
838
+ "lstrip": false,
839
+ "normalized": false,
840
+ "rstrip": false,
841
+ "single_word": false,
842
+ "special": false
843
+ },
844
+ "105": {
845
+ "content": "<unused98>",
846
+ "lstrip": false,
847
+ "normalized": false,
848
+ "rstrip": false,
849
+ "single_word": false,
850
+ "special": false
851
+ },
852
+ "106": {
853
+ "content": "<start_of_turn>",
854
+ "lstrip": false,
855
+ "normalized": false,
856
+ "rstrip": false,
857
+ "single_word": false,
858
+ "special": true
859
+ },
860
+ "107": {
861
+ "content": "<end_of_turn>",
862
+ "lstrip": false,
863
+ "normalized": false,
864
+ "rstrip": false,
865
+ "single_word": false,
866
+ "special": true
867
+ },
868
+ "108": {
869
+ "content": "\n",
870
+ "lstrip": false,
871
+ "normalized": false,
872
+ "rstrip": false,
873
+ "single_word": false,
874
+ "special": false
875
+ },
876
+ "109": {
877
+ "content": "\n\n",
878
+ "lstrip": false,
879
+ "normalized": false,
880
+ "rstrip": false,
881
+ "single_word": false,
882
+ "special": false
883
+ },
884
+ "110": {
885
+ "content": "\n\n\n",
886
+ "lstrip": false,
887
+ "normalized": false,
888
+ "rstrip": false,
889
+ "single_word": false,
890
+ "special": false
891
+ },
892
+ "111": {
893
+ "content": "\n\n\n\n",
894
+ "lstrip": false,
895
+ "normalized": false,
896
+ "rstrip": false,
897
+ "single_word": false,
898
+ "special": false
899
+ },
900
+ "112": {
901
+ "content": "\n\n\n\n\n",
902
+ "lstrip": false,
903
+ "normalized": false,
904
+ "rstrip": false,
905
+ "single_word": false,
906
+ "special": false
907
+ },
908
+ "113": {
909
+ "content": "\n\n\n\n\n\n",
910
+ "lstrip": false,
911
+ "normalized": false,
912
+ "rstrip": false,
913
+ "single_word": false,
914
+ "special": false
915
+ },
916
+ "114": {
917
+ "content": "\n\n\n\n\n\n\n",
918
+ "lstrip": false,
919
+ "normalized": false,
920
+ "rstrip": false,
921
+ "single_word": false,
922
+ "special": false
923
+ },
924
+ "115": {
925
+ "content": "\n\n\n\n\n\n\n\n",
926
+ "lstrip": false,
927
+ "normalized": false,
928
+ "rstrip": false,
929
+ "single_word": false,
930
+ "special": false
931
+ },
932
+ "116": {
933
+ "content": "\n\n\n\n\n\n\n\n\n",
934
+ "lstrip": false,
935
+ "normalized": false,
936
+ "rstrip": false,
937
+ "single_word": false,
938
+ "special": false
939
+ },
940
+ "117": {
941
+ "content": "\n\n\n\n\n\n\n\n\n\n",
942
+ "lstrip": false,
943
+ "normalized": false,
944
+ "rstrip": false,
945
+ "single_word": false,
946
+ "special": false
947
+ },
948
+ "118": {
949
+ "content": "\n\n\n\n\n\n\n\n\n\n\n",
950
+ "lstrip": false,
951
+ "normalized": false,
952
+ "rstrip": false,
953
+ "single_word": false,
954
+ "special": false
955
+ },
956
+ "119": {
957
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n",
958
+ "lstrip": false,
959
+ "normalized": false,
960
+ "rstrip": false,
961
+ "single_word": false,
962
+ "special": false
963
+ },
964
+ "120": {
965
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n",
966
+ "lstrip": false,
967
+ "normalized": false,
968
+ "rstrip": false,
969
+ "single_word": false,
970
+ "special": false
971
+ },
972
+ "121": {
973
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
974
+ "lstrip": false,
975
+ "normalized": false,
976
+ "rstrip": false,
977
+ "single_word": false,
978
+ "special": false
979
+ },
980
+ "122": {
981
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
982
+ "lstrip": false,
983
+ "normalized": false,
984
+ "rstrip": false,
985
+ "single_word": false,
986
+ "special": false
987
+ },
988
+ "123": {
989
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
990
+ "lstrip": false,
991
+ "normalized": false,
992
+ "rstrip": false,
993
+ "single_word": false,
994
+ "special": false
995
+ },
996
+ "124": {
997
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
998
+ "lstrip": false,
999
+ "normalized": false,
1000
+ "rstrip": false,
1001
+ "single_word": false,
1002
+ "special": false
1003
+ },
1004
+ "125": {
1005
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
1006
+ "lstrip": false,
1007
+ "normalized": false,
1008
+ "rstrip": false,
1009
+ "single_word": false,
1010
+ "special": false
1011
+ },
1012
+ "126": {
1013
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
1014
+ "lstrip": false,
1015
+ "normalized": false,
1016
+ "rstrip": false,
1017
+ "single_word": false,
1018
+ "special": false
1019
+ },
1020
+ "127": {
1021
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
1022
+ "lstrip": false,
1023
+ "normalized": false,
1024
+ "rstrip": false,
1025
+ "single_word": false,
1026
+ "special": false
1027
+ },
1028
+ "128": {
1029
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
1030
+ "lstrip": false,
1031
+ "normalized": false,
1032
+ "rstrip": false,
1033
+ "single_word": false,
1034
+ "special": false
1035
+ },
1036
+ "129": {
1037
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
1038
+ "lstrip": false,
1039
+ "normalized": false,
1040
+ "rstrip": false,
1041
+ "single_word": false,
1042
+ "special": false
1043
+ },
1044
+ "130": {
1045
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
1046
+ "lstrip": false,
1047
+ "normalized": false,
1048
+ "rstrip": false,
1049
+ "single_word": false,
1050
+ "special": false
1051
+ },
1052
+ "131": {
1053
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
1054
+ "lstrip": false,
1055
+ "normalized": false,
1056
+ "rstrip": false,
1057
+ "single_word": false,
1058
+ "special": false
1059
+ },
1060
+ "132": {
1061
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
1062
+ "lstrip": false,
1063
+ "normalized": false,
1064
+ "rstrip": false,
1065
+ "single_word": false,
1066
+ "special": false
1067
+ },
1068
+ "133": {
1069
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
1070
+ "lstrip": false,
1071
+ "normalized": false,
1072
+ "rstrip": false,
1073
+ "single_word": false,
1074
+ "special": false
1075
+ },
1076
+ "134": {
1077
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
1078
+ "lstrip": false,
1079
+ "normalized": false,
1080
+ "rstrip": false,
1081
+ "single_word": false,
1082
+ "special": false
1083
+ },
1084
+ "135": {
1085
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
1086
+ "lstrip": false,
1087
+ "normalized": false,
1088
+ "rstrip": false,
1089
+ "single_word": false,
1090
+ "special": false
1091
+ },
1092
+ "136": {
1093
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
1094
+ "lstrip": false,
1095
+ "normalized": false,
1096
+ "rstrip": false,
1097
+ "single_word": false,
1098
+ "special": false
1099
+ },
1100
+ "137": {
1101
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
1102
+ "lstrip": false,
1103
+ "normalized": false,
1104
+ "rstrip": false,
1105
+ "single_word": false,
1106
+ "special": false
1107
+ },
1108
+ "138": {
1109
+ "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
1110
+ "lstrip": false,
1111
+ "normalized": false,
1112
+ "rstrip": false,
1113
+ "single_word": false,
1114
+ "special": false
1115
+ },
1116
+ "139": {
1117
+ "content": "▁▁",
1118
+ "lstrip": false,
1119
+ "normalized": false,
1120
+ "rstrip": false,
1121
+ "single_word": false,
1122
+ "special": false
1123
+ },
1124
+ "140": {
1125
+ "content": "▁▁▁",
1126
+ "lstrip": false,
1127
+ "normalized": false,
1128
+ "rstrip": false,
1129
+ "single_word": false,
1130
+ "special": false
1131
+ },
1132
+ "141": {
1133
+ "content": "▁▁▁▁",
1134
+ "lstrip": false,
1135
+ "normalized": false,
1136
+ "rstrip": false,
1137
+ "single_word": false,
1138
+ "special": false
1139
+ },
1140
+ "142": {
1141
+ "content": "▁▁▁▁▁",
1142
+ "lstrip": false,
1143
+ "normalized": false,
1144
+ "rstrip": false,
1145
+ "single_word": false,
1146
+ "special": false
1147
+ },
1148
+ "143": {
1149
+ "content": "▁▁▁▁▁▁",
1150
+ "lstrip": false,
1151
+ "normalized": false,
1152
+ "rstrip": false,
1153
+ "single_word": false,
1154
+ "special": false
1155
+ },
1156
+ "144": {
1157
+ "content": "▁▁▁▁▁▁▁",
1158
+ "lstrip": false,
1159
+ "normalized": false,
1160
+ "rstrip": false,
1161
+ "single_word": false,
1162
+ "special": false
1163
+ },
1164
+ "145": {
1165
+ "content": "▁▁▁▁▁▁▁▁",
1166
+ "lstrip": false,
1167
+ "normalized": false,
1168
+ "rstrip": false,
1169
+ "single_word": false,
1170
+ "special": false
1171
+ },
1172
+ "146": {
1173
+ "content": "▁▁▁▁▁▁▁▁▁",
1174
+ "lstrip": false,
1175
+ "normalized": false,
1176
+ "rstrip": false,
1177
+ "single_word": false,
1178
+ "special": false
1179
+ },
1180
+ "147": {
1181
+ "content": "▁▁▁▁▁▁▁▁▁▁",
1182
+ "lstrip": false,
1183
+ "normalized": false,
1184
+ "rstrip": false,
1185
+ "single_word": false,
1186
+ "special": false
1187
+ },
1188
+ "148": {
1189
+ "content": "▁▁▁▁▁▁▁▁▁▁▁",
1190
+ "lstrip": false,
1191
+ "normalized": false,
1192
+ "rstrip": false,
1193
+ "single_word": false,
1194
+ "special": false
1195
+ },
1196
+ "149": {
1197
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁",
1198
+ "lstrip": false,
1199
+ "normalized": false,
1200
+ "rstrip": false,
1201
+ "single_word": false,
1202
+ "special": false
1203
+ },
1204
+ "150": {
1205
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁▁",
1206
+ "lstrip": false,
1207
+ "normalized": false,
1208
+ "rstrip": false,
1209
+ "single_word": false,
1210
+ "special": false
1211
+ },
1212
+ "151": {
1213
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1214
+ "lstrip": false,
1215
+ "normalized": false,
1216
+ "rstrip": false,
1217
+ "single_word": false,
1218
+ "special": false
1219
+ },
1220
+ "152": {
1221
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1222
+ "lstrip": false,
1223
+ "normalized": false,
1224
+ "rstrip": false,
1225
+ "single_word": false,
1226
+ "special": false
1227
+ },
1228
+ "153": {
1229
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1230
+ "lstrip": false,
1231
+ "normalized": false,
1232
+ "rstrip": false,
1233
+ "single_word": false,
1234
+ "special": false
1235
+ },
1236
+ "154": {
1237
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1238
+ "lstrip": false,
1239
+ "normalized": false,
1240
+ "rstrip": false,
1241
+ "single_word": false,
1242
+ "special": false
1243
+ },
1244
+ "155": {
1245
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1246
+ "lstrip": false,
1247
+ "normalized": false,
1248
+ "rstrip": false,
1249
+ "single_word": false,
1250
+ "special": false
1251
+ },
1252
+ "156": {
1253
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1254
+ "lstrip": false,
1255
+ "normalized": false,
1256
+ "rstrip": false,
1257
+ "single_word": false,
1258
+ "special": false
1259
+ },
1260
+ "157": {
1261
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1262
+ "lstrip": false,
1263
+ "normalized": false,
1264
+ "rstrip": false,
1265
+ "single_word": false,
1266
+ "special": false
1267
+ },
1268
+ "158": {
1269
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1270
+ "lstrip": false,
1271
+ "normalized": false,
1272
+ "rstrip": false,
1273
+ "single_word": false,
1274
+ "special": false
1275
+ },
1276
+ "159": {
1277
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1278
+ "lstrip": false,
1279
+ "normalized": false,
1280
+ "rstrip": false,
1281
+ "single_word": false,
1282
+ "special": false
1283
+ },
1284
+ "160": {
1285
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1286
+ "lstrip": false,
1287
+ "normalized": false,
1288
+ "rstrip": false,
1289
+ "single_word": false,
1290
+ "special": false
1291
+ },
1292
+ "161": {
1293
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1294
+ "lstrip": false,
1295
+ "normalized": false,
1296
+ "rstrip": false,
1297
+ "single_word": false,
1298
+ "special": false
1299
+ },
1300
+ "162": {
1301
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1302
+ "lstrip": false,
1303
+ "normalized": false,
1304
+ "rstrip": false,
1305
+ "single_word": false,
1306
+ "special": false
1307
+ },
1308
+ "163": {
1309
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1310
+ "lstrip": false,
1311
+ "normalized": false,
1312
+ "rstrip": false,
1313
+ "single_word": false,
1314
+ "special": false
1315
+ },
1316
+ "164": {
1317
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1318
+ "lstrip": false,
1319
+ "normalized": false,
1320
+ "rstrip": false,
1321
+ "single_word": false,
1322
+ "special": false
1323
+ },
1324
+ "165": {
1325
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1326
+ "lstrip": false,
1327
+ "normalized": false,
1328
+ "rstrip": false,
1329
+ "single_word": false,
1330
+ "special": false
1331
+ },
1332
+ "166": {
1333
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1334
+ "lstrip": false,
1335
+ "normalized": false,
1336
+ "rstrip": false,
1337
+ "single_word": false,
1338
+ "special": false
1339
+ },
1340
+ "167": {
1341
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1342
+ "lstrip": false,
1343
+ "normalized": false,
1344
+ "rstrip": false,
1345
+ "single_word": false,
1346
+ "special": false
1347
+ },
1348
+ "168": {
1349
+ "content": "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1350
+ "lstrip": false,
1351
+ "normalized": false,
1352
+ "rstrip": false,
1353
+ "single_word": false,
1354
+ "special": false
1355
+ },
1356
+ "169": {
1357
+ "content": "<table>",
1358
+ "lstrip": false,
1359
+ "normalized": false,
1360
+ "rstrip": false,
1361
+ "single_word": false,
1362
+ "special": false
1363
+ },
1364
+ "170": {
1365
+ "content": "<caption>",
1366
+ "lstrip": false,
1367
+ "normalized": false,
1368
+ "rstrip": false,
1369
+ "single_word": false,
1370
+ "special": false
1371
+ },
1372
+ "171": {
1373
+ "content": "<thead>",
1374
+ "lstrip": false,
1375
+ "normalized": false,
1376
+ "rstrip": false,
1377
+ "single_word": false,
1378
+ "special": false
1379
+ },
1380
+ "172": {
1381
+ "content": "<tbody>",
1382
+ "lstrip": false,
1383
+ "normalized": false,
1384
+ "rstrip": false,
1385
+ "single_word": false,
1386
+ "special": false
1387
+ },
1388
+ "173": {
1389
+ "content": "<tfoot>",
1390
+ "lstrip": false,
1391
+ "normalized": false,
1392
+ "rstrip": false,
1393
+ "single_word": false,
1394
+ "special": false
1395
+ },
1396
+ "174": {
1397
+ "content": "<tr>",
1398
+ "lstrip": false,
1399
+ "normalized": false,
1400
+ "rstrip": false,
1401
+ "single_word": false,
1402
+ "special": false
1403
+ },
1404
+ "175": {
1405
+ "content": "<th>",
1406
+ "lstrip": false,
1407
+ "normalized": false,
1408
+ "rstrip": false,
1409
+ "single_word": false,
1410
+ "special": false
1411
+ },
1412
+ "176": {
1413
+ "content": "<td>",
1414
+ "lstrip": false,
1415
+ "normalized": false,
1416
+ "rstrip": false,
1417
+ "single_word": false,
1418
+ "special": false
1419
+ },
1420
+ "177": {
1421
+ "content": "</table>",
1422
+ "lstrip": false,
1423
+ "normalized": false,
1424
+ "rstrip": false,
1425
+ "single_word": false,
1426
+ "special": false
1427
+ },
1428
+ "178": {
1429
+ "content": "</caption>",
1430
+ "lstrip": false,
1431
+ "normalized": false,
1432
+ "rstrip": false,
1433
+ "single_word": false,
1434
+ "special": false
1435
+ },
1436
+ "179": {
1437
+ "content": "</thead>",
1438
+ "lstrip": false,
1439
+ "normalized": false,
1440
+ "rstrip": false,
1441
+ "single_word": false,
1442
+ "special": false
1443
+ },
1444
+ "180": {
1445
+ "content": "</tbody>",
1446
+ "lstrip": false,
1447
+ "normalized": false,
1448
+ "rstrip": false,
1449
+ "single_word": false,
1450
+ "special": false
1451
+ },
1452
+ "181": {
1453
+ "content": "</tfoot>",
1454
+ "lstrip": false,
1455
+ "normalized": false,
1456
+ "rstrip": false,
1457
+ "single_word": false,
1458
+ "special": false
1459
+ },
1460
+ "182": {
1461
+ "content": "</tr>",
1462
+ "lstrip": false,
1463
+ "normalized": false,
1464
+ "rstrip": false,
1465
+ "single_word": false,
1466
+ "special": false
1467
+ },
1468
+ "183": {
1469
+ "content": "</th>",
1470
+ "lstrip": false,
1471
+ "normalized": false,
1472
+ "rstrip": false,
1473
+ "single_word": false,
1474
+ "special": false
1475
+ },
1476
+ "184": {
1477
+ "content": "</td>",
1478
+ "lstrip": false,
1479
+ "normalized": false,
1480
+ "rstrip": false,
1481
+ "single_word": false,
1482
+ "special": false
1483
+ },
1484
+ "185": {
1485
+ "content": "<h1>",
1486
+ "lstrip": false,
1487
+ "normalized": false,
1488
+ "rstrip": false,
1489
+ "single_word": false,
1490
+ "special": false
1491
+ },
1492
+ "186": {
1493
+ "content": "<h2>",
1494
+ "lstrip": false,
1495
+ "normalized": false,
1496
+ "rstrip": false,
1497
+ "single_word": false,
1498
+ "special": false
1499
+ },
1500
+ "187": {
1501
+ "content": "<h3>",
1502
+ "lstrip": false,
1503
+ "normalized": false,
1504
+ "rstrip": false,
1505
+ "single_word": false,
1506
+ "special": false
1507
+ },
1508
+ "188": {
1509
+ "content": "<h4>",
1510
+ "lstrip": false,
1511
+ "normalized": false,
1512
+ "rstrip": false,
1513
+ "single_word": false,
1514
+ "special": false
1515
+ },
1516
+ "189": {
1517
+ "content": "<h5>",
1518
+ "lstrip": false,
1519
+ "normalized": false,
1520
+ "rstrip": false,
1521
+ "single_word": false,
1522
+ "special": false
1523
+ },
1524
+ "190": {
1525
+ "content": "<h6>",
1526
+ "lstrip": false,
1527
+ "normalized": false,
1528
+ "rstrip": false,
1529
+ "single_word": false,
1530
+ "special": false
1531
+ },
1532
+ "191": {
1533
+ "content": "<blockquote>",
1534
+ "lstrip": false,
1535
+ "normalized": false,
1536
+ "rstrip": false,
1537
+ "single_word": false,
1538
+ "special": false
1539
+ },
1540
+ "192": {
1541
+ "content": "</h1>",
1542
+ "lstrip": false,
1543
+ "normalized": false,
1544
+ "rstrip": false,
1545
+ "single_word": false,
1546
+ "special": false
1547
+ },
1548
+ "193": {
1549
+ "content": "</h2>",
1550
+ "lstrip": false,
1551
+ "normalized": false,
1552
+ "rstrip": false,
1553
+ "single_word": false,
1554
+ "special": false
1555
+ },
1556
+ "194": {
1557
+ "content": "</h3>",
1558
+ "lstrip": false,
1559
+ "normalized": false,
1560
+ "rstrip": false,
1561
+ "single_word": false,
1562
+ "special": false
1563
+ },
1564
+ "195": {
1565
+ "content": "</h4>",
1566
+ "lstrip": false,
1567
+ "normalized": false,
1568
+ "rstrip": false,
1569
+ "single_word": false,
1570
+ "special": false
1571
+ },
1572
+ "196": {
1573
+ "content": "</h5>",
1574
+ "lstrip": false,
1575
+ "normalized": false,
1576
+ "rstrip": false,
1577
+ "single_word": false,
1578
+ "special": false
1579
+ },
1580
+ "197": {
1581
+ "content": "</h6>",
1582
+ "lstrip": false,
1583
+ "normalized": false,
1584
+ "rstrip": false,
1585
+ "single_word": false,
1586
+ "special": false
1587
+ },
1588
+ "198": {
1589
+ "content": "</blockquote>",
1590
+ "lstrip": false,
1591
+ "normalized": false,
1592
+ "rstrip": false,
1593
+ "single_word": false,
1594
+ "special": false
1595
+ },
1596
+ "199": {
1597
+ "content": "<strong>",
1598
+ "lstrip": false,
1599
+ "normalized": false,
1600
+ "rstrip": false,
1601
+ "single_word": false,
1602
+ "special": false
1603
+ },
1604
+ "200": {
1605
+ "content": "<em>",
1606
+ "lstrip": false,
1607
+ "normalized": false,
1608
+ "rstrip": false,
1609
+ "single_word": false,
1610
+ "special": false
1611
+ },
1612
+ "201": {
1613
+ "content": "<b>",
1614
+ "lstrip": false,
1615
+ "normalized": false,
1616
+ "rstrip": false,
1617
+ "single_word": false,
1618
+ "special": false
1619
+ },
1620
+ "202": {
1621
+ "content": "<i>",
1622
+ "lstrip": false,
1623
+ "normalized": false,
1624
+ "rstrip": false,
1625
+ "single_word": false,
1626
+ "special": false
1627
+ },
1628
+ "203": {
1629
+ "content": "<u>",
1630
+ "lstrip": false,
1631
+ "normalized": false,
1632
+ "rstrip": false,
1633
+ "single_word": false,
1634
+ "special": false
1635
+ },
1636
+ "204": {
1637
+ "content": "<s>",
1638
+ "lstrip": false,
1639
+ "normalized": false,
1640
+ "rstrip": false,
1641
+ "single_word": false,
1642
+ "special": false
1643
+ },
1644
+ "205": {
1645
+ "content": "<sub>",
1646
+ "lstrip": false,
1647
+ "normalized": false,
1648
+ "rstrip": false,
1649
+ "single_word": false,
1650
+ "special": false
1651
+ },
1652
+ "206": {
1653
+ "content": "<sup>",
1654
+ "lstrip": false,
1655
+ "normalized": false,
1656
+ "rstrip": false,
1657
+ "single_word": false,
1658
+ "special": false
1659
+ },
1660
+ "207": {
1661
+ "content": "<code>",
1662
+ "lstrip": false,
1663
+ "normalized": false,
1664
+ "rstrip": false,
1665
+ "single_word": false,
1666
+ "special": false
1667
+ },
1668
+ "208": {
1669
+ "content": "</strong>",
1670
+ "lstrip": false,
1671
+ "normalized": false,
1672
+ "rstrip": false,
1673
+ "single_word": false,
1674
+ "special": false
1675
+ },
1676
+ "209": {
1677
+ "content": "</em>",
1678
+ "lstrip": false,
1679
+ "normalized": false,
1680
+ "rstrip": false,
1681
+ "single_word": false,
1682
+ "special": false
1683
+ },
1684
+ "210": {
1685
+ "content": "</b>",
1686
+ "lstrip": false,
1687
+ "normalized": false,
1688
+ "rstrip": false,
1689
+ "single_word": false,
1690
+ "special": false
1691
+ },
1692
+ "211": {
1693
+ "content": "</i>",
1694
+ "lstrip": false,
1695
+ "normalized": false,
1696
+ "rstrip": false,
1697
+ "single_word": false,
1698
+ "special": false
1699
+ },
1700
+ "212": {
1701
+ "content": "</u>",
1702
+ "lstrip": false,
1703
+ "normalized": false,
1704
+ "rstrip": false,
1705
+ "single_word": false,
1706
+ "special": false
1707
+ },
1708
+ "213": {
1709
+ "content": "</s>",
1710
+ "lstrip": false,
1711
+ "normalized": false,
1712
+ "rstrip": false,
1713
+ "single_word": false,
1714
+ "special": false
1715
+ },
1716
+ "214": {
1717
+ "content": "</sub>",
1718
+ "lstrip": false,
1719
+ "normalized": false,
1720
+ "rstrip": false,
1721
+ "single_word": false,
1722
+ "special": false
1723
+ },
1724
+ "215": {
1725
+ "content": "</sup>",
1726
+ "lstrip": false,
1727
+ "normalized": false,
1728
+ "rstrip": false,
1729
+ "single_word": false,
1730
+ "special": false
1731
+ },
1732
+ "216": {
1733
+ "content": "</code>",
1734
+ "lstrip": false,
1735
+ "normalized": false,
1736
+ "rstrip": false,
1737
+ "single_word": false,
1738
+ "special": false
1739
+ },
1740
+ "255968": {
1741
+ "content": "[toxicity=0]",
1742
+ "lstrip": false,
1743
+ "normalized": false,
1744
+ "rstrip": false,
1745
+ "single_word": false,
1746
+ "special": false
1747
+ },
1748
+ "255969": {
1749
+ "content": "\t\t",
1750
+ "lstrip": false,
1751
+ "normalized": false,
1752
+ "rstrip": false,
1753
+ "single_word": false,
1754
+ "special": false
1755
+ },
1756
+ "255970": {
1757
+ "content": "\t\t\t",
1758
+ "lstrip": false,
1759
+ "normalized": false,
1760
+ "rstrip": false,
1761
+ "single_word": false,
1762
+ "special": false
1763
+ },
1764
+ "255971": {
1765
+ "content": "\t\t\t\t",
1766
+ "lstrip": false,
1767
+ "normalized": false,
1768
+ "rstrip": false,
1769
+ "single_word": false,
1770
+ "special": false
1771
+ },
1772
+ "255972": {
1773
+ "content": "\t\t\t\t\t",
1774
+ "lstrip": false,
1775
+ "normalized": false,
1776
+ "rstrip": false,
1777
+ "single_word": false,
1778
+ "special": false
1779
+ },
1780
+ "255973": {
1781
+ "content": "\t\t\t\t\t\t",
1782
+ "lstrip": false,
1783
+ "normalized": false,
1784
+ "rstrip": false,
1785
+ "single_word": false,
1786
+ "special": false
1787
+ },
1788
+ "255974": {
1789
+ "content": "\t\t\t\t\t\t\t",
1790
+ "lstrip": false,
1791
+ "normalized": false,
1792
+ "rstrip": false,
1793
+ "single_word": false,
1794
+ "special": false
1795
+ },
1796
+ "255975": {
1797
+ "content": "\t\t\t\t\t\t\t\t",
1798
+ "lstrip": false,
1799
+ "normalized": false,
1800
+ "rstrip": false,
1801
+ "single_word": false,
1802
+ "special": false
1803
+ },
1804
+ "255976": {
1805
+ "content": "\t\t\t\t\t\t\t\t\t",
1806
+ "lstrip": false,
1807
+ "normalized": false,
1808
+ "rstrip": false,
1809
+ "single_word": false,
1810
+ "special": false
1811
+ },
1812
+ "255977": {
1813
+ "content": "\t\t\t\t\t\t\t\t\t\t",
1814
+ "lstrip": false,
1815
+ "normalized": false,
1816
+ "rstrip": false,
1817
+ "single_word": false,
1818
+ "special": false
1819
+ },
1820
+ "255978": {
1821
+ "content": "\t\t\t\t\t\t\t\t\t\t\t",
1822
+ "lstrip": false,
1823
+ "normalized": false,
1824
+ "rstrip": false,
1825
+ "single_word": false,
1826
+ "special": false
1827
+ },
1828
+ "255979": {
1829
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t",
1830
+ "lstrip": false,
1831
+ "normalized": false,
1832
+ "rstrip": false,
1833
+ "single_word": false,
1834
+ "special": false
1835
+ },
1836
+ "255980": {
1837
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t\t",
1838
+ "lstrip": false,
1839
+ "normalized": false,
1840
+ "rstrip": false,
1841
+ "single_word": false,
1842
+ "special": false
1843
+ },
1844
+ "255981": {
1845
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t\t\t",
1846
+ "lstrip": false,
1847
+ "normalized": false,
1848
+ "rstrip": false,
1849
+ "single_word": false,
1850
+ "special": false
1851
+ },
1852
+ "255982": {
1853
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t",
1854
+ "lstrip": false,
1855
+ "normalized": false,
1856
+ "rstrip": false,
1857
+ "single_word": false,
1858
+ "special": false
1859
+ },
1860
+ "255983": {
1861
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t",
1862
+ "lstrip": false,
1863
+ "normalized": false,
1864
+ "rstrip": false,
1865
+ "single_word": false,
1866
+ "special": false
1867
+ },
1868
+ "255984": {
1869
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t",
1870
+ "lstrip": false,
1871
+ "normalized": false,
1872
+ "rstrip": false,
1873
+ "single_word": false,
1874
+ "special": false
1875
+ },
1876
+ "255985": {
1877
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t",
1878
+ "lstrip": false,
1879
+ "normalized": false,
1880
+ "rstrip": false,
1881
+ "single_word": false,
1882
+ "special": false
1883
+ },
1884
+ "255986": {
1885
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t",
1886
+ "lstrip": false,
1887
+ "normalized": false,
1888
+ "rstrip": false,
1889
+ "single_word": false,
1890
+ "special": false
1891
+ },
1892
+ "255987": {
1893
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t",
1894
+ "lstrip": false,
1895
+ "normalized": false,
1896
+ "rstrip": false,
1897
+ "single_word": false,
1898
+ "special": false
1899
+ },
1900
+ "255988": {
1901
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t",
1902
+ "lstrip": false,
1903
+ "normalized": false,
1904
+ "rstrip": false,
1905
+ "single_word": false,
1906
+ "special": false
1907
+ },
1908
+ "255989": {
1909
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t",
1910
+ "lstrip": false,
1911
+ "normalized": false,
1912
+ "rstrip": false,
1913
+ "single_word": false,
1914
+ "special": false
1915
+ },
1916
+ "255990": {
1917
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t",
1918
+ "lstrip": false,
1919
+ "normalized": false,
1920
+ "rstrip": false,
1921
+ "single_word": false,
1922
+ "special": false
1923
+ },
1924
+ "255991": {
1925
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t",
1926
+ "lstrip": false,
1927
+ "normalized": false,
1928
+ "rstrip": false,
1929
+ "single_word": false,
1930
+ "special": false
1931
+ },
1932
+ "255992": {
1933
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t",
1934
+ "lstrip": false,
1935
+ "normalized": false,
1936
+ "rstrip": false,
1937
+ "single_word": false,
1938
+ "special": false
1939
+ },
1940
+ "255993": {
1941
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t",
1942
+ "lstrip": false,
1943
+ "normalized": false,
1944
+ "rstrip": false,
1945
+ "single_word": false,
1946
+ "special": false
1947
+ },
1948
+ "255994": {
1949
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t",
1950
+ "lstrip": false,
1951
+ "normalized": false,
1952
+ "rstrip": false,
1953
+ "single_word": false,
1954
+ "special": false
1955
+ },
1956
+ "255995": {
1957
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t",
1958
+ "lstrip": false,
1959
+ "normalized": false,
1960
+ "rstrip": false,
1961
+ "single_word": false,
1962
+ "special": false
1963
+ },
1964
+ "255996": {
1965
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t",
1966
+ "lstrip": false,
1967
+ "normalized": false,
1968
+ "rstrip": false,
1969
+ "single_word": false,
1970
+ "special": false
1971
+ },
1972
+ "255997": {
1973
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t",
1974
+ "lstrip": false,
1975
+ "normalized": false,
1976
+ "rstrip": false,
1977
+ "single_word": false,
1978
+ "special": false
1979
+ },
1980
+ "255998": {
1981
+ "content": "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t",
1982
+ "lstrip": false,
1983
+ "normalized": false,
1984
+ "rstrip": false,
1985
+ "single_word": false,
1986
+ "special": false
1987
+ },
1988
+ "255999": {
1989
+ "content": "<unused99>",
1990
+ "lstrip": false,
1991
+ "normalized": false,
1992
+ "rstrip": false,
1993
+ "single_word": false,
1994
+ "special": false
1995
+ }
1996
+ },
1997
+ "additional_special_tokens": [
1998
+ "<start_of_turn>",
1999
+ "<end_of_turn>"
2000
+ ],
2001
+ "padding_side": "right",
2002
+ "bos_token": "<bos>",
2003
+ "cls_token": "<bos>",
2004
+ "clean_up_tokenization_spaces": false,
2005
+ "eos_token": "<eos>",
2006
+ "sep_token": "<eos>",
2007
+ "model_max_length": 8192,
2008
+ "pad_token": "<pad>",
2009
+ "mask_token": "<mask>",
2010
+ "spaces_between_special_tokens": false,
2011
+ "tokenizer_class": "PreTrainedTokenizerFast",
2012
+ "unk_token": "<unk>",
2013
+ "model_input_names": [
2014
+ "input_ids",
2015
+ "attention_mask"
2016
+ ]
2017
+ }
training/data_stats.json ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "distillation_texts": 4650511,
3
+ "fineweb2_snippets": 3397742,
4
+ "rerank_passages": 399754,
5
+ "generated_queries": 853015,
6
+ "languages": 92,
7
+ "teacher": "BAAI/bge-m3 (dense, CLS, normalised)"
8
+ }
training/train_log.json ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "args": {
3
+ "base": "jhu-clsp/mmBERT-base",
4
+ "teacher": "see code/",
5
+ "out": "model",
6
+ "max_len": 256,
7
+ "bs": 256,
8
+ "lr": 5e-05,
9
+ "epochs": 1.0,
10
+ "warmup": 0.03,
11
+ "mse_w": 1.0,
12
+ "sim_w": 1.0,
13
+ "seed": 0,
14
+ "eval_every": 4000
15
+ },
16
+ "log": [
17
+ {
18
+ "step": 4000,
19
+ "cos": 0.7902698516845703,
20
+ "top1": 0.999267578125
21
+ },
22
+ {
23
+ "step": 8000,
24
+ "cos": 0.8306772708892822,
25
+ "top1": 1.0
26
+ },
27
+ {
28
+ "step": 12000,
29
+ "cos": 0.8455853462219238,
30
+ "top1": 1.0
31
+ },
32
+ {
33
+ "step": 16000,
34
+ "cos": 0.8512239456176758,
35
+ "top1": 1.0
36
+ },
37
+ {
38
+ "step": 18074,
39
+ "cos": 0.851382851600647,
40
+ "top1": 1.0
41
+ }
42
+ ]
43
+ }
training/val_metrics.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "step": 18074,
3
+ "cos": 0.851382851600647,
4
+ "top1": 1.0
5
+ }