嵌入向量模型决定了智能体能够看到哪些文本段落。英伟达发布了 Nemotron 3 Embed 模型,专门作用于这一层面。该模型面向生产级 RAG、智能体检索、代码检索以及智能体记忆等场景。
什么是 Nemotron 3 Embed?
该模型系列包含三个开放检查点。Nemotron-3-Embed-8B-BF16 是精度优先的选项。Nemotron-3-Embed-1B-BF16 将相同的设计移植到更小的模型规模中。Nemotron-3-Embed-1B-NVFP4 则是针对 Blackwell 优化的 4 比特路径。
三者均为采用双向注意力掩码训练的 Transformer 编码器。最终的嵌入向量通过对 token 级表示进行平均池化得到。每个检查点的最大序列长度均为 32,768 个 token。
每个模型均在 34 种语言上进行了评估。三者均采用 OpenMDW 许可协议 1.1 版本(OpenMDW-1.1)。值得注意的是,其基础模型均为 Mistral 模型。8B 版本基于 Ministral-3-8B-Instruct-2512 构建。两个 1B 变体均使用 Ministral-3-3B-Instruct-2512。
性能表现
截至 2026 年 7 月 17 日,Nemotron-3-Embed-8B-BF16 在检索嵌入基准测试 RTEB 上总体排名第一。评估涵盖其 16 项公开任务。下表中的所有数值均为模型序列长度 4096 时的平均 NDCG@10。
| 模型 | 参数量 | 嵌入维度 | RTEB | ViDoRe-V3 文本 | MMTEB(检索) |
|---|---|---|---|---|---|
| Nemotron-3-Embed-8B-BF16 | 约 8B | 4096 | 78.46 | 60.60 | 75.45 |
| Nemotron-3-Embed-1B-BF16 | 1.14B | 2048 | 72.38 | 57.74 | 71.04 |
| Nemotron-3-Embed-1B-NVFP4 | 1.14B | 2048 | 72.00 | — | — |
| llama-nemotron-embed-vl-1b-v2 | — | — | 61.98 | 52.54 | 59.71 |
| llama-nemotron-embed-1b-v2 | — | — | 60.47 | 52.10 | 59.58 |
有两个差距值得注意。1B 模型相比上一代基线 llama-nemotron-embed-vl-1b-v2,在 RTEB 上提升了 10.4 分。另外,NVFP4 相比其 BF16 基础模型,仅损失了 0.38 个 RTEB 分数,相当于保留了 99.5% 的性能。
1B 模型是如何构建的?
这些 1B 模型的分数来自一个压缩流程,而非更小规模的训练过程。其基础模型是 nemotron-3-embed-3b,经过两轮迭代的剪枝和知识蒸馏。
首先,使用 NVIDIA ModelOpt 的 mcore_minitron 神经架构搜索(NAS)将 3B 基础模型剪枝至 2B。该搜索覆盖了隐藏层宽度、FFN 大小、注意力头数和深度。然后从排名前 10 的帕累托前沿中选出最佳候选。一个包含 50k 条数据的领域内校准语料库对这些候选进行了评分。
接下来,2B 模型是从微调后的 8B 嵌入向量教师模型中蒸馏出来的。蒸馏过程结合了余弦距离损失(COS)和均方误差损失(MSE)。数据混合集包含多语言和领域内数据。最后,重复相同流程,生成了 1.14B 检查点。
NVFP4 推理服务权衡
压缩随后进入推理服务格式阶段。量化仅针对线性层的权重和激活值,目标数据类型为 NVFP4。研究团队使用了 nvidia-modelopt v0.45.0。随后进行了量化感知蒸馏(QAD),主要目的是在长输入场景下恢复精度。
校准使用了 512 个样本:来自 abisee/cnn_dailymail 的 256 个查询和 256 个段落。QAD 训练使用了 2 万个样本。
研究团队报告称,Blackwell 上的 NVFP4 吞吐量比 BF16 高出 2 倍。它保留了 BF16 检索精度的 99% 以上。NVFP4 卡还支持动态嵌入向量大小。你可以从 2048 维向量的起始位置切分出 1024 或 512 维。之后需要重新归一化。
交互式说明:五阶段检索路径
在接触代码之前,先观察路径的运行过程。它会以动画形式展示前缀添加、双向编码、平均池化、L2 归一化和点积评分。评分来自每张卡片公布的预期输出。
部署矩阵
正如上述演示所暗示的,这些检查点并不共享运行时路径。
| 特性 | 8B-BF16 | 1B-BF16 | 1B-NVFP4 |
|---|---|---|---|
| Transformers / Sentence Transformers | 是 | 是 | 否 |
| 用于 /v2/embed 的 vLLM | 0.25.0 | 0.25.0 | 0.25.0 |
| 微架构 | Ampere, Hopper, Blackwell | Ampere, Hopper, Blackwell | Ampere, Hopper, Lovelace, Blackwell |
| 测试硬件 | A100 80GB, H100 80GB | A100 80GB, H100 80GB | GB200, RTX 6000 PRO, A100, H100, L40, L4 |
| 训练数据 | 5000 万以上样本 | 850 万以上(蒸馏) | 2 万(QAD) |
除了检查点之外,NVIDIA 研究团队还发布了针对 1B 模型的优化版 NIM 微服务。基于 Rust 的 NIM 在 GB200 和 RTX PRO 6000 上达到或超越了 vLLM 检查点的性能。NVIDIA 测试了 256 和 1024 的输入序列长度。此外,NVIDIA NeMo AutoModel 配方涵盖了微调和蒸馏。
在代码中使用它
基于这些思路,前缀优先。查询使用 `query:` 前缀,文档使用 `passage:` 前缀。嵌入向量经过 L2 归一化处理,因此点积等于余弦相似度。
# pip install --upgrade "transformers>=5.2.0" "sentence-transformers>=5.4.1"
import torch
from sentence_transformers import SentenceTransformer
QUERIES = ["How can someone reduce exposure to pollen during allergy season?"]
DOCUMENTS = ["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."]
model = SentenceTransformer(
"nvidia/Nemotron-3-Embed-8B-BF16",
device="cuda",
model_kwargs={"dtype": torch.bfloat16,
# use "sdpa" if FlashAttention-2 is unavailable
"attn_implementation": "flash_attention_2"},
processor_kwargs={"padding_side": "left"},
)
model.max_seq_length = 32768
q = model.encode_query(QUERIES, batch_size=1, convert_to_tensor=True)
d = model.encode_document(DOCUMENTS, batch_size=1, convert_to_tensor=True)
print(model.similarity(q, d)) # card's published q[3]/d[3] score: 0.8008 `encode_query` 和 `encode_document` 会读取已保存的提示词。因此你无需手动添加前缀。在服务端,`/v2/embed` 会根据 `input_type` 自动应用这些前缀:
vllm serve nvidia/Nemotron-3-Embed-1B-NVFP4 \
--max-model-len 4096 \
--max-num-batched-tokens 4096 \
--max-cudagraph-capture-size 4096 import numpy as np, requests
def embed(input_type: str, texts: list[str]) -> np.ndarray:
r = requests.post(
"http://localhost:8000/v2/embed",
json={"model": "nvidia/Nemotron-3-Embed-1B-NVFP4",
"input_type": input_type, # "query" or "document"
"texts": texts,
"embedding_types": ["float"],
"truncate": "END"},
timeout=120,
)
r.raise_for_status()
return np.array(r.json()["embeddings"]["float"], dtype=np.float32)
scores = embed("query", QUERIES) @ embed("document", DOCUMENTS).T 应用场景与示例
- 多语言企业搜索:支持团队将印地语、日语和英语的工单统一建立索引。由于检索是跨语言的,德语查询可以找到日语编写的解决方案记录。
- 代码检索:训练数据包含 `coir_apps`、`coir_cosqa`、`synthetic_text2sql` 以及 SWE-bench。因此,自然语言到代码的查找更接近分布内场景。
- 智能体记忆:32,768 个 token 的限制让智能体能够嵌入较长的对话摘要,而无需进行激进的切分。
- 成本分层 RAG:使用 1B-NVFP4 模型处理高容量召回,将困难查询路由至 8B 模型。由于维度不同,这需要两个索引。
关键要点
- Nemotron-3-Embed-8B-BF16 在 RTEB 基准测试中排名第一,平均 NDCG@10 达到 78.46。
- 提供了三个开放检查点,涵盖 8B BF16、1B BF16 和 1B NVFP4。
- NVFP4 在 Blackwell 架构上吞吐量提升高达 2 倍的同时,保留了 BF16 精度 99% 以上的性能。
- 1B 模型通过 ModelOpt NAS 剪枝,并结合从 8B 模型进行的 COS+MSE 知识蒸馏得到。
- 所有检查点均使用 OpenMDW-1.1 数据集,并支持 32,768 个 token 的输入。