Sentence Similarity
sentence-transformers
Safetensors
Greek
English
ministral3
greek
english
retrieval
rag
embeddings
nemotron
Eval Results (legacy)
Instructions to use KIEFERSA/Sophea-Nemo-Embedding with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use KIEFERSA/Sophea-Nemo-Embedding with sentence-transformers:
from sentence_transformers import SentenceTransformer model = SentenceTransformer("KIEFERSA/Sophea-Nemo-Embedding") sentences = [ "The weather is lovely today.", "It's so sunny outside!", "He drove to the stadium." ] embeddings = model.encode(sentences) similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [3, 3] - Notebooks
- Google Colab
- Kaggle
| language: | |
| - el | |
| - en | |
| license: other | |
| license_name: openmdw-1.1 | |
| base_model: nvidia/Nemotron-3-Embed-1B-BF16 | |
| pipeline_tag: sentence-similarity | |
| library_name: sentence-transformers | |
| tags: | |
| - greek | |
| - english | |
| - retrieval | |
| - rag | |
| - embeddings | |
| - sentence-transformers | |
| - nemotron | |
| model-index: | |
| - name: Sophea-Nemo-Embedding | |
| results: | |
| - task: | |
| type: sentence-similarity | |
| name: Greek+English retrieval (5 domains, cosine IR) | |
| dataset: | |
| type: retrieval | |
| name: Internal Greek+English retrieval benchmark | |
| metrics: | |
| - type: nDCG@10 | |
| name: nDCG@10 (mean of 5 domains) | |
| value: 0.8176 | |
| - type: recall@10 | |
| name: Recall@10 (mean of 5 domains) | |
| value: 0.9310 | |
| <div style="display:flex;align-items:center;gap:18px;padding:16px 20px;margin-bottom:16px;border-radius:14px;background:linear-gradient(100deg,#e8f5ec 0%,#f7fbf8 62%);border:1px solid #c6e7d1"><img alt="KIEFERSA" style="flex:0 0 auto;height:58px;width:58px;border-radius:12px;object-fit:contain" src="data:image/webp;base64,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"/><div><div style="font-size:1.24rem;font-weight:700;color:#003713;line-height:1.2">Sophea-Nemo-Embedding</div><div style="font-size:.86rem;color:#3a5a47;margin-top:2px">Greek + English dense retriever — fine-tuned NVIDIA Nemotron-3-Embed-1B</div></div></div> | |
| **Sophea-Nemo-Embedding** is a Greek + English **dense retrieval embedder**, fine-tuned from | |
| **[NVIDIA Nemotron-3-Embed-1B](https://huggingface.co/nvidia/Nemotron-3-Embed-1B-BF16)** for Greek and | |
| English retrieval. It is the first stage of a two-stage Greek RAG | |
| stack; the matching second stage is | |
| **[Sophea-Nemo-Reranker](https://huggingface.co/KIEFERSA/Sophea-Nemo-Reranker)**. | |
| - **Creator:** Kiefer SA | |
| - **Base model:** `nvidia/Nemotron-3-Embed-1B-BF16` (Ministral-3 backbone, **bidirectional**, mean | |
| pooling with `include_prompt=true`, 2048-d Matryoshka-sliceable, L2-normalized) | |
| - **Languages:** Greek + English | |
| - **Prompts:** `query: ` on queries, `passage: ` on documents (both sides prompted) | |
| - **Training:** full fine-tune, InfoNCE (in-batch + 7 hard negatives), 1 epoch, max-len 4096, bf16 | |
| > **Greek is out-of-distribution for the base.** Nemotron-3-Embed lists 34 languages and **Greek is | |
| > not one of them** — which is exactly why the base retrieves poorly on Greek and why this fine-tune | |
| > exists. | |
| ## Why it matters — base vs fine-tuned | |
| On our held-out 5-domain Greek+English retrieval eval (cosine IR, `query: `/`passage: ` prompts), the | |
| fine-tune roughly **2.5×'s** the base embedder's retrieval quality — on **every** domain. | |
|  | |
| <div style="overflow-x:auto"> | |
| <table style="width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif"> | |
| <thead><tr> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:left;">metric</th> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:center;">Val</th> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:center;">Energy</th> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:center;">Legal</th> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:center;">Finance</th> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:center;">Medical</th> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:center;">Mean</th> | |
| </tr></thead><tbody> | |
| <tr><td style="padding:7px 8px;padding-left:20px;text-align:left;border-bottom:1px solid rgba(128,128,128,.15);">nDCG@10 — base</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.382</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.345</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.526</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.194</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.209</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.331</td></tr> | |
| <tr><td style="padding:7px 8px;padding-left:20px;text-align:left;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">nDCG@10 — fine-tuned</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.875</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.794</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.950</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.722</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.747</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.818</td></tr> | |
| <tr><td style="padding:7px 8px;padding-left:20px;text-align:left;border-bottom:1px solid rgba(128,128,128,.15);">Δ nDCG@10</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">+0.493</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">+0.448</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">+0.424</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">+0.528</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">+0.538</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">+0.486</td></tr> | |
| <tr><td style="padding:7px 8px;padding-left:20px;text-align:left;border-bottom:1px solid rgba(128,128,128,.15);">Recall@10 — base</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.465</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.464</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.599</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.283</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.314</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.425</td></tr> | |
| <tr><td style="padding:7px 8px;padding-left:20px;text-align:left;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">Recall@10 — fine-tuned</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.963</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.898</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.984</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.903</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.906</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.931</td></tr> | |
| </tbody></table></div> | |
| **Read.** Mean **nDCG@10 0.331 → 0.818 | |
| (+0.486)**, with the largest gains on the hardest | |
| domains (finance +0.53, medical +0.54). Recall@10 climbs from a mean 0.425 | |
| to **0.931** — i.e. the right passage is now almost always in the top-10. | |
| ## Size comparison — vs base Qwen3-Embedding (off-the-shelf) | |
| Same 5-domain retrieval eval, same corpus/prompts. Your **fine-tuned 1B** embedder beats the | |
| **base Qwen3-Embedding-8B by a wide margin** (nDCG@10): | |
| <div style="overflow-x:auto"> | |
| <table style="width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif"> | |
| <thead><tr> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:left;">model</th> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:center;">Val</th> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:center;">Energy</th> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:center;">Legal</th> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:center;">Finance</th> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:center;">Medical</th> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:center;">Mean</th> | |
| </tr></thead><tbody> | |
| <tr><td style="padding:7px 8px;padding-left:20px;text-align:left;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">Sophea-Nemo-Embedding (ours · 1B · fine-tuned)</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.875</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.794</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.950</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.722</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.747</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.818</td></tr> | |
| <tr><td style="padding:7px 8px;padding-left:20px;text-align:left;border-bottom:1px solid rgba(128,128,128,.15);">Qwen3-Embedding-8B (base, off-the-shelf)</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.740</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.580</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.910</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.490</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.602</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.664</td></tr> | |
| <tr><td style="padding:7px 8px;padding-left:20px;text-align:left;border-bottom:1px solid rgba(128,128,128,.15);">Qwen3-Embedding-4B (base, off-the-shelf)</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.738</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.579</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.919</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.501</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.586</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.665</td></tr> | |
| <tr><td style="padding:7px 8px;padding-left:20px;text-align:left;border-bottom:1px solid rgba(128,128,128,.15);">Qwen3-Embedding-0.6B (base, off-the-shelf)</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.658</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.509</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.863</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.426</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.467</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.585</td></tr> | |
| </tbody></table></div> | |
| **Read.** Mean nDCG@10 **0.818** (ours, 1B) vs **0.664** (8B), | |
| **0.665** (4B), **0.585** (0.6B). Note the Qwen 8B ≈ 4B — | |
| scaling the off-the-shelf model barely helps on Greek, whereas a 1B **fine-tuned** on-domain wins by | |
| **+0.153** over the 8×-larger model. | |
| ## End-to-end two-stage pipeline | |
| The two models are designed to run **together**: the embedder retrieves the top-50 candidates, the | |
| reranker re-orders them. Measured end-to-end on the same 5-domain Greek+English eval (150 queries/set, | |
| correct `query:`/`passage:` prompts): | |
|  | |
| <div style="overflow-x:auto"> | |
| <table style="width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif"> | |
| <thead><tr> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:left;">metric</th> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:center;">Val</th> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:center;">Energy</th> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:center;">Legal</th> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:center;">Finance</th> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:center;">Medical</th> | |
| <th style="padding:10px 8px;font-weight:500;border-bottom:2px solid #0a8043;color:#0a8043;font-size:14px;text-align:center;">Mean</th> | |
| </tr></thead><tbody> | |
| <tr><td style="padding:7px 8px;padding-left:20px;text-align:left;border-bottom:1px solid rgba(128,128,128,.15);">nDCG@10 — embedder alone</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.863</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.802</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.939</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.702</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.689</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">0.799</td></tr> | |
| <tr><td style="padding:7px 8px;padding-left:20px;text-align:left;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">nDCG@10 — + reranker (stack)</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.867</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.780</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.976</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.763</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.703</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.818</td></tr> | |
| <tr><td style="padding:7px 8px;padding-left:20px;text-align:left;border-bottom:1px solid rgba(128,128,128,.15);">Δ from reranking</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">+0.004</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">-0.022</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">+0.037</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">+0.061</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">+0.013</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);">+0.019</td></tr> | |
| <tr><td style="padding:7px 8px;padding-left:20px;text-align:left;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">Recall@10 — full stack</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.987</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.873</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.993</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.920</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.860</td><td style="padding:7px 8px;text-align:center;border-bottom:1px solid rgba(128,128,128,.15);font-weight:700;color:#0a8043;">0.927</td></tr> | |
| </tbody></table></div> | |
| **Read.** The full stack reaches **mean nDCG@10 0.818** (Recall@10 0.927) — the | |
| strongest configuration measured. The reranker adds the most where the embedder is weakest | |
| (**finance +0.061, legal +0.037**), i.e. it sharpens precision on the hard | |
| cases. On **energy** it slightly regresses (-0.022) and on `val` the gain is marginal, | |
| because the embedder alone is already very strong there and leaves little headroom — for the easiest, | |
| already-high-recall domains you can skip the rerank stage if latency matters. | |
| ## Usage (sentence-transformers) | |
| ```python | |
| from sentence_transformers import SentenceTransformer | |
| m = SentenceTransformer("KIEFERSA/Sophea-Nemo-Embedding") | |
| q = m.encode(["Ποια είναι η πρωτεύουσα της Ελλάδας;"], prompt="query: ", normalize_embeddings=True) | |
| d = m.encode(["Η Αθήνα είναι η πρωτεύουσα της Ελλάδας."], prompt="passage: ", normalize_embeddings=True) | |
| print((q @ d.T)) # cosine similarity | |
| ``` | |
| Both sides **must** be prompted (`query: ` / `passage: `) — the base uses `include_prompt=true`, so | |
| dropping the prefix is a distribution mismatch. Embeddings are L2-normalized (use cosine / dot). | |
| ## Serving with vLLM | |
| ```bash | |
| vllm serve KIEFERSA/Sophea-Nemo-Embedding --runner pooling | |
| ``` | |
| Exposes an OpenAI-compatible `/v1/embeddings` endpoint. vLLM does **not** auto-apply the model's ST | |
| prompts, so prepend them **client-side** — `query: ` on queries, `passage: ` on documents: | |
| ```python | |
| from openai import OpenAI | |
| c = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY") | |
| name = "KIEFERSA/Sophea-Nemo-Embedding" | |
| q = c.embeddings.create(model=name, input=["query: Ποια είναι η πρωτεύουσα της Ελλάδας;"]).data[0].embedding | |
| d = c.embeddings.create(model=name, input=["passage: Η Αθήνα είναι η πρωτεύουσα της Ελλάδας."]).data[0].embedding | |
| ``` | |
| ## License | |
| Fine-tune of `nvidia/Nemotron-3-Embed-1B-BF16` — governed by **OpenMDW-1.1** (base Ministral-3 is | |
| Apache-2.0); commercial use permitted under those terms. Review the base model's license before use. | |