深入解析NVIDIA RAG Blueprint架构:7大核心组件如何协作完成一次RAG查询
深入解析NVIDIA RAG Blueprint架构:7大核心组件如何协作完成一次RAG查询
NVIDIA RAG Blueprint 是 NVIDIA 开源的检索增强生成(RAG)参考解决方案,它将大语言模型的推理能力与可信数据源的实时检索结合,让 AI 回答"言之有据"。本文带你深入拆解这套 RAG 架构:从用户提问到答案返回,7大核心组件(RAG UI、编排服务器、查询处理、Retriever、Reranker、LLM 生成、可选增强层)如何接力协作,完成一次完整的 RAG 查询。无论你是想了解 RAG 架构原理的新手,还是准备落地企业级检索增强系统的工程师,这份架构解析都能帮你快速建立全局认知。🧭
一张图看懂 NVIDIA RAG Blueprint 架构全景
下图是项目官方的架构图,它清晰地分为上下两条管线:下方的 Ingestion Pipeline(数据摄取管线) 负责把企业多模态文档解析、抽取、向量化后存入 Vector Database、Object Store 和 Data Catalog;上方的 RAG Pipeline(查询管线) 则负责响应用户提问。
两条管线通过向量数据库(cuVS 加速) 交汇:摄取管线把知识"存进去",查询管线从里面"取出来"。记住这张图,后文的 7 大组件都会一一落到对应位置。
一次 RAG 查询的旅程:7 大核心组件详解
组件 1:RAG UI —— 用户提问的入口 🖥️
RAG UI(源码位于 frontend/)是一个基于 React 的轻量级 Web 界面,部署后在 http://localhost:8090 打开即可使用。它承担三个职责:
- 集合管理:创建 Collection、上传文档(支持 PDF、DOCX、图片、音频等);
- 对话交互:多轮对话、流式输出、图片附件;
- 功能开关:在 Settings 面板中实时调节 reranking、引用、Guardrails 等特性。
用户在输入框提交问题后,UI 会向后端 API 发起请求——RAG 查询之旅就此开始。
组件 2:RAG Orchestrator Server —— 总调度台 🎯
这是整个系统的"大脑",一个基于 FastAPI 的服务(核心代码见 src/nvidia_rag/rag_server/server.py),对外暴露三类 API:
| 端点 | 作用 |
|---|---|
/v1/generate |
完整 RAG 流程:检索 + 生成,流式返回答案 |
/v1/chat/completions |
OpenAI 兼容接口,方便接入现有生态 |
/search |
只检索不生成,返回相关文档片段 |
真正的编排逻辑集中在 src/nvidia_rag/rag_server/main.py 中的 NvidiaRAG 类:generate() 方法接收请求参数(如 vdb_top_k、reranker_top_k、enable_reranker 等),_rag_chain() 方法则把后续 5 个组件串成一条流水线,并支持标准 RAG 与 Agentic RAG 双链路切换。
组件 3:Query Processing —— 查询理解与改写 📝
用户的问题往往不适合直接拿去检索:多轮对话中的"它的价格是多少?"缺少主语;口语化表达与文档术语对不上。Query Processing 阶段会借助 LLM 结合对话历史,把模糊的追问改写成独立、信息完整的查询,显著提升后续召回率。
此外,该阶段还可以动态生成过滤表达式(Filter Expression),把"只查 2024 年 Q3 财报"这类约束转成对向量数据库的元数据过滤条件。相关实现见 src/nvidia_rag/utils/filter_expression_generator.py 与 src/nvidia_rag/utils/embedding.py。
组件 4:Retriever —— Embed NIM 与向量数据库 🔍
改写后的查询由 Retriever 组件处理,它包含两步:
- 向量化:NeMo Retriever Embedding NIM 把查询文本转换成向量;
- 相似度搜索:在 cuVS(NVIDIA GPU 加速库)加持的向量数据库中做近邻检索,返回
vdb_top_k(默认 40)个候选片段。
向量库是可插拔的,内置三种实现:Elasticsearch、Milvus(GPU 加速)、LanceDB,源码位于 src/nvidia_rag/utils/vdb/。原始文档(图片、表格等二进制内容)则存放在 S3 兼容的 Object Store 中,由向量库中的索引指向,实现"轻量索引 + 重量内容"的分离。
组件 5:Context Reranker —— 精准重排序 ⚖️
向量检索擅长"广度"(快速圈出 40 个相关片段),但排序精度有限。Reranker 使用 NeMo Retriever Rerank 模型对候选片段做精细打分,只保留最相关的 reranker_top_k(默认 10)个片段作为上下文——典型的"宽网撒出、高精准收割"策略。这一步通常能以很小的延迟代价显著提升回答准确率,可在 UI 的 Settings 中一键开关。
组件 6:LLM 生成 —— Nemotron 模型与引用溯源 ✍️
精选的上下文连同查询一起送入 LLM 推理服务(默认 Nemotron 模型),流式生成最终答案。这个阶段由 src/nvidia_rag/rag_server/response_generator.py 负责,它还会同步构建引用(Citations):答案中的每个论断都标注来源文档、相关度分数和内容预览,用户点击 Sources 即可溯源——这是企业场景建立信任的关键设计。
组件 7:可选增强层 —— Guardrails、Reflection、Agentic RAG 🧩
前 6 个组件构成"标准单程管线",第 7 大组件则是按需开启的增强能力:
| 增强能力 | 作用 | 源码位置 |
|---|---|---|
| NeMo Guardrails | 在查询进入和答案输出两端做安全合规过滤 | 配置见 deploy/compose/nemoguardrails/ |
| Self-Reflection | 先评估检索上下文是否相关,答案生成后再校验"是否基于上下文",不合格则重试 | src/nvidia_rag/rag_server/reflection.py |
| Query Decomposition | 把复杂问题拆成子问题,分别检索后合并上下文 | src/nvidia_rag/rag_server/query_decomposition.py |
| Agentic RAG | LangGraph 计划-执行管线,应对多跳、跨文档、歧义查询 | src/nvidia_rag/rag_server/agentic_rag/ |
| VLM 多模态推理 | 答案生成时把检索到的图片交给视觉语言模型理解 | src/nvidia_rag/rag_server/vlm.py |
其中 Agentic RAG 是架构上最大的亮点:它在标准链路之外并行运行一条五阶段状态机——Initial Retrieval → Planner → Task Execute → Synthesis → 可选 Verification,每个子任务独立执行"检索-回答-重试"小循环,验证不通过还能定向补充检索。通过请求参数 agentic: true 即可按次启用,详见 docs/agentic-rag.md。
7 大组件如何配合:一次查询的完整时间线 ⏱️
把 7 大组件按时间顺序串起来,一次 /v1/generate 请求的旅程如下:
| 阶段 | 负责组件 | 关键参数 | 对应指标 |
|---|---|---|---|
| 1. 请求校验与查询改写 | RAG Orchestrator + Query Processing | enable_query_rewriting |
rag_ttft_ms |
| 2. 向量化 + 向量检索 | Retriever(Embed NIM + 向量库) | vdb_top_k |
retrieval_time_ms |
| 3. 上下文重排序 | Context Reranker | reranker_top_k |
context_reranker_time_ms |
| 4. 答案生成(流式) | LLM + Response Generator | max_tokens、temperature |
llm_ttft_ms、llm_generation_time_ms |
| 5. 安全过滤(可选) | NeMo Guardrails | 部署级开关 | — |
启用可观测性后,每个阶段都会在 Zipkin 中生成独立 Span(query-rewriter、retriever、context-reranker、llm-stream),点击即可看到该阶段的输入输出;Grafana 仪表盘则能聚合分析各阶段的延迟分布。这套可观测能力由 src/nvidia_rag/utils/observability/ 提供。
排查性能问题时有一个实用口诀:首 token 慢看 rag_ttft_ms,重点怀疑检索或重排序;整体慢看 llm_generation_time_ms,考虑调整 max_tokens 或更换模型。完整方法见 docs/query-to-answer-pipeline.md。
部署与延伸阅读 🚀
想动手体验这套 RAG 架构?推荐路径:
- Docker Compose 单机部署:最简单上手方式,详见 docs/deploy-docker-self-hosted.md;
- Kubernetes / Helm 部署:生产环境选择,Chart 位于 deploy/helm/nvidia-blueprint-rag/,支持 OpenShift;
- 摄取服务:数据入库由独立的 Ingestor Server 完成(src/nvidia_rag/ingestor_server/main.py),支持多模态文档解析、自定义元数据和摘要生成;
- Notebooks:用 Jupyter 直接调用 RAG 库或 API,见 notebooks/。
总结
回到开头那张架构图:NVIDIA RAG Blueprint 的设计哲学是可分解(Decomposable)——RAG UI 负责体验、Orchestrator 负责编排、Query Processing 负责理解、Retriever 负责召回、Reranker 负责精排、LLM 负责生成、增强层负责兜底。7 大组件各司其职又通过标准接口松耦合,你可以按需替换向量库、模型或安全服务,这正是它作为"蓝图(Blueprint)"的价值所在:既是一套可直接运行的完整方案,也是一份清晰的 RAG 架构参考。💡




