query: 与 passage: 前缀的秘密:Nemotron-3.5-Embed-8B-BF16 的 Chat Template 检索提示机制详解
  • 人工智能
  • 大模型
  • 基础模型
  • Embedding
  • 多模态
  • RAG

【免费下载链接】Nemotron-3.5-Embed-8B-BF16

项目地址:https://ai.gitcode.com/hf_mirrors/nvidia/Nemotron-3.5-Embed-8B-BF16
点击查看免费下载

Nemotron-3.5-Embed-8B-BF16 是 NVIDIA 推出的多模态检索向量(Embedding)模型,支持文本与文档图像输入。它表现出色的关键之一,就藏在query:与passage:这两个简短前缀,以及 Chat Template 如何将它们精准注入模型输入的机制里。本文面向新手,带你快速看懂这套检索提示机制,避开最常见的使用陷阱。

🧭 模型速览:它是什么

Nemotron-3.5-Embed-8B-BF16是一个基于 Transformer 的多模态双编码器(bi-encoder)检索模型,参数规模 8.38B,主要信息可在 README.md 中查到:

项目说明
输入查询(query)仅限文本;文档(passage)可为文本、图像或图文组合
输出4096 维 L2 归一化向量,支持从尾部截断为 1024/512 维
语言文本检索覆盖 34 种语言,图像检索覆盖 18 种语言
上下文最长 32,768 tokens
典型场景语义搜索、多模态检索、RAG 问答

向量生成流水线由 modules.json 定义:Transformer → Pooling → Normalize,即先编码、再做 mean pooling(见 1_Pooling/config.json),最后 L2 归一化,这样余弦相似度就等于向量点积。

🔑 为什么必须有 query: 和 passage: 前缀?

双编码器模型在训练时,"查询"和"文档"是用不同的前缀分别学习编码的。模型需要知道:眼前这段文字是"一个问题"还是"一篇待检索的文档",两者在语义空间里的表示方式并不相同。

官方在前置提示配置 config_sentence_transformers.json 中明确写死了这两个前缀:

"prompts": { "query": "query: ", "document": "passage: " }

对应关系一目了然:

输入类型前缀说明
用户查询query:仅文本,如query: What is NVIDIA NeMo Framework?
文档/段落passage:文本、图像或图文组合

如果漏掉前缀直接编码,向量会偏离训练时的分布,相似度排序的质量可能明显下降——这是新手使用检索向量模型时最容易踩的坑之一。

🧩 Chat Template 检索提示机制:逐段拆解

真正让前缀"注入"到模型输入的,是仓库中的 chat_template.jinja。它名为nemo-mistral-retrieval-v1(chat_template.jinja),由 Mistral Ministral-3 的对话模板改造而来,但专为检索场景做了三处关键设计:

第 1 步:system 消息 = 检索前缀

对话模板把system消息的内容当作检索前缀使用(chat_template.jinja)。模板会去掉前缀尾部多余空格再补一个空格,保证最终输出严格是query:或passage:——无论你是否多打了空格,渲染结果都一致。

调用方只需要构造两条消息:

messages = [ {"role": "system", "content": "query:"}, # 文档则写 "passage:" {"role": "user", "content": "What is NVIDIA NeMo Framework?"}, ] inputs = processor.apply_chat_template(messages, tokenize=True)

第 2 步:user 消息 = 查询或文档正文

user消息承载真正要编码的内容,渲染时有一个巧妙的"安全转义":mark_user_text宏(chat_template.jinja)会在用户文本中的[和<后面插入一个零宽字符。这样即使文档正文里恰好出现[IMG]、[INST]这类标记,也不会被模型误认为特殊结构,属于防注入的细心思。

第 3 步:图像统一替换为 [IMG] 占位符

对于图文输入,模板会先把所有图像块规范化为[IMG]占位符(图像统一排在文本之前),再由处理器替换为真实视觉 token。图像相关的特殊 token([IMG]、[IMG_BREAK]、[IMG_END])定义在 tokenizer_config.json 中,图像处理器配置见 processor_config.json(默认最长边 1,120 像素)。

附加:严格的格式校验

模板只接受「一条 user 消息 + 可选的前置 system 前缀」这一种结构,其他形式会直接抛出异常(chat_template.jinja):

Retrieval inputs require one user message with an optional leading system prefix

这个校验能帮你在调用阶段就发现消息结构写错的问题,而不是得到莫名其妙的低分结果。

还有一个容易被忽视的细节:与普通对话模型不同,这个模板刻意省略了[INST]/[/INST]等生成式对话包装和 BOS/EOS 特殊 token(chat_template.jinja 的注释说明了这一点),目的是让推理时的 token 序列与训练时逐 token 完全一致。这也是 vLLM 示例中要设置add_special_tokens=False的原因。

🛠️ 三种主流用法的差异对比

同一套前缀机制,在三种运行框架中的暴露方式不同:

框架前缀如何生效要点
Transformers手动构造消息,system写query:/passage:,调用processor.apply_chat_template需要自己保证消息结构
Sentence Transformersmodel.encode_query()/model.encode_document()自动注入前缀前缀来自 config_sentence_transformers.json,最省心
vLLM请求体里的input_type字段取query或document,服务端自动套用前缀建议配合truncate="END"处理超长输入

Sentence Transformers 的两行调用最能体现"前缀自动化":

query_embedding = model.encode_query([query]) # 自动加 "query: " doc_embeddings = model.encode_document([documents]) # 自动加 "passage: "

1_Pooling/config.json 中"include_prompt": true表示池化时会把前缀 token 一并纳入,这正是前缀影响最终向量的原因。

⚠️ 新手常见坑:3 个自查问题

  1. 相似度整体偏低?先检查查询和文档是否分别使用了query:与passage:前缀,两边前缀不能互换。
  2. 结果不如预期?确认没有绕过 Chat Template 直接拼接字符串;模板的转义与规范化(去多余空格、零宽字符插入)都是对齐训练数据的一部分。
  3. 图文输入报错或超长?图像 token 也计入 32,768 的上下文上限,图像过大时调低分辨率即可;官方完整示例与示例输出(相关文档相似度约 0.58,无关文档约 0.25)见 README.md。

📂 相关核心文件一览

文件作用
chat_template.jinja检索版 Chat Template,前缀注入与格式校验的核心
config_sentence_transformers.jsonquery:/passage:前缀定义
1_Pooling/config.jsonmean pooling 与include_prompt配置
modules.jsonTransformer → Pooling → Normalize 流水线
processor_config.json图像处理器与[IMG]相关 token 配置
tokenizer_config.json词表与特殊 token 定义

📌 小结

Nemotron-3.5-Embed-8B-BF16 的检索提示机制可以浓缩成三句话:查询加query:前缀,文档加passage:前缀;前缀由 Chat Template 统一注入并做 token 级对齐;不同框架下只需按各自方式声明输入类型即可。理解这套机制后,无论是搭建语义搜索还是多模态 RAG,你都能把模型的使用方式保持在它"最熟悉"的训练分布之内,从而拿到稳定的检索效果。

  • 人工智能
  • 大模型
  • 基础模型
  • Embedding
  • 多模态
  • RAG

【免费下载链接】Nemotron-3.5-Embed-8B-BF16

项目地址:https://ai.gitcode.com/hf_mirrors/nvidia/Nemotron-3.5-Embed-8B-BF16
点击查看免费下载
上一篇:Apache DataFusion持续集成配置:GitHub Actions最佳实践
下一篇:告别访问限制:rutracker-proxy自动切换代理功能深度解析

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

别让向量检索背锅:GraphRAG与Agent调度器重塑RAG检索架构

别让向量检索背锅:GraphRAG与Agent调度器重塑RAG检索架构

做RAG项目的同学&#xff0c;最焦虑的时刻往往不是模型回答错了&#xff0c;而是检索回来的上下文看起来都对&#xff0c;模型却给出了一个完全编造的数字。最近我把一整套知识问答系统的检索层重构了一遍&#xff0c;核心思路就是标题里那句话&#xff1a;别让向量检索背上所有…

2026/10/20 2:50:44 阅读更多 →
AI Agent落地避坑:从架构治理到成本控制的实战指南

AI Agent落地避坑:从架构治理到成本控制的实战指南

“龙虾”这个比喻是我在一个技术群里看到的。当时有人吐槽自家公司的大模型Agent项目&#xff1a;GPU买了、算法团队扩了、Prompt调了一版又一版&#xff0c;结果线上效果越来越差&#xff0c;账单却越来越厚。评论区一句话总结——“像养龙虾&#xff0c;越养越贵&#xff0c;…

2026/10/20 2:50:44 阅读更多 →
模型轻量化与高效部署实战:剪枝、量化、蒸馏全流程解析

模型轻量化与高效部署实战:剪枝、量化、蒸馏全流程解析

写周报这件事&#xff0c;我不知不觉坚持到了第三十九期。从最开始记录一些基础论文的阅读笔记&#xff0c;到后来逐渐转向实验复现、工程踩坑、性能调优&#xff0c;这三十几周的内容基本就是我一个人从入门到能独立做一些模型落地工作的完整轨迹。这一期我不想写那种罗列了一…

2026/10/20 2:50:44 阅读更多 →

最新新闻

本地推理实战:用llama.cpp与ollama部署LFM2.5-1.2B小模型

本地推理实战:用llama.cpp与ollama部署LFM2.5-1.2B小模型

1. 上手前的心里话&#xff1a;为什么大家都盯着小模型本地推理最近圈子里聊本地大模型&#xff0c;基本绕不开两个东西&#xff1a;llama.cpp 和 ollama。而我这段时间一直在折腾的主角&#xff0c;是 LFM2.5-1.2B 这个模型。别看它只有 1.2B 参数&#xff0c;实测下来每秒能跑…

2026/10/20 3:51:14 阅读更多 →
CPU推理LFM2.5-1.2B:llama.cpp与ollama的15token/s实战

CPU推理LFM2.5-1.2B:llama.cpp与ollama的15token/s实战

). To avoid truncated thinking or repeated loops, set appropriate stop sequences; generate_enough tokens because thinking consumes budget; temperature lower (0.6-0.7); maybe set--no-cnv? Simpler: stop attags if present; handle "过度思考" issue b…

2026/10/20 3:51:14 阅读更多 →
PyTorch 2.1神经网络构建核心:计算图、编译与内存控制

PyTorch 2.1神经网络构建核心:计算图、编译与内存控制

1. 这不是“Hello World”式教学&#xff1a;为什么从PyTorch 2.1开始构建神经网络&#xff0c;必须绕开90%初学者踩过的坑你点进来的这个标题——“【PyTorch】2.1 使用Pytorch构建一个神经网络”——看起来平平无奇&#xff0c;甚至有点过时。毕竟PyTorch都出到2.3了&#xf…

2026/10/20 3:51:14 阅读更多 →
LiteLLM实战:统一大模型网关的部署与路由策略

LiteLLM实战:统一大模型网关的部署与路由策略

1. 项目概述&#xff1a;LiteLLM 到底是什么&#xff0c;凭什么值得关注干了这些年大模型应用开发&#xff0c;我最大的痛感就是“供应商锁定”和“接口碎片化”。今天调这家模型用一套参数&#xff0c;明天换那家模型又是另一套鉴权和超时策略&#xff0c;光适配层代码就写到手…

2026/10/20 3:51:14 阅读更多 →
OpenClaw Agent日均成本从50元到0.48元:AI工具调用优化实战

OpenClaw Agent日均成本从50元到0.48元:AI工具调用优化实战

1. 一天50块是怎么烧掉的&#xff1a;一次天气查询的完整计费分解先说个真实的场景。某位朋友在群里截图问我&#xff1a;他给OpenClaw配好了工具链&#xff0c;让它每天早上9点自动查一次当天的天气&#xff0c;顺便提醒要不要带伞。结果月底一看账单&#xff0c;光这一条自动…

2026/10/20 3:51:14 阅读更多 →
技能管理实战:识别、组合与迁移,打造个人核心竞争力

技能管理实战:识别、组合与迁移,打造个人核心竞争力

有一次帮一位朋友梳理简历&#xff0c;他接到一个面试问题——“你最擅长的三项技能是什么”。他愣了半天&#xff0c;最后写的是"Excel、PPT、沟通"。写完连他自己都不信&#xff0c;觉得这跟没说一样。那一刻我突然意识到一件事&#xff1a;我们几乎每天都在提&quo…

2026/10/20 3:50:14 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →