Skip to content

Commit 2149a51

Browse files
authored
Merge branch 'main' into codex/root-query-filters
2 parents fb2e58c + dd7394a commit 2149a51

9 files changed

Lines changed: 429 additions & 69 deletions

File tree

docs/docs/extraction/faq.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ For chart-labeled PDF regions and other caption scope limits, refer to [Are PDF
2525

2626
## Are PDF chart or figure regions captioned when Omni is enabled?
2727

28-
No. Chart-labeled PDF regions are not routed through Omni captioning. Refer to [Image captioning](prerequisites-support-matrix.md#image-captioning-2605) for scope, validation, and what the caption stage covers.
28+
No. Chart-labeled PDF regions are not routed through Omni captioning. Refer to [Charts and infographics](multimodal-extraction.md#charts-and-infographics) and [Image captioning](multimodal-extraction.md#image-captioning) for caption scope and validation.
2929

3030
## When should I consider advanced visual parsing?
3131

@@ -41,11 +41,9 @@ For more information, refer to [Nemotron Parse](https://build.nvidia.com/nvidia/
4141
For [self-hosted deployments](deployment-options.md#when-to-self-host-nims), you should set the environment variables `NGC_API_KEY` and `NIM_NGC_API_KEY`.
4242
For more information, refer to [Authentication and API keys](api-keys.md).
4343

44-
For advanced scenarios, you might want to set environment variables for NIM container paths, tags, and batch sizes on the ingestion runtime. Configure them in your Helm values, Kubernetes `Secret`/`ConfigMap`, or follow [Environment variables](environment-config.md).
45-
4644
### Library Mode
4745

48-
For production environments, you should use the provided Helm charts. When you run the NeMo Retriever Library from Python (without those charts), you should set the environment variable `NVIDIA_API_KEY`. This is because the NeMo Retriever containers and the NeMo Retriever services running inside them do not have access to arbitrary variables on your laptop or jump host unless you inject them into the workload (for example via Helm, `Secret`, or the client environment as documented on [Deployment options](deployment-options.md) and [Authentication and API keys](api-keys.md)).
46+
For production environments, you should use the provided Helm charts. When you run the NeMo Retriever Library from Python without those charts, set `NVIDIA_API_KEY` only when you call [build.nvidia.com](https://build.nvidia.com/) hosted inference—it is not required for locally deployed Hugging Face models or self-hosted NIM endpoints. For more information, refer to [Deployment options](deployment-options.md) and [Authentication and API keys](api-keys.md).
4947

5048
For advanced scenarios, you might want to use library mode with self-hosted NIM instances.
5149
You can set custom endpoints for each NIM.

docs/docs/extraction/multimodal-extraction.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ Charts and infographic regions are classified with other page layout elements (t
6060

6161
For chart and infographic detection and modality-specific retrieval, use the default **pdfium** layout path (page-elements detection and OCR), not `extract_method="nemotron_parse"`.
6262

63-
Chart-labeled PDF regions are **not** routed through the Omni caption stage; they remain on the layout-and-OCR path. For scope and validation guidance, refer to [Image captioning](prerequisites-support-matrix.md#image-captioning-2605).
63+
For how chart-labeled PDF regions interact with captioning, refer to [Image captioning](#image-captioning).
6464

6565
For natural-language infographic descriptions, optionally enable [image captioning](#image-captioning) and set `caption_infographics=True` when you need VLM captions on infographic regions.
6666

@@ -74,7 +74,7 @@ For natural-language infographic descriptions, optionally enable [image captioni
7474

7575
Scanned PDFs and image-only pages rely on OCR and hybrid paths that combine native text extraction with OCR when needed. For extract methods such as `ocr` and `pdfium_hybrid`, refer to the [Python API reference](nemo-retriever-api-reference.md).
7676

77-
OCR artifacts depend on how you deploy. **Helm / NIM:** the production chart uses **Nemotron OCR v2** (`nvcr.io/nim/nvidia/nemotron-ocr-v2:1.4.0`). **Local Hugging Face inference:** the default engine is **Nemotron OCR v2**, which operates in **multilingual** mode by default. For CLI flags and API parameters, see [Nemotron OCR v2 — language mode](https://github.com/NVIDIA/NeMo-Retriever/blob/main/nemo_retriever/docs/cli/README.md#nemotron-ocr-v2-language-mode). For Kubernetes defaults and the Helm-vs-local split, see [OCR artifacts (Helm vs local Hugging Face)](prerequisites-support-matrix.md#nemotron-ocr-v2-language-mode) in the support matrix.
77+
When you run extraction locally with Hugging Face weights, the default OCR engine is **Nemotron OCR v2**, which operates in **multilingual** mode by default. For CLI flags and API parameters, refer to [Nemotron OCR v2 — language mode](https://github.com/NVIDIA/NeMo-Retriever/blob/main/nemo_retriever/docs/cli/README.md#nemotron-ocr-v2-language-mode). For Kubernetes deployment, refer to [OCR NIM configuration](https://github.com/NVIDIA/NeMo-Retriever/blob/main/nemo_retriever/helm/README.md#ocr-nim-configuration) in the Helm chart README.
7878

7979
**Related**
8080

@@ -88,11 +88,13 @@ Image captioning generates natural-language descriptions for unstructured image
8888

8989
**Captioning is optional** — enable it in your ingest configuration (for example, the `caption` API or pipeline flag) when you need natural-language descriptions of image content. Reasoning traces are disabled by default for captioning.
9090

91+
Chart-classified PDF regions stay on the layout/OCR path; only non-chart image regions and optional infographics (`caption_infographics=True`) receive Omni captions.
92+
9193
**Related**
9294

9395
- [Multimodal embeddings (VLM)](embedding.md)
9496
- [Metadata reference](content-metadata.md)
95-
- [Image captioning](prerequisites-support-matrix.md#image-captioning-2605)
97+
- [Image captioning](prerequisites-support-matrix.md#image-captioning)
9698

9799
## Metadata and content schema { #metadata-and-content-schema }
98100

docs/docs/extraction/prerequisites-support-matrix.md

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Before you begin using [NeMo Retriever Library](overview.md), confirm your software stack, deployment hardware, and—if you use them—advanced features (audio and video, Nemotron Parse, VLM image captioning, reranking) against the guidance in this page.
44

5-
## Software Requirements
5+
## Software Requirements { #software-requirements }
66

77
- Linux operating systems (Ubuntu 22.04 or later recommended)
88
- [CUDA Toolkit](https://developer.nvidia.com/cuda-downloads) (NVIDIA Driver >= `580`, CUDA >= `13.0`)
@@ -63,9 +63,9 @@ Ensure your deployment environment meets these specifications before running the
6363

6464
The NeMo Retriever Library extraction core pipeline features run on a single A10G or better GPU.
6565

66-
### Default Helm NIMs
66+
### Default Helm NIMs { #default-helm-nims }
6767

68-
The production Helm chart enables these NIM microservices **by default** (for example via `nimOperator.*.enabled=true`):
68+
The production Helm chart enables these NIM microservices **by default** (for example through `nimOperator.*.enabled=true`):
6969

7070
| Helm flag | NIM | Role |
7171
|-----------|-----|------|
@@ -106,22 +106,11 @@ These NIM microservices are **optional** for the default extraction pipeline. Th
106106

107107
For 26.05, use **`nemotron_3_nano_omni_30b_a3b_reasoning`** when you enable the caption stage (hosted model ID `nvidia/nemotron-3-nano-omni-30b-a3b-reasoning`). The Helm key is in the [optional NIMs](#optional-helm-nims-not-auto-wired-by-default) table above.
108108

109-
!!! important "PDF chart regions are not captioned by Omni"
110-
111-
When **nemotron-page-elements-v3** classifies a PDF region as **chart**, that region is processed through layout detection and OCR—not the Omni caption stage. Enabling the caption NIM and the `caption` pipeline stage does **not** send chart-labeled figures to `/v1/chat/completions`.
112-
113-
The caption stage covers:
114-
115-
- Unstructured content in the `images` column (standalone image files and page-element regions **not** classified as table, chart, or infographic)
116-
- Optional infographic regions when you set `caption_infographics=True` on `CaptionParams` (the VLM caption is stored in `caption`, separate from OCR `text`)
117-
118-
To validate caption traffic during ingest, inspect metadata such as `page_elements_v3_counts_by_label`. If the figure is labeled `chart`, expect no Omni chat-completions requests for that region even when captioning is enabled.
119-
120109
Optional features listed in the table above require additional GPU support, disk space, and feature-specific system dependencies beyond the four default NIMs.
121110

122111
For published NIM model IDs and deployment-specific constraints, use the product support matrices linked under [Related Topics](#related-topics) below.
123112

124-
## Model Hardware Requirements
113+
## Model Hardware Requirements { #model-hardware-requirements }
125114

126115
NeMo Retriever Library supports the following GPU hardware given system constraints in the table.
127116

@@ -130,7 +119,7 @@ NeMo Retriever Library supports the following GPU hardware given system constrai
130119

131120
Model repositories and NIM references are linked in [Core and Advanced Pipeline Features](#core-and-advanced-pipeline-features) above.
132121

133-
**B200 and audio/video extraction (26.05):** The [audio and video](audio-video.md) transcription path (self-hosted Parakeet ASR via `nimOperator.audio`) is **not supported on B200** or other Blackwell GPUs. Core PDF and multimodal extraction on B200 is unchanged. See footnote ⁴ below.
122+
**B200 and audio/video extraction:** The [audio and video](audio-video.md) transcription path (self-hosted Parakeet ASR through `nimOperator.audio`) is **not supported on B200** or other Blackwell GPUs. Core PDF and multimodal extraction on B200 is unchanged. Refer to footnote ⁴ below.
134123

135124
| Feature | HF Model Weights | GPU Option | [RTX Pro 6000](https://www.nvidia.com/en-us/data-center/rtx-pro-6000-blackwell-server-edition/) | [B200](https://www.nvidia.com/en-us/data-center/dgx-b200/) | [H200 NVL](https://www.nvidia.com/en-us/data-center/h200/) | [H100](https://www.nvidia.com/en-us/data-center/h100/) | [A100 80GB](https://www.nvidia.com/en-us/data-center/a100/) | A100 40GB | [A10G](https://aws.amazon.com/ec2/instance-types/g5/) | L40S | [RTX PRO 4500 Blackwell](https://www.nvidia.com/en-us/products/workstations/professional-desktop-gpus/rtx-pro-4500/) |
136125
|---------|------------------|------------|--------|--------|--------|--------|--------|--------|--------|--------|------------------------|
@@ -149,9 +138,9 @@ Model repositories and NIM references are linked in [Core and Advanced Pipeline
149138

150139
¹ On other supported GPUs, Parakeet ASR (`parakeet-1-1b-ctc-en-us:1.5.0`) may require a runtime TensorRT engine build (no prebuilt profile in the chart image).
151140

152-
⁴ On **B200** and other **Blackwell** GPUs (compute capability 12.0), including RTX PRO 6000 Blackwell and RTX PRO 4500 Blackwell, self-hosted [audio/video extraction](audio-video.md) via Parakeet ASR (`parakeet-1-1b-ctc-en-us:1.5.0`, `nimOperator.audio`) is **not supported**. Core PDF and multimodal extraction on Blackwell is unchanged. Video workflows that depend on Parakeet for speech transcription are affected the same way. `NIMService` for `nimOperator.audio` may stay not Ready or enter `CrashLoopBackOff` while building the Riva/TensorRT engine (for example ONNX Runtime IR version, cuDNN visibility, or FP8 tactic errors). Use a non-Blackwell dedicated GPU, [hosted Parakeet on build.nvidia.com](audio-video.md#parakeet-hosted-inference-build-nvidia), or set `nimOperator.audio.enabled=false`.
141+
⁴ On **B200** and other **Blackwell** GPUs (compute capability 12.0), including RTX PRO 6000 Blackwell and RTX PRO 4500 Blackwell, self-hosted [audio/video extraction](audio-video.md) through Parakeet ASR (`parakeet-1-1b-ctc-en-us:1.5.0`, `nimOperator.audio`) is **not supported**. Core PDF and multimodal extraction on Blackwell is unchanged. Video workflows that depend on Parakeet for speech transcription are affected the same way. `NIMService` for `nimOperator.audio` may stay not Ready or enter `CrashLoopBackOff` while building the Riva/TensorRT engine (for example ONNX Runtime IR version, cuDNN visibility, or FP8 tactic errors). Use a non-Blackwell dedicated GPU, [hosted Parakeet on build.nvidia.com](audio-video.md#parakeet-hosted-inference-build-nvidia), or set `nimOperator.audio.enabled=false`.
153142

154-
³ Opt-in Omni captioning uses the [nemotron-3-nano-omni-30b-a3b-reasoning](https://docs.api.nvidia.com/nim/reference/nvidia-nemotron-3-nano-omni-30b-a3b-reasoning) NIM (`nvcr.io/nim/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:1.7.0-variant`). BF16 requires at least 80 GB total GPU memory; see the [VLM NIM support matrix](https://docs.nvidia.com/nim/vision-language-models/latest/support-matrix.html#nemotron-3-nano-omni-30b-a3b-reasoning). L40S requires two GPUs. A100 40GB, A10G, and RTX PRO 4500 are below the minimum.
143+
³ Opt-in Omni captioning uses the [nemotron-3-nano-omni-30b-a3b-reasoning](https://docs.api.nvidia.com/nim/reference/nvidia-nemotron-3-nano-omni-30b-a3b-reasoning) NIM (`nvcr.io/nim/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:1.7.0-variant`). BF16 requires at least 80 GB total GPU memory; refer to the [VLM NIM support matrix](https://docs.nvidia.com/nim/vision-language-models/latest/support-matrix.html#nemotron-3-nano-omni-30b-a3b-reasoning). L40S requires two GPUs. A100 40GB, A10G, and RTX PRO 4500 are below the minimum.
155144

156145
\* GPUs with less than 80GB VRAM cannot run the reranker concurrently with the core pipeline.
157146
To perform recall testing with the reranker on these GPUs, shut down the core pipeline NIM microservices

docs/docs/extraction/vdbs.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ Semantic retrieval uses dense embeddings to find content that is similar in mean
9191

9292
## Metadata and filtering { #metadata-and-filtering }
9393

94-
Refer to the [custom metadata notebook](https://github.com/NVIDIA/NeMo-Retriever/blob/main/examples/nemo_retriever_retriever_query_metadata_filter.ipynb) for an end-to-end example of adding custom metadata fields to your documents and filtering retrieval results with that metadata.
94+
Refer to the [metadata filtering notebook](https://github.com/NVIDIA/NeMo-Retriever/blob/main/examples/nemo_retriever_retriever_query_metadata_filter.ipynb) for an end-to-end example of adding custom metadata fields to your documents and filtering retrieval results with that metadata.
9595

9696
## LanceDB deployment characteristics { #lancedb-deployment-characteristics }
9797

@@ -154,7 +154,7 @@ To implement a custom operator, follow the `VDB` abstract interface described in
154154

155155
## Related Topics { #related-topics }
156156

157-
- [Custom Metadata Ingestion & Search/Retrieval Filtering](https://github.com/NVIDIA/NeMo-Retriever/blob/main/examples/nemo_retriever_retriever_query_metadata_filter.ipynb)
157+
- [Metadata and filtering](#metadata-and-filtering)
158158
- [Vector DB operators and LanceDB (source)](https://github.com/NVIDIA/NeMo-Retriever/tree/main/nemo_retriever/src/nemo_retriever/common/vdb)
159159
- [Use the NeMo Retriever Library Python API](nemo-retriever-api-reference.md)
160160
- [Store Extracted Images](nemo-retriever-api-reference.md)

docs/docs/extraction/workflow-agentic-retrieval.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ NeMo Retriever Library provides ingestion, embedding, storage, and retrieval bui
88

99
Use these pages together with your orchestration layer:
1010

11-
- [Semantic retrieval](vdbs.md#semantic-retrieval), [Custom Metadata and filtering](vdbs.md#metadata-and-filtering), and [Evaluate on your data](evaluate-on-your-data.md) for retrieval quality and reranking notes
11+
- [Semantic retrieval](vdbs.md#semantic-retrieval), [Metadata and filtering](vdbs.md#metadata-and-filtering), and [Evaluate on your data](evaluate-on-your-data.md) for retrieval quality, reranking, and evaluation guidance
1212
- [Agentic retrieval (concept)](agentic-retrieval-concept.md)
13-
- [Evaluate on your data](evaluate-on-your-data.md), which includes retrieval evaluation guidance
1413
- [Release notes](releasenotes.md), which may mention agentic retrieval updates

docs/publish/versions.json

Lines changed: 1 addition & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,48 +2,11 @@
22
{
33
"version": "26.5.0",
44
"title": "26.5.0",
5-
"aliases": [
6-
"latest"
7-
]
5+
"aliases": ["latest"]
86
},
97
{
108
"version": "26.3.0",
119
"title": "26.3.0",
1210
"aliases": []
13-
},
14-
{
15-
"version": "26.1.2",
16-
"title": "26.1.2",
17-
"aliases": []
18-
},
19-
{
20-
"version": "26.1.1",
21-
"title": "26.1.1",
22-
"aliases": []
23-
},
24-
{
25-
"version": "25.9.0",
26-
"title": "25.9.0",
27-
"aliases": []
28-
},
29-
{
30-
"version": "25.6.3",
31-
"title": "25.6.3",
32-
"aliases": []
33-
},
34-
{
35-
"version": "25.6.2",
36-
"title": "25.6.2",
37-
"aliases": []
38-
},
39-
{
40-
"version": "25.4.2",
41-
"title": "25.4.2",
42-
"aliases": []
43-
},
44-
{
45-
"version": "25.3.0",
46-
"title": "25.3.0",
47-
"aliases": []
4811
}
4912
]

nemo_retriever/README.md

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,83 @@ Answer:
309309
Cat is the animal whose activity (jumping onto a laptop) matches the location of the typos, so the cat is responsible for the typos in the documents.
310310
```
311311

312+
### Run agentic retrieval
313+
314+
Agentic retrieval runs an LLM-driven ReAct loop over an existing LanceDB index.
315+
It does not ingest documents; first build the index with one of the ingestion
316+
flows above, then query the same `lancedb_uri`, `table_name`, and embedding
317+
model.
318+
319+
For [build.nvidia.com](https://build.nvidia.com/) hosted inference, set
320+
`NVIDIA_API_KEY`. On CPU-only machines, the CPU embedding actor and agent LLM
321+
use the hosted NVIDIA endpoints by default:
322+
323+
```bash
324+
export NVIDIA_API_KEY=nvapi-...
325+
326+
retriever query "Given their activities, which animal is responsible for the typos in my documents?" \
327+
--agentic \
328+
--agentic-llm-model nvidia/llama-3.3-nemotron-super-49b-v1.5 \
329+
--lancedb-uri lancedb \
330+
--table-name nemo-retriever \
331+
--embed-model-name nvidia/llama-nemotron-embed-1b-v2
332+
```
333+
334+
The agentic LLM uses the built-in NVIDIA hosted chat-completions endpoint when
335+
`--agentic-invoke-url` is omitted. On CPU-only machines, embedding actors also
336+
resolve to CPU/remote implementations and default to hosted endpoints. On
337+
GPU-capable machines, embedding prefers the local GPU implementation unless an
338+
endpoint URL, such as `--embed-invoke-url https://integrate.api.nvidia.com/v1/embeddings`,
339+
is provided.
340+
341+
For a quick smoke test, lower the amount of agent work:
342+
343+
```bash
344+
retriever query "What is RAG?" \
345+
--agentic \
346+
--agentic-llm-model nvidia/llama-3.3-nemotron-super-49b-v1.5 \
347+
--lancedb-uri lancedb \
348+
--table-name nemo-retriever \
349+
--embed-model-name nvidia/llama-nemotron-embed-1b-v2 \
350+
--top-k 1 \
351+
--agentic-react-max-steps 1 \
352+
--agentic-backend-top-k 1
353+
```
354+
355+
The same flow is available from Python. It uses the same `NVIDIA_API_KEY`
356+
environment variable shown above for hosted embedding and chat-completions
357+
requests.
358+
359+
```python
360+
from nemo_retriever.cli.query_workflow import agentic_query_documents
361+
from nemo_retriever.query.options import (
362+
QueryAgenticOptions,
363+
QueryEmbedOptions,
364+
QueryRequest,
365+
QueryRetrievalOptions,
366+
QueryStorageOptions,
367+
)
368+
369+
# Requires NVIDIA_API_KEY=nvapi-... in the environment.
370+
results = agentic_query_documents(
371+
QueryRequest(
372+
query="What is RAG?",
373+
retrieval=QueryRetrievalOptions(top_k=10),
374+
storage=QueryStorageOptions(
375+
lancedb_uri="lancedb",
376+
table_name="nemo-retriever",
377+
),
378+
embed=QueryEmbedOptions(
379+
embed_model_name="nvidia/llama-nemotron-embed-1b-v2",
380+
),
381+
agentic=QueryAgenticOptions(
382+
enabled=True,
383+
llm_model="nvidia/llama-3.3-nemotron-super-49b-v1.5",
384+
),
385+
)
386+
)
387+
```
388+
312389
### Live RAG SDK (retrieve + answer in one call)
313390

314391
The pattern above -- retrieve hits, build a prompt, call an LLM -- is baked into the SDK as `Retriever.answer()` so live applications can skip the boilerplate. The same `Retriever` instance powers three entry points:

0 commit comments

Comments
 (0)