Generated banner for RAG Blueprint
Generated logo for RAG Blueprint

RAG Blueprint

NVIDIAOfficialCreated by NVIDIA RAG

  • Skill
  • Tool integration
  • Automation and integrations
  • Apache-2.0
  • Medium risk

From the author

NVIDIA RAG Blueprint — deploy, configure, troubleshoot, and manage. Handles any RAG action: deploy, install, start, enable, disable, toggle, change, configure, troubleshoot, debug, fix, shutdown, stop, or tear down any RAG feature or service (Agentic RAG, VLM, guardrails, query rewriting, models, search, ingestion, observability, summarization, reasoning, and more).
— the description by NVIDIA RAG

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

The NVIDIA RAG Blueprint skill provides a structured operational framework for managing RAG services. It automates the detection of deployment environments (Docker, Helm, or library-based) and guides users through installation, configuration, troubleshooting, and teardown procedures. By mapping user intent to specific reference documentation and configuration files, it ensures consistent management of features like Agentic RAG, VLM, guardrails, and ingestion pipelines.

What it does

  • Deploys and manages RAG services using Docker Compose or Helm charts.
  • Configures specific RAG features such as Agentic RAG, VLM, and NeMo Guardrails.
  • Troubleshoots service health and connectivity issues.
  • Provides automated environment detection to identify active services and configuration locations.
  • Supports lifecycle management including startup, shutdown, and teardown of RAG infrastructure.
  • Validates configuration changes against live service states.

When to use it

  • When you need to deploy or tear down an NVIDIA RAG Blueprint environment.
  • When you need to enable or toggle specific features like Agentic RAG or VLM.
  • When a RAG service is reporting errors or is in an unhealthy state.
  • When you need to update configuration settings for models, search, or observability.

Advantages

  • Standardizes operational procedures across different deployment types.
  • Reduces manual configuration errors by referencing source-of-truth documentation.
  • Automates environment discovery to quickly identify the correct configuration files.
  • Provides clear paths for both global deployment-wide changes and per-request overrides.

Usage examples

“Deploy the RAG Blueprint.”
The agent will read the deployment documentation and initiate the setup process based on the detected environment.
“Enable Agentic RAG.”
The agent will identify the current deployment mode, locate the relevant configuration file, and guide you through enabling the agentic pipeline.
“My RAG service is unhealthy.”
The agent will run diagnostic checks on the containers or pods and suggest troubleshooting steps based on the error state.
“Stop all RAG services.”
The agent will execute the shutdown sequence to safely tear down the RAG infrastructure.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/nvidia/rag-blueprint/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip rag-blueprint.zip -d .agents/skills

Documentation by NVIDIA RAG

NVIDIA RAG Blueprint

Purpose

Use this skill for NVIDIA RAG Blueprint operations: deployment, configuration, troubleshooting, shutdown, and feature management across Docker, Helm, and library deployments.

Instructions

  1. Match the user request to the intent routing table below.

  2. Read the referenced playbook before making changes.

  3. Use repository docs and deployment config files as the source of truth.

  4. Verify the affected service or workflow after changes.

Prerequisites

  • NVIDIA RAG Blueprint repository checkout.

  • Docker/Compose or Kubernetes/Helm for deployments.

  • Python 3.11+ for library workflows.

  • NVIDIA GPU tooling for self-hosted NIM services.

Autonomy Principles

  • Auto-detect everything: GPU, VRAM, drivers, Docker, CUDA, disk, OS, ports, existing services, NGC key, repo state.

  • If it can be checked with a command, check it — don't ask the user.

  • Ask only when user action is required: providing an API key, confirming data deletion, or choosing between equally valid options.

  • Once analysis is done, route to the correct workflow and execute.

Intent Detection

Determine what the user wants and route immediately:

User IntentAction
Deploy, install, set up, start RAGRead and follow references/deploy.md
Configure, enable, change, toggle a featureUse the Configure section below
Troubleshoot, debug, fix, error, unhealthyRead and follow references/troubleshoot.md
Stop, shutdown, tear down, clean upRead and follow references/shutdown.md

If the intent is ambiguous, infer from context (e.g., "RAG isn't working" → troubleshoot; "get RAG running" → deploy). Only ask if genuinely unclear.


Configure

Requires a running RAG deployment. If services are not running, deploy first via references/deploy.md.

Match the user's request to a reference file, then read and follow it:

Feature KeywordsReference
VLM, VLM embeddings, image captioningreferences/configure/vlm.md
NeMo Guardrailsreferences/configure/guardrails.md
Agentic RAG, planning/execution agent, agentic streaming, stage eventsreferences/configure/agentic-rag.md
Query rewriting, decomposition, multi-turnreferences/configure/query-and-conversation.md
Ingestion (text-only, audio, Nemotron Parse, OCR, batch CLI, NV-Ingest, volume mount, performance)references/configure/ingestion.md
Search, retrieval, hybrid search, multi-collection, metadata, filters, Elasticsearch filters, reranker, topK, accuracy/performancereferences/configure/search-and-retrieval.md
LLM/embedding/ranking model changes, vector DB, Milvus/Elasticsearch auth, service keys, model profiles, ports/GPUreferences/configure/models-and-infrastructure.md
Reasoning, thinking mode, reasoning_content, self-reflection, prompts, generation params (tokens, temperature, citations), per-request LLM paramsreferences/configure/reasoning-and-generation.md
Summarizationreferences/configure/summarization.md
Observability (tracing, Zipkin, Grafana, Prometheus)references/configure/observability.md
Multimodal query (image + text)references/configure/multimodal-query.md
Data catalog (collection/document metadata)references/configure/data-catalog.md
User interface (UI settings, reasoning panel, metadata filters)references/configure/user-interface.md
API reference (endpoints, schemas)references/configure/api-reference.md
Evaluation (RAGAS metrics)references/configure/evaluation.md (and skill rag-eval)
MCP server & client, agent toolkitreferences/configure/mcp.md
Migration (version upgrades)references/configure/migration.md
Notebooks (setup and catalog)references/configure/notebooks.md
Configure Flow
  1. Match the user's request to a reference file from the table above.

  2. Detect what's running:

    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"
  3. Use this table to determine platform, deployment type, and where config lives:

    Local NIMs running?RAG services running?Deployment TypeConfig Location
    Yes (Docker)AnySelf-hosteddeploy/compose/.env
    NoYes (Docker)NVIDIA-hosteddeploy/compose/nvdev.env
    Yes (K8s pods)AnySelf-hostedvalues.yaml (NIM sections)
    NoYes (K8s pods)NVIDIA-hostedvalues.yaml (envVars)
    —Library processesLibrary modenotebooks/config.yaml
    NoNoNot runningDeploy first via references/deploy.md

    Tell the user what you detected and ask to confirm. Example: "I see local NIM containers running (nim-llm-ms, nemotron-vlm-embedding-ms) — this is a self-hosted deployment. Config file is deploy/compose/.env. Correct?"

  4. Check current feature state before changing anything — read the config location from step 3, then cross-check the live service:

    • 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

    If the config file and live service disagree, tell the user the service has stale config and will need a restart.

  5. If the feature needs extra GPUs, check availability against hardware restrictions (see below):

    nvidia-smi --query-gpu=index,name,memory.total,memory.used --format=csv,noheader 2>/dev/null || echo "NO_GPU"
  6. Read the reference file and apply changes:

    • Docker: edit the env file (uncomment to enable, re-comment to disable — the env file is the source of truth). Then restart the affected service:

      source <env-file> && docker compose -f deploy/compose/<compose-file> up -d
      ServiceCompose File
      rag-serverdocker-compose-rag-server.yaml
      ingestor-serverdocker-compose-ingestor-server.yaml
      Elasticsearch, Milvus, etcd, SeaweedFSvectordb.yaml
      NIM containers (LLM, embedding, ranking, VLM, OCR, parse, audio, extraction)nims.yaml
      guardrailsdocker-compose-nemo-guardrails.yaml
      observability (Grafana, Prometheus, Zipkin)observability.yaml
    • Helm: edit values.yaml, then upgrade: helm upgrade rag <chart> -n rag -f values.yaml

    • Library: edit notebooks/config.yaml, then restart the Python process

  7. Verify:

    • 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

    • Library: curl -s http://localhost:8081/v1/health 2>/dev/null | head -1

  8. If restart fails, read references/troubleshoot.md. If multiple features requested, repeat from step 1 for each.

Examples

  • "Deploy RAG" -> route to references/deploy.md.

  • "Enable VLM" -> route to references/configure/vlm.md.

  • "RAG is unhealthy" -> route to references/troubleshoot.md.

  • "Stop RAG" -> route to references/shutdown.md.

Limitations

  • Operational guidance only applies to this RAG Blueprint repository.

  • Live deployment changes require a running Docker, Helm, or library target.

  • Secrets such as NGC_API_KEY must be supplied by the user environment.

Troubleshooting

Error / signalWhat to do
Services are not runningFollow references/deploy.md before configuring features.
Restart or health check failsFollow references/troubleshoot.md.
User requests teardownFollow references/shutdown.md and confirm destructive cleanup.
When User Says "Configure" Without Specifics

Run steps 2–3 above, then read the identified config file to list what's currently enabled:

grep -E "^(export )?(ENABLE_|APP_)" <config-file> 2>/dev/null | sort

Summarize what's running and enabled, then ask which feature to change.


Hardware Restrictions

Read docs/support-matrix.md for current GPU requirements per deployment mode. Read docs/service-port-gpu-reference.md for port mappings and GPU assignments.

GPUFeature Restrictions
B200No VLM, No Guardrails, No Nemotron Parse. May need multi-GPU LLM (LLM_MS_GPU_ID).
RTX PRO 6000No Nemotron Parse. No Audio on Helm.

Files

references/troubleshoot.md

RAG Troubleshooting

Auto-Triage: Run First

Start with this diagnostic sweep:

echo "=== CONTAINERS ===" && docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" 2>/dev/null | grep -E "(rag|elasticsearch|milvus|seaweedfs|nim|ingest|redis|etcd|embedding|ranking)" | head -25; echo "=== HEALTH ===" && curl -s http://localhost:8081/v1/health?check_dependencies=true 2>/dev/null || echo "RAG_UNREACHABLE"; curl -s http://localhost:8082/v1/health?check_dependencies=true 2>/dev/null || echo "INGESTOR_UNREACHABLE"; echo "=== LOGS ===" && for svc in rag-server ingestor-server nim-llm-ms nemotron-vlm-embedding-ms nemotron-embedding-ms nemotron-ranking-ms elasticsearch seaweedfs; do echo "--- $svc ---"; docker logs --tail 20 "$svc" 2>/dev/null | grep -iE "(error|fail|exception|timeout|oom|permission)" || echo "OK"; done; echo "=== GPU ===" && nvidia-smi 2>/dev/null | head -20 || echo "NO_GPU"; echo "=== DISK ===" && df -h / | tail -1; echo "=== DOCKER_DISK ===" && docker system df 2>/dev/null; echo "=== VOLUMES ===" && docker volume ls --filter "name=^rag-vol-" 2>/dev/null; echo "=== K8S ===" && kubectl get pods -n rag 2>/dev/null | head -20 || echo "NOT_K8S"

Analyze all output, then diagnose and fix. If Auto-Triage doesn't reveal the cause, dig deeper into the specific failing service's logs (docker logs <service> --tail 100 or kubectl logs <pod> -n rag --tail 100).

Confirm with the user before deleting data (volumes, collections, model cache), changing deployment mode, or modifying API keys.

Source Documentation for Detailed Diagnosis

Read these docs to find specific issue descriptions, causes, and fixes:

  • docs/troubleshooting.md — primary reference: all common issues with detailed symptoms/fixes

  • docs/debugging.md — Pipeline debugging: monitoring deployment, verifying endpoints, tracing requests

  • docs/service-port-gpu-reference.md — Complete port/GPU mapping table for all services

Expected Deployment Times

If user reports "deployment is taking too long," compare against these baselines:

ModeFirst RunSubsequent
Docker (self-hosted)15--30 min (model downloads)2--5 min
Docker (NVIDIA-hosted)5--10 min (no model downloads)1--2 min
K8s/Helm60--70 min (NIM cache 40--50 min + init 10--15 min + pod startup 5--10 min)10--15 min

If deployment exceeds these times, check NIM container logs: docker logs nim-llm-ms --tail 50 and model cache disk usage: watch -n 10 'du -sh ~/.cache/model-cache/'.

Service Health Endpoints

Read docs/service-port-gpu-reference.md for the complete port/GPU mapping. Quick check:

ServiceURLExpected
RAG Serverhttp://localhost:8081/v1/health?check_dependencies=true{"status":"healthy"}
Ingestorhttp://localhost:8082/v1/health?check_dependencies=true{"status":"healthy"}
NV-Ingesthttp://localhost:7670/v1/health/ready200 OK
VLM Embedding NIM (default)http://localhost:9081/v1/health/ready200 OK
LLM NIMhttp://localhost:8999/v1/health/ready200 OK
Ranking NIMhttp://localhost:1976/v1/health/ready200 OK
Elasticsearchhttp://localhost:9200/_cluster/healthgreen or yellow

Kubernetes Monitoring Commands

kubectl get nimcache -n rag
kubectl get pods -n rag
kubectl logs -f <pod-name> -n rag
kubectl get pvc -n rag
kubectl get events -n rag --sort-by='.lastTimestamp'

Pods in ContainerCreating or Init state during model download is expected. Use kubectl get nimcache -n rag -w to watch download progress.

Enable Debug Logging

export LOGLEVEL=DEBUG
docker compose -f deploy/compose/docker-compose-ingestor-server.yaml up -d --no-deps ingestor-server
docker compose -f deploy/compose/docker-compose-rag-server.yaml up -d --no-deps rag-server

Symptom-to-Fix Quick Index

Match the symptom from Auto-Triage output, then read docs/troubleshooting.md for the detailed fix. For pipeline debugging steps, read docs/debugging.md.

SymptomCategoryQuick Fix
NIM container stuck at (health: starting) >30minNIM StartupCheck GPU memory, NGC auth, disk space. First-run model downloads are slow — wait and monitor cache size.
Elasticsearch unhealthy / search returns nothingElasticsearchRestart vectordb compose. Check port 9200, disk, credentials, and rag-vol-elasticsearch.
Document upload fails / ingestor health check failsNV-IngestCheck Redis, OCR NIMs. Rate limit (429) → reduce batch vars. Large PDFs → reduce batch size.
Chat returns errors / /generate failsRAG ServerCheck LLM NIM health, embedding NIM, cloud API key. Verify APP_LLM_MODELNAME matches deployed NIM.
DNS resolution failed for <service>:<port>NetworkingService container not running. Check docker ps, restart missing service.
Port already in useNetworkinglsof -i :<port> to find conflicting process. See port table above.
GPU out of memory / torch.OutOfMemoryErrorGPUKill other GPU processes, use --profile rag for fewer NIMs, or set correct NIM_MODEL_PROFILE.
nvidia-container-cli: unknown deviceGPUGPU ID exceeds available GPUs. Run nvidia-smi -L, adjust *_GPU_ID vars to valid IDs.
Disk full / insufficient spaceDiskdocker system prune -f, remove unused images, check model cache size.
no configuration file provided: not foundDocker ComposeRun from the repo root directory.
too many open filesDocker ComposeSet LimitNOFILE=65536 in containerd override, restart containerd.
PVC stuck in PendingHelmCreate missing StorageClass or update PVC.
ProvisioningFailed access mode mismatchHelmPatch NIMCache to ReadWriteOnce.
Ingestor OOMKilledHelmIncrease memory limits in values.yaml. Set SUMMARY_MAX_PARALLELIZATION=1.
Elasticsearch timeout during ingestionElasticsearchIncrease ES_REQUEST_TIMEOUT (default 600s).
Need to inspect or reset persisted Docker dataVolumesUse docker volume ls --filter "name=^rag-vol-"; see docs/troubleshooting.md#manage-persistent-data-volumes.
Hallucination / out-of-context responsesQualityAdd missing-info handling to prompt in prompt.yaml.
Embedding dimensions mismatchModelsSet APP_EMBEDDINGS_DIMENSIONS to match model output. Re-ingest.
Hybrid/dense search type mismatchSearchAlign APP_VECTORSTORE_SEARCHTYPE on ingestor and rag-server. Re-ingest.
Confidence threshold filtering all resultsSearchLower RERANKER_SCORE_THRESHOLD (range 0.0–1.0, default 0.0).
OCR not starting / connection errorsOCRCheck GPU memory, NGC auth. Verify OCR_GRPC_ENDPOINT/OCR_HTTP_ENDPOINT match running service.
NVIDIA API credits exhaustedCloudContact NVIDIA representative for additional credits.
Image-only PDFs not ingestingIngestionEnable APP_NVINGEST_EXTRACTINFOGRAPHICS. Consider image captioning.

Troubleshooting Checklists

Ingestion Checklist
  • [ ] All required containers running (ingestor-server, nv-ingest-ms-runtime, milvus, redis)

  • [ ] Vector database accessible (curl http://localhost:9200/_cluster/health for default Elasticsearch, or curl http://localhost:9091/healthz for Milvus)

  • [ ] Embedding service healthy (curl http://localhost:9081/v1/health/ready for default VLM embedding, or curl http://localhost:9080/v1/health/ready for text-embed)

  • [ ] File format supported and size <= 400 MB

  • [ ] Sufficient disk space (df -h /)

  • [ ] GPU resources available (nvidia-smi)

Retrieval Checklist
  • [ ] RAG server running and healthy

  • [ ] LLM service accessible (curl http://localhost:8999/v1/health/ready)

  • [ ] Vector database contains data (collection exists with documents)

  • [ ] Collection name is correct

  • [ ] Query format is valid

Quality Checklist
  • [ ] Reranker is enabled and healthy

  • [ ] Top-K values are appropriate

  • [ ] Collection has sufficient relevant data

  • [ ] Query rewriting configured correctly

  • [ ] Prompt template appropriate for use case


Full Reset

Destroys all data (volumes, images, caches). Confirm with the user before running.

If nothing else works and the user confirms:

cd "$(git rev-parse --show-toplevel)"
docker compose -f deploy/compose/docker-compose-nemo-guardrails.yaml down 2>/dev/null
docker compose -f deploy/compose/observability.yaml down 2>/dev/null
docker compose -f deploy/compose/docker-compose-rag-server.yaml down 2>/dev/null
docker compose -f deploy/compose/docker-compose-ingestor-server.yaml down 2>/dev/null
docker compose -f deploy/compose/vectordb.yaml down 2>/dev/null
docker compose -f deploy/compose/nims.yaml down 2>/dev/null

docker volume ls -q --filter "name=^rag-vol-" | xargs -r docker volume rm
docker system prune -af

Then deploy fresh using the deploy workflow.

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Declares allowed tools, Needs an MCP server, Needs network access, Needs an API key

The author says: NVIDIA RAG Blueprint repository checkout; Docker/Compose or Kubernetes/Helm for deployments; Python 3.11+ for library workflows; NVIDIA GPU tooling for self-hosted NIM services.

Security

What our scanner noticed· Medium risk

  • Large base64-encoded blobs
  • Instructions that use the network

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
NVIDIA RAG
Publisher
NVIDIA (Official)
Source
NVIDIA/skills · skills/rag-blueprint · commit fce3cca
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE-APACHE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by NVIDIA RAG or NVIDIA.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download rag-blueprint.zip