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. This model was 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 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.
Number of model parameters:
The model has approximately 1.14B parameters
Hidden Size:
2048
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.
Nemotron-3-Embed-1B-BF16
was derived from the
Ministral-3-3B-Instruct-2512
through two iterative rounds of structured pruning and distillation. First, the 3B parent model was trained as a text-embedding model. Then 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.
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. The same pruning-and-distillation procedure, using the same dataset blend, was then repeated to produce the final 1.14B embedding model.
Input(s):
Input Type(s):
Text
Input Format(s):
Text: List of strings
Input Parameters:
Text: One-Dimensional (1D)
Other Properties Related to Input:
Text inputs should be tokenized by the model tokenizer. The model’s max sequence length is 32768. Longer inputs should be chunked or truncated.
Output(s)
Output Type(s):
Floats
Output Format(s):
List of float arrays
Output Parameters:
One-Dimensional (1D) embedding vector per input text string
Other Properties Related to Output:
The model outputs a 2048-dimensional embedding vector for each input text string.
Our AI models are designed and/or optimized to run on NVIDIA GPU-accelerated systems. By leveraging NVIDIA's hardware (e.g. GPU cores) and software frameworks (e.g., CUDA libraries), the model achieves faster training and inference times compared to CPU-only solutions.
Usage
For local Python examples, use the Hugging Face model ID by default. If you are working from a local checkout, replace
MODEL_ID
with that path. For vLLM online serving from a local checkpoint, use the local checkpoint example.
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
The BF16 checkpoints support Transformers
5.2.0
and above. The examples also require a CUDA-enabled PyTorch installation that matches your driver and CUDA environment.
If you are not using an NVIDIA PyTorch container, install PyTorch first. Use the
PyTorch local installation selector
to choose the command that matches your operating system, package manager, and CUDA environment. If the default PyPI wheel matches your CUDA environment, run:
pip install --upgrade torch
For non-default CUDA environments, the selector can include an additional
--index-url
argument. Use that CUDA-specific index URL when the default PyPI wheel does not match your CUDA environment.
Then install Transformers and Sentence Transformers:
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:
The tested
nvcr.io/nvidia/pytorch:26.06-py3
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.
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 inrange(scores.shape[1])))
for query_index, row inenumerate(scores):
print(f"q[{query_index}]" + "".join(f"{score.item():>10.4f}"for score in row))
Use Transformers when you want manual control over tokenization, pooling, or batching.
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.",
]
defaverage_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]
ifnot 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 isNone:
tokenizer.pad_token = tokenizer.eos_token
model = AutoModel.from_pretrained(
MODEL_ID,
dtype=DTYPE,
attn_implementation=ATTN_IMPLEMENTATION,
).to(device)
model.eval()
defencode_texts(texts: list[str]) -> torch.Tensor:
embedding_batches = []
for start inrange(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 inrange(scores.shape[1])))
for query_index, row inenumerate(scores):
print(f"q[{query_index}]" + "".join(f"{score.item():>10.4f}"for score in row))
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.
Use the offline Python API when you want local vLLM inference without running an HTTP server.
LLM.embed
accepts formatted strings, so add the
query:
and
passage:
prefixes manually.
vLLM Offline Python Example
import numpy as np
from vllm import LLM
MODEL_ID = "nvidia/Nemotron-3-Embed-1B-BF16"
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.",
]
defmain():
llm = LLM(model=MODEL_ID)
texts = ["query: " + query for query in QUERIES] + [
"passage: " + doc for doc in DOCUMENTS
]
outputs = llm.embed(texts, use_tqdm=False)
embeddings = np.array(
[output.outputs.embedding for output in outputs],
dtype=np.float32,
)
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 inrange(scores.shape[1])))
for query_index, row inenumerate(scores):
print(f"q[{query_index}]" + "".join(f"{score:>10.4f}"for score in row))
if __name__ == "__main__":
main()
vLLM defaults to port
8000
. Add host and port when you need an explicit bind address or a non-default port:
vllm serve "$MODEL_ID" --host 0.0.0.0 --port 8000
If you serve the Hugging Face model ID, the served model name defaults to
nvidia/Nemotron-3-Embed-1B-BF16
. If you serve 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.
With
--served-model-name
, client requests continue to use
MODEL = "nvidia/Nemotron-3-Embed-1B-BF16"
. If you omit it, use the served name reported by
/v1/models
in client requests.
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:
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.",
]
defembed(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 inrange(scores.shape[1])))
for query_index, row inenumerate(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, whether directly or through Sentence Transformers or vLLM, the following warning may appear:
[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
.
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 Datasets:
161 dataset files
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.
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
.
NVIDIA believes Trustworthy AI is a shared responsibility and we have 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, please see the Model Card++ Bias, Explainability, Safety & Security, and Privacy Subcards.
Please report model quality, risk, security vulnerabilities or NVIDIA AI concerns
here
.
Bias
Field
Response
Participation considerations from adversely impacted groups
protected classes
in model design and testing:
None
Measures taken to mitigate against unwanted bias:
None
Bias Metric (If Measured):
None
Explainability
Field
Response
Intended Task/Domain:
Passage and query embedding for question and answer retrieval
Model Type:
Transformer encoder
Intended Users:
Generative 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.
Output:
Array of float numbers (Dense Vector Representation for the input text)
Describe how the model works:
Model transforms the tokenized input text into a dense vector representation.
Name the adversely impacted groups this has been tested to deliver comparable outcomes regardless of:
Not Applicable
Technical Limitations & Mitigation:
The model’s max sequence length is 32768. Therefore, longer text inputs should be truncated.
Verified to have met prescribed NVIDIA quality standards:
Yes
Performance Metrics:
Accuracy, Throughput, and Latency
Potential Known Risks:
This model does not always guarantee to retrieve the correct passage(s) for a given query.
The 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 adhered to.
Runs of nvidia Nemotron-3-Embed-1B-BF16 on huggingface.co
662.0K
Total runs
59.2K
24-hour runs
99.8K
3-day runs
275.1K
7-day runs
206.3K
30-day runs
More Information About Nemotron-3-Embed-1B-BF16 huggingface.co Model
Nemotron-3-Embed-1B-BF16 huggingface.co is an AI model on huggingface.co that provides Nemotron-3-Embed-1B-BF16's model effect (), which can be used instantly with this nvidia Nemotron-3-Embed-1B-BF16 model. huggingface.co supports a free trial of the Nemotron-3-Embed-1B-BF16 model, and also provides paid use of the Nemotron-3-Embed-1B-BF16. Support call Nemotron-3-Embed-1B-BF16 model through api, including Node.js, Python, http.
Nemotron-3-Embed-1B-BF16 huggingface.co is an online trial and call api platform, which integrates Nemotron-3-Embed-1B-BF16's modeling effects, including api services, and provides a free online trial of Nemotron-3-Embed-1B-BF16, you can try Nemotron-3-Embed-1B-BF16 online for free by clicking the link below.
nvidia Nemotron-3-Embed-1B-BF16 online free url in huggingface.co:
Nemotron-3-Embed-1B-BF16 is an open source model from GitHub that offers a free installation service, and any user can find Nemotron-3-Embed-1B-BF16 on GitHub to install. At the same time, huggingface.co provides the effect of Nemotron-3-Embed-1B-BF16 install, users can directly use Nemotron-3-Embed-1B-BF16 installed effect in huggingface.co for debugging and trial. It also supports api for free installation.
Nemotron-3-Embed-1B-BF16 install url in huggingface.co: