feat(vdb): add optional streaming ingest with LanceDB - #2567
Conversation
Signed-off-by: jioffe502 <jioffe@nvidia.com>
Signed-off-by: jioffe502 <jioffe@nvidia.com>
|
Refreshed this branch onto current Post-merge validation:
The 12-dataset measurements in the PR body remain the source-frozen Architectural scope is now explicit: this PR is LanceDB-first. The Arrow schema, |
Signed-off-by: jioffe502 <jioffe@nvidia.com>
|
Signed-off-by: jioffe502 <jioffe@nvidia.com>
Signed-off-by: Jacob Ioffe <jioffe@nvidia.com>
3a7a33e to
89ba429
Compare
89ba429 to
29f9c6c
Compare
Signed-off-by: Jacob Ioffe <jioffe@nvidia.com>
Signed-off-by: Jacob Ioffe <jioffe@nvidia.com>
|
Follow-up on the The sink now owns and normalizes the historical/backward-compatible full-vector replacement policy before both create and append/put operations; the default |
…db-sink # Conflicts: # nemo_retriever/src/nemo_retriever/common/vdb/lancedb.py
Signed-off-by: jioffe502 <jioffe@nvidia.com>
Signed-off-by: jioffe502 <jioffe@nvidia.com>
Signed-off-by: jioffe502 <jioffe@nvidia.com>
Signed-off-by: jioffe502 <jioffe@nvidia.com>
Signed-off-by: jioffe502 <jioffe@nvidia.com>
68ef3f0 to
964db8e
Compare
Signed-off-by: jioffe502 <jioffe@nvidia.com>
Why
RayDataExecutorhistorically sends VDB ingestion through one global Ray batch. That preserves backend compatibility, but it creates a corpus-sized handoff before LanceDB can write.What changed
VDBhas one optional, non-abstractstream_ingest()capability over a lazy iterable of canonical NRL record dictionaries.IngestVdbOperatorowns canonical conversion.RayDataExecutor.ingest()owns Ray iteration, prefetch, cleanup, retained results, and downstream ordering; it has no LanceDB dependency.stream_operation_idexplicitly enables durable retry markers and reconstructed-backend recovery; ambiguous append outcomes fail closed.PutVdbOperator, service/in-process execution, andbuild_dataset()retain their historical behavior. Stream-only settings are rejected on legacy paths rather than ignored.Validation
6cdbc1daca379fccbd94fb46ad6ef963ca4cacb1; candidate964db8e83ff5c19fdaafb4d7629690bb6941656b(tree5168a398cccaf93ee9a7e1d714cf1b21fdbd632b). Final heada9a0c62057dbbc4945ac199d2be55969eed7e385adds only a test-fixture compatibility fix; production code is unchanged./dev/shmpeakBaseline ingest runs were 99.976-106.695 seconds; streaming runs were 85.514-89.796 seconds. The 12-dataset replay is a one-repeat sink correctness/resource check, not an end-to-end performance claim. Harnesses and artifacts remain outside NRL.
Relates to #2476 and #2570.