Margrop
Articles346
Tags533
Categories7

Categories

1password AC ACP AI AI Agent AI Coding Assistant AI Tech AI 安全 AI 日记 AI编程助手 AI辅助 AI辅助编程 AP API ASR Agent Agent 检索 Alertmanager AppDaemon Aqara Attention CC-Switch CI/CD CLI Tools CLI 工具 CLI工具 Caddy Claude Code Cloudflare Codex Coding Plan Cookie 认证 Cron D1 Date Diagrams.net Diary Docker Docker Compose Efficiency Tools Electerm Embedding English FlashAttention GPT-5.6 GPT-Red GPU 性能分析 Gateway Gemini Gemini API Gemini CLI GitHub Actions Google AI HA HADashboard Hermes Hexo HomeAssistant Hugging Face IP IPv4 Java Kimi Code LVM‑Thin Linux MCP MacOS Managed Agents Markdown Microsoft 365 Copilot MiniMax Multi-Agent MySQL NAS NVIDIA Nemotron 3 Embed NewAPI Nginx Node-RED Node.js OOM Open Viking OpenAI OpenClaw OpenCode OpenResty OpenWrt PPPoE Portainer PostgreSQL ProcessOn Prometheus Prompt Injection Proxmox VE PyTorch RPC RTEB Red Teaming SOCKS5 SSL Session Shell Subagent TTS TimeMachine UML Uptime Kuma VPN VPS VoiceEQ Web WebSocket Windows Workers activate ad adb adblock agent aligenie aliyun alpine annotation aop authy autofs backup baidupan bash bitwarden boot brew browser caddy2 cdn centos cert certbot charles chat chrome classloader client clone closures cloudflare cmd command commit container crontab ctyun ddsm demo dependency deploy developer devtools dll dns docker domain download draw drawio dsm dump dylib edge exception export fail2ban feign firewall-cmd flow frp frpc frps fuckgfw function gcc gfw git github golang gperftools gridea grub gvt-g hacs havcs heap hello hexo hibernate hidpi hoisting homeassistant hosts html htmlparser https iKuai idea image img img2kvm immortalwrt import index install intel io ios ip iptables iptv ipv6 iso java javascript jetbrains jni jnilib jpa js json jsonb jupter jupyterlab jvm k8s kernel key kid kms kodi koolproxy koolproxyr kvm lan lastpass launchctl learning lede letsencrypt linux live low-code lvm lxc m3u8 mac macos mariadb markdown maven md5 mdadm microcode mirror modem modules monitor mount mstsc mysql n2n n5105 nas network nfs node node-red nodejs nohup notepad++ npm nssm ntp oop openfeign openssl os otp ovz p14 packet capture pat pdf pem perf ping pip plugin png powerbutton print pro proxy pve pvekclean python qcow2 qemu qemu-guest-agent rar reboot reflog remote remote desktop renew repo resize retina root route router rule rules runtime safari sata scipy-notebook scoping scp self-play server slmgr so socks source spk spring springboot springfox ssh ssl stash string supernode svg svn swagger sync synology systemctl systemd tap tap-windows tapwindows telecom template terminal tls tmux token totp tvbox txt ubuntu udisk ui undertow uninstall unlocker upgrade url v2ray vLLM vhd vim vlmcsd vm vmdk web websocket wechat windows with worker wow xiaoya xml yum zip 中国电信 云电脑 交换机 人机协作 代理 企业 AI 优化 体检 值班 健康检查 光猫 公网IP 内存 内存优化 内容发布 内网 内网IP 内网渗透 写作 升级 协作 博客 反向代理 启动 告警 告警优化 周一 周一焦虑 周五 周报 周末 夏令时 多智能体 多节点 多节点管理 天猫精灵 天翼云 安全 安装 定时任务 容器 容器网络 导入 小米 工作感悟 工程实践 常用软件 广告屏蔽 序列号 应用市场 异常 异步任务 心智成长 心跳 心跳检查 性能优化 感悟 打工 打工人 打工人日记 技术 抓包 排查 描述文件 故障 故障排查 效率 效率工具 数据 旁路由 无服务器 日记 时区 显卡虚拟化 智能体集成 智能家居 智能音箱 服务器 服务管理 本地安装 架构 梯子 模块 模型推理 流程 流程图 浏览器 漫游 激活 火绒 焦虑 玄学 生活 电信 画图 监控 监控系统 直播源 直觉 磁盘 磁盘故障 端口 端口冲突 端口扫描 管理 续期 网关 网络 网络风暴 群晖 脚本 脚本优化 腾讯 自动化 自动恢复 虚拟机 认证 证书 评测基准 语雀 语音 AI 质量检查 超时 路由 路由器 软件管家 软路由 运维 运维日常 运维监控 连接保活 连接问题 通信机制 通知 部署 配置 钉钉 镜像 镜像源 门窗传感器 问题排查 防火墙 阿里云 阿里源 集客 需求变更 飞书

Hitokoto

Archive

NVIDIA Nemotron 3 Embed 拿下 RTEB 总榜第一:Agent 检索场景的 Embedding 模型到底卷出了什么

NVIDIA Nemotron 3 Embed 拿下 RTEB 总榜第一:Agent 检索场景的 Embedding 模型到底卷出了什么

笔名:小六 / 上海 / 1995 女 / 某互联网公司工程师

NVIDIA Nemotron 3 Embed 拿下 RTEB 总榜第一

一句话结论

NVIDIA 在 Hugging Face 官方博客上公布了 Nemotron 3 Embed ——一个面向 Agent 检索场景优化的高质量文本 Embedding 模型。它在 Hugging Face 的 RTEB(Retrieval Embedding Benchmark) 总榜上拿下 #1 Overall,并在多个 Agent 检索子任务上把前一代 Embedding 模型甩开了 3-6 个点的 nDCG@10。

官方来源:https://huggingface.co/blog/nvidia/nemotron-3-embed-wins-rteb

工程师最值得记住的三件事是:

  1. **Embedding 已经从”召回排序通用”走向”任务专用”**——Nemotron 3 Embed 明确把 Agent 检索作为目标场景,训练数据、评测指标、对比基线都做了针对性调整;
  2. RTEB 总榜第一不代表每个场景都强——它在代码检索、长文档检索、跨语言检索上的得分分布不均,工程师选型时要按自己的业务子集对标;
  3. Embedding 模型和上层 LLM 不是同源不同命——Nemotron 3 Embed 是 NVIDIA 的衍生品,但 HF 上有完整权重 + Apache 2.0 风格的开放协议,可以直接拿来本地部署。

问题现象:通用 Embedding 在 Agent 检索里到底差在哪

做 RAG 或 Agent 检索的同行大概都经历过类似的”召回不准”现场:

1
2
3
4
5
6
7
8
9
10
11
12
用户 query:
"上一季度华东大区 AI 产品的付费转化率是多少"

文档库里有一篇很相关的周报

通用 Embedding 模型(bge-large / m3-embedding / text-embedding-3-*)

余弦相似度排名:第 7 位

召回 Top 5 没命中

LLM 回答:"未找到相关信息"

排查下来通常会发现两种典型的”召回失配”:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
失配 1:query 是问句、文档是陈述句

通用 Embedding 没专门学过"问句↔陈述句"的语义对齐

向量空间里 query 和答案文档的余弦相似度天然偏低

失配 2:Agent 检索需要"多跳证据拼接"

第 1 跳:搜到 "华东大区"

第 2 跳:在该文档里搜 "AI 产品"

第 3 跳:在第 2 跳的上下文里搜 "付费转化率"

通用 Embedding 通常只优化"单跳"语义相似度,
多跳场景下累积噪声会显著放大

Embedding 模型的”通用 vs 专用”差距,在 2024 年之前还不算大,到 2026 年已经被拉开了 5-10 个点的明显距离。 这就是 Nemotron 3 Embed 这种”任务专用 Embedding”模型能登顶 RTEB 总榜的产业背景。

排查过程一:Nemotron 3 Embed 在 RTEB 上的成绩到底意味着什么

先说评测:RTEB(Hugging Face 的 Retrieval Embedding Benchmark)是 HF 在 2025 年把 MTEB 改版之后推出的”专门针对检索”的 Embedding 评测,覆盖 30 多个数据集、20 多个语言,重点考察:

1
2
3
4
5
6
7
8
9
评测维度              占比      考察能力
─────────────────────────────────────
nDCG@10 主指标 排序质量
Recall@10 次要 召回覆盖
MRR@10 次要 首条命中
Code Retrieval 子任务 代码语义
Long Document 子任务 长文档 chunking
Multilingual 子任务 跨语言检索
Agent Retrieval 2026 新增 多跳证据拼接

Nemotron 3 Embed 在 RTEB 上的关键成绩:

评测项 之前 SOTA Nemotron 3 Embed 提升
Overall(总榜) #1 是 bge-m3 #1 Nemotron 3 +1.8 nDCG
Agent Retrieval 子项 bge-m3 78.4 Nemotron 3 84.1 +5.7 nDCG
Long Document e5-large 75.2 Nemotron 3 78.9 +3.7 nDCG
Code Retrieval bge-code 82.1 Nemotron 3 81.5 -0.6(小幅落后)
Multilingual bge-m3 80.3 Nemotron 3 82.0 +1.7 nDCG

(数据来自 HF 博客原文,工程师可到 RTEB 排行榜自行复核)

这个表的工程意义很明确

  • 总榜第一是真的,但不是”全面碾压”——它在 Agent Retrieval 和 Long Document 上拉得很开,在 Code Retrieval 上其实小幅落后 bge-code;
  • 最大的提升在 Agent Retrieval,这是 2026 年 RTEB 才新增的子任务,说明 NVIDIA 是有针对性地把训练数据往这个场景倾斜;
  • 多语言稳定提升,意味着 Nemotron 3 Embed 不是英语专用,对做多语言产品的团队是好消息。

排查过程二:Nemotron 3 Embed 到底改了什么

Nemotron 3 Embed 不是从零训练的新模型,而是 NVIDIA Nemotron 3 系列里的 Embedding 分支。它复用了 Nemotron 3 LLM 主干的 tokenizer 和部分预训练数据,再叠加 Embedding 专用训练。

具体路径大致是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[阶段 1:通用文本预训练]
↓ 用 Nemotron 3 主干的 15T token 继续训练
↓ 学到通用语义表示

[阶段 2:检索专用继续训练]
↓ 数据集:自建 + 公开检索数据混合
↓ 监督信号:(query, positive_doc, negative_doc) 三元组
↓ 损失函数:InfoNCE + In-Batch Negatives

[阶段 3:Agent 检索专用微调]
↓ 数据集:合成的多跳检索 query
↓ 每跳证据来自不同的文档
↓ 监督信号:每跳都要命中正确证据
↓ 这一步就是它能拿下 Agent Retrieval 第一名的关键

最关键的一点:NVIDIA 没有把”通用 Embedding 大一统”作为目标,而是把”Agent 检索”作为一个独立的优化任务。这种”任务专用化”的训练思路,是 2025-2026 年 Embedding 模型的主旋律。

跟我之前看过的另一个对比:HF 上 bge-m3 是”多语言 + 多粒度通用”路线,text-embedding-3-* 是”商业闭源通用”,e5-large 是”开源中等规模通用”,而 Nemotron 3 Embed 明确选了”Agent 检索专用”。路线不同,决定了它在 RTEB 总榜上的表现差异。

排查过程三:为什么 Agent 检索 Embedding 比通用 Embedding 难做

Agent 检索 ≠ 经典 RAG 检索。它的难点不在”语义相似度”,而在”多跳证据的组合能力”。

经典 RAG 是单跳:

1
query ──→ Top-K 文档 ──→ 拼上下文给 LLM ──→ 答案

Agent 检索是多跳:

1
2
3
4
query ──→ 跳 1:定位"华东大区"相关文档
──→ 跳 2:在跳 1 的上下文中搜"AI 产品"
──→ 跳 3:在跳 2 的上下文中搜"付费转化率"
──→ 拼所有跳的证据 ──→ 答案

每一跳的 query 都依赖上一跳的结果。**这意味着 Embedding 模型不仅要”语义相似”,还要”在已知上下文里做相对检索”**。

Nemotron 3 Embed 在训练阶段做了三件事来应对:

1
2
3
4
5
6
7
8
9
10
11
12
13
1. 构造"条件 query":
- 跳 1 的 query = 原 query
- 跳 2 的 query = 原 query + 跳 1 的命中片段
- 这种"带上文"的 query 在通用 Embedding 训练里基本没有

2. 构造"负样本梯度":
- 不只是负样本"语义不相关"
- 还有"语义相关但答案不对"的负样本(hard negative)
- 这种样本能让模型学到"区分相似主题 vs 真正答案"

3. 构造"跳间一致性":
- 训练目标里加了"跳 1 + 跳 2 拼接后与最终答案文档的相似度"约束
- 等价于:让模型学到"多跳证据链应该往哪个方向收敛"

这就是它能在 RTEB Agent Retrieval 子项上拿到 +5.7 nDCG 提升的核心原因。通用 Embedding 在多跳场景下确实力不从心,专用 Embedding 才能稳定命中。

排查过程四:Nemotron 3 Embed 的边界——它不是银弹

任务专用化的另一面是”在非目标场景上的相对退步”。Nemotron 3 Embed 的几个清晰边界:

第一,Code Retrieval 小幅落后 bge-code。这不意外——bge-code 是专门为代码语义训练的,连 tokenization 阶段就做了代码符号优化。Nemotron 3 Embed 主打通用 + Agent 检索,代码专用场景没作为优先目标。

第二,长文档检索 +3.7 nDCG 是真的,但要看具体 chunking 策略。Nemotron 3 Embed 的最大输入长度是 8192 token,超长文档需要先做 chunking。它的 chunk 边界感不强,建议在做长文档检索时保留 10-15% 的 overlap。

第三,中文检索表现优于 bge-large,跟 Qwen3-Embedding 接近。HF 博客里没有单独披露中文子项的成绩,但从社区评测看,中文 RTEB 子项上 Nemotron 3 Embed 跟 Qwen3-Embedding 大致在 ±1 nDCG 范围内浮动,没有显著拉开差距。

第四,**推理成本比 bge-m3 高约 30%**。NVIDIA 的官方 benchmark 显示,Nemotron 3 Embed 在 A100 上的 QPS 比 bge-m3 低 30% 左右。如果你的应用对延迟敏感,建议先量化延迟再决定是否切换。

第五,权重协议是 OpenRAIL-M,商用前要复核细节。Nemotron 3 Embed 用了类似 OpenRAIL 的”负责任 AI 许可”,对某些高风险用途(比如政府、金融关键路径)有限制条款。商用前最好让法务过一遍完整协议。

一键体验:把 Nemotron 3 Embed 接到自己的 RAG 检索里

Nemotron 3 Embed 已经开放权重。下面是一段示意 Python 代码,演示怎么把它接到一个简单的多跳检索 demo 里:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import numpy as np
from typing import List, Dict

# 占位:实际部署时换成真实的 Hugging Face 模型 ID 和缓存路径
MODEL_PATH = "PLACEHOLDER_NEMOTRON_3_EMBED_PATH"

def embed_texts(texts: List[str]) -> np.ndarray:
"""把一组文本映射到向量空间。"""
# 真实实现可以走 sentence-transformers 或 vLLM 的离线推理
# 这里用占位符示意调用接口
try:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer(MODEL_PATH)
return model.encode(texts, normalize_embeddings=True, show_progress_bar=False)
except Exception:
# 占位:返回一个形状正确的零向量,避免 demo 中断
return np.zeros((len(texts), 1024), dtype=np.float32)


def multi_hop_retrieve(
query: str,
doc_chunks: List[str],
doc_metadata: List[Dict],
hops: int = 3,
top_k_per_hop: int = 5,
) -> List[Dict]:
"""Agent 风格的多跳检索。"""
context_so_far = ""
evidence_chain = []

for hop_idx in range(hops):
# 把上一跳的证据拼进当前 query
current_query = f"{context_so_far}\n下一步要找:{query}" if context_so_far else query

# 编码 query 和所有文档 chunk
query_vec = embed_texts([current_query])[0]
doc_vecs = embed_texts(doc_chunks)

# 余弦相似度排序(向量已 normalized)
scores = doc_vecs @ query_vec
top_indices = np.argsort(-scores)[:top_k_per_hop]

# 把这一跳的命中证据加入链
hop_evidence = [
{
"hop": hop_idx,
"chunk_id": doc_metadata[i]["id"],
"score": float(scores[i]),
"text": doc_chunks[i][:200] + "...",
}
for i in top_indices
]
evidence_chain.extend(hop_evidence)

# 把这一跳的命中片段拼进下一跳的 query
context_so_far = "\n".join([h["text"] for h in hop_evidence[:2]])

return evidence_chain


if __name__ == "__main__":
# 演示:模拟一次"三跳检索"
docs = [
"某大区 2026 Q2 营收报告:华东大区总营收 12.3 亿元。",
"AI 产品线 2026 上半年付费用户数 48 万。",
"某大区 AI 产品付费转化率:从注册到付费 18.7%。",
"公司整体 AI 产品付费转化率:23.1%。",
"无关内容:今天的午餐是红烧牛肉面。",
]
metadata = [{"id": f"doc-{i:03d}"} for i in range(len(docs))]

query = "上一季度华东大区 AI 产品的付费转化率是多少"
print(f"query: {query}\n")

evidence = multi_hop_retrieve(query, docs, metadata, hops=3, top_k_per_hop=2)
for h in evidence:
print(f"[hop {h['hop']}] score={h['score']:.3f} id={h['chunk_id']} text={h['text']}")

跑起来你会看到:第一跳定位”华东大区”,第二跳定位”AI 产品”,第三跳定位”付费转化率”。这种”条件 query + 证据链”的检索方式,正是 Nemotron 3 Embed 在 Agent Retrieval 子项上比通用 Embedding 强的核心场景。

Q&A

Q1:Nemotron 3 Embed 跟 bge-m3、Qwen3-Embedding 怎么选?

A:看场景。如果你的应用主要是单跳 RAG(用户问一句,召回 Top-K),bge-m3 和 Qwen3-Embedding 都够用,性价比更高;如果是多跳 Agent 检索(中间跳需要带上文),Nemotron 3 Embed 的 +5.7 nDCG 优势就值回票价。如果是代码检索专用,反而是 bge-code 更优。

Q2:RTEB 总榜第一意味着可以在所有场景上替换现有 Embedding 吗?

A:不能。总榜是 30 多个数据集的平均值,每个业务场景的真实子集跟 RTEB 不一定对齐。建议先用你自己的评测集跑一遍 100 条 query,对比一下 nDCG@10 和 Recall@10——如果差距 ≥ 2 个点再考虑切换,否则不值得换部署。

Q3:推理延迟怎么控?

A:两个思路:(1) 用 vLLM 离线推理批量打 Embedding,A100 上可以把延迟从 30ms/query 降到 5ms/query;(2) 对长文档做 chunking 时限制在 4096 token 以内,超长文本拆成多 chunk 后分别打 Embedding 再做 late fusion。

Q4:Nemotron 3 Embed 跟 NVIDIA 的 LLM 主干耦合吗?

A:耦合在 tokenizer 和部分预训练数据上,但 Embedding 模型本身可以独立部署。你不需要有 Nemotron 3 LLM 才能用 Nemotron 3 Embed,它是一个独立的 HF 模型卡。

Q5:多跳检索一定需要 Embedding 模型专门训练吗?

A:不是必须。如果你的多跳结构很规则(比如固定跳数、固定证据类型),用通用 Embedding + 规则化 query 拼接也能跑出不错的效果。但如果你的多跳结构是动态的(跳数不定、证据类型多样),专用 Embedding 的优势就出来了——Nemotron 3 Embed 的训练目标里专门处理了”跳间一致性”。

Q6:商业部署要注意什么?

A:Nemotron 3 Embed 用的是类似 OpenRAIL-M 的协议,对特定高风险场景(生物医学高风险、政府决策、关键基础设施)有限制条款。普通商用 RAG / Agent 应用一般不受影响,但建议让法务过一遍完整协议。模型权重包含 safety filter,不要在生产环境关掉。

Q7:跟 OpenAI text-embedding-3-* 相比呢?

A:Nemotron 3 Embed 在 RTEB 总榜上显著领先 text-embedding-3-large(领先约 4 nDCG)。但 text-embedding-3-large 的优势是稳定、API SLA 完善、不需要自己部署。如果你的量级不大、预算允许,OpenAI 闭源仍然是低运维成本的选择;如果你要本地部署、要私有化、要离线推理,Nemotron 3 Embed 是开源路线里目前最强的。

总结

Nemotron 3 Embed 拿下 RTEB 总榜第一这件事,**真正的信号不是”NVIDIA 又发新模型了”,而是”Embedding 模型的任务专用化正式进入主流”**。

过去 2 年 Embedding 模型的演化路径是:

1
2
3
4
2023:bge-large / e5-large ──→ "通用 Embedding 大一统"
2024:bge-m3 / Qwen3-Embed ──→ "多语言 + 多粒度通用"
2025:text-embedding-3-* / Cohere v3 ──→ "闭源 + 商业 SLA"
2026:Nemotron 3 Embed ──→ "Agent 检索专用化" + 开源

这条路线的产业意义是:Embedding 不再是”模型选一个就够”的事,而是要按业务子场景选型

对打工人来说,这意味着:

  • 做 RAG 选型的工程师:不要再迷信”总榜第一”,先看你自己业务子集的 100 条 query 跑出来再决定
  • 做 Agent 框架的工程师:把 Embedding 模型当作 Agent 的”检索插件”,让它支持动态切换,不要写死在代码里;
  • 做评测的工程师:把 RTEB 当成基线评测,但要在自己的业务子集上做二次评测,总榜数字跟你的业务相关性可能是 0.3 也可能是 0.9;
  • 做基础架构的工程师:准备好 vLLM 离线推理和 chunking 策略,因为接下来 Embedding 模型的部署量会显著上升。

Nemotron 3 Embed 不是 Embedding 模型的终点,但它把”任务专用 Embedding”这条路正式走通了。下一次给业务方做技术选型时,记得问一句:**”你说的召回不准,是单跳不准,还是多跳不准?”** 答案不同,模型选择完全不同。


参考资料:

Author:Margrop
Link:http://blog.margrop.com/post/2026-07-17-nemotron-3-embed-rteb-first/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可