You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
| GPU/CUDA blocks | Real CUDA kernels, custom NVRTC-compiled kernels, GPU image nodes, and capability/preflight nodes that run on your local NVIDIA GPU. |[NVIDIA GPU Blocks](docs/nvidia-gpu-blocks.md)|
64
64
| Local chat agents | Control a local Blacknode workflow through Telegram long polling or Slack Socket Mode, with editor start/stop, live status, tools, images, and replay. |[Local Telegram Agent](docs/telegram-nim-demo.md), [Slack Agent](docs/slack-nim-demo.md)|
@@ -116,6 +116,7 @@ See [Blacknode and NVIDIA AI-Q](docs/aiq-integration.md) and
116
116
|---|---|
117
117
|[NVIDIA NIM Demo](docs/nvidia-nim-demo.md)| Hosted NVIDIA NIM demo path through MCP and the editor. |
118
118
|[NVIDIA Mission Control](docs/nvidia-mission-control.md)| NVIDIA nodes, templates, local readiness, local NIM launch, and benchmark flow. |
119
+
|[NVIDIA Visual RAG Comparator](docs/nvidia-visual-rag.md)| Compare original and Q2E retrieval with NVIDIA embeddings, reranking, cited answers, and run replay. |
119
120
|[Blacknode and NVIDIA AI-Q](docs/aiq-integration.md)| Positioning Blacknode beside AI-Q and using streamable HTTP MCP. |
Copy file name to clipboardExpand all lines: docs/nvidia-mission-control.md
+30-26Lines changed: 30 additions & 26 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,6 +23,12 @@ advisory plan, wire the executing nodes (e.g. `NIMAgent`) into the graph — see
23
23
|`NIMHealthCheck`| Checks a hosted or local OpenAI-compatible NIM `/models` endpoint. |
24
24
|`NIMAgent`| Calls hosted or local NVIDIA NIM through an OpenAI-compatible endpoint. |
25
25
|`NIMBenchmark`| Runs repeated NIM calls and returns text, average latency, min/max latency, and raw samples. |
26
+
|`NIMQueryRewrite`| Extracts and expands retrieval queries with Nemotron, including Q2E. |
27
+
|`NVIDIAEmbedding`| Calls hosted or local NeMo Retriever Embedding NIM in query or passage mode. |
28
+
|`NVIDIAVectorSearch`| Runs inspectable cosine search over NVIDIA embeddings. |
29
+
|`NVIDIARerank`| Reranks candidate passages with hosted or local NeMo Retriever Reranking NIM. |
30
+
|`NIMCitationAnswer`| Generates an evidence-constrained NIM answer with numbered citations. |
31
+
|`RetrievalCompare`| Compares original, rewritten, and reranked result orders. |
26
32
|`NIMFineTune` / `NIMFineTuneStatus`| Submit and poll a NeMo Customizer fine-tuning job (dry-run by default). |
27
33
|`VideoFolderInput`| Builds a local video-folder manifest for video-intelligence workflows. |
28
34
|`CUDAKernelLab`, `CUDACustomKernel`, `CUDAImageFilter`, `TensorCoreGEMM`, `CUTLASS`| Run real GPU compute on the local NVIDIA GPU (NVRTC / CuPy / containerized CUTLASS). |
@@ -48,6 +54,7 @@ advisory plan, wire the executing nodes (e.g. `NIMAgent`) into the graph — see
48
54
|`nvidia-nim-benchmark`| Live hosted/local NIM benchmark. Requires `NVIDIA_API_KEY` for hosted NIM or a running local endpoint. |
49
55
|`nvidia-nim`| Simple prompt-to-NIM workflow through the general `LLMAgent`. |
50
56
|`nvidia-nim-mcp-demo`| MCP-oriented demo that opens and cooks a visible NVIDIA NIM workflow. |
57
+
|`nvidia-visual-rag-comparator`| Original-query versus Q2E semantic retrieval, NVIDIA reranking, cited generation, and visual comparison. |
51
58
52
59
## Quick Demo Path
53
60
@@ -89,6 +96,12 @@ python -m blacknode.cli run templates\nvidia-nim-benchmark.json
89
96
Expected result: the benchmark returns generated text, average latency, min/max
90
97
latency, and raw latency samples.
91
98
99
+
### 4. Compare original and Q2E retrieval
100
+
101
+
Load `templates/nvidia-visual-rag-comparator.json` in the editor and cook the
102
+
Q2E query, retrieval comparison, cited answer, and citations outputs. See
Blacknode exposes NVIDIA-oriented workflow nodes, hosted/local NIM calls,
118
+
embedding and reranking adapters, visual RAG comparison, local readiness
119
+
checks, benchmark metrics, local NIM launch commands, video intelligence
120
+
planning, retriever planning, templates, run-history visibility, and Python
121
+
export.
108
122
109
-
## What we still need to build to actually run the pipeline
123
+
## What remains for the video pipeline
110
124
111
-
The advisory nodes describe a real NVIDIA pipeline; to make the Video
112
-
Intelligence Mission Control template *execute* instead of plan, each advisory
113
-
stage needs a matching **executing** node. All of these call documented,
114
-
OpenAI/HTTP-compatible NVIDIA services, so they fit the existing provider/HTTP
115
-
pattern (`NIMAgent` is the reference). They are listed in dependency order.
125
+
The generic text retrieval path now has executing embedding, vector search,
126
+
reranking, query rewrite, and cited-answer nodes. To make the separate Video
127
+
Intelligence Mission Control template execute instead of plan, the remaining
128
+
video-specific stages need matching executing nodes.
116
129
117
130
| New executing node | Replaces (advisory) | What it must do | NVIDIA service / endpoint | Inputs → Outputs |
118
131
|---|---|---|---|---|
119
132
|`VideoFrameSampler`| (new, feeds the chain) | Decode each file from the `VideoFolderInput` manifest and sample frames/clips at an interval. Pure local (ffmpeg/PyAV) — no service. | local ffmpeg |`manifest:Dict` → `frames:List` (path + timestamp) |
120
133
|`VLMCaptionNIM`|`NVIDIAVideoSummaryPlan`| Send sampled frames to a vision-language NIM and get a caption/events per timestamp. | VLM NIM (e.g. `nvidia/vila`, `microsoft/phi-3.5-vision`) on `integrate.api.nvidia.com/v1` (OpenAI vision messages) |`frames:List`, `model:Model` → `segments:List` (file, ts, caption) |
121
134
|`CosmosEmbedVideo` (optional, alt path) |`NVIDIAVideoSummaryPlan`| Produce video/world-model embeddings for segments via Cosmos. | Cosmos embedding NIM |`frames:List` → `embeddings:List`|
122
-
|`NeMoEmbedText`| part of `NVIDIARetrieverIndexPlan`| Embed segment captions with a NeMo Retriever embedding NIM. | embedding NIM (`nvidia/nv-embedqa-e5-v5`) `/embeddings`|`segments:List` → `vectors:List`|
123
-
|`VectorIndexUpsert` / `VectorSearch`| part of `NVIDIARetrieverIndexPlan`| Store vectors + metadata (file, ts) and do top-k recall for a query. Start with a local index (FAISS/sqlite-vss); swap a managed store later. | local FAISS, or NeMo Retriever index |`vectors:List` / `query` → `hits:List`|
124
-
|`NeMoRerankNIM`| part of `NVIDIARetrieverIndexPlan`| Rerank recalled segments against the query for answer quality. | reranking NIM (`nvidia/nv-rerankqa-mistral-4b-v3`) `/ranking`|`query`, `hits:List` → `ranked:List`|
125
-
|`NIMVideoQA`|`NVIDIAQuestionAnswerPlan`| Take the reranked evidence + question and **actually call** NIM/Nemotron, citing file + timestamp. This is `NIMAgent` with an evidence-formatting wrapper — the smallest real win. | NIM/Nemotron on `integrate.api.nvidia.com/v1`|`question`, `ranked:List`, `model:Model` → `answer:Text`, `citations:List`|
135
+
|`PersistentVectorIndex`| part of `NVIDIARetrieverIndexPlan`| Store vectors + metadata (file, timestamp) in a durable vector database. The current `NVIDIAVectorSearch` is in-process and intended for inspectable demos. | Milvus, LanceDB, or another NeMo Retriever-compatible store |`vectors:List` / `query` → `hits:List`|
136
+
|`NIMVideoQA`|`NVIDIAQuestionAnswerPlan`| Adapt `NIMCitationAnswer` to cite file names and timestamps from real video segments. | NIM/Nemotron on `integrate.api.nvidia.com/v1`|`question`, `ranked:List`, `model:Model` → `answer:Text`, `citations:List`|
126
137
|`NVIDIAExecReport`|`NVIDIAMissionReport`| Same report, but built from **executed** results (real captions, real hits, real answer) instead of plan text. | none | executed outputs → `report:Text`|
127
138
128
139
Notes:
129
140
130
-
-**Smallest first step:**`NIMVideoQA` (or just dropping a `NIMAgent` after a
131
-
`RAGContext`/`KeywordSearch` over the captions) turns the demo from "a plan"
132
-
into "a real answer" using infra that already exists. `VLMCaptionNIM` is the
133
-
next-highest-value node because it makes the *video* real.
134
-
-**Reuse what exists:** retrieval can start with the current `KeywordIndex` /
135
-
`KeywordSearch` / `RAGContext` nodes (already real) before investing in
136
-
`NeMoEmbedText` + `NeMoRerankNIM`. The advisory `NVIDIARetrieverIndexPlan`
137
-
becomes a thin wrapper or is dropped.
138
-
-**Credentials/decisions needed before building:** which VLM + embedding +
139
-
rerank NIM models to target, hosted vs local for each, and whether to use a
140
-
managed vector store or a bundled local index. These are product calls, not
141
-
code calls — confirm them before implementing the table above.
141
+
-**Reuse what exists:**`NVIDIAEmbedding`, `NVIDIAVectorSearch`,
142
+
`NVIDIARerank`, and `NIMCitationAnswer` can operate on caption segments once
143
+
`VLMCaptionNIM` produces them.
144
+
-**Credentials/decisions still needed:** which VLM to target and whether the
145
+
production index should use Milvus, LanceDB, or another managed store.
-[Embedding NIM API](https://docs.nvidia.com/nim/nemo-retriever/text-embedding/latest/)
127
+
-[Reranking NIM API](https://docs.nvidia.com/nim/nemo-retriever/text-reranking/latest/)
128
+
-[Reasoning query rewriting with Nemotron](https://developer.nvidia.com/blog/how-to-enhance-rag-pipelines-with-reasoning-using-nvidia-llama-nemotron-models/)
0 commit comments