Skip to content

Commit 6a46fb2

Browse files
committed
Merge upstream/main into docs/backport-2194-extraction-docs-fix
Resolve audio-video.md by keeping PR deploy-trim prose with main's create_ingestor example, ffmpeg step, and workflow link. Keep custom-metadata.md deleted; vdbs.md redirect covers deep links.
2 parents a139da2 + bfb3bce commit 6a46fb2

36 files changed

Lines changed: 2286 additions & 2171 deletions

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ SPDX-License-Identifier: Apache-2.0
66

77
**Important: The default branch is main, which tracks active development and may be ahead of the latest supported release.**
88

9-
For the latest release line use the [26.05 branch](https://github.com/NVIDIA/NeMo-Retriever/tree/26.05) (RC builds are tagged `26.05-RC1`, `26.05-RC2`, …). The previous stable line is [26.03](https://github.com/NVIDIA/NeMo-Retriever/tree/26.03).
9+
For the latest supported release, use the [26.05 branch](https://github.com/NVIDIA/NeMo-Retriever/tree/26.05) (GA PyPI and Helm chart version `26.5.0`). The previous stable line is [26.03](https://github.com/NVIDIA/NeMo-Retriever/tree/26.03).
1010

1111
See the corresponding [NeMo Retriever Library documentation](https://docs.nvidia.com/nemo/retriever/latest/extraction/overview/).
1212

docs/docs/extraction/audio-video.md

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

33
Use this page for speech and audio extraction with Parakeet ASR and for video workflows that combine audio with OCR on frames or derived images.
44

5-
For air-gapped or disconnected deployments, see [Air-gapped and disconnected deployment](deployment-options.md#air-gapped-deployment).
5+
For air-gapped or disconnected deployments, refer to [Air-gapped and disconnected deployment](deployment-options.md#air-gapped-deployment).
66

77
**Sections:** [Speech and audio (Parakeet)](#speech-and-audio-extraction) · [Run Parakeet on the cluster (Helm)](#run-parakeet-on-the-cluster-helm) · [Parakeet with hosted inference (build.nvidia.com)](#parakeet-hosted-inference-build-nvidia) · [Video and frame OCR](#video-and-frame-ocr)
88

@@ -18,7 +18,7 @@ Supported file types for speech extraction today:
1818
- `mp3`, `wav`
1919
- `mp4`, `mov`, `mkv`, `avi` — common video containers; the audio track is transcribed (same extensions as in [What is NeMo Retriever Library?](overview.md))
2020

21-
[NeMo Retriever Library](overview.md) supports extracting speech from audio for Retrieval Augmented Generation (RAG). Similar to how the multimodal document pipeline uses detection and OCR microservices, NeMo Retriever Library uses the [parakeet-1-1b-ctc-en-us ASR NIM](https://docs.nvidia.com/nim/speech/latest/asr/deploy-asr-models/parakeet-ctc-en-us.html) to transcribe speech to text, then embeddings via the NeMo Retriever embedding path.
21+
[NeMo Retriever Library](overview.md) supports extracting speech from audio for Retrieval Augmented Generation (RAG). Similar to how the multimodal document pipeline uses detection and OCR microservices, NeMo Retriever Library uses the [parakeet-1-1b-ctc-en-us ASR NIM](https://docs.nvidia.com/nim/speech/latest/asr/deploy-asr-models/parakeet-ctc-en-us.html) to transcribe speech to text, then embeddings through the NeMo Retriever embedding path.
2222

2323
Before running audio extraction from Python with either self-hosted or hosted Parakeet, install the multimedia extra so the Parakeet ASR client can decode and resample audio:
2424

@@ -48,63 +48,64 @@ For Kubernetes deployments with network access to package repositories, set
4848
[Helm chart](https://github.com/NVIDIA/NeMo-Retriever/blob/main/nemo_retriever/helm/README.md#1-service-image)
4949
to install ffmpeg/ffprobe at service startup. This runtime path requires
5050
package-repository network egress, a writable root filesystem, and a security
51-
policy that allows the image's scoped sudo use. For air-gapped clusters, see
51+
policy that allows the image's scoped sudo use. For air-gapped clusters, refer to
5252
[Air-gapped and disconnected deployment](deployment-options.md#air-gapped-deployment).
5353

5454
!!! important
5555

5656
Due to limitations in available VRAM controls in the current release, the parakeet-1-1b-ctc-en-us ASR NIM must run on a [dedicated additional GPU](prerequisites-support-matrix.md#model-hardware-requirements). For the full list of requirements, refer to the [Pre-Requisites & Support Matrix](prerequisites-support-matrix.md#model-hardware-requirements).
5757

58-
This pipeline enables retrieval at the speech segment level when you enable segmenting (see examples below).
58+
This pipeline enables retrieval at the speech segment level when you enable segmenting (refer to the examples below).
5959

6060
![Overview diagram](images/audio.png)
6161

6262
## Run Parakeet on the cluster (Helm) { #run-parakeet-on-the-cluster-helm }
6363

64-
Use the following procedure for self-hosted Parakeet on your cluster. For chart enablement, GPU placement, ffmpeg, and endpoint wiring, see [Optional Helm NIMs](prerequisites-support-matrix.md#optional-helm-nims-not-auto-wired-by-default) and [Audio and video (Parakeet ASR)](https://github.com/NVIDIA/NeMo-Retriever/blob/main/nemo_retriever/helm/README.md#audio-video-parakeet) in the Helm chart README, plus [Deployment options](deployment-options.md).
64+
Use the following procedure for self-hosted Parakeet on your cluster. For chart enablement, GPU placement, ffmpeg, and endpoint wiring, refer to [Optional Helm NIMs](prerequisites-support-matrix.md#optional-helm-nims-not-auto-wired-by-default) and [Audio and video (Parakeet ASR)](https://github.com/NVIDIA/NeMo-Retriever/blob/main/nemo_retriever/helm/README.md#audio-video-parakeet) in the Helm chart README, plus [Deployment options](deployment-options.md).
6565

6666
1. Deploy or upgrade per that Helm guide and [Deployment options](deployment-options.md).
6767

68-
2. After the services are running, interact with the pipeline from Python.
68+
2. If the service will process audio or video files, set `service.installFfmpeg=true` in the Helm chart when your cluster allows runtime package installation; for air-gapped clusters, refer to [Air-gapped and disconnected deployment](deployment-options.md#air-gapped-deployment) and the [Helm chart README](https://github.com/NVIDIA/NeMo-Retriever/blob/main/nemo_retriever/helm/README.md#1-service-image) for `service.image` overrides.
6969

70-
- The `Ingestor` object initializes the ingestion process.
71-
- The `files` method specifies the input files to process.
72-
- The `extract_audio` method runs audio extraction.
70+
3. After the services are running, interact with the pipeline from Python (refer to the [Python API guide](nemo-retriever-api-reference.md) for parameter details).
71+
72+
- In `batch` mode, pass the in-cluster Parakeet gRPC endpoint through `ASRParams.audio_endpoints` (for example `audio:50051` from your Helm release). The retriever service auto-wires this endpoint; graph ingest does not.
7373

7474
```python
75+
from nemo_retriever import create_ingestor
7576
from nemo_retriever.params.models import ASRParams
7677

7778
ingestor = (
78-
Ingestor()
79+
create_ingestor(run_mode="batch")
7980
.files("./data/*.wav")
8081
.extract_audio(
81-
asr_params=ASRParams(segment_audio=True),
82+
asr_params=ASRParams(
83+
audio_endpoints=("audio:50051", None), # (grpc_endpoint, http_endpoint)
84+
segment_audio=True,
85+
),
8286
)
8387
)
88+
results = ingestor.ingest()
8489
```
8590

86-
To generate one extracted element for each sentence-like ASR segment, pass `asr_params=ASRParams(segment_audio=True)` to `.extract_audio(...)`. This option applies when audio extraction runs with a self-hosted Parakeet NIM or using build.nvidia.com hosted inference, but has no effect when using the local Hugging Face Parakeet model.
91+
To generate one extracted element for each sentence-like ASR segment, pass `asr_params=ASRParams(segment_audio=True)` to `.extract_audio(...)`. This option applies when audio extraction runs with a self-hosted Parakeet NIM or using build.nvidia.com hosted inference, but has no effect when using the local Hugging Face Parakeet model.
8792

88-
For more Python examples, refer to [Python Quick Start Guide](https://github.com/NVIDIA/NeMo-Retriever/blob/main/client/client_examples/examples/python_client_usage.ipynb).
93+
For more runnable examples, refer to [Workflow: Ingest documents](workflow-document-ingestion.md).
8994

9095
## Parakeet with hosted inference (build.nvidia.com) { #parakeet-hosted-inference-build-nvidia }
9196

9297
Instead of running the pipeline locally, you can call Parakeet through [build.nvidia.com](https://build.nvidia.com/) hosted inference.
9398

9499
1. On the Parakeet model page on [build.nvidia.com](https://build.nvidia.com/), create or copy an API key and note the function ID for hosted access. You need both before making API calls.
95100

96-
2. Run inference from Python with the hosted gRPC endpoint and credentials from that page (the example below uses the default hosted gRPC hostname; confirm values in the **Get API Key** flow for your deployment).
97-
98-
- The `Ingestor` object initializes the ingestion process.
99-
- The `files` method specifies the input files to process.
100-
- The `extract_audio` method runs audio extraction.
101-
- The hosted gRPC endpoint, function ID, and API key are routed through `ASRParams`. Pass them via `asr_params=ASRParams(...)`; the ASR actor reads `audio_endpoints`, `function_id`, and `auth_token` from that object.
101+
2. Run inference from Python with the hosted gRPC endpoint and credentials from that page (the example below uses the default hosted gRPC hostname; confirm values in the **Get API Key** flow for your deployment). Pass hosted endpoint, function ID, and API key through `ASRParams` (`audio_endpoints`, `function_id`, `auth_token`).
102102

103103
```python
104+
from nemo_retriever import create_ingestor
104105
from nemo_retriever.params.models import ASRParams
105106

106107
ingestor = (
107-
Ingestor()
108+
create_ingestor(run_mode="batch")
108109
.files("./data/*.mp3")
109110
.extract_audio(
110111
asr_params=ASRParams(
@@ -115,21 +116,22 @@ Instead of running the pipeline locally, you can call Parakeet through [build.nv
115116
),
116117
)
117118
)
119+
results = ingestor.ingest()
118120
```
119121

120122
!!! tip
121123

122-
For more Python examples, refer to [Python Quick Start Guide](https://github.com/NVIDIA/NeMo-Retriever/blob/main/client/client_examples/examples/python_client_usage.ipynb).
124+
For more runnable examples, refer to [Workflow: Ingest documents](workflow-document-ingestion.md).
123125

124126
## Video and frame OCR { #video-and-frame-ocr }
125127

126-
For video assets, NeMo Retriever Library can combine audio or speech processing (see [Speech and audio extraction](#speech-and-audio-extraction) above) with visual text extraction when OCR applies to frames or derived images.
128+
For video assets, NeMo Retriever Library can combine audio or speech processing (refer to [Speech and audio extraction](#speech-and-audio-extraction) above) with visual text extraction when OCR applies to frames or derived images.
127129

128-
For OCR-oriented extract methods on scanned or image-heavy content, see [OCR and scanned documents](multimodal-extraction.md#ocr-and-scanned-documents), [text and layout extraction](multimodal-extraction.md#text-and-layout-extraction), and [Nemotron Parse](https://build.nvidia.com/nvidia/nemotron-parse) for advanced visual parsing.
130+
For OCR-oriented extract methods on scanned or image-heavy content, refer to [OCR and scanned documents](multimodal-extraction.md#ocr-and-scanned-documents), [text and layout extraction](multimodal-extraction.md#text-and-layout-extraction), and [Nemotron Parse](https://build.nvidia.com/nvidia/nemotron-parse) for advanced visual parsing.
129131

130-
Container formats and early-access video types are listed under [supported file types and formats](multimodal-extraction.md#supported-file-types-and-formats) (see [What is NeMo Retriever Library?](overview.md) for the full list).
132+
Container formats and early-access video types are listed under [supported file types and formats](multimodal-extraction.md#supported-file-types-and-formats) (refer to [What is NeMo Retriever Library?](overview.md) for the full list).
131133

132-
For end-to-end RAG stacks that include multimodal ingestion, see the [NVIDIA AI Blueprints catalog](https://build.nvidia.com/explore/discover) and related solution pages on [NVIDIA Build](https://build.nvidia.com/).
134+
For end-to-end RAG stacks that include multimodal ingestion, refer to the [NVIDIA AI Blueprints catalog](https://build.nvidia.com/explore/discover) and related solution pages on [NVIDIA Build](https://build.nvidia.com/).
133135

134136
## Related topics { #related-topics }
135137

docs/docs/extraction/embedding.md

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

33
!!! note "Text-only NeMo Retriever embedding NIM"
44

5-
You can still use the NeMo Retriever text embedding NIM (OpenAI-compatible embeddings for passage and query vectors) alongside or instead of the multimodal flows on this page. Product and deployment details are in the [NeMo Retriever Text Embedding NIM documentation](https://docs.nvidia.com/nim/nemo-retriever/text-embedding/latest/overview.html). In library and CLI pipelines, route embedding to that NIM with your configured `embed` / invoke URL and model name (see the [graph pipeline examples](https://github.com/NVIDIA/NeMo-Retriever/blob/main/nemo_retriever/README.md) for environment-based remote inference).
5+
You can still use the NeMo Retriever text embedding NIM (OpenAI-compatible embeddings for passage and query vectors) alongside or instead of the multimodal flows on this page. Product and deployment details are in the [NeMo Retriever Text Embedding NIM documentation](https://docs.nvidia.com/nim/nemo-retriever/text-embedding/latest/overview.html). In library and CLI pipelines, route embedding to that NIM with your configured embed endpoint and model name (refer to the [graph pipeline examples](https://github.com/NVIDIA/NeMo-Retriever/blob/main/nemo_retriever/README.md) for environment-based remote inference).
66

77
This documentation describes how to use [NeMo Retriever Library](overview.md)
88
with the multimodal embedding model [Llama Nemotron Embed VL 1B v2](https://build.nvidia.com/nvidia/llama-nemotron-embed-vl-1b-v2).
@@ -12,6 +12,7 @@ The model can embed documents in the form of an image, text, or a combination of
1212
Documents can then be retrieved given a user query in text form.
1313
The model supports images that contain text, tables, charts, and infographics.
1414

15+
Parameter details for `.extract()` and `.embed()` appear in the [Python API guide](nemo-retriever-api-reference.md).
1516

1617
## Example with Default Text-Based Embedding
1718

@@ -21,27 +22,31 @@ The following example provides a strong baseline for retrieval.
2122
- The `embed` method is called with no arguments.
2223

2324
```python
25+
from nemo_retriever import create_ingestor
26+
2427
ingestor = (
25-
Ingestor()
28+
create_ingestor(run_mode="batch")
2629
.files("./data/*.pdf")
2730
.extract()
28-
.embed() # Default behavior embeds all content as text
31+
.embed() # Default behavior embeds all content as text
2932
)
3033
results = ingestor.ingest()
3134
```
3235

3336

3437
## Example with Embedding Structured Elements as Text + Images
3538

36-
It is common to process PDFs by embedding standard text as text, and embed visual elements like tables and charts as images.
39+
It is common to process PDFs by embedding standard text as text and embed visual elements such as tables and charts as images.
3740
The following example enables the multimodal model to capture the spatial and structural information of the visual content.
3841

3942
- The `embed` method is configured with `embed_modality="text_image"` to embed the extracted tables and charts as images.
40-
- This configuration is more accurate than text only with a performance cost
43+
- This configuration is more accurate than text only, with a performance cost.
4144

4245
```python
46+
from nemo_retriever import create_ingestor
47+
4348
ingestor = (
44-
Ingestor()
49+
create_ingestor(run_mode="batch")
4550
.files("./data/*.pdf")
4651
.extract()
4752
.embed(
@@ -58,16 +63,18 @@ For documents where the entire page layout is important (such as infographics, c
5863
you can configure NeMo Retriever Library to treat every page as a single image.
5964
The following example extracts and embeds each page as an image.
6065

61-
- The `embed method` processes the page images.
66+
- The `embed` method processes the page images.
6267

6368
```python
69+
from nemo_retriever import create_ingestor
70+
6471
ingestor = (
65-
Ingestor()
72+
create_ingestor(run_mode="batch")
6673
.files("./data/*.pdf")
6774
.extract()
6875
.embed(
6976
embed_modality="image",
70-
embed_granularity="page"
77+
embed_granularity="page",
7178
)
7279
)
7380
results = ingestor.ingest()
@@ -78,4 +85,3 @@ results = ingestor.ingest()
7885
- [Pre-Requisites & Support Matrix](prerequisites-support-matrix.md)
7986
- [Troubleshoot Nemo Retriever Extraction](troubleshoot.md)
8087
- [Use the Python API](nemo-retriever-api-reference.md)
81-
- [Extract Captions from Images](nemo-retriever-api-reference.md)

docs/docs/extraction/nimclient.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ For advanced usage patterns, refer to the existing model interfaces in `nemo_ret
1313

1414
## Quick Start
1515

16+
For ingest and pipeline APIs used with NimClient in UDFs, refer to the [Python API guide](nemo-retriever-api-reference.md).
17+
1618
### Basic NimClient Creation
1719

1820
```python

docs/docs/extraction/notebooks/index.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,17 @@ If you plan to run benchmarking or evaluation tests, you must download the [Benc
88

99
## Getting Started
1010

11-
To get started with the basics, try one of the following notebooks:
11+
To get started with the basics, try one of the following guides or notebooks:
1212

13-
- [CLI Quick Start Guide](https://github.com/NVIDIA/NeMo-Retriever/blob/main/client/client_examples/examples/cli_client_usage.ipynb)
14-
- [Python Quick Start Guide](https://github.com/NVIDIA/NeMo-Retriever/blob/main/client/client_examples/examples/python_client_usage.ipynb)
15-
- [How to add metadata to your documents and filter searches](https://github.com/NVIDIA/NeMo-Retriever/blob/main/examples/metadata_and_filtered_search.ipynb)
16-
- [How to reindex a collection](https://github.com/NVIDIA/NeMo-Retriever/blob/main/examples/reindex_example.ipynb)
13+
- [Quickstart: retriever CLI](../../reference/retriever-cli-quickstart.md)
14+
- [Workflow: Ingest documents](../workflow-document-ingestion.md)
15+
- [How to add metadata to your documents and filter searches](https://github.com/NVIDIA/NeMo-Retriever/blob/main/examples/nemo_retriever_retriever_query_metadata_filter.ipynb)
1716

1817

1918
For more advanced scenarios, try one of the following notebooks:
2019

2120
- [Build a Custom Vector Database Operator](https://github.com/NVIDIA/NeMo-Retriever/blob/main/examples/building_vdb_operator.ipynb)
22-
- [Try Enterprise RAG Blueprint](https://github.com/NVIDIA/NeMo-Retriever/blob/main/deploy/pdf-blueprint.ipynb)
21+
- [Try Enterprise RAG Blueprint](https://build.nvidia.com/nvidia/multimodal-pdf-data-extraction-for-enterprise-rag)
2322
- [Evaluate bo767 retrieval recall accuracy with NeMo Retriever Library](https://github.com/NVIDIA/NeMo-Retriever/blob/main/evaluation/bo767_recall.ipynb)
2423
- [Multimodal RAG with LangChain](https://github.com/NVIDIA/NeMo-Retriever/blob/main/examples/langchain_multimodal_rag.ipynb)
2524
- [Multimodal RAG with LlamaIndex](https://github.com/NVIDIA/NeMo-Retriever/blob/main/examples/llama_index_multimodal_rag.ipynb)

0 commit comments

Comments
 (0)