From: lightonai <huggingface.co/lightonai>Newsgroups: alt.freeweights.embedSubject:

DenseOn

Date: 2026-11-15Commit: cb9947eSigned: 2DC28CC7B26A283B ✓

Sentence similarity model with 149M parameters. Safetensors weights, 600 MB in all. Published by lightonai under Apache-2.0.

149M params600MBDenseOnsafetensorspermissive
FactsParams149MSize600 MBFormatssafetensorsTasksentence similarityLicenseApache-2.0From sourcepermissive
$ fw get lightonai/DenseOn
# manifest sha256 53d056852b66… · 600 MB · 11 files
$ fw verify ./DenseOn lightonai/DenseOn
From sourceHosted (signed)lightonai/DenseOnLast check: 2026-11-15 03:29 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Works with

Evaluate with

Overview

Size
600 MB
Weights
596 MB (safetensors)
Parameters
149M
Formats
safetensors
Task
sentence similarity
License
Apache-2.0 (permissive)
Files
11, each with a sha256
Publisher
lightonai
Added
2026-11-15
Section
alt.freeweights.embed
Lineage

Original release from the publisher.

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 03:29 UTCpassed

Model card

From the publisher at commit cb9947e. Shown as plain text with links; images open at the publisher.

Image: LightOn

Website LinkedIn X

📚 Collection | 📝 Blog

DenseOn#

State-of-the-Art Dense Retrieval Model by LightOn#

DenseOn | LateOn | PyLate | FastPLAID

🎯 TL;DR: A 149M-parameter dense (single-vector) retrieval model achieving 56.20 nDCG@10 on BEIR, the first sub-150M dense model to break the 56 mark, topping all base-size dense models and outperforming several models 4× larger.

About the LateOn / DenseOn Family#

State-of-the-art retrieval is increasingly dominated by closed models, either hidden behind APIs or trained on undisclosed data. This blocks reproducibility, prevents study of possible data leakage, and gatekeeps progress to a handful of private labs. We thus decided to gather and curate a large amount of data and explore various mixtures. We release all the data used in our explorations:

Based on our findings, we trained LateOn (multi-vector/ColBERT) and DenseOn (single vector/dense) models on a proprietary Apache 2.0-compatible training dataset and release those models as well. Both are built on the ModernBERT backbone at 149M parameters, a size we believe sits at the sweet spot: large enough to handle real-world queries and documents, small enough to serve at high throughput in latency-sensitive production systems. For more information, please read our blogpost.

DenseOn#

DenseOn is a dense (single-vector) retrieval model built on ModernBERT (149M parameters), trained by LightOn. It encodes queries and documents independently using cosine similarity with query:/document: prefixes and CLS pooling.

DenseOn achieves 56.75 average NDCG@10 on BEIR (15 datasets) and 57.71 on decontaminated BEIR (12 datasets), topping all base-size dense models and outperforming models up to 4x larger. Notably it:

  • Tops all base-size dense models on BEIR, ahead of GTE-ModernBERT (55.19) and on par with much larger Snowflake Arctic Embed L v2 (55.22, 568M) and Qwen3-Embedding-0.6B (55.52).
  • Holds up under decontamination: when training-overlap samples are stripped from the BEIR corpora, DenseOn improves to 57.71 nDCG@10 on the 12-dataset decontaminated split.

Alongside DenseOn, we also trained LateOn, a late-interaction variant trained using the same setup. It achieves stronger BEIR results shares the usual benefits of late interaction models (better generalization, long context capabilities, ...). For more information about late interaction models, you can check our previous work on the matter such as ColBERT-Zero and give Pylate a shot (the best entry point in the late interaction ecosystem developped at LightOn).

See our blog post for full results and analysis.

Results#

BEIR (15 datasets, NDCG@10)#
ModelAverageSizeEmb dimArguAnaCQADupstackRetrievalClimateFEVERDBPediaFEVERFiQA2018HotpotQAMSMARCONFCorpusNQQuoraRetrievalSCIDOCSSciFactTRECCOVIDTouche2020
modernbert-embed-base52.8914976848.9642.0835.6741.5087.3540.5967.1141.4733.4062.1588.8518.5969.6384.1531.91
bge-large-en-v1.554.34335102464.5242.2336.5744.1187.1845.0274.1042.4938.0655.0389.0722.6374.6474.7024.81
gte-modernbert-base55.1914976874.5642.6445.9041.3993.9849.5470.3939.9334.3256.1088.5720.4476.4175.7517.97
snowflake-arctic-embed-l-v2.055.22568102459.1145.8841.8243.4091.5445.3568.1544.8635.0863.6788.7520.2870.9083.6325.89
jina-embeddings-v5-text-nano56.0623976865.7044.6639.6045.2689.5147.8569.0741.6438.6963.3888.8722.6075.7877.6030.70
Qwen3-Embedding-0.6B55.52600102470.9746.0342.1139.4888.1546.6165.7437.9936.7153.4687.7824.4169.7290.5233.18
pplx-embed-v1-0.6b56.70600102460.4545.9639.8244.3090.6652.0574.4143.8635.8062.0488.9622.8474.7885.6328.98
DenseOn-unsupervised49.0514976854.9446.2818.2037.3970.6852.3459.7729.3037.9250.6288.9823.0576.3568.1221.87
DenseOn56.2014976854.6546.8937.4944.6590.6953.8674.5143.5839.0359.2589.3122.3575.9582.3328.43

DenseOn reaches 56.20 NDCG@10 on BEIR, making it the top base-size dense retriever and the first sub-150M model to clear the 56 bar. At 149M parameters it decisively beats GTE-ModernBERT (55.19) at the same size, and more tellingly outperforms snowflake-arctic-embed-l-v2.0 (55.22, 568M) and Qwen3-Embedding-0.6B (55.52, 595M) despite being roughly 4× smaller. DenseOn also stays within half a point of the strongest current-generation dense baselines, pplx-embed-v1-0.6B (56.70, 596M) and jina-embeddings-v5-text-nano (56.08, 239M), both substantially larger.

Decontaminated BEIR (12 datasets, NDCG@10)#

Standard benchmarks risk overestimating model quality when training data overlaps with evaluation corpora. This is a non-negligible risk in our case, as our mixture explorations are mostly built on BEIR evaluation. To quantify this and ensure that our model has not memorized possible leakage, we built decontaminated versions of the BEIR datasets by removing samples found in both the mGTE training dataset and in our internal training datasets. Since many retrieval models draw from similar public sources (Wikipedia, MS MARCO, Common Crawl, academic corpora), we expect significant overlap across models and believe the decontaminated benchmarks provide a meaningful, if imperfect, stress test. The decontaminated datasets are publicly available on HuggingFace.

Despite being in the toughest position (as the decontamination is based on our data), LateOn and DenseOn stay consistent under decontamination. LateOn keeps its #1 position and DenseOn stays in the top four (only falling behind our other strong multi-vector model, ColBERT-Zero). Neither model flinches, which is direct evidence of generalization rather than overfitting.

More broadly, ColBERT models seems to generalize better under decontamination: all three ColBERT models hold or improve their ranking, and they take 2 of the top 3 decontaminated positions. Although DenseOn holds strong, some dense models are hit harder, for example GTE-ModernBERT, dropping from 8th to last, which is particularly interesting considering our base mixture is derived from theirs. This highlights the strength of our curation methodology. While other models such as Qwen3-Embedding-0.6B also drop some ranks, hinting at an overlap with the BEIR evaluation, it is worth noting that newer models, such as the new jina-embeddings-v5 and pplx-embed-v1-0.6b seems to exhibit stronger evidence of generalization rather than overfitting.

Image: LightOn

ModelStageLink
DenseOn (this card)Pre-training + fine-tuninglightonai/DenseOn
DenseOn-unsupervisedPre-training onlylightonai/DenseOn-unsupervised
LateOnMulti-vector counterpartlightonai/LateOn
LateOn-unsupervisedMulti-vector, pre-training onlylightonai/LateOn-unsupervised

Model Details#

Model Description#
  • Model Type: Sentence Transformer
  • Base model: DenseOn-unsupervised (ModernBERT-base)
  • Maximum Sequence Length: 512 tokens
  • Output Dimensionality: 768 dimensions
  • Similarity Function: Cosine Similarity
  • Pooling: CLS token
  • Prompts: query: for queries, document: for documents
  • Language: English
  • License: Apache 2.0
Model Sources#
Full Model Architecture#
SentenceTransformer(
  (0): Transformer({'max_seq_length': 512, 'do_lower_case': False, 'architecture': 'ModernBertModel'})
  (1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': True, 'pooling_mode_mean_tokens': False, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
)

Usage#

Direct Usage (Sentence Transformers)#

First install the Sentence Transformers library:

pip install -U sentence-transformers

Then you can load this model and run inference.

from sentence_transformers import SentenceTransformer

# Download from the Hub
model = SentenceTransformer("lightonai/DenseOn")

# Run inference
queries = [
    "Which planet is known as the Red Planet?",
]
documents = [
    "Venus is often called Earth's twin because of its similar size and proximity.",
    "Mars, known for its reddish appearance, is often referred to as the Red Planet.",
    "Saturn, famous for its rings, is sometimes mistaken for the Red Planet.",
]

query_embeddings = model.encode(queries, prompt_name="query")
document_embeddings = model.encode(documents, prompt_name="document")
print(query_embeddings.shape, document_embeddings.shape)
# [1, 768] [3, 768]

# Get the similarity scores for the embeddings
similarities = model.similarity(query_embeddings, document_embeddings)
print(similarities)

Training Details#

Framework Versions#
  • Python: 3.11.10
  • Sentence Transformers: 5.1.1
  • Transformers: 4.57.5
  • PyTorch: 2.9.0+cu128
  • Accelerate: 1.12.0
  • Datasets: 3.6.0
  • Tokenizers: 0.22.1

Citation#

BibTeX#
DenseOn and LateOn#
@misc{sourty2026denseonlateon,
  title={DenseOn with the LateOn: Open State-of-the-Art Single and Multi-Vector Models},
  author={Sourty, Raphael and Chaffin, Antoine and Weller, Orion and Demoura, Paulo and Chatelain, Amelie},
  year={2026},
  howpublished={\url{https://huggingface.co/blog/lightonai/denseon-lateon}},
}
PyLate#
@inproceedings{DBLP:conf/cikm/ChaffinS25,
  author       = {Antoine Chaffin and
                  Rapha{\"{e}}l Sourty},
  editor       = {Meeyoung Cha and
                  Chanyoung Park and
                  Noseong Park and
                  Carl Yang and
                  Senjuti Basu Roy and
                  Jessie Li and
                  Jaap Kamps and
                  Kijung Shin and
                  Bryan Hooi and
                  Lifang He},
  title        = {PyLate: Flexible Training and Retrieval for Late Interaction Models},
  booktitle    = {Proceedings of the 34th {ACM} International Conference on Information
                  and Knowledge Management, {CIKM} 2025, Seoul, Republic of Korea, November
                  10-14, 2025},
  pages        = {6334--6339},
  publisher    = {{ACM}},
  year         = {2025},
  url          = {https://github.com/lightonai/pylate},
  doi          = {10.1145/3746252.3761608},
}
Sentence Transformers#
@inproceedings{reimers-2019-sentence-bert,
    title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
    author = "Reimers, Nils and Gurevych, Iryna",
    booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
    month = "11",
    year = "2019",
    publisher = "Association for Computational Linguistics",
    url = "https://arxiv.org/abs/1908.10084"
}

Acknowledgements#

We thank Xin Zhang, Zach Nussbaum, Tom Aarsen, Bo Wang, Eugene Yang, Benjamin Clavié, Nandan Thakur, Oskar Hallström and Iacopo Poli for their valuable contributions and feedback. We are grateful to the teams behind Sentence Transformers and the BEIR benchmark, and to the open-source retrieval community, in particular the authors of Nomic Embed.

This work was granted access to the HPC resources of IDRIS under GENCI allocations AS011016449, A0181016214, and A0171015706 (Jean Zay supercomputer). We also acknowledge the Barcelona Supercomputing Center (BSC-CNS) for providing access to MareNostrum 5 under EuroHPC AI Factory Fast Lane project EHPC-AIF-2025FL01-445.

Files

11 files · 600 MBWeights 596 MB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 11 files with their sha256
FileSizesha256
.gitattributes1.52 KB11ad7efa24975ee4b0c3c3a38ed18737f0658a5f75a0a96787b576a78a023361
1_Pooling/config.json312 B2b1d283d4e7e9a64eef827933051d26478d271766eb234c76012f9012cd97907
README.md15.3 KB840849cde823a763750c5245cb452a2055c9307717098d47854a45515ec27109
config.json1.21 KB4994d5d2ad73e9e48cdb2136af8866b79c86d3a90bc8d8ccd7cde382e329e94f
config_sentence_transformers.json300 B79adf495d93aab53c0cbcd5e23f2df5b56dbf4be42d29c9738ccaa4ee2efcda8
model.safetensors596 MB09485a8757d3e031d7ab9c9c0e77d2f958339b58ce510feafbe5b6d22164d7f2
modules.json229 B8f4b264b80206c830bebbdcae377e137925650a433b689343a63bdc9b3145460
sentence_bert_config.json57 B948201d8329907aae938fa62f9ceeed53f5694dacc2b87b9f3b78b37ee986529
special_tokens_map.json694 Bea97ecdbcc73713039d8d64dbb05e3689495c96657fbd9a18f5bed381be81049
tokenizer.json3.58 MB3703d011b3ee259e00b59b60772f8fd54998d79e8fa5a1388d507eff28f8f09e
tokenizer_config.json21.0 KBedfd0094f4f888388e1a0215d2f4a0c800c04c2604b5605dfed3c2cf35f4bf6c
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
cb9947ebcc pinned now2026-11-15 03:29 UTC11 files · 600 MB

Use it

$ fw get lightonai/DenseOn
# manifest sha256 53d056852b66… · 600 MB · 11 files
$ fw verify ./DenseOn lightonai/DenseOn
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/lightonai/DenseOn.json --dir ./DenseOn $ python3 fw.py verify ./DenseOn ./lightonai__DenseOn.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download lightonai/DenseOn --revision cb9947ebccb33862d24e3c7ca2edb25e51acd887 --local-dir ./DenseOn
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModel, AutoTokenizer tok = AutoTokenizer.from_pretrained("lightonai/DenseOn", revision="cb9947ebccb33862d24e3c7ca2edb25e51acd887") model = AutoModel.from_pretrained("lightonai/DenseOn", revision="cb9947ebccb33862d24e3c7ca2edb25e51acd887", device_map="auto")
sentence-transformersEmbed text with sentence-transformers.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from sentence_transformers import SentenceTransformer model = SentenceTransformer("lightonai/DenseOn", revision="cb9947ebccb33862d24e3c7ca2edb25e51acd887") vectors = model.encode(["Hello"])

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
840849cde823a763750c5245cb452a2055c9307717098d47854a45515ec27109
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: lightonai <huggingface.co/lightonai>Newsgroups: alt.freeweights.embedSubject: DenseOnDate: 2026-11-15Commit: cb9947eSigned: 2DC28CC7B26A283B ✓
Upstream
lightonai/DenseOn
Pinned commit
cb9947ebccb33862d24e3c7ca2edb25e51acd887
Manifest
DenseOn.json · .minisig
Manifest sha256
53d056852b66bc7143bfcf44420999814bc21b8667b02c10b717dd527423532f
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 03:29 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/lightonai/DenseOn.json $ curl -O https://freeweights.allternit.com/manifests/lightonai/DenseOn.json.minisig $ minisign -Vm DenseOn.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

1 model in the catalog name this one as their parent.

Quantizations
1
Quantizations 1
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download lightonai/DenseOn
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. DenseOn.json. Provenance. Takedown history: none.

Variants

1 quantized or adapter build of DenseOn. Each has its own license check and page.

From: sentence-transformers <huggingface.co/sentence-transformers>Subject: all-MiniLM-L6-v1
From: unsloth <huggingface.co/unsloth>Subject: all-MiniLM-L6-v2
From: mlx-community <huggingface.co/mlx-community>Subject: all-MiniLM-L6-v2-4bit
From: sentence-transformers <huggingface.co/sentence-transformers>Subject: all-mpnet-base-v1
From: sentence-transformers <huggingface.co/sentence-transformers>Subject: allenai-specter
From: sentence-transformers <huggingface.co/sentence-transformers>Subject: bert-base-nli-max-tokens