NVIDIA RAG Blueprint
Principes d'Autonomie
- Détecter automatiquement tout : GPU, VRAM, drivers, Docker, CUDA, disque, OS, ports, services existants, clé NGC, état du repo.
- Si c'est vérifiable par une commande, vérifier — ne pas poser la question à l'utilisateur.
- Poser des questions uniquement quand une action utilisateur est nécessaire : fournir une clé API, confirmer une suppression de données, ou choisir entre des options équivalentes.
- Une fois l'analyse terminée, router vers le bon workflow et exécuter.
Détection d'Intention
Déterminer ce que l'utilisateur veut et router immédiatement :
| Intention utilisateur | Action |
|---|---|
| Déployer, installer, configurer, démarrer RAG | Lire et suivre references/deploy.md |
| Configurer, activer, changer, basculer une fonctionnalité | Utiliser la section Configurer ci-dessous |
| Dépanner, déboguer, corriger, erreur, non-sain | Lire et suivre references/troubleshoot.md |
| Arrêter, éteindre, démonter, nettoyer | Lire et suivre references/shutdown.md |
Si l'intention est ambiguë, inférer du contexte (ex. : « RAG ne fonctionne pas » → dépanner ; « faire fonctionner RAG » → déployer). Poser une question uniquement si véritablement peu clair.
Configurer
Nécessite un déploiement RAG en cours d'exécution. Si les services ne tournent pas, déployer d'abord via references/deploy.md.
Faire correspondre la demande de l'utilisateur à un fichier de référence, puis le lire et le suivre :
| Mots-clés Fonctionnalité | Référence |
|---|---|
| VLM, embeddings VLM, description d'image | references/configure/vlm.md |
| NeMo Guardrails | references/configure/guardrails.md |
| Réécriture de requête, décomposition, multi-tour | references/configure/query-and-conversation.md |
| Ingestion (texte seul, audio, Nemotron Parse, OCR, CLI batch, NV-Ingest, montage de volume, performance) | references/configure/ingestion.md |
| Recherche, récupération, recherche hybride, multi-collection, métadonnées, filtres, rérangement, topK, précision/performance | references/configure/search-and-retrieval.md |
| Changements de modèle LLM/embedding/classement, vecteur DB, auth Milvus/Elasticsearch, clés de service, profils de modèle, ports/GPU | references/configure/models-and-infrastructure.md |
| Raisonnement, auto-réflexion, prompts, paramètres de génération (tokens, température, citations), paramètres LLM par requête | references/configure/reasoning-and-generation.md |
| Résumé | references/configure/summarization.md |
| Observabilité (tracing, Zipkin, Grafana, Prometheus) | references/configure/observability.md |
| Requête multimodale (image + texte) | references/configure/multimodal-query.md |
| Catalogue de données (métadonnées collection/document) | references/configure/data-catalog.md |
| Interface utilisateur (paramètres UI) | references/configure/user-interface.md |
| Référence API (endpoints, schémas) | references/configure/api-reference.md |
| Évaluation (métriques RAGAS) | references/configure/evaluation.md |
| Serveur & client MCP, agent toolkit | references/configure/mcp.md |
| Migration (mises à jour de version) | references/configure/migration.md |
| Notebooks (setup et catalogue) | references/configure/notebooks.md |
Flux Configurer
-
Faire correspondre la demande de l'utilisateur à un fichier de référence du tableau ci-dessus.
-
Détecter ce qui tourne :
echo "=== NIM ===" && docker ps --format '{{.Names}}' 2>/dev/null | grep -iE '(nim-llm|nemoretriever-embedding|nemoretriever-ranking|nemo-vlm|nemotron-vlm)' || echo "NO_LOCAL_NIMS"; echo "=== RAG ===" && docker ps --format '{{.Names}}' 2>/dev/null | grep -iE '(rag-server|ingestor-server|milvus)' || 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" -
Utiliser ce tableau pour déterminer la plateforme, le type de déploiement et où se trouve la config :
NIMs locaux en cours d'exécution ? Services RAG en cours d'exécution ? Type de déploiement Localisation Config Oui (Docker) N'importe lequel Auto-hébergé deploy/compose/.envNon Oui (Docker) NVIDIA-hébergé deploy/compose/nvdev.envOui (Pods K8s) N'importe lequel Auto-hébergé values.yaml(sections NIM)Non Oui (Pods K8s) NVIDIA-hébergé values.yaml(envVars)— Processus Library Mode Library notebooks/config.yamlNon Non Pas en cours d'exécution Déployer d'abord via references/deploy.mdDire à l'utilisateur ce qui a été détecté et demander de confirmer. Exemple : « Je vois des conteneurs NIM locaux en cours d'exécution (nim-llm-ms, nemoretriever-embedding-ms) — c'est un déploiement auto-hébergé. Le fichier config est
deploy/compose/.env. C'est correct ? » -
Vérifier l'état actuel de la fonctionnalité avant de changer quoi que ce soit — lire la localisation config de l'étape 3, puis croiser-vérifier le service en direct :
- 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
Si le fichier config et le service en direct ne concordent pas, dire à l'utilisateur que le service a une config périmée et aura besoin d'un redémarrage.
- Docker :
-
Si la fonctionnalité a besoin de GPUs supplémentaires, vérifier la disponibilité par rapport aux restrictions matérielles (voir ci-dessous) :
nvidia-smi --query-gpu=index,name,memory.total,memory.used --format=csv,noheader 2>/dev/null || echo "NO_GPU" -
Lire le fichier de référence et appliquer les changements :
- Docker : éditer le fichier env (décommenter pour activer, re-commenter pour désactiver — le fichier env est la source de vérité). Puis redémarrer le service affecté :
source <env-file> && docker compose -f deploy/compose/<compose-file> up -dService Fichier Compose rag-server docker-compose-rag-server.yamlingestor-server docker-compose-ingestor-server.yamlmilvus, etcd, minio vectordb.yamlConteneurs NIM (LLM, embedding, classement, VLM, OCR) nims.yamlguardrails docker-compose-nemo-guardrails.yamlobservabilité (Grafana, Prometheus, Zipkin) observability.yaml - Helm : éditer
values.yaml, puis upgrader :helm upgrade rag <chart> -n rag -f values.yaml - Library : éditer
notebooks/config.yaml, puis redémarrer le processus Python
- Docker : éditer le fichier env (décommenter pour activer, re-commenter pour désactiver — le fichier env est la source de vérité). Puis redémarrer le service affecté :
-
Vérifier :
- 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
- Docker :
-
Si le redémarrage échoue, lire
references/troubleshoot.md. Si plusieurs fonctionnalités sont demandées, répéter à partir de l'étape 1 pour chacune.
Quand l'Utilisateur Dit « Configurer » Sans Spécificités
Exécuter les étapes 2–3 ci-dessus, puis lire le fichier config identifié pour lister ce qui est actuellement activé :
grep -E "^(export )?(ENABLE_|APP_)" <config-file> 2>/dev/null | sort
Résumer ce qui tourne et est activé, puis demander quelle fonctionnalité changer.
Restrictions Matérielles
Lire docs/support-matrix.md pour les exigences GPU actuelles par mode de déploiement.
Lire docs/service-port-gpu-reference.md pour les mappages de ports et attributions GPU.
| GPU | Restrictions Fonctionnalité |
|---|---|
| B200 | Pas de VLM, Pas de Guardrails, Pas de Nemotron Parse. Peut nécessiter LLM multi-GPU (LLM_MS_GPU_ID). |
| RTX PRO 6000 | Pas de Nemotron Parse. Pas d'Audio sur Helm. |