Downloads · 30 days
223
49% of all-time downloads
Singaraj/morisien-embed
morisien-embed is a sentence similarity model from Singaraj. Use it when you need a score for how close two texts are. It is set up for sentence-transformers. The card lists the license as mit.
A newer model exists. morisien-embed-v1.5 is fine-tuned from LaBSE instead and scores better out of domain, where this model does not beat untrained LaBSE. This checkpoint is unchanged and stays available: it is the o…
Downloads · 30 days
223
49% of all-time downloads
All-time downloads
457
Public
Parameters
278M
1.4 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors1.1 GB · 79%
From the Hugging Face model README
A newer model exists. morisien-embed-v1.5 is fine-tuned from LaBSE instead and scores better out of domain, where this model does not beat untrained LaBSE. This checkpoint is unchanged and stays available: it is the one described in the preprint and registered in the MTEB task.
To our knowledge, the first dedicated text embedding model for Mauritian Creole (Kreol Morisien,
mfe), the home language of roughly 90% of Mauritius (2022 census).
Fine-tuned from multilingual-e5-base on 35,064 Creole↔{English, French} pairs from MorisienMT and the Mauritian portion of Kreyòl-MT. On the held-out MorisienMT test split it beats every general multilingual embedding model we evaluated, including LaBSE, in all three measured retrieval directions (Creole→English, Creole→French, English→Creole).
Two corrections to earlier wording on this card. The corpus is not all publicly available Creole parallel text: google/smol carries 2,472 further gold pairs that it does not contain. And the margin over LaBSE holds in domain but not outside it, which is what the section below on FLORES+ now says.
Use it for semantic search, retrieval, RAG, bitext mining, or clustering over Kreol Morisien text.
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("Singaraj/morisien-embed")
creole = ["Mo pe al bazar aster.", "Bann zanfan pe zwe dan lakour."]
english = ["I am going to the market now.", "The children are playing in the yard."]
similarity = model.similarity(model.encode(creole), model.encode(english))
Trained with Matryoshka loss, so embeddings can be truncated for faster search at a small, measured accuracy cost (ndcg@10 on the benchmark below: 0.9591 at 256 dims, 0.9531 at 128):
model = SentenceTransformer("Singaraj/morisien-embed", truncate_dim=256)
No prompt/prefix is required.
Creole→English retrieval on the held-out MorisienMT test split (1,000 queries, leak-free against training data, enforced in the data pipeline by exact matching and by a punctuation-, case- and accent-insensitive check):
| Model | Params | ndcg@10 | accuracy@1 |
|---|---|---|---|
| paraphrase-multilingual-MiniLM-L12-v2 | 118M | 0.16 | 0.10 |
| BAAI/bge-m3 | 568M | 0.46 | 0.36 |
| intfloat/multilingual-e5-small | 118M | 0.54 | 0.42 |
| intfloat/multilingual-e5-base | 278M | 0.64 | 0.53 |
| intfloat/multilingual-e5-large | 560M | 0.73 | 0.65 |
| sentence-transformers/LaBSE | 470M | 0.94 | 0.91 |
| morisien-embed | 278M | 0.9655 | 0.9440 |
Creole→French, same protocol:
| Model | ndcg@10 | accuracy@1 |
|---|---|---|
| sentence-transformers/LaBSE | 0.9475 | 0.9130 |
| morisien-embed | 0.9751 | 0.9530 |
English→Creole, the reversed direction over the same pairs (999 queries retrieving 1,000 Creole
passages, built with scripts/build_benchmark.py --reverse):
| Model | ndcg@10 | accuracy@1 |
|---|---|---|
| sentence-transformers/LaBSE | 0.9247 | 0.8789 |
| morisien-embed | 0.9588 | 0.9309 |
Generalization to an independent domain, FLORES+
mfe devtest (1,012 professionally translated sentences from Wikinews, Wikijunior and Wikivoyage,
zero overlap with training data):
| Model | ndcg@10 | accuracy@1 |
|---|---|---|
| sentence-transformers/LaBSE | 0.9996 | 0.9990 |
| morisien-embed | 1.0000 | 1.0000 |
Both models sit at the ceiling of this benchmark. FLORES+ sentences are long and distinctive, so 1,012-way retrieval saturates, and this is evidence of no out-of-domain degradation rather than a margin over LaBSE.
That reading was still too generous to the pool. A character n-gram TF-IDF baseline with no neural model scores 0.8221 accuracy@1 on it, so retrieving the right passage among 1,012 needs little more than surface overlap. On a harder pool built from the same sentences with xSIM++ distractors, this model does not beat untrained LaBSE. See the preprint and morisien-embed-v1.5.
The contrastive stage was repeated with three random seeds over the same deterministically mined negative set; Creole→English test ndcg@10 across seeds: 0.9653 ± 0.0002 (accuracy@1 0.9433 ± 0.0006). The released checkpoint is seed 42, designated before results were seen.
Every number in the tables above is reproducible from the
training repository (Matryoshka figures via
scripts/evaluate.py --truncate-dim). The Haitian-proximity and case-sensitivity figures under
Limitations come from an internal adversarial audit of the released checkpoint.
The held-out MorisienMT test split is now a task in
MTEB, MorisienMTBitextMining, the first Mauritian
Creole task in the benchmark. This model is registered in MTEB and its scores are on the
leaderboard.
Bitext-mining F1 across the four directional subsets:
| Model | mfe→eng | eng→mfe | mfe→fra | fra→mfe | avg |
|---|---|---|---|---|---|
| intfloat/multilingual-e5-small | 0.358 | 0.454 | 0.475 | 0.495 | 0.446 |
| sentence-transformers/LaBSE | 0.882 | 0.845 | 0.886 | 0.779 | 0.848 |
| morisien-embed | 0.927 | 0.909 | 0.939 | 0.924 | 0.925 |
This is bitext-mining F1, a different metric from the ndcg@10 retrieval numbers above. The model is
trained on the MorisienMT corpus this split is drawn from, so MTEB records the result as in-domain
(via training_datasets), not zero-shot.
mine_hard_negatives: 5 negatives/anchor, range_min=10, relative_margin=0.05). The margin
filter is strict: 24,100 of the 35,064 pairs survived with a full negative set, and the released
checkpoint's contrastive stage trained on those 24,100 tuples (the stage-1 mining model itself was
trained on all 35,064). Contrastive training uses CachedMultipleNegativesRankingLoss (batch 128,
767 in-batch negatives per anchor) wrapped in MatryoshkaLoss (dims 768/512/256/128/64). 3 epochs,
lr 2e-5, warmup 10%, fp16, seed 42, single T4 GPU (~30 min contrastive + ~11 min mining).mfe (FLORES+) is saturated at this corpus size, so the margin
over LaBSE is demonstrated in-domain only.scripts/probe_haitian.py): with every same-meaning Haitian twin injected into the
corpus, mfe→eng accuracy@1 drops from 1.00 to 0.68, and LaBSE resists this trap better (0.79).
Asked instead to tell the two creoles apart (is the English sentence closer to its Mauritian or
its Haitian translation?), the fine-tune picks Mauritian 709/1012 times vs LaBSE's 351/1012.
Wrong-meaning Haitian text is never confused; mixed mfe/hat corpora will still degrade retrieval.If you use this model, please cite the accompanying report along with the data sources it builds on: MorisienMT (Dabre & Sukhoo, 2022) and Kreyòl-MT (Robinson et al., NAACL 2024).
@misc{morisien-embed,
author = {Singaraj B},
title = {morisien-embed: A Dedicated Text Embedding Model and Benchmark for Mauritian Creole (Kreol Morisien)},
year = {2026},
publisher = {Zenodo},
doi = {10.5281/zenodo.21877805},
url = {https://doi.org/10.5281/zenodo.21877805}
}