-
Notifications
You must be signed in to change notification settings - Fork 336
docs(extraction): add Customize & extend hub page #2287
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
kheiss-uwzoo
merged 7 commits into
NVIDIA:main
from
kheiss-uwzoo:docs/customize-extend-page
Jul 2, 2026
+75
−5
Merged
Changes from 3 commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
62018a2
docs(extraction): add Customize & extend hub page
kheiss-uwzoo 011f1d1
docs(extraction): polish Customize & extend after ::a/::p/::r
kheiss-uwzoo c2025dd
docs(extraction): drop incidental releasenotes whitespace from PR scope
kheiss-uwzoo 62dad03
Apply suggestion from @randerzander
kheiss-uwzoo bf1ec76
docs(extraction): remove placeholder Custom embedding models section
kheiss-uwzoo 7ce4d6b
docs(extraction): drop outdated notebook links from customize-extend
kheiss-uwzoo 07e28a3
Merge branch 'main' into docs/customize-extend-page
kheiss-uwzoo File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,81 @@ | ||
| # Customize & extend | ||
|
|
||
| NeMo Retriever Library ships with defaults tuned for strong recall on common document types. When those defaults are not enough, you can extend the library at several levels—from task keyword arguments on the fluent ingestor API through custom graph operators and vector-database adapters. | ||
|
|
||
| Use this page to choose an extension path and find the detailed guides in the repository. | ||
|
|
||
| The following table maps common needs to the right section: | ||
|
|
||
| | If you need to… | Start here | | ||
| |-----------------|------------| | ||
| | Tune extraction, chunking, embedding, or upload without new code | [Start with task configuration](#start-with-task-configuration) | | ||
| | Add a small Python transformation between pipeline stages | [User-defined functions (UDFs)](#user-defined-functions-udfs) | | ||
| | Build or reuse operators stage-by-stage | [Custom graph pipelines](#custom-graph-pipelines) | | ||
| | Store vectors in a backend other than LanceDB | [Custom vector databases](#custom-vector-databases) | | ||
| | Wire a non-default embedding model | [Custom embedding models](#custom-embedding-models) | | ||
|
|
||
| ## On this page { #on-this-page } | ||
|
|
||
| - [Start with task configuration](#start-with-task-configuration) | ||
| - [User-defined functions (UDFs)](#user-defined-functions-udfs) | ||
| - [Custom graph pipelines](#custom-graph-pipelines) | ||
| - [Custom vector databases](#custom-vector-databases) | ||
| - [Custom embedding models](#custom-embedding-models) | ||
| - [Related Topics](#related-topics) | ||
|
|
||
| ## Start with task configuration { #start-with-task-configuration } | ||
|
|
||
| Most customization does not require new code. Chain tasks on `create_ingestor(...)` and pass keyword arguments to control extraction, chunking, embedding, and storage—for example `extract_method`, chunking and splitting options on `.extract()`, `embed_modality` on `.embed()`, and `vdb_op` / `vdb_kwargs` on `.vdb_upload()`. | ||
|
|
||
| For parameter details, refer to the [Python API guide](nemo-retriever-api-reference.md). For chunking behavior and pipeline concepts, refer to [Concepts](concepts.md). | ||
|
|
||
| ## User-defined functions (UDFs) { #user-defined-functions-udfs } | ||
|
|
||
| A **user-defined function (UDF)** wraps your Python logic as a first-class pipeline stage. In the graph model, `UDFOperator` turns a plain callable into an operator you can chain with built-in stages—for example to normalize HTML, apply a custom split, or call an external service between extract and embed steps. | ||
|
|
||
| Use UDFs when you need a small, self-contained transformation that is not covered by task keyword arguments. | ||
|
|
||
| ### Repository guides and examples | ||
|
|
||
| - [NeMo Retriever graph README — `UDFOperator`](https://github.com/NVIDIA/NeMo-Retriever/tree/main/nemo_retriever/src/nemo_retriever/graph#using-udfoperator) — API, lifecycle, and when to use `UDFOperator` versus a custom operator class | ||
| - [UDF example scripts](https://github.com/NVIDIA/NeMo-Retriever/tree/main/examples/udfs) — sample implementations such as HTML-to-Markdown conversion and structural splitting | ||
| - [NimClient and custom NIM endpoints](https://github.com/NVIDIA/NeMo-Retriever/blob/main/nemo_retriever/developer_docs/nimclient.md#nimclient-and-custom-nim-endpoints) — call custom or self-hosted NIM microservices from UDF stages | ||
|
|
||
| ## Custom graph pipelines { #custom-graph-pipelines } | ||
|
|
||
| When you need to compose pipelines stage-by-stage, reuse operators across workflows, or run the same graph in-process or with Ray Data, use the **graph execution model** instead of (or alongside) the fluent `GraphIngestor` API. | ||
|
|
||
| The graph package provides `AbstractOperator`, executors (`InprocessExecutor`, `RayDataExecutor`), and operator chaining with `>>`. Built-in ingestion operators live under `nemo_retriever.operators`; you can add your own operators or UDF stages anywhere in the chain. | ||
|
|
||
| For the full guide—including custom operator classes, executors, and graph shape constraints—refer to the [NeMo Retriever graph README](https://github.com/NVIDIA/NeMo-Retriever/tree/main/nemo_retriever/src/nemo_retriever/graph#nemo-retriever-graph). | ||
|
|
||
| ## Custom vector databases { #custom-vector-databases } | ||
|
|
||
| The supported user path for vector storage is **[LanceDB](vdbs.md)** (`vdb_op="lancedb"`). That page covers upload, semantic retrieval, metadata filtering, and LanceDB deployment characteristics. | ||
|
|
||
| To integrate a different vector store, implement the [`VDB`](https://github.com/NVIDIA/NeMo-Retriever/blob/main/nemo_retriever/src/nemo_retriever/common/vdb/adt_vdb.py) interface and wire it through graph [`IngestVdbOperator`](https://github.com/NVIDIA/NeMo-Retriever/blob/main/nemo_retriever/src/nemo_retriever/operators/vdb.py) / [`RetrieveVdbOperator`](https://github.com/NVIDIA/NeMo-Retriever/blob/main/nemo_retriever/src/nemo_retriever/operators/vdb.py). NVIDIA validates the first-party LanceDB operator; you are responsible for testing and maintaining other backends. | ||
|
|
||
| ### Repository guides | ||
|
|
||
| - [Build a custom vector database operator (notebook)](https://github.com/NVIDIA/NeMo-Retriever/blob/main/examples/building_vdb_operator.ipynb) — step-by-step walkthrough | ||
|
charlesbluca marked this conversation as resolved.
Outdated
|
||
| - [Vector DB package (source)](https://github.com/NVIDIA/NeMo-Retriever/tree/main/nemo_retriever/src/nemo_retriever/common/vdb) — `VDB` abstract base and LanceDB reference implementation | ||
|
|
||
| Partner and blueprint integrations (Elasticsearch, Pinecone, Teradata, and others) are summarized on [Vector databases — Vector database partners](vdbs.md#vector-database-partners). | ||
|
|
||
| ## Custom embedding models { #custom-embedding-models } | ||
|
charlesbluca marked this conversation as resolved.
Outdated
|
||
|
|
||
| !!! note "Coming soon" | ||
|
kheiss-uwzoo marked this conversation as resolved.
Outdated
|
||
|
|
||
| Dedicated documentation for wiring custom embedding models into ingestion graphs is in progress. Today, configure embedding through task parameters and environment variables: | ||
|
|
||
| - [Multimodal embeddings (VLM)](embedding.md) — default and multimodal embed flows | ||
| - [Environment variables](environment-config.md) — `*_ENDPOINT` variables for self-hosted or hosted NIM embed services | ||
| - [NeMo Retriever Text Embedding NIM](https://docs.nvidia.com/nim/nemo-retriever/text-embedding/latest/overview.html) — OpenAI-compatible text embedding NIM | ||
|
|
||
| ## Related Topics { #related-topics } | ||
|
|
||
| - [Concepts — Pipeline and tasks](concepts.md#pipeline-and-tasks) | ||
| - [Vector databases](vdbs.md) | ||
| - [Multimodal embeddings (VLM)](embedding.md) | ||
| - [Python API guide](nemo-retriever-api-reference.md) | ||
| - [Starter kits and notebooks](starter-kits.md) | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.