| 名称 | rag-blueprint |
| 版本 | “2.6.0” |
| 描述 | “NVIDIA RAG 蓝图——部署、配置、故障排除和管理。处理任何RAG操作:部署、安装、启动、启用、禁用、切换、更改、配置、故障排除、调试、修复、关闭、停止或拆除任何RAG功能或服务(Agentic RAG、VLM、护栏、查询重写、模型、搜索、摄取、可观测性、摘要、推理等)。” |
| 开源协议 | Apache-2.0 compatibility: >- NVIDIA RAG 蓝图仓库检出;用于部署的Docker/Compose或Kubernetes/Helm; 用于库工作流的Python 3.11+;用于自托管NIM服务的NVIDIA GPU工具。 metadata: |
| 作者 | “NVIDIA RAG foundational-rag-dev@exchange.nvidia.com” github-url: “https://github.com/NVIDIA-AI-Blueprints/rag” endpoint-openapi-schemas: - docs/api_reference/openapi_schema_rag_server.json - docs/api_reference/openapi_schema_ingestor_server.json argument-hint: 部署RAG |
NVIDIA RAG 蓝图
用途
使用此技能进行NVIDIA RAG蓝图操作:在Docker、Helm和库部署中执行部署、配置、故障排除、关闭和功能管理。
说明
- 将用户请求与下面的意图路由表匹配。
- 在进行更改前阅读所引用的手册。
- 以仓库文档和部署配置文件为事实依据。
- 更改后验证受影响的服务或工作流。
先决条件
- NVIDIA RAG 蓝图仓库检出。
- 用于部署的Docker/Compose或Kubernetes/Helm。
- 用于库工作流的Python 3.11+。
- 用于自托管NIM服务的NVIDIA GPU工具。
自主性原则
- 自动检测一切:GPU、显存、驱动、Docker、CUDA、磁盘、操作系统、端口、现有服务、NGC密钥、仓库状态。
- 如果可以用命令检查,就直接检查——不要询问用户。
- 仅当需要用户操作时才提问:提供API密钥、确认删除数据或在同等有效的选项之间选择。
- 分析完成后,路由到正确的工作流并执行。
意图检测
确定用户想要什么并立即路由:
| 用户意图 | 操作 |
|---|---|
| 部署、安装、设置、启动RAG | 阅读并遵循 references/deploy.md |
| 配置、启用、更改、切换功能 | 使用下面的配置部分 |
| 故障排除、调试、修复、错误、不健康 | 阅读并遵循 references/troubleshoot.md |
| 停止、关闭、拆除、清理 | 阅读并遵循 references/shutdown.md |
如果意图不明确,根据上下文推断(例如,“RAG不工作”→故障排除;“让RAG运行”→部署)。只有真正不清楚时才提问。
配置
需要正在运行的RAG部署。如果服务未运行,先通过 references/deploy.md 部署。
将用户的请求与参考文件匹配,然后阅读并遵循它:
| 功能关键词 | 参考 |
|---|---|
| VLM、VLM嵌入、图像字幕 | references/configure/vlm.md |
| NeMo 护栏 | references/configure/guardrails.md |
| Agentic RAG、规划/执行代理、Agentic流式传输、阶段事件 | references/configure/agentic-rag.md |
| 查询重写、分解、多轮会话 | references/configure/query-and-conversation.md |
| 摄取(纯文本、音频、Nemotron Parse、OCR、批处理CLI、NV-Ingest、卷挂载、性能) | references/configure/ingestion.md |
| 搜索、检索、混合搜索、多集合、元数据、过滤器、Elasticsearch过滤器、重排序器、topK、准确度/性能 | references/configure/search-and-retrieval.md |
| LLM/嵌入/排序模型更改、向量数据库、Milvus/Elasticsearch认证、服务密钥、模型配置文件、端口/GPU | references/configure/models-and-infrastructure.md |
推理、思考模式、reasoning_content、自我反思、提示语、生成参数(tokens、temperature、citations)、请求级LLM参数 |
references/configure/reasoning-and-generation.md |
| 摘要 | references/configure/summarization.md |
| 可观测性(追踪、Zipkin、Grafana、Prometheus) | references/configure/observability.md |
| 多模态查询(图像+文本) | references/configure/multimodal-query.md |
| 数据目录(集合/文档元数据) | references/configure/data-catalog.md |
| 用户界面(UI设置、推理面板、元数据过滤器) | references/configure/user-interface.md |
| API参考(端点、模式) | references/configure/api-reference.md |
| 评估(RAGAS指标) | references/configure/evaluation.md(及技能 rag-eval) |
| MCP服务器与客户端、代理工具包 | references/configure/mcp.md |
| 迁移(版本升级) | references/configure/migration.md |
| Notebooks(设置和目录) | references/configure/notebooks.md |
配置流程
-
将用户的请求与上表中的参考文件匹配。
-
检测正在运行的服务:
echo "=== NIM ===" && docker ps --format '{{.Names}}' 2>/dev/null | grep -iE '(nim-llm|nemotron-(vlm-)?embedding|nemotron-ranking|nemotron-vlm|nemotron-3-nano-omni|page-elements|graphic-elements|table-structure|nemotron-ocr)' || echo "NO_LOCAL_NIMS"; echo "=== RAG ===" && docker ps --format '{{.Names}}' 2>/dev/null | grep -iE '(rag-server|ingestor-server|elasticsearch|milvus|seaweedfs|lancedb)' || echo "NO_DOCKER_RAG"; echo "=== K8S ===" && kubectl get pods -n rag 2>/dev/null | head -5 || echo "NO_K8S"; echo "=== LIBRARY ===" && ps aux 2>/dev/null | grep -E '(nvidia_rag|uvicorn.*rag)' | grep -v grep || echo "NO_LIBRARY"
- 使用下表确定平台、部署类型以及配置位置:
| 本地NIM在运行? | RAG服务在运行? | 部署类型 | 配置位置 |
|---|---|---|---|
| 是(Docker) | 任意 | 自托管 | deploy/compose/.env |
| 否 | 是(Docker) | NVIDIA托管 | deploy/compose/nvdev.env |
| 是(K8s Pod) | 任意 | 自托管 | values.yaml(NIM部分) |
| 否 | 是(K8s Pod) | NVIDIA托管 | values.yaml(envVars) |
| — | 库进程 | 库模式 | notebooks/config.yaml |
| 否 | 否 | 未运行 | 先通过 references/deploy.md 部署 |
告知用户您的检测结果并要求确认。示例:“我看到本地NIM容器正在运行(nim-llm-ms、nemotron-vlm-embedding-ms)——这是一个自托管部署。配置文件是 deploy/compose/.env。对吗?”
- 在进行任何更改前检查当前功能状态——读取步骤3中的配置位置,然后与运行中的服务交叉检查:
- Docker:
docker exec rag-server env 2>/dev/null | grep -E "<VAR_NAME>" - Helm:
kubectl get pod -n rag -l app=rag-server -o jsonpath='{.items[0].spec.containers[0].env}' 2>/dev/null
如果配置文件与运行服务不一致,告知用户该服务配置已过期,需要重启。
- 如果该功能需要额外GPU,请根据硬件限制检查可用性(见下文):
nvidia-smi --query-gpu=index,name,memory.total,memory.used --format=csv,noheader 2>/dev/null || echo "NO_GPU"
- 阅读参考文件并应用更改:
- Docker:编辑环境文件(取消注释以启用,重新注释以禁用——环境文件是事实依据)。然后重启受影响的服务:
source <env-file> && docker compose -f deploy/compose/<compose-file> up -d
| 服务 | Compose文件 |
|---|---|
| rag-server | docker-compose-rag-server.yaml |
| ingestor-server | docker-compose-ingestor-server.yaml |
| Elasticsearch、Milvus、etcd、SeaweedFS | vectordb.yaml |
| NIM容器(LLM、嵌入、排序、VLM、OCR、解析、音频、提取) | nims.yaml |
| 护栏 | docker-compose-nemo-guardrails.yaml |
| 可观测性(Grafana、Prometheus、Zipkin) | observability.yaml |
- Helm:编辑
values.yaml,然后升级:helm upgrade rag <chart> -n rag -f values.yaml - 库模式:编辑
notebooks/config.yaml,然后重启Python进程
- 验证:
- Docker:
docker ps --format "table {{.Names}}\t{{.Status}}" | head -20; curl -s http://localhost:8081/v1/health?check_dependencies=true 2>/dev/null | head -1 - Helm:
kubectl get pods -n rag; kubectl rollout status deployment/rag-server -n rag --timeout=120s - 库模式:
curl -s http://localhost:8081/v1/health 2>/dev/null | head -1
- 如果重启失败,阅读
references/troubleshoot.md。如果请求多个功能,对每个功能从第1步重复。
示例
- “部署RAG” -> 路由到
references/deploy.md。 - “启用VLM” -> 路由到
references/configure/vlm.md。 - “RAG不健康” -> 路由到
references/troubleshoot.md。 - “停止RAG” -> 路由到
references/shutdown.md。
限制
- 操作指南仅适用于此RAG蓝图仓库。
- 实时部署更改需要正在运行的Docker、Helm或库目标。
- 必须由用户环境提供诸如
NGC_API_KEY之类的机密。
故障排除
| 错误/信号 | 处理方法 |
|---|---|
| 服务未运行 | 在配置功能前遵循 references/deploy.md。 |
| 重启或健康检查失败 | 遵循 references/troubleshoot.md。 |
| 用户请求拆除 | 遵循 references/shutdown.md 并确认破坏性清理。 |
当用户说“配置”但没有具体说明时
运行上面的步骤2-3,然后阅读识别出的配置文件,列出当前启用的内容:
grep -E "^(export )?(ENABLE_|APP_)" <config-file> 2>/dev/null | sort
总结正在运行和启用的内容,然后询问要更改哪个功能。
硬件限制
阅读 docs/support-matrix.md 了解每种部署模式的当前GPU要求。
阅读 docs/service-port-gpu-reference.md 了解端口映射和GPU分配。
| GPU | 功能限制 |
|---|---|
| B200 | 无VLM、无护栏、无Nemotron Parse。可能需要多GPU LLM(LLM_MS_GPU_ID)。 |
| RTX PRO 6000 | 无Nemotron Parse。Helm上无音频。 |