CoolFace
Modelpublic

GoktugD/DUSUNEN-Atlas-278M-v1

sourceHugging Facemitupdated 1mo agoView on Hugging Face
3likes35downloads
Model Card

DUSUNEN Atlas 278M v1

One Turkish retrieval model, six useful embedding sizes. This model adapts intfloat/multilingual-e5-base with Matryoshka Representation Learning on 50,000 curated Turkish hard-negative triplets. Applications can select 768, 512, 384, 256, 128, or 64 dimensions at inference time without training or storing a second model.

The practical target is a smaller vector index: 128-dimensional float32 vectors use 83.3% less storage than 768-dimensional vectors, while improving held-out hard-negative triplet accuracy from 92.65% to 94.75% over the truncated base model.

Measured dimension sweep

All rows use the same 2,000-example held-out validation split and cosine similarity. The base and fine-tuned model were evaluated with identical E5 query/passage prefixes.

DimensionsBase accuracyAtlas accuracyGainFloat32 bytes/vectorIndex reduction
76895.25%95.50%+0.25 pp3,0720%
51295.30%95.65%+0.35 pp2,04833.3%
38495.05%95.35%+0.30 pp1,53650.0%
25694.15%95.00%+0.85 pp1,02466.7%
12892.65%94.75%+2.10 pp51283.3%
6488.75%92.50%+3.75 pp25691.7%

These are held-out in-domain triplet results, not a claim of state of the art. Broader Turkish MTEB evaluation is planned. Machine-readable results are in dimension-sweep.json.

Usage

python
from sentence_transformers import SentenceTransformer

model = SentenceTransformer(
    "GoktugD/DUSUNEN-Atlas-278M-v1",
    truncate_dim=128,
)

queries = ["query: Türkiye'nin başkenti neresidir?"]
passages = [
    "passage: Türkiye'nin başkenti Ankara'dır.",
    "passage: İstanbul Türkiye'nin en kalabalık şehridir.",
]

query_embeddings = model.encode(queries, normalize_embeddings=True)
passage_embeddings = model.encode(passages, normalize_embeddings=True)
scores = query_embeddings @ passage_embeddings.T
print(scores)

Use the query: prefix for queries and passage: for documents. Apply the same truncate_dim to both sides. Recommended operating points:

  • —128 dimensions: best storage/quality balance for large indexes.
  • —256 dimensions: conservative production default.
  • —768 dimensions: maximum measured held-out accuracy.
  • —64 dimensions: extremely compact indexes and edge experiments.

Training

  • —Base revision: d128750597153bb5987e10b1c3493a34e5a4502a
  • —Data: 50,000 training and 2,000 held-out Turkish hard-negative triplets
  • —Loss: cached multiple-negatives ranking loss wrapped by Matryoshka loss
  • —Dimensions: 768, 512, 384, 256, 128, 64
  • —Effective batch size: 64
  • —Sequence length: 256
  • —Epochs: 1
  • —Precision: bfloat16
  • —Seed: 3407
  • —Hardware: one NVIDIA GeForce RTX 3090 24 GB
  • —Training time: 2,039 seconds
  • —Peak memory allocated by the training process: 2.475 GiB

Exact hyperparameters are available in training_config.yaml; the recorded environment is in training_environment.json.

Limitations

  • —Evaluation here is limited to an in-domain held-out hard-negative split.
  • —Training data is Turkish retrieval data; quality on other languages may differ from the multilingual base model.
  • —Prefix-free encoding was not evaluated.
  • —Similarity thresholds should be calibrated for each application.

Reproducibility and integrity

The published model.safetensors SHA-256 is:

66c65d4109a646d3f8a6dc6c19b20efda4d9c5ed9cd5054386812da0d6b263dd

Developed and released by Göktuğ Düşünen.