Local RAG on NVIDIA DGX Spark
The DGX Spark is NVIDIA's desktop GB10 Grace Blackwell machine: an ARM64 (aarch64) CPU and a Blackwell GPU sharing 128GB of unified memory, running DGX OS (Ubuntu 24.04). For local document Q&A, the draw is memory. A 120B-class model, an embedding model, a reranker, and a vector database all fit on one box, and two or four units can be linked for bigger models.
What it is good for in local RAG
- Big local models with no cloud calls. gpt-oss-120b (MXFP4) fits entirely in memory and decodes at about 41 tok/s in Ollama (Ollama benchmarks).
- Everything on one box. The LLM, embeddings (e.g. bge-m3), a reranker, a GPU document parser such as Docling, and the vector DB share the 128GB pool. Owners run full stacks this way (AGMind, RAGFlow on Spark).
- Prefill-heavy RAG prompts. Prompt processing is strong (gpt-oss-120b prefill ~1,169 tok/s in Ollama), and decode is limited by the 273GB/s memory bandwidth. So mixture-of-experts models with few active parameters are the sweet spot (forum advice).
- Less ideal: large dense models. Llama 3.1 70B q4_K_M decodes at about 4.4 tok/s in Ollama (source).
Single vs dual vs quad Spark
| Single Spark | Dual Spark | Quad Spark | |
|---|---|---|---|
| Memory | 128GB unified | 256GB combined (2×128GB) | ~512GB combined (4×128GB) |
| Link | None | One QSFP cable, 200GbE direct (NVIDIA playbook) | 200G switch, or a 4-node ring with patched NCCL (NVIDIA switch playbook, ring notes) |
| Largest practical model | ~120B MoE (gpt-oss-120b MXFP4); dense 70B fits but is slow | Qwen3-235B-A22B 4-bit; Llama 3.1 405B AWQ-INT4 loads only as a test (NVIDIA) | ~230–250GB MoE at 4-bit (e.g. MiniMax-M3-AWQ ~241GB, source) |
| Measured decode (single stream) | gpt-oss-120b ~41 tok/s Ollama (Ollama), 57–60 tok/s vLLM (Conselara) | Qwen3-235B-A22B 17 tok/s vLLM TP2 (Conselara); 12.5 tok/s llama.cpp RPC (forum) | MiniMax-M3-AWQ ~38 tok/s TP4 (source); DeepSeek-V4-Flash ~90 tok/s (forum). Limited evidence. |
| Hardware cost (list price) | $6,950 (NVIDIA Marketplace, 128GB/4TB) | ~$13,900 + QSFP cable | ~$27,800 + a 200G switch (not priced here) |
| Best for | Private document Q&A for one person or a small team | A frontier-class MoE model for one team, or more concurrent users | Very large MoE models and long-context shared serving; experimental |
Cost: NVIDIA Marketplace listed the 128GB/4TB Founders Edition at $6,950 when checked in October 2026 (it was out of stock in an Oct 6 check). The MSRP was $3,999 at launch and $4,699 from February 2026 (NVIDIA forum announcement). A 64GB model from partners starts at $4,999 (source). Multi-unit totals are simple multiples of that list price, before tax, cables, and switch.
Single Spark Dual Spark Quad Spark
Model sizes that fit in 128GB
- NVIDIA's sizing is "up to 200B parameters" on one 128GB Spark (as summarized here). In practice:
- Comfortable: gpt-oss-20b/120b (MXFP4), Qwen3-30B-A3B, Llama 3.3 70B NVFP4, and Llama-4-Scout NVFP4 are all listed as supported in NVIDIA's TensorRT-LLM and SGLang playbooks.
- Tight: Qwen3-235B-A22B loads on one Spark in llama.cpp with a 2K context (about 115GB on the GPU), but decodes at only about 1.8 tok/s (forum report). NVIDIA lists its NVFP4 build as "two Sparks only".
- Leave room for the KV cache, the embedding model, and the OS. The memory is shared, so running out freezes the whole machine rather than raising a clean GPU out-of-memory error (source).
Recommended stacks
- Easiest, officially documented: Ollama + Open WebUI, following NVIDIA's own playbook (playbook).
- Workspace UI with a dedicated vector DB: AnythingLLM + Qdrant + Ollama or vLLM, from a community compose file (amasu/dgx-spark-rag).
- Heavy PDFs and scans: Docling (the docling-serve-cu130 image) for parsing, plus vLLM and Dify, or RAGFlow through its community ARM64 build (AGMind).
Which tools work on a Spark
2 official NVIDIA playbook, 7 reported working, 1 with known issues, 24 unknown. We only mark a tool when there is a published source. "Unknown" means nobody has reported either way yet, not that it fails. Use the "Works on DGX Spark" filter on the tools table.
| Tool | DGX Spark status | Source |
|---|---|---|
| Ollama | DGX Spark: Official NVIDIA playbook | source · NVIDIA "Ollama" and "Open WebUI with Ollama" playbooks |
| Open WebUI | DGX Spark: Official NVIDIA playbook | source · NVIDIA "Open WebUI with Ollama" playbook |
| AnythingLLM | DGX Spark: Reported working | source · Community Docker Compose stack (AnythingLLM + Qdrant + Ollama/vLLM) shared on the NVIDIA DGX Spark forum; official images are multi-arch amd64/arm64 |
| Dify | DGX Spark: Reported working | source · Dify team guide: Dify on DGX Spark with a local NIM model |
| Docling | DGX Spark: Reported working | source · Maintainer confirmed ghcr.io/docling-project/docling-serve-cu130 works on a DGX Spark GB10 (Feb 2026); older cu126/cu128 images and stock PyTorch hit sm_121 errors |
| Haystack | DGX Spark: Reported working | source · deepset blog: Haystack agent on DGX Spark using local vLLM endpoints |
| LibreChat | DGX Spark: Reported working | source · Install guide on a Gigabyte AI TOP ATOM (GB10, same platform as DGX Spark) with Ollama |
| LocalAI | DGX Spark: Reported working | source · LocalAI docs: CUDA 13 L4T arm64 images "compatible with Nvidia DGX Spark" |
| Open Notebook | DGX Spark: Reported working | source · Owner write-up (Japanese): Open Notebook on DGX Spark with Ollama |
| RAGFlow | DGX Spark: Known issues | source · No upstream ARM64 Docker images (GitHub issue #13845: exec format error); owner got v0.24.0 running only with a patched native build and onnxruntime-gpu compiled for SM_121 |
| Cherry Studio | DGX Spark: Unknown | No published report yet |
| Flowise | DGX Spark: Unknown | No published report yet |
| GPT4All (LocalDocs) | DGX Spark: Unknown | No published report yet |
| h2oGPT | DGX Spark: Unknown | No published report yet |
| Jan | DGX Spark: Unknown | No published report yet |
| Khoj | DGX Spark: Unknown | No published report yet |
| KoboldCpp | DGX Spark: Unknown | No published report yet |
| Kotaemon | DGX Spark: Unknown | No published report yet |
| Langflow | DGX Spark: Unknown | No published report yet |
| LightRAG | DGX Spark: Unknown | No published report yet |
| LlamaIndex | DGX Spark: Unknown | No published report yet |
| LocalGPT | DGX Spark: Unknown | No published report yet |
| Microsoft GraphRAG | DGX Spark: Unknown | No published report yet |
| Msty Studio | DGX Spark: Unknown | No published report yet |
| Onyx | DGX Spark: Unknown | No published report yet |
| paperless-gpt | DGX Spark: Unknown | No published report yet |
| Paperless-ngx | DGX Spark: Unknown | No published report yet |
| PipesHub | DGX Spark: Unknown | No published report yet |
| PrivateGPT | DGX Spark: Unknown | No published report yet |
| Quivr | DGX Spark: Unknown | No published report yet |
| R2R | DGX Spark: Unknown | No published report yet |
| RAG Web UI | DGX Spark: Unknown | No published report yet |
| Unstructured (OSS) | DGX Spark: Unknown | No published report yet |
| Verba | DGX Spark: Unknown | No published report yet |
Common gotchas
- ARM64 images. Some Docker images are amd64-only and fail with "exec format error". RAGFlow ships no ARM64 image (issue #13845). NVIDIA's NGC containers are multi-arch.
- CUDA 13 / sm_121. Wheels built for CUDA 12 fail with libcudart.so.12 errors, and stock PyTorch reports "no kernel image" (natolambert/dgx-spark-setup, Docling thread). Use cu130 wheels and NGC containers.
- Unified memory. Running out of memory can hang the whole machine. Cap vLLM's gpu-memory-utilization and leave headroom (AGMind notes).
- Engine choice matters. gpt-oss-120b decodes at ~41 tok/s in Ollama vs 57–60 tok/s pure decode in tuned vLLM (Ollama, Conselara). vLLM's --enforce-eager cut throughput by ~55% in one test.
- Docker networking. Inside a container, reach host-side Ollama or vLLM at host.docker.internal, not localhost.
Draft recipes
- Private document Q&A on a DGX Spark Draft, untested
- Large PDF library (1000+ docs) on a DGX Spark Draft, untested
Sources
- https://build.nvidia.com/spark
- https://github.com/NVIDIA/dgx-spark-playbooks
- https://build.nvidia.com/spark/connect-two-sparks
- https://build.nvidia.com/spark/connect-three-sparks
- https://build.nvidia.com/spark/multi-sparks-through-switch
- https://build.nvidia.com/spark/nccl
- https://build.nvidia.com/spark/vllm
- https://github.com/NVIDIA/dgx-spark-playbooks/tree/main/nvidia/playbook-vllm-cluster
- https://build.nvidia.com/spark/trt-llm
- https://build.nvidia.com/spark/sglang
- https://build.nvidia.com/spark/llama-cpp
- https://ollama.com/blog/nvidia-spark-performance
- https://conselara.dev/notes/dgx-spark-benchmarks/
- https://forums.developer.nvidia.com/t/dgx-spark-multi-node-llm-inference-report-for-qwen3-235b-model/355126
- https://github.com/myers-dev/tp-vs-pp-on-two-dgx-sparks
- https://forums.developer.nvidia.com/t/4-node-dgx-spark-cluster-with-deepseek-v4-flash-0731-dspark-benchmark-prefill-2-500-t-s-decode-90-t-s/378878
- https://github.com/tonyd2wild/MiniMax-M3-AWQ-TP4-EAGLE3-4x-DGX-Spark
- https://shawnbot.org/ai-llm/glm-53-flash-4x-spark-switched-vs-switchless-ring/
- https://petronellatech.com/blog/dgx-spark-cluster-from-two-sparks-to-a-switched-fabric/
- https://forums.developer.nvidia.com/t/qwen3-8-flash-next-on-1-2-and-4-dgx-sparks-with-nvidias-official-nvfp4-quant-64-tok-s-peak-single-stream/382476
- https://marketplace.nvidia.com/en-us/enterprise/personal-ai-supercomputers/dgx-spark/
- https://forums.developer.nvidia.com/t/2-23-2026-price-change-announcement/361713
- https://aicomputescout.com/articles/dgx-spark-64gb-vs-128gb/
- https://github.com/natolambert/dgx-spark-setup
- https://forums.developer.nvidia.com/t/install-and-use-vllm-for-inference-on-two-sparks-does-not-work/349496?page=3
- https://github.com/botAGI/AGmind
- https://github.com/amasu/dgx-spark-rag
- https://github.com/HendrikSchoettle/ragflow-dgx-spark
- https://github.com/docling-project/docling-serve/issues/394
- https://learn.arm.com/learning-paths/laptops-and-desktops/dgx_spark_rag/
Benchmarks are quoted from the linked sources with their settings; we have not re-run them. Where no result exists we say "no published benchmark yet". Last updated 2026-10-24.
The RAGShelf weekly
New local RAG tools, releases, and tested setups. One email a week, no spam.