ModelsnvidiaNemotron-3-Embed-1B-BF16
providernvidia /

Nemotron-3-Embed-1B-BF16

5.25 DZD in / 1M tokens

Nemotron-3-Embed-1B-BF16 is a compact multilingual text embedding model from NVIDIA, pruned and distilled from Ministral-3 to ~1B parameters, that maps text into 2048-dimensional dense vectors for retrieval and semantic similarity. Spanning 34 languages, it delivers state-of-the-art quality among similarly sized models for RAG and multilingual question-answering while keeping compute cost low.

Publicfp16
Nemotron-3-Embed-1B-BF16
ArchitectureTransformer
Context Window32K

Nemotron-3-Embed-1B-BF16

Nemotron-3-Embed-1B-BF16 is a versatile text embedding model trained by NVIDIA and optimized for retrieval and semantic similarity tasks. It provides strong multilingual and cross-lingual retrieval capabilities and is designed to serve as a foundational component in text-based Retrieval-Augmented Generation (RAG) systems.

Evaluated across 34 languages: English, Arabic, Assamese, Bengali, Bulgarian, Chinese, Danish, Dutch, Finnish, French, German, Hindi, Hinglish, Indonesian, Italian, Japanese, Korean, Malay, Marathi, Nepali, Norwegian, Persian, Portuguese, Romanian, Russian, Spanish, Swahili, Swedish, Tamil, Telugu, Thai, Ukrainian, Urdu, Vietnamese.

The model generates dense vector embeddings from multilingual text inputs, enabling retrieval, semantic search, and (agentic) RAG workflows. As a core component of text retrieval systems, an embedding model transforms text — such as questions or passages — into dense vector representations. These models are typically transformer encoders that process input tokens and produce embeddings suitable for efficient similarity matching.

Among models of comparable size, Nemotron-3-Embed-1B-BF16 achieves state-of-the-art performance across multiple multilingual retrieval benchmarks.

This model is ready for commercial use.


License / Terms of Use

Licensed under the OpenMDW License Agreement, version 1.1 (OpenMDW-1.1).

Additional Information: Built with Ministral-3-3B-Instruct-2512, released under Apache 2.0.

This project will download and install additional third-party open source software projects. Review the license terms of these open source projects before use.

Deployment Geography

Global

Use Case

Nemotron-3-Embed-1B-BF16 is most suitable for users who want to build a multilingual question-and-answer application over a large text corpus, leveraging the latest dense retrieval technologies.

Release Date

07/16/2026 via huggingface.co/nvidia/Nemotron-3-Embed-1B-BF16


Model Architecture

PropertyValue
Architecture TypeTransformer
Network ArchitectureMinistral-3-3B-Instruct-2512 based pruned model
Number of Parameters~1.14B
Hidden Size2048

The Nemotron-3-Embed-1B-BF16 model is a transformer-based text embedding model trained with bidirectional attention masking, where the final embedding vector is obtained by applying average pooling to the transformer's token-level representations. It encodes each input text into a dense embedding vector of dimension 2048.

Training Lineage

Nemotron-3-Embed-1B-BF16 was derived from the Ministral-3-3B-Instruct-2512 through two iterative rounds of structured pruning and distillation:

  1. The 3B parent model was trained as a text-embedding model.
  2. It was pruned to 2B using NVIDIA ModelOpt mcore_minitron Neural Architecture Search (NAS) (NVIDIA/Model-Optimizer, paper). This process searches across hidden width, FFN size, attention heads, and depth, then selects the best candidate from the top-10 Pareto front. Candidates were evaluated against the parent model's representations using a 50k in-domain calibration corpus, which was also used to estimate importance scores.
  3. The resulting 2B model was then distilled from the fine-tuned Nemotron-3-Embed-8B-BF16 embedding teacher model to recover accuracy. Distillation used combined cosine distance loss (COS) and mean squared error (MSE) loss on a multilingual, in-domain retrieval data blend.
  4. The same pruning-and-distillation procedure, using the same dataset blend, was repeated to produce the final 1.14B embedding model.

Input / Output

Input

  • Type: Text
  • Format: List of strings
  • Parameters: One-Dimensional (1D)
  • Notes: Text inputs should be tokenized by the model tokenizer. Max sequence length is 32768. Longer inputs should be chunked or truncated.

Output

  • Type: Floats
  • Format: List of float arrays
  • Parameters: One-Dimensional (1D) embedding vector per input text string
  • Notes: Outputs a 2048-dimensional embedding vector per input text string. Supports dynamic embedding sizes by slicing the vector from the start (e.g., keeping the first 1024 or 512 dimensions). Sliced embeddings remain highly functional, provided the resulting sub-vector is re-normalized (L2 normalization) after slicing.

Our AI models are designed and/or optimized to run on NVIDIA GPU-accelerated systems, leveraging NVIDIA's hardware (GPU cores) and software frameworks (CUDA libraries) for faster training and inference compared to CPU-only solutions.


Usage

For local Python examples, use the Hugging Face model ID by default. If working from a local checkout, replace MODEL_ID with that path. For vLLM online serving from a local checkpoint, use the local checkpoint example.

PYTHON
MODEL_ID = "nvidia/Nemotron-3-Embed-1B-BF16"

Use this model for retrieval-style embeddings. Add the query: prefix for queries and the passage: prefix for documents. Embeddings are L2-normalized, so dot product and cosine similarity are equivalent. The output tables use q[i] for queries and d[i] for documents. Scores are rounded to four decimals. Exact values can vary by runtime and package version.

Local Python Dependencies

BF16 checkpoints support Transformers 5.2.0+. Examples also require a CUDA-enabled PyTorch installation matching your driver and CUDA environment.

If not using an NVIDIA PyTorch container, install PyTorch first using the PyTorch local installation selector matching your OS, package manager, and CUDA environment. If the default PyPI wheel matches your CUDA environment:

BASH
pip install --upgrade torch

For non-default CUDA environments, the selector can include an additional --index-url argument.

Then install Transformers and Sentence Transformers:

BASH
pip install --upgrade "transformers>=5.2.0" "sentence-transformers>=5.4.1"

NVIDIA tested the examples in nvcr.io/nvidia/pytorch:26.06-py3 with the container-provided Torch and CUDA stack. Inside NVIDIA PyTorch containers, do not upgrade Torch — install only the missing packages:

BASH
pip install --upgrade "transformers>=5.2.0" "sentence-transformers>=5.4.1"

The tested container includes flash-attn, so the snippets use FlashAttention-2 by default. If your environment does not have FlashAttention-2, set attn_implementation or ATTN_IMPLEMENTATION to sdpa.


Sentence Transformers

Use Sentence Transformers for the simplest local Python interface. It reads the saved query and document prompts and normalization metadata.

PYTHON
import torch
from sentence_transformers import SentenceTransformer

MODEL_ID = "nvidia/Nemotron-3-Embed-1B-BF16"

model = SentenceTransformer(
    MODEL_ID,
    device="cuda",
    model_kwargs={
        "dtype": torch.bfloat16,
        "attn_implementation": "flash_attention_2",
    },
)
model.max_seq_length = 32768

QUERIES = [
    "Write a Python function that counts the frequency of each element in a list of lists.",
    "Write a function that orders a dictionary with tuple keys by the product of each key's tuple values.",
    "What symptoms and common triggers help distinguish eczema from other inflammatory skin conditions?",
    "How can someone reduce exposure to pollen during allergy season?",
]

DOCUMENTS = [
    "def frequency_lists(list1):\n    flattened = [item for sublist in list1 for item in sublist]\n    counts = {}\n    for item in flattened:\n        if item in counts:\n            counts[item] += 1\n        else:\n            counts[item] = 1\n    return counts",
    "def sort_dict_item(test_dict):\n    return {key: test_dict[key] for key in sorted(test_dict.keys(), key=lambda ele: ele[0] * ele[1])}",
    "Eczema commonly causes itchy, dry, inflamed patches of skin. The affected areas may look red, scaly, cracked, or darker than the surrounding skin depending on skin tone. Symptoms can flare after exposure to irritants, allergens, stress, or changes in weather.",
    "People with pollen allergy can reduce exposure by staying indoors on dry, windy days, avoiding early-morning outdoor activity, and going outside after rain when pollen levels are lower. They should check pollen forecasts, close windows and doors when counts are high, and consider starting allergy medication before symptoms begin if high pollen is expected. After being outside, showering, changing clothes, avoiding outdoor laundry drying, and wearing a face mask for yard work can help limit pollen contact.",
]

query_embeddings = model.encode_query(QUERIES, batch_size=8, convert_to_tensor=True)
document_embeddings = model.encode_document(DOCUMENTS, batch_size=8, convert_to_tensor=True)

scores = model.similarity(query_embeddings, document_embeddings)
print("Similarity scores:")
print(f"{'':>4}" + "".join(f"d[{i}]".rjust(10) for i in range(scores.shape[1])))
for query_index, row in enumerate(scores):
    print(f"q[{query_index}]" + "".join(f"{score.item():>10.4f}" for score in row))

Transformers

Use Transformers when you want manual control over tokenization, pooling, or batching.

PYTHON
import torch
import torch.nn.functional as F
from transformers import AutoModel, AutoTokenizer

MODEL_ID = "nvidia/Nemotron-3-Embed-1B-BF16"
MAX_LENGTH = 32768
BATCH_SIZE = 8
DTYPE = torch.bfloat16
ATTN_IMPLEMENTATION = "flash_attention_2"

QUERIES = [
    "Write a Python function that counts the frequency of each element in a list of lists.",
    "Write a function that orders a dictionary with tuple keys by the product of each key's tuple values.",
    "What symptoms and common triggers help distinguish eczema from other inflammatory skin conditions?",
    "How can someone reduce exposure to pollen during allergy season?",
]

DOCUMENTS = [
    "def frequency_lists(list1):\n    flattened = [item for sublist in list1 for item in sublist]\n    counts = {}\n    for item in flattened:\n        if item in counts:\n            counts[item] += 1\n        else:\n            counts[item] = 1\n    return counts",
    "def sort_dict_item(test_dict):\n    return {key: test_dict[key] for key in sorted(test_dict.keys(), key=lambda ele: ele[0] * ele[1])}",
    "Eczema commonly causes itchy, dry, inflamed patches of skin. The affected areas may look red, scaly, cracked, or darker than the surrounding skin depending on skin tone. Symptoms can flare after exposure to irritants, allergens, stress, or changes in weather.",
    "People with pollen allergy can reduce exposure by staying indoors on dry, windy days, avoiding early-morning outdoor activity, and going outside after rain when pollen levels are lower. They should check pollen forecasts, close windows and doors when counts are high, and consider starting allergy medication before symptoms begin if high pollen is expected. After being outside, showering, changing clothes, avoiding outdoor laundry drying, and wearing a face mask for yard work can help limit pollen contact.",
]

def average_pool(last_hidden_state: torch.Tensor, attention_mask: torch.Tensor) -> torch.Tensor:
    last_hidden = last_hidden_state.masked_fill(~attention_mask[..., None].bool(), 0.0)
    return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]

if not torch.cuda.is_available():
    raise RuntimeError("CUDA is required for practical BF16 inference.")

device = torch.device("cuda")

tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, padding_side="left")
if tokenizer.pad_token is None:
    tokenizer.pad_token = tokenizer.eos_token

model = AutoModel.from_pretrained(
    MODEL_ID,
    dtype=DTYPE,
    attn_implementation=ATTN_IMPLEMENTATION,
).to(device)
model.eval()

def encode_texts(texts: list[str]) -> torch.Tensor:
    embedding_batches = []

    for start in range(0, len(texts), BATCH_SIZE):
        encoded = tokenizer(
            texts[start : start + BATCH_SIZE],
            max_length=MAX_LENGTH,
            truncation=True,
            padding=True,
            return_tensors="pt",
        )
        encoded = {name: tensor.to(device) for name, tensor in encoded.items()}

        with torch.inference_mode():
            output = model(**encoded)
            pooled = average_pool(output.last_hidden_state, encoded["attention_mask"])
            embeddings = F.normalize(pooled, p=2, dim=-1)

        embedding_batches.append(embeddings.detach().cpu().to(torch.float32))

    return torch.cat(embedding_batches, dim=0)

embeddings = encode_texts(
    ["query: " + query for query in QUERIES]
    + ["passage: " + doc for doc in DOCUMENTS]
)
query_embeddings = embeddings[: len(QUERIES)]
document_embeddings = embeddings[len(QUERIES) :]

scores = query_embeddings @ document_embeddings.T
print("Similarity scores:")
print(f"{'':>4}" + "".join(f"d[{i}]".rjust(10) for i in range(scores.shape[1])))
for query_index, row in enumerate(scores):
    print(f"q[{query_index}]" + "".join(f"{score.item():>10.4f}" for score in row))

vLLM Dependencies

For BF16, use vllm==0.25.0 for /v2/embed serving. NVIDIA also validated vllm serve "$MODEL_ID" with vllm/vllm-openai:v0.20.0 through v0.24.0 for this checkpoint.

BASH
pip install --upgrade "vllm==0.25.0" openai requests numpy
vLLM Offline Python

Use the offline Python API for local vLLM inference without running an HTTP server. LLM.embed accepts formatted strings, so add the query: and passage: prefixes manually.

(See official offline Python example and expected output on the model page.)

vLLM Online Serving
BASH
MODEL_ID=nvidia/Nemotron-3-Embed-1B-BF16

vllm serve "$MODEL_ID"

vLLM defaults to port 8000. Add host and port for an explicit bind address or non-default port:

BASH
vllm serve "$MODEL_ID" --host 0.0.0.0 --port 8000

If serving the Hugging Face model ID, the served model name defaults to nvidia/Nemotron-3-Embed-1B-BF16. If serving a local checkpoint path, vLLM still reads the model config and weights from that path; --served-model-name only sets the model name accepted by API requests.

BASH
MODEL_PATH=/path/to/local/Nemotron-3-Embed-1B-BF16
vllm serve "$MODEL_PATH" --host 0.0.0.0 --port 8000 --served-model-name nvidia/Nemotron-3-Embed-1B-BF16

With --served-model-name, client requests continue to use MODEL = "nvidia/Nemotron-3-Embed-1B-BF16". Otherwise, use the served name reported by /v1/models.

Recommended Retrieval Endpoint

After the server is running, use /v2/embed for retrieval. Send raw query and document strings. input_type applies the saved query and document prompts:

PYTHON
import numpy as np
import requests

MODEL = "nvidia/Nemotron-3-Embed-1B-BF16"
URL = "http://localhost:8000/v2/embed"

QUERIES = [
    "Write a Python function that counts the frequency of each element in a list of lists.",
    "Write a function that orders a dictionary with tuple keys by the product of each key's tuple values.",
    "What symptoms and common triggers help distinguish eczema from other inflammatory skin conditions?",
    "How can someone reduce exposure to pollen during allergy season?",
]

DOCUMENTS = [
    "def frequency_lists(list1):\n    flattened = [item for sublist in list1 for item in sublist]\n    counts = {}\n    for item in flattened:\n        if item in counts:\n            counts[item] += 1\n        else:\n            counts[item] = 1\n    return counts",
    "def sort_dict_item(test_dict):\n    return {key: test_dict[key] for key in sorted(test_dict.keys(), key=lambda ele: ele[0] * ele[1])}",
    "Eczema commonly causes itchy, dry, inflamed patches of skin. The affected areas may look red, scaly, cracked, or darker than the surrounding skin depending on skin tone. Symptoms can flare after exposure to irritants, allergens, stress, or changes in weather.",
    "People with pollen allergy can reduce exposure by staying indoors on dry, windy days, avoiding early-morning outdoor activity, and going outside after rain when pollen levels are lower. They should check pollen forecasts, close windows and doors when counts are high, and consider starting allergy medication before symptoms begin if high pollen is expected. After being outside, showering, changing clothes, avoiding outdoor laundry drying, and wearing a face mask for yard work can help limit pollen contact.",
]

def embed(input_type: str, texts: list[str]) -> np.ndarray:
    response = requests.post(
        URL,
        json={
            "model": MODEL,
            "input_type": input_type,
            "texts": texts,
            "embedding_types": ["float"],
            "truncate": "END",
        },
        timeout=120,
    )
    response.raise_for_status()
    return np.array(response.json()["embeddings"]["float"], dtype=np.float32)

query_embeddings = embed("query", QUERIES)
document_embeddings = embed("document", DOCUMENTS)

scores = query_embeddings @ document_embeddings.T
print("Similarity scores:")
print(f"{'':>4}" + "".join(f"d[{i}]".rjust(10) for i in range(scores.shape[1])))
for query_index, row in enumerate(scores):
    print(f"q[{query_index}]" + "".join(f"{score:>10.4f}" for score in row))

You can also use the OpenAI-compatible /v1/embeddings endpoint. For those requests, pass strings in input and manually prefix them with query: or passage:.


Expected Configuration Warning

When this checkpoint is loaded by Transformers (directly or via Sentence Transformers or vLLM), the following warning may appear:

CODE
[transformers] Unrecognized keys in `rope_parameters` for 'rope_type'='yarn': {'apply_yarn_scaling'}

This warning is expected and does not prevent model loading or inference. apply_yarn_scaling is retained as a temporary vLLM compatibility field that preserves the checkpoint's intended long-context RoPE behavior. Do not remove it from config.json. The upstream compatibility work is tracked in vLLM issue #48621.


Software Integration

PropertyValue
Runtime Engine(s)PyTorch, vLLM
Supported Hardware MicroarchitectureNVIDIA Ampere, NVIDIA Blackwell, NVIDIA Hopper
Supported Operating System(s)Linux

The integration of foundation and fine-tuned models into AI systems requires additional testing using use-case-specific data to ensure safe and effective deployment. Following the V-model methodology, iterative testing and validation at both unit and system levels are essential to mitigate risks, meet technical and functional requirements, and ensure compliance with safety and ethical standards before deployment.

Model Version(s)

Nemotron-3-Embed-1B-BF16


Training, Testing, and Evaluation Datasets

Dataset Overview

  • Total Size: 8.5M+ data points
  • Total Number of Dataset Files: 161
  • Dataset Partition: Training [100%], Testing [N/A — evaluation benchmarks used separately], Validation [N/A — evaluation benchmarks used separately]

Model distillation training was conducted using publicly available, commercially permissible datasets and synthetically generated datasets. Synthetic data was created either by generating queries from seed documents or by generating complete question–answer pairs through LLM-based prompting using the models listed below.

Public Datasets

Synthetic Datasets

Synthetic query-document pairs were generated either from scratch or by using seed datasets to generate queries with the models listed below.

LLMs used to generate synthetic datasets:

  • Qwen/Qwen3-Next-80B-A3B-Instruct
  • Qwen/Qwen3-235B-A22B
  • Qwen/Qwen3.5-397B-A17B
  • Qwen/Qwen3.6-27B
  • Qwen/Qwen3.6-35B-A3B
  • google/gemma-4-31B-it
  • openai/gpt-oss-120b
  • openai/gpt-oss-20b
  • nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16
  • nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-NVFP4

Seed Datasets:

Training Dataset

  • Data Modality: Text
  • Text Training Data Size: 8.5M+
  • Data Collection Method by dataset: Hybrid: Human, Automated, Synthetic
  • Labeling Method by dataset: Hybrid: Human, Automated, Synthetic
  • Properties: Model training was conducted on text datasets using question–passage pairs from publicly available, commercially permissible datasets and synthetically generated datasets.

Testing Dataset

  • Data Collection Method by dataset: Not Applicable
  • Labeling Method by dataset: Not Applicable
  • Properties: Not Applicable. Model quality was assessed using the evaluation benchmark datasets described in the Evaluation Dataset subsection.

Evaluation Dataset

  • Data Collection Method by dataset: Hybrid: Human, Automated, Synthetic
  • Labeling Method by dataset: Hybrid: Human, Automated, Synthetic
  • Properties: This model is evaluated on 16 public tasks on Retrieval Embedding Benchmark (RTEB), a new benchmark designed to reliably evaluate the retrieval accuracy of embedding models for real-world applications. More details on RTEB can be found on their leaderboard.

Also evaluated on MMTEB (Retrieval) benchmark datasets (paper), and on the eight text datasets (extracted via OCR) from the ViDoRe-V3 benchmark.

Model sequence length was set to 4096 for the evaluation results below.

Text Retrieval Benchmarks (chunk retrieval) — Avg. NDCG@10
Model NameRTEBViDoRe-V3 textMMTEB (Retrieval)
llama-nemotron-embed-vl-1b-v261.9852.5459.71
Nemotron-3-Embed-1B-BF1672.3857.7471.04

Inference

  • Acceleration Engine: PyTorch, vLLM
  • Test Hardware: NVIDIA Ampere - A100 80GB, NVIDIA Hopper - H100 80GB

Ethical Considerations

NVIDIA believes Trustworthy AI is a shared responsibility, and has established policies and practices to enable development for a wide array of AI applications. Developers should work with their internal model team to ensure this model meets requirements for the relevant industry and use case and addresses unforeseen product misuse.

For more detailed information on ethical considerations for this model, see the Model Card++ Bias, Explainability, Safety & Security, and Privacy Subcards.

Report model quality, risk, security vulnerabilities, or NVIDIA AI concerns here.

Bias

FieldResponse
Participation considerations from adversely impacted groups/protected classes in model design and testingNone
Measures taken to mitigate against unwanted biasNone
Bias Metric (If Measured)None

Explainability

FieldResponse
Intended Task/DomainPassage and query embedding for question and answer retrieval
Model TypeTransformer encoder
Intended UsersGenerative AI creators working with conversational AI models — users who want to build a multilingual question and answer application over a large text corpus, leveraging the latest dense retrieval technologies
OutputArray of float numbers (Dense Vector Representation for the input text)
Describe how the model worksModel transforms the tokenized input text into a dense vector representation
Adversely impacted groups tested for comparable outcomesNot Applicable
Technical Limitations & MitigationThe model's max sequence length is 32768. Longer text inputs should be truncated
Verified to have met prescribed NVIDIA quality standardsYes
Performance MetricsAccuracy, Throughput, and Latency
Potential Known RisksThis model does not always guarantee to retrieve the correct passage(s) for a given query
LicensingOpenMDW License Agreement, version 1.1 (OpenMDW-1.1). Built with Ministral-3-3B-Instruct-2512 (Apache 2.0)

Privacy

FieldResponse
Generatable or reverse engineerable personal data?None
Was consent obtained for any personal data used?Not Applicable
Personal data used to create this model?None Known
How often is the dataset reviewed?Before Every Release
Is there provenance for all datasets used in training?Yes
Does data labeling comply with privacy laws?Yes
Was data from user interactions with the AI model used to train the model?Yes
Compliant with data subject requests for correction/removal?No, not possible with externally-sourced data
Applicable Privacy Policyhttps://www.nvidia.com/en-us/about-nvidia/privacy-policy/

Safety

FieldResponse
Model Application(s)Text Embedding for Retrieval
Physical safety impactNot Applicable
Use Case RestrictionsOpenMDW License Agreement, version 1.1 (OpenMDW-1.1). Built with Ministral-3-3B-Instruct-2512 (Apache 2.0)
Model and dataset restrictionsThe Principle of Least Privilege (PoLP) is applied, limiting access for dataset generation and model development. Restrictions enforce dataset access during training, and dataset license constraints are adhered to