From f389b2822e455006b3092f6bd10e2c18baee700a Mon Sep 17 00:00:00 2001 From: Kurt Heiss Date: Thu, 23 Apr 2026 08:23:37 -0700 Subject: [PATCH 1/5] Lance DB updates --- .../extraction/quickstart-library-mode.md | 25 ++++++++++--------- .../docs/extraction/releasenotes-nv-ingest.md | 3 ++- docs/docs/extraction/support-matrix.md | 2 +- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/docs/docs/extraction/quickstart-library-mode.md b/docs/docs/extraction/quickstart-library-mode.md index c3331a662e..30cbe3a7b3 100644 --- a/docs/docs/extraction/quickstart-library-mode.md +++ b/docs/docs/extraction/quickstart-library-mode.md @@ -6,6 +6,8 @@ Use the [Quick Start for NeMo Retriever Library](https://github.com/NVIDIA/NeMo-Retriever/blob/26.03/nemo_retriever/README.md) to set up and run the NeMo Retriever Library locally, so you can build a GPU‑accelerated, multimodal RAG ingestion pipeline that parses PDFs, HTML, text, audio, and video into LanceDB vector embeddings, integrates with Nemotron RAG models (locally or via NIM endpoints), which includes Ray‑based scaling with built‑in recall evaluation. Python 3.12 or later is required (see [Prerequisites](prerequisites.md)). +By default, library mode stores vectors in LanceDB (embedded; data under `./lancedb` unless you set `uri`). You do not need `milvus-lite` or a running Milvus server for that path. To use Milvus instead (for example [milvus-lite](https://milvus.io/docs/milvus_lite.md) with a local `milvus.db` file), call `.vdb_upload` with `milvus_uri` and without selecting the LanceDB operator—for example `.vdb_upload(collection_name=..., milvus_uri="milvus.db", ...)` as shown in [Data Upload](data-store.md#upload-to-milvus). + ## `run_pipeline` The primary Python entry point for launching the Ray-based ingestion pipeline in library mode is `run_pipeline` in `nv_ingest.framework.orchestration.ray.util.pipeline.pipeline_runners`. @@ -29,11 +31,9 @@ def main(): message_client_hostname="localhost", ) - # gpu_cagra accelerated indexing is not available in milvus-lite - # Provide a filename for milvus_uri to use milvus-lite - milvus_uri = "milvus.db" - collection_name = "test" - sparse = False + # LanceDB (default): embedded vector store; set uri/table_name as needed. + # For Milvus instead, use .vdb_upload(collection_name=..., milvus_uri="milvus.db", sparse=False, dense_dim=2048). + table_name = "test" # do content extraction from files ingestor = ( @@ -51,11 +51,10 @@ def main(): ) .embed() .vdb_upload( - collection_name=collection_name, - milvus_uri=milvus_uri, - sparse=sparse, - # for llama-3.2 embedder, use 1024 for e5-v5 - dense_dim=2048, + vdb_op="lancedb", + uri="lancedb", + table_name=table_name, + hybrid=False, ) ) @@ -116,9 +115,11 @@ This chart shows some gadgets, and some very fictitious costs. ... document extract continues ... ``` -## Step 3: Query Ingested Content +## Step 3: Query ingested content (Milvus) + +The following example uses **`nvingest_retrieval`** against a **Milvus** collection (for example data you uploaded with `milvus_uri`, including milvus-lite). If you ingested with **LanceDB** as in the previous example, use the LanceDB APIs, environment variables (`VDB_BACKEND`, `HYBRID`), and hybrid retrieval patterns described in [Data Upload](data-store.md) instead of this Milvus-specific helper. -To query for relevant snippets of the ingested content, and use them with an LLM to generate answers, use the following code. +To query for relevant snippets of Milvus-ingested content, and use them with an LLM to generate answers, use the following code. ```python import os diff --git a/docs/docs/extraction/releasenotes-nv-ingest.md b/docs/docs/extraction/releasenotes-nv-ingest.md index ffd53c47dd..1ca94efe36 100644 --- a/docs/docs/extraction/releasenotes-nv-ingest.md +++ b/docs/docs/extraction/releasenotes-nv-ingest.md @@ -27,7 +27,8 @@ Highlights for the 26.03 release include: - VLM-based image caption enhancements: - Infographics can be captioned - Reasoning mode is configurable -- Enabled hybrid search with Lancedb +- **LanceDB is now the default vector database backend** for extraction and indexing; Milvus remains fully supported. For upload, hybrid search, and infrastructure options, see [Data Upload](data-store.md). +- Enabled hybrid search with LanceDB (BM25 full-text search combined with dense vectors and reciprocal rank fusion). - Added retrieval_bench subfolder with generalizable agentic retrieval pipeline - The project now uses UV as the primary environment and package manager instead of Conda, resulting in faster installs and simpler dependency handling - Default Redis TTL increased from 1–2 hours to 48 hours so long-running jobs (e.g., VLM captioning) don’t expire before completion diff --git a/docs/docs/extraction/support-matrix.md b/docs/docs/extraction/support-matrix.md index 0df56fa5c3..b95c1fb05a 100644 --- a/docs/docs/extraction/support-matrix.md +++ b/docs/docs/extraction/support-matrix.md @@ -22,7 +22,7 @@ The core pipeline features include the following: - nemotron-table-structure-v1 — Detects rows, columns, and cells within a table to preserve table structure and convert to Markdown format. - nemotron-graphic-elements-v1 — Detects graphic elements within chart images such as titles, legends, axes, and numerical values. - nemotron-ocr-v1 — Image OCR model to detect and extract text from images. -- retrieval — Enables embedding and indexing into Milvus. +- retrieval — Enables embedding and indexing into [LanceDB](https://lancedb.com/) (default) or [Milvus](https://milvus.io/). For configuration and alternatives, refer to [Data Upload](data-store.md). Advanced features require additional GPU support and disk space. This includes the following: From e74bedde33d81961bd3c651746c50864f986841a Mon Sep 17 00:00:00 2001 From: Kurt Heiss Date: Thu, 23 Apr 2026 09:15:37 -0700 Subject: [PATCH 2/5] Update quickstart-library-mode.md --- docs/docs/extraction/quickstart-library-mode.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/docs/extraction/quickstart-library-mode.md b/docs/docs/extraction/quickstart-library-mode.md index 30cbe3a7b3..ded2a923f7 100644 --- a/docs/docs/extraction/quickstart-library-mode.md +++ b/docs/docs/extraction/quickstart-library-mode.md @@ -115,9 +115,11 @@ This chart shows some gadgets, and some very fictitious costs. ... document extract continues ... ``` -## Step 3: Query ingested content (Milvus) +## Query ingested content (Milvus) -The following example uses **`nvingest_retrieval`** against a **Milvus** collection (for example data you uploaded with `milvus_uri`, including milvus-lite). If you ingested with **LanceDB** as in the previous example, use the LanceDB APIs, environment variables (`VDB_BACKEND`, `HYBRID`), and hybrid retrieval patterns described in [Data Upload](data-store.md) instead of this Milvus-specific helper. +This step is optional and shows how to query your ingested content from Milvus. If you are using the default LanceDB path, see `data-store.md` for LanceDB query examples. + +The following example uses `nvingest_retrieval` against a Milvus collection (for example data you uploaded with `milvus_uri`, including milvus-lite). If you ingested with **LanceDB** as in the previous example, use the LanceDB APIs, environment variables (`VDB_BACKEND`, `HYBRID`), and hybrid retrieval patterns described in [Data Upload](data-store.md) instead of this Milvus-specific helper. To query for relevant snippets of Milvus-ingested content, and use them with an LLM to generate answers, use the following code. From 96fdeb4da43bcc16800ea7a3543382b17c890e7f Mon Sep 17 00:00:00 2001 From: Kurt Heiss Date: Thu, 23 Apr 2026 09:17:41 -0700 Subject: [PATCH 3/5] Update quickstart-library-mode.md --- docs/docs/extraction/quickstart-library-mode.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/docs/extraction/quickstart-library-mode.md b/docs/docs/extraction/quickstart-library-mode.md index ded2a923f7..e46c46a7d8 100644 --- a/docs/docs/extraction/quickstart-library-mode.md +++ b/docs/docs/extraction/quickstart-library-mode.md @@ -6,7 +6,11 @@ Use the [Quick Start for NeMo Retriever Library](https://github.com/NVIDIA/NeMo-Retriever/blob/26.03/nemo_retriever/README.md) to set up and run the NeMo Retriever Library locally, so you can build a GPU‑accelerated, multimodal RAG ingestion pipeline that parses PDFs, HTML, text, audio, and video into LanceDB vector embeddings, integrates with Nemotron RAG models (locally or via NIM endpoints), which includes Ray‑based scaling with built‑in recall evaluation. Python 3.12 or later is required (see [Prerequisites](prerequisites.md)). -By default, library mode stores vectors in LanceDB (embedded; data under `./lancedb` unless you set `uri`). You do not need `milvus-lite` or a running Milvus server for that path. To use Milvus instead (for example [milvus-lite](https://milvus.io/docs/milvus_lite.md) with a local `milvus.db` file), call `.vdb_upload` with `milvus_uri` and without selecting the LanceDB operator—for example `.vdb_upload(collection_name=..., milvus_uri="milvus.db", ...)` as shown in [Data Upload](data-store.md#upload-to-milvus). +By default, library mode stores vectors in LanceDB (embedded; data under `./lancedb` unless you set `uri`). You do not need to pass `uri` for the default setup. + +```python +store = ExtractorStore.from_default() +``` ## `run_pipeline` From df0600c1bfe019ebb87797b47610dab0fc7c8f23 Mon Sep 17 00:00:00 2001 From: Kurt Heiss Date: Wed, 29 Apr 2026 09:55:24 -0700 Subject: [PATCH 4/5] Update file for LanceDB usage --- docs/docs/extraction/quickstart-library-mode.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/docs/extraction/quickstart-library-mode.md b/docs/docs/extraction/quickstart-library-mode.md index 30cbe3a7b3..0b5f849f2a 100644 --- a/docs/docs/extraction/quickstart-library-mode.md +++ b/docs/docs/extraction/quickstart-library-mode.md @@ -115,9 +115,15 @@ This chart shows some gadgets, and some very fictitious costs. ... document extract continues ... ``` -## Step 3: Query ingested content (Milvus) +## Query ingested content -The following example uses **`nvingest_retrieval`** against a **Milvus** collection (for example data you uploaded with `milvus_uri`, including milvus-lite). If you ingested with **LanceDB** as in the previous example, use the LanceDB APIs, environment variables (`VDB_BACKEND`, `HYBRID`), and hybrid retrieval patterns described in [Data Upload](data-store.md) instead of this Milvus-specific helper. +### LanceDB (default path) + +If you ingested with LanceDB as in the `run_pipeline` example, query with **`lancedb_retrieval`** or the `LanceDB` operator’s **`retrieval`** method using the same `uri` and `table_name` you passed to **`vdb_upload`**. See [Data Upload — Upload to LanceDB (default)](data-store.md#upload-to-lancedb-default) for a minimal example, hybrid search, and related configuration. + +### Milvus (optional) + +The following example uses **`nvingest_retrieval`** against a **Milvus** collection (for example data you uploaded with `milvus_uri`, including milvus-lite). Skip this subsection if you used LanceDB above. To query for relevant snippets of Milvus-ingested content, and use them with an LLM to generate answers, use the following code. From e50881134e4397ef09b3e0bfeca12975796c6ab6 Mon Sep 17 00:00:00 2001 From: Kurt Heiss Date: Wed, 29 Apr 2026 13:32:58 -0700 Subject: [PATCH 5/5] updated file per Greptile review --- docs/docs/extraction/quickstart-library-mode.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/docs/docs/extraction/quickstart-library-mode.md b/docs/docs/extraction/quickstart-library-mode.md index e46c46a7d8..b447458a00 100644 --- a/docs/docs/extraction/quickstart-library-mode.md +++ b/docs/docs/extraction/quickstart-library-mode.md @@ -6,11 +6,7 @@ Use the [Quick Start for NeMo Retriever Library](https://github.com/NVIDIA/NeMo-Retriever/blob/26.03/nemo_retriever/README.md) to set up and run the NeMo Retriever Library locally, so you can build a GPU‑accelerated, multimodal RAG ingestion pipeline that parses PDFs, HTML, text, audio, and video into LanceDB vector embeddings, integrates with Nemotron RAG models (locally or via NIM endpoints), which includes Ray‑based scaling with built‑in recall evaluation. Python 3.12 or later is required (see [Prerequisites](prerequisites.md)). -By default, library mode stores vectors in LanceDB (embedded; data under `./lancedb` unless you set `uri`). You do not need to pass `uri` for the default setup. - -```python -store = ExtractorStore.from_default() -``` +By default, library mode stores vectors in LanceDB under `./lancedb` in the current working directory; `uri="lancedb"` in the example below is that same default path, not an extra requirement. ## `run_pipeline`