nemo-retriever 2026.8.12.dev181__tar.gz → 2026.8.13.dev182__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {nemo_retriever-2026.8.12.dev181/src/nemo_retriever.egg-info → nemo_retriever-2026.8.13.dev182}/PKG-INFO +1 -1
- nemo_retriever-2026.8.13.dev182/src/nemo_retriever/_build_info.py +4 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/content_transforms.py +47 -28
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/params/models.py +7 -1
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/vdb/records.py +31 -8
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/graph/executor.py +91 -12
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/graph/ingestor_runtime.py +2 -22
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/ingestor/branch_extraction.py +4 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/ingestor/graph_ingestor.py +23 -2
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/dedup.py +40 -11
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/caption/caption.py +89 -5
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/txt/ray_data.py +5 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/graph_ops/store_operator.py +11 -5
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/services/pipeline_executor.py +38 -2
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182/src/nemo_retriever.egg-info}/PKG-INFO +1 -1
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever.egg-info/SOURCES.txt +1 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_caption.py +94 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_compose_nim_2_contracts.py +36 -10
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_dedup.py +58 -0
- nemo_retriever-2026.8.13.dev182/tests/test_evidence.py +23 -0
- nemo_retriever-2026.8.13.dev182/tests/test_executor_arrow_pandas.py +260 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_helm_tracing_zipkin.py +61 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_ingest_interface.py +70 -18
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_ingest_manifest.py +8 -6
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_ingest_plans.py +70 -28
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_nv_ingest_vdb_operator.py +56 -26
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_params_models.py +18 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_pipeline_graph.py +178 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_local_models.py +24 -1
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_pipeline_spec.py +51 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_store_pipeline_stages.py +51 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_vdb_records.py +21 -0
- nemo_retriever-2026.8.12.dev181/src/nemo_retriever/_build_info.py +0 -4
- nemo_retriever-2026.8.12.dev181/tests/test_executor_arrow_pandas.py +0 -123
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/LICENSE +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/README.md +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/pyproject.toml +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/setup.cfg +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/__main__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/agent.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/cache_propagation.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/llm/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/llm/base_backend.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/llm/callable_backend.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/llm/error_classification.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/llm/errors.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/llm/helpers.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/llm/litellm_backend.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/llm/result.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/llm/usage.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/loop.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/prompts/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/prompts/templates/00_default.j2 +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/prompts/templates/01_v0.j2 +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/prompts/templates/02_v1.j2 +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/prompts/templates/06_select_lean_v1.j2 +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/prompts/templates/selection/00_demo.j2 +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/prompts/templates/selection/01_v0.j2 +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/results.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/selection_agent.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/tools/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/tools/base_tool.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/tools/end_tools.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/tools/retrieve.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/_agentic/nemo_agent/tools/think_tool.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/cli/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/cli/evidence.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/cli/ingest/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/cli/ingest/app.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/cli/ingest/graph_commands.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/cli/ingest/options.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/cli/ingest/service.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/cli/ingest/shared.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/cli/ingest_workflow.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/cli/main.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/cli/query/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/cli/query/app.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/cli/query/options.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/cli/query_workflow.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/cli/shared.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/enums/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/enums/common.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/extract/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/mutate/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/mutate/deduplicate.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/primitives/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/primitives/control_message_task.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/primitives/ingest_control_message.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/primitives/tracing/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/primitives/tracing/logging.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/primitives/tracing/tagging.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/schemas/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/schemas/extract/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/schemas/meta/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/schemas/meta/base_model_noext.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/schemas/meta/metadata_schema.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/schemas/mixins.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/schemas/mutate/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/internal/schemas/mutate/mutate_image_dedup_schema.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/control_message/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/control_message/validators.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/converters/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/converters/bytetools.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/converters/datetools.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/detectors/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/detectors/language.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/exception_handlers/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/exception_handlers/converters.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/exception_handlers/decorators.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/exception_handlers/detectors.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/exception_handlers/pdf.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/image_processing/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/image_processing/clustering.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/image_processing/transforms.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/metadata/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/metadata/aggregators.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/pdf/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/pdf/pdfium.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/api/util/string_processing/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/config_utils.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/inline_text.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/input_files.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/io/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/io/dataframe.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/io/export.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/io/image_store.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/io/markdown.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/audio/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/audio/media_interface.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/caption/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/caption/model_profiles.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/convert/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/convert/to_pdf.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/html/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/html/convert.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/image/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/image/load.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/ocr/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/ocr/config.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/ocr/shared.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/page_elements/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/page_elements/local.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/page_elements/shared.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/parse/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/parse/nemotron_parse_postprocessing.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/pipeline/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/pipeline/content.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/pipeline/embedding.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/table/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/table/shared.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/table_and_chart.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/txt/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/txt/split.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/txt/tokenizer_provider.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/video/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/modality/video/_content_types.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/nvtx.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/params/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/params/utils.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/policy.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/ray_resource_hueristics.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/ray_runtime.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/remote_auth.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/schemas/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/schemas/base.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/schemas/collections.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/schemas/document.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/schemas/job.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/schemas/pipeline_spec.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/schemas/requests.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/schemas/responses.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/vdb/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/vdb/adt_vdb.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/vdb/factory.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/vdb/lancedb.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/vdb/lancedb_bulk.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/vdb/lancedb_capabilities.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/vdb/lancedb_collections.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/vdb/lancedb_schema.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/common/vdb/sidecar_metadata.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/graph/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/graph/designer.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/graph/graph_pipeline_registry.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/graph/operator_resolution.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/graph/pipeline_graph.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/graph/retriever.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/graph/retriever_utils.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/__main__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/artifact_writer.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/artifacts.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/beir_runner.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/benchmark_registry.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/benchmark_specs.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/cli.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/config.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/contracts.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/dataset_paths.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/diff.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/environment.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/execution.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/helm_config.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/helm_manager.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/helm_runner.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/history.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/json_io.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/metric_gates.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/metrics.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/app.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/mcp_registry.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/mcp_server.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/mcp_tools.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/index.html +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/nvidia-logo.svg +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/alerts.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/analytics.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/app.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/database.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/datasets.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/designer.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/icons.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/ingestion.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/layout.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/log-viewer.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/mcp.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/models.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/presets.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/reporting.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/retrieval.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/run-detail.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/runners.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/runs.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/scheduling.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/settings.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/trigger.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/portal/static/views/utils.jsx +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/release_reference.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/resolution.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/revamp_runner.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/runfile.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/runsets.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/scheduler.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/slack.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/harness/vidore_access.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/ingest/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/ingest/execution.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/ingest/plan.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/ingest/service.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/ingestor/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/ingestor/core.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/ingestor/manifest.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/ingestor/plans.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/ingestor/results.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/embed_model_spec.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/hf_cache.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/hf_model_registry.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/inference/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/inference/main_text_embed.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/inference/runtime.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/inference/shared.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/inference/vllm.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/llm/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/llm/clients/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/llm/clients/judge.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/llm/clients/litellm.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/llm/tasks/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/llm/tasks/base.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/llm/tasks/generic.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/llm/tasks/rag_answer.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/llm/tasks/summarize.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/llm/text_utils.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/llm/types.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/local/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/local/agent_llm.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/local/llama_nemotron_embed_1b_v2_embedder.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/local/llama_nemotron_embed_1b_v2_hf_embedder.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/local/llama_nemotron_embed_vl_1b_v2_embedder.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/local/nemotron_ocr_v1.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/local/nemotron_ocr_v2.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/local/nemotron_page_elements_v3.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/local/nemotron_parse_v1_2.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/local/nemotron_rerank_v2.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/local/nemotron_rerank_vl_v2.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/local/nemotron_rerank_vl_v2_hf.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/local/nemotron_table_structure_v1.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/local/nemotron_vlm_captioner.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/local/parakeet_ctc_1_1b_asr.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/model.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/nim/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/nim/chat_completions.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/nim/error_reporter.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/nim/nim.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/nim/primitives/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/nim/primitives/default_values.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/nim/primitives/model_interface/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/nim/primitives/model_interface/decorators.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/nim/primitives/model_interface/helpers.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/nim/primitives/model_interface/nemotron_parse.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/nim/primitives/model_interface/parakeet.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/nim/primitives/model_interface/text_embedding.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/nim/primitives/model_interface/vlm.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/nim/primitives/model_interface/yolox.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/nim/primitives/nim_client.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/nim/primitives/nim_model_interface.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/nim/probe.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/nim/util/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/models/warmup_registry.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/abstract_operator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/base.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/content.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/cpu_operator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/embed/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/embed/cpu_operator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/embed/gpu_operator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/embed/operators.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/embed/text_embed.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/embedding.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/audio/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/audio/asr_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/audio/chunk_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/audio/cpu_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/audio/gpu_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/caption/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/html/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/html/ray_data.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/image/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/image/ray_data.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/ocr/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/ocr/cpu_ocr.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/ocr/cpu_parse.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/ocr/gpu_ocr.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/ocr/gpu_parse.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/ocr/ocr.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/page_elements/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/page_elements/cpu_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/page_elements/gpu_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/page_elements/page_elements.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/parse/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/parse/nemotron_parse.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/pdf/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/pdf/extract.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/pdf/split.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/table/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/table/cpu_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/table/gpu_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/table/table_detection.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/txt/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/video/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/video/audio_visual_fuser.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/video/frame_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/video/ocr_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/video/split.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/extract/video/text_dedup.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/generation/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/generation/base.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/generation/generic.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/generation/summarization.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/gpu_operator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/graph_ops/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/graph_ops/content_operators.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/graph_ops/custom_operator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/graph_ops/eval_operator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/graph_ops/file_loader_operator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/graph_ops/lancedb_write_operator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/graph_ops/multi_type_extract_operator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/graph_ops/react_agent_operator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/graph_ops/rrf_aggregator_operator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/graph_ops/scoring_operator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/graph_ops/selection_agent_operator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/graph_ops/subquery_operator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/graph_ops/webhook_operator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/operator_archetype.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/rerank.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/operators/vdb.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/query/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/query/agentic.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/query/agentic_options.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/query/evidence.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/query/options.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/query/service.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/query/shaping.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/query/workflow.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/agentic_query.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/app.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/auth.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/cli.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/client.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/config.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/errors.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/mcp_server.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/query_schema.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/retriever-service.yaml +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/routers/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/routers/admin.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/routers/collections.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/routers/dashboard.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/routers/ingest.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/routers/metrics.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/routers/work.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/service_ingestor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/services/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/services/event_bus.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/services/job_tracker.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/services/metrics.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/services/pipeline_pool.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/services/prometheus.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/services/proxy.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/services/sidecar_store.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/services/work_queue.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/services/worker_result_store.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/tracing.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/utils/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/utils/file_type.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/service/vectordb_app.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/dev_tools/benchmarks/bird/loader.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/dev_tools/benchmarks/bird/setup.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/dev_tools/benchmarks/spider2/loader.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/dev_tools/benchmarks/spider2/setup.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/dev_tools/debug_ingest.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/dev_tools/duckdb_connector.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/dal/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/dal/db_dal.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/dal/queries_dal.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/dal/schemas_dal.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/dal/utils_dal.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/extract_data.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/indexes.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/model/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/model/neo4j_node.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/model/query.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/model/reserved_words.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/model/schema.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/parsers/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/parsers/query_comparator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/parsers/schemas_parser.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/parsers/sqlglot_extractor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/services/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/services/queries.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/services/schema.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/utils.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/ingestion/write_to_graph.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/neo4j/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/neo4j/neo4j_connection.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/operators/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/operators/tabular_fetch_embeddings_operator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/operators/tabular_schema_extract_operator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/data_access/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/data_access/candidates.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/data_access/custom_analyses.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/data_access/foreign_keys.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/data_access/graph_schemas.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/data_access/relevant_tables.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/data_access/response_formatting.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/data_access/semantic_search.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/generate_sql.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/llm_invoke.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/text_to_sql/agents/candidates_preparation.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/text_to_sql/agents/candidates_retrieval.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/text_to_sql/agents/entities_extraction.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/text_to_sql/agents/intent_validation.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/text_to_sql/agents/response.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/text_to_sql/agents/sql_execution.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/text_to_sql/agents/sql_from_semantic.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/text_to_sql/agents/sql_from_tables.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/text_to_sql/agents/sql_parse_validation.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/text_to_sql/agents/sql_reconstruction.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/text_to_sql/agents/sql_unconstructable.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/text_to_sql/base.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/text_to_sql/connector_routing.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/text_to_sql/main.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/text_to_sql/models.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/text_to_sql/prompts.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/text_to_sql/state.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/retrieval/text_to_sql/text_to_sql_graph.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tabular_data/sql_database.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/benchmark/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/benchmark/__main__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/benchmark/all_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/benchmark/audio_extract_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/benchmark/common.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/benchmark/extract_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/benchmark/ocr_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/benchmark/page_elements_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/benchmark/split_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/evaluation/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/evaluation/cli.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/evaluation/config.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/evaluation/generation.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/evaluation/ground_truth.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/evaluation/judging.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/evaluation/live_retrieval.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/evaluation/orchestrator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/evaluation/retrieval_loader.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/evaluation/retrievers.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/evaluation/runner.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/evaluation/scoring.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/recall/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/recall/__main__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/recall/beir.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/recall/beir_eval.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/recall/core.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/recall/recall_eval.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/recall/vdb_recall.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/skill_eval/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/skill_eval/__main__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/skill_eval/cli.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/skill_eval/configs/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/skill_eval/configs/skill_eval.yaml +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/skill_eval/dataset.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/skill_eval/prompts/__init__.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/skill_eval/prompts/setup_nl.j2 +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/skill_eval/prompts/setup_slash.j2 +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/skill_eval/prompts/trial_user_nl.j2 +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/skill_eval/prompts/trial_user_slash.j2 +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/skill_eval/report.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/skill_eval/runner.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/skill_eval/score.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/tools/skill_eval/trace_summarizer.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever/version.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever.egg-info/dependency_links.txt +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever.egg-info/entry_points.txt +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever.egg-info/requires.txt +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/src/nemo_retriever.egg-info/top_level.txt +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_actor_operators.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_agentic_eval.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_agentic_local_llm.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_agentic_operators.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_agentic_source_hygiene.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_asr_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_audio_benchmark.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_audio_chunk_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_audio_pipeline_batch.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_audio_visual_fuser.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_beir_evaluation.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_caption_model_profiles.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_ci_workflows.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_collection_management_api.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_common_datetools.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_container_ffmpeg_install.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_cpu_module_import_safety.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_create_local_embedder.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_dashboard_static_trace_ui.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_doc_to_pdf_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_embed_model_spec.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_embed_params.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_evaluation_config.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_evaluation_orchestrator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_evaluation_retrievers.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_fidelity.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_generation_hardening.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_generation_tasks.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_graph_ingestion_error_diagnostics.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_graph_pipeline_registry.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_harness_agentic_eval.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_harness_artifacts.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_harness_benchmark_registry.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_harness_helm_cli.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_harness_helm_nightly.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_harness_nightly_git_selection.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_harness_nightly_launcher.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_harness_runfiles.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_harness_slack.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_harness_vidore_access.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_helm_answer_llm_generation.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_helm_auth.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_helm_caption_endpoint.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_helm_embed_model_provider_prefix.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_helm_max_upload_bytes.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_helm_nemotron_parse_endpoint.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_helm_nim_2_contracts.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_helm_nimcache_model_profile.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_helm_nimservice_resources.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_helm_optional_nims_disabled_by_default.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_helm_shared_results.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_helm_vectordb_embed_required.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_helm_work_queue.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_hf_cache.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_hf_embedder_padding.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_hf_model_registry.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_html_convert.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_image_load.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_ingest_empty_validation.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_ingest_results.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_ingest_retrieve_multimodal_pdf_integration.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_ingest_service.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_inline_text_ingest.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_internal_auth.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_io_dataframe.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_io_image_store.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_io_markdown.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_lancedb_capabilities.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_lancedb_collections.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_lancedb_ivf_partitions.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_lancedb_retrieval_where.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_lancedb_row_metadata.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_lancedb_write_policy.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_live_rag.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_llm_params.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_media_dependency_availability.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_multimodal_embed.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_nemo_agent_callable_contract.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_nemo_agent_error_classification.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_nemo_agent_llm_config.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_nemo_agent_llm_helpers.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_nemotron_ocr_v2_nightly.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_nemotron_parse_v1_2.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_nemotron_rerank_v2.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_nemotron_rerank_vl_v2.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_nemotron_rerank_vl_v2_hf.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_nim_chat_completion_step.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_nim_tracing.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_ocr_cross_page_batching.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_ocr_version_selection.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_operator_flags_and_cpu_actors.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_page_elements_postprocess.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_parakeet_ctc_hf_compat.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_parakeet_infer_mode.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_params_utils.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_pdf_render_params_wiring.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_pdf_render_scale.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_pipeline_image_caption_concurrency.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_private_agent_packaging.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_probe_event_recording.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_query_comparator.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_query_workflow_options.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_readme_typical_use.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_readme_video_pipeline_example.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_recall_core.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_recall_summary.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_remote_auth.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_resource_heuristics.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_retriever_queries.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_root_cli_workflow.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_root_query_cli.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_semantic_search_metadata_filter_format.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_agentic_query.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_answer_generation.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_caption.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_client_compat.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_ingest_async.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_ingest_router.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_ingestor_compat.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_job_callback_diagnostics.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_job_tracker.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_mcp.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_media_dependency_gate.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_metrics_lifecycle.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_packaging.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_pipeline_tracing.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_pool_metrics.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_pool_tracing.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_proxy_tracing.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_query_client.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_query_rerank.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_save_to_disk.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_sidecar.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_sinks.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_sse.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_tracing.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_vectordb_app.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_vectordb_evidence_integration.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_vectordb_hybrid_integration.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_work_queue.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_service_worker_callback.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_sidecar_metadata.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_slim_imports_no_triton.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_split_config.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_split_config_integration.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_sqlglot_extractor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_src_documentation_snippets.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_table_structure.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_table_structure_nim_empty_bbox.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_tabular_pipeline.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_tabular_table_type.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_tokenizer_provider.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_txt_split.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_type_aliases.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_vdb_collection_contract.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_video_frame_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_video_frame_ocr_actor.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_video_pipeline_batch.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_video_recall.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_video_text_dedup.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_vllm_embed.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_warmup_registry.py +0 -0
- {nemo_retriever-2026.8.12.dev181 → nemo_retriever-2026.8.13.dev182}/tests/test_webhook_operator.py +0 -0
|
@@ -49,13 +49,37 @@ def _deep_copy_row(row_dict: Dict[str, Any]) -> Dict[str, Any]:
|
|
|
49
49
|
|
|
50
50
|
out: Dict[str, Any] = {}
|
|
51
51
|
for key, value in row_dict.items():
|
|
52
|
-
if isinstance(value,
|
|
52
|
+
if isinstance(value, np.ndarray) and _is_content_collection(value):
|
|
53
|
+
out[key] = copy.deepcopy(value.tolist())
|
|
54
|
+
elif isinstance(value, (dict, list)):
|
|
53
55
|
out[key] = copy.deepcopy(value)
|
|
54
56
|
else:
|
|
55
57
|
out[key] = value
|
|
56
58
|
return out
|
|
57
59
|
|
|
58
60
|
|
|
61
|
+
def _normalize_bbox(value: Any) -> Any:
|
|
62
|
+
"""Return bbox coordinates in a stable non-tensor container."""
|
|
63
|
+
if hasattr(value, "to_numpy") and callable(value.to_numpy):
|
|
64
|
+
value = value.to_numpy()
|
|
65
|
+
if isinstance(value, np.ndarray):
|
|
66
|
+
return value.tolist()
|
|
67
|
+
if isinstance(value, tuple):
|
|
68
|
+
return list(value)
|
|
69
|
+
return value
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def _normalize_bbox_column(frame: pd.DataFrame) -> pd.DataFrame:
|
|
73
|
+
"""Force every batch to expose bbox values as ordinary Python objects."""
|
|
74
|
+
values = frame.get("_bbox_xyxy_norm", pd.Series([None] * len(frame.index), index=frame.index))
|
|
75
|
+
frame["_bbox_xyxy_norm"] = pd.Series(
|
|
76
|
+
[_normalize_bbox(value) for value in values],
|
|
77
|
+
index=frame.index,
|
|
78
|
+
dtype=object,
|
|
79
|
+
)
|
|
80
|
+
return frame
|
|
81
|
+
|
|
82
|
+
|
|
59
83
|
def explode_content_to_rows(
|
|
60
84
|
batch_df: Any,
|
|
61
85
|
*,
|
|
@@ -69,8 +93,10 @@ def explode_content_to_rows(
|
|
|
69
93
|
text_mod = text_elements_modality or modality
|
|
70
94
|
struct_mod = structured_elements_modality or modality
|
|
71
95
|
|
|
72
|
-
if not isinstance(batch_df, pd.DataFrame)
|
|
96
|
+
if not isinstance(batch_df, pd.DataFrame):
|
|
73
97
|
return batch_df
|
|
98
|
+
if batch_df.empty:
|
|
99
|
+
return _normalize_bbox_column(batch_df)
|
|
74
100
|
|
|
75
101
|
any_images = text_mod in IMAGE_MODALITIES or struct_mod in IMAGE_MODALITIES
|
|
76
102
|
|
|
@@ -85,7 +111,7 @@ def explode_content_to_rows(
|
|
|
85
111
|
lambda page_image: page_image.get("stored_image_uri") if isinstance(page_image, dict) else None
|
|
86
112
|
)
|
|
87
113
|
batch_df["_embed_modality"] = text_mod
|
|
88
|
-
return batch_df
|
|
114
|
+
return _normalize_bbox_column(batch_df)
|
|
89
115
|
|
|
90
116
|
new_rows: List[Dict[str, Any]] = []
|
|
91
117
|
for _, row in batch_df.iterrows():
|
|
@@ -133,8 +159,8 @@ def explode_content_to_rows(
|
|
|
133
159
|
if item_b64:
|
|
134
160
|
content_row["_image_b64"] = item_b64
|
|
135
161
|
elif page_image_b64:
|
|
136
|
-
bbox = item.get("bbox_xyxy_norm")
|
|
137
|
-
if bbox and len(bbox) == 4:
|
|
162
|
+
bbox = _normalize_bbox(item.get("bbox_xyxy_norm"))
|
|
163
|
+
if bbox is not None and len(bbox) == 4:
|
|
138
164
|
cropped_b64, _ = _crop_b64_image_by_norm_bbox(page_image_b64, bbox_xyxy_norm=bbox)
|
|
139
165
|
content_row["_image_b64"] = cropped_b64
|
|
140
166
|
else:
|
|
@@ -142,7 +168,7 @@ def explode_content_to_rows(
|
|
|
142
168
|
else:
|
|
143
169
|
content_row["_image_b64"] = None
|
|
144
170
|
content_row["_stored_image_uri"] = item.get("stored_image_uri") or page_stored_uri
|
|
145
|
-
content_row["_bbox_xyxy_norm"] = item.get("bbox_xyxy_norm")
|
|
171
|
+
content_row["_bbox_xyxy_norm"] = _normalize_bbox(item.get("bbox_xyxy_norm"))
|
|
146
172
|
new_rows.append(content_row)
|
|
147
173
|
exploded_any = True
|
|
148
174
|
|
|
@@ -156,7 +182,7 @@ def explode_content_to_rows(
|
|
|
156
182
|
preserved["_bbox_xyxy_norm"] = None
|
|
157
183
|
new_rows.append(preserved)
|
|
158
184
|
|
|
159
|
-
return pd.DataFrame(new_rows).reset_index(drop=True)
|
|
185
|
+
return _normalize_bbox_column(pd.DataFrame(new_rows).reset_index(drop=True))
|
|
160
186
|
|
|
161
187
|
|
|
162
188
|
def collapse_content_to_page_rows(
|
|
@@ -170,24 +196,17 @@ def collapse_content_to_page_rows(
|
|
|
170
196
|
if not isinstance(batch_df, pd.DataFrame) or batch_df.empty:
|
|
171
197
|
return batch_df
|
|
172
198
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
if "page_image" in batch_df.columns:
|
|
188
|
-
batch_df["_stored_image_uri"] = batch_df["page_image"].apply(
|
|
189
|
-
lambda page_image: page_image.get("stored_image_uri") if isinstance(page_image, dict) else None
|
|
190
|
-
)
|
|
191
|
-
|
|
192
|
-
batch_df["_embed_modality"] = modality
|
|
193
|
-
return batch_df
|
|
199
|
+
has_page_image = "page_image" in batch_df.columns
|
|
200
|
+
new_rows: List[Dict[str, Any]] = []
|
|
201
|
+
for _, row in batch_df.iterrows():
|
|
202
|
+
row_dict = _deep_copy_row(row.to_dict())
|
|
203
|
+
row_dict[text_column] = _combine_text_with_content(row_dict, text_column, content_columns)
|
|
204
|
+
page_image = row_dict.get("page_image") if has_page_image else None
|
|
205
|
+
if modality in IMAGE_MODALITIES:
|
|
206
|
+
row_dict["_image_b64"] = inline_image_b64(page_image) if isinstance(page_image, dict) else None
|
|
207
|
+
if has_page_image:
|
|
208
|
+
row_dict["_stored_image_uri"] = page_image.get("stored_image_uri") if isinstance(page_image, dict) else None
|
|
209
|
+
row_dict["_embed_modality"] = modality
|
|
210
|
+
new_rows.append(row_dict)
|
|
211
|
+
|
|
212
|
+
return _normalize_bbox_column(pd.DataFrame(new_rows).reset_index(drop=True))
|
|
@@ -516,7 +516,13 @@ class ExtractParams(_ParamsModel):
|
|
|
516
516
|
extract_page_as_image: Optional[bool] = True
|
|
517
517
|
|
|
518
518
|
# Extraction options
|
|
519
|
-
method:
|
|
519
|
+
method: Literal["pdfium", "pdfium_hybrid", "ocr", "nemotron_parse", "audio"] = Field(
|
|
520
|
+
default="pdfium",
|
|
521
|
+
description=(
|
|
522
|
+
"Extraction method. PDF extraction supports 'pdfium', 'pdfium_hybrid', 'ocr', and "
|
|
523
|
+
"'nemotron_parse'; 'audio' is retained for the legacy params-driven audio path."
|
|
524
|
+
),
|
|
525
|
+
)
|
|
520
526
|
# Run PageElementDetection (layout/yolox). Required by TableStructure and
|
|
521
527
|
# OCR. Safe to disable for text-only ingests.
|
|
522
528
|
use_page_elements: bool = True
|
|
@@ -132,9 +132,21 @@ class RetrievalHit(TypedDict, total=False):
|
|
|
132
132
|
|
|
133
133
|
def _embedding_from_graph_row(row: dict[str, Any], metadata: dict[str, Any]) -> Any:
|
|
134
134
|
if metadata.get("embedding") is not None:
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
135
|
+
embedding = metadata["embedding"]
|
|
136
|
+
else:
|
|
137
|
+
payload = row.get("text_embeddings_1b_v2")
|
|
138
|
+
embedding = payload.get("embedding") if isinstance(payload, dict) else None
|
|
139
|
+
|
|
140
|
+
if not isinstance(embedding, list):
|
|
141
|
+
to_numpy = getattr(embedding, "to_numpy", None)
|
|
142
|
+
if callable(to_numpy):
|
|
143
|
+
embedding = to_numpy()
|
|
144
|
+
tolist = getattr(embedding, "tolist", None)
|
|
145
|
+
if callable(tolist):
|
|
146
|
+
embedding = tolist()
|
|
147
|
+
elif isinstance(embedding, tuple):
|
|
148
|
+
embedding = list(embedding)
|
|
149
|
+
return embedding
|
|
138
150
|
|
|
139
151
|
|
|
140
152
|
def _first_str(*values: Any) -> str:
|
|
@@ -317,6 +329,13 @@ def _client_record_from_graph_row(row: dict[str, Any], *, require_embedding: boo
|
|
|
317
329
|
return {"document_type": str(document_type), "metadata": record_metadata}
|
|
318
330
|
|
|
319
331
|
|
|
332
|
+
def _row_has_uploadable_content_without_embedding(row: dict[str, Any]) -> bool:
|
|
333
|
+
metadata = _dict_or_empty(row.get("metadata"))
|
|
334
|
+
if _embedding_from_graph_row(row, metadata) is not None:
|
|
335
|
+
return False
|
|
336
|
+
return bool(_text_from_graph_row(row, metadata)) or _is_image_backed_row(row)
|
|
337
|
+
|
|
338
|
+
|
|
320
339
|
def to_client_vdb_records(rows: Any) -> list[list[dict[str, Any]]]:
|
|
321
340
|
"""Convert graph-ingest rows into the nested record shape expected by client VDBs.
|
|
322
341
|
|
|
@@ -325,6 +344,8 @@ def to_client_vdb_records(rows: Any) -> list[list[dict[str, Any]]]:
|
|
|
325
344
|
``if not records`` skips :meth:`~nemo_retriever.vdb.adt_vdb.VDB.run`.
|
|
326
345
|
When at least one row converts, returns ``[batch]`` with a single non-empty inner list
|
|
327
346
|
(never ``[[]]``, which would be truthy and could trip backends on an empty insert).
|
|
347
|
+
Uploadable graph content without an embedding raises ``ValueError`` when no
|
|
348
|
+
row survives conversion. Genuinely empty input continues to return ``[]``.
|
|
328
349
|
"""
|
|
329
350
|
if isinstance(rows, list) and all(isinstance(batch, list) for batch in rows):
|
|
330
351
|
return rows
|
|
@@ -332,14 +353,16 @@ def to_client_vdb_records(rows: Any) -> list[list[dict[str, Any]]]:
|
|
|
332
353
|
rows = rows.to_pandas()
|
|
333
354
|
if hasattr(rows, "to_dict"):
|
|
334
355
|
rows = rows.to_dict("records")
|
|
356
|
+
graph_rows = [row for row in rows or [] if isinstance(row, dict)]
|
|
335
357
|
# Walrus: bind conversion once per row — a plain ``if f(row)`` + ``f(row)`` list comp
|
|
336
358
|
# would call _client_record_from_graph_row twice per row on large datasets.
|
|
337
359
|
# isinstance(row, dict): plain lists are not normalized like DataFrame rows; skip None/Series/etc.
|
|
338
|
-
inner = [
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
360
|
+
inner = [record for row in graph_rows if (record := _client_record_from_graph_row(row)) is not None]
|
|
361
|
+
if not inner and any(_row_has_uploadable_content_without_embedding(row) for row in graph_rows):
|
|
362
|
+
raise ValueError(
|
|
363
|
+
"vdb_upload requires embedded records, but no embeddings were found. "
|
|
364
|
+
"Add an embed stage or provide a supported embedding column."
|
|
365
|
+
)
|
|
343
366
|
# Preserve legacy contract: no uploadable rows → [], not [[]].
|
|
344
367
|
return [inner] if inner else []
|
|
345
368
|
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
from __future__ import annotations
|
|
8
8
|
|
|
9
9
|
from abc import ABC, abstractmethod
|
|
10
|
+
import math
|
|
10
11
|
from typing import Any, Dict, List, Optional, Set
|
|
11
12
|
import pandas as pd
|
|
12
13
|
|
|
@@ -131,6 +132,18 @@ def _make_arrow_pandas_operator_adapter(operator_class: type) -> type[_ArrowPand
|
|
|
131
132
|
return type(adapter_name, (_ArrowPandasOperatorAdapter,), {})
|
|
132
133
|
|
|
133
134
|
|
|
135
|
+
def _preserves_pandas_output(operator_class: type, operator_kwargs: dict[str, Any]) -> bool:
|
|
136
|
+
"""Return whether an operator's heterogeneous rows should stay in pandas."""
|
|
137
|
+
return bool(
|
|
138
|
+
getattr(operator_class, "PRESERVE_PANDAS_OUTPUT", False) or operator_kwargs.get("preserve_pandas_output", False)
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
def _requires_stable_pandas_blocks(nodes: list[Node]) -> bool:
|
|
143
|
+
"""Return whether repartitions must not promote object columns to tensors."""
|
|
144
|
+
return any(_preserves_pandas_output(node.operator_class, node.operator_kwargs) for node in nodes)
|
|
145
|
+
|
|
146
|
+
|
|
134
147
|
def _concurrency_target(concurrency: Any) -> int:
|
|
135
148
|
"""Return the largest actor-pool size that resource planning can permit."""
|
|
136
149
|
if isinstance(concurrency, tuple):
|
|
@@ -177,17 +190,20 @@ def preflight_executors(executors: list[Any], cluster_resources: ClusterResource
|
|
|
177
190
|
fixed = [item for item in entries if not item[7]]
|
|
178
191
|
auto = [item for item in entries if item[7]]
|
|
179
192
|
fixed_cpu = sum(item[3] * item[5] for item in fixed)
|
|
193
|
+
source_cpu_reservation = sum(executor._source_cpu_reservation for executor in executors)
|
|
180
194
|
fixed_gpu = sum(item[3] * item[6] for item in fixed)
|
|
181
195
|
min_cpu = sum(item[4] * item[5] for item in auto)
|
|
182
196
|
min_gpu = sum(item[4] * item[6] for item in auto)
|
|
183
|
-
|
|
197
|
+
requested_cpu = source_cpu_reservation + fixed_cpu + min_cpu
|
|
198
|
+
if requested_cpu > available_cpus or fixed_gpu + min_gpu > available_gpus:
|
|
184
199
|
raise ValueError(
|
|
185
200
|
"Infeasible Ray CPU/GPU plan: requested at least "
|
|
186
|
-
f"{
|
|
201
|
+
f"{requested_cpu:g} CPUs (including {source_cpu_reservation:g} for source reads) "
|
|
202
|
+
f"and {fixed_gpu + min_gpu:g} GPUs, but Ray reports "
|
|
187
203
|
f"{available_cpus} CPUs and {available_gpus} GPUs available. "
|
|
188
204
|
"Reduce explicit *_workers or node_overrides concurrency, or wait for cluster capacity."
|
|
189
205
|
)
|
|
190
|
-
used_cpu, used_gpu = fixed_cpu + min_cpu, fixed_gpu + min_gpu
|
|
206
|
+
used_cpu, used_gpu = source_cpu_reservation + fixed_cpu + min_cpu, fixed_gpu + min_gpu
|
|
191
207
|
planned = {(id(item[0]), item[1]): item[4] for item in auto}
|
|
192
208
|
while True:
|
|
193
209
|
candidates = sorted(
|
|
@@ -208,9 +224,12 @@ def preflight_executors(executors: list[Any], cluster_resources: ClusterResource
|
|
|
208
224
|
used_cpu += selected[5]
|
|
209
225
|
used_gpu += selected[6]
|
|
210
226
|
for executor, name, concurrency, _target, _initial, _cpu, _gpu, _auto in auto:
|
|
211
|
-
executor._node_overrides
|
|
227
|
+
executor._node_overrides.setdefault(name, {})["concurrency"] = _planned_concurrency(
|
|
228
|
+
concurrency, planned[(id(executor), name)]
|
|
229
|
+
)
|
|
212
230
|
for executor in executors:
|
|
213
231
|
executor._resources_preflight_complete = True
|
|
232
|
+
executor._preflight_source_cpu_reservation = executor._source_cpu_reservation
|
|
214
233
|
executor._preflight_cluster_resources = cluster_resources
|
|
215
234
|
|
|
216
235
|
|
|
@@ -360,10 +379,19 @@ class RayDataExecutor(AbstractExecutor):
|
|
|
360
379
|
num_gpus: float = 0,
|
|
361
380
|
node_overrides: Optional[Dict[str, Dict[str, Any]]] = None,
|
|
362
381
|
auto_concurrency_nodes: Optional[Set[str]] = None,
|
|
382
|
+
source_cpu_reservation: float = 0,
|
|
363
383
|
) -> None:
|
|
364
384
|
super().__init__(graph)
|
|
385
|
+
source_cpu_reservation = float(source_cpu_reservation)
|
|
386
|
+
if not math.isfinite(source_cpu_reservation) or source_cpu_reservation < 0:
|
|
387
|
+
raise ValueError("source_cpu_reservation must be a finite, non-negative CPU value.")
|
|
365
388
|
self._preflight_cluster_resources: ClusterResources | None = None
|
|
366
389
|
self._ray_address = ray_address
|
|
390
|
+
self._source_cpu_reservation = source_cpu_reservation
|
|
391
|
+
# ``preflight_executors`` records the source reservation it budgeted.
|
|
392
|
+
# A filesystem input supplied later must not silently increase that
|
|
393
|
+
# shared plan: re-planning this executor alone would ignore its peers.
|
|
394
|
+
self._preflight_source_cpu_reservation: float | None = None
|
|
367
395
|
self._default_batch_size = batch_size
|
|
368
396
|
self._default_batch_format = batch_format
|
|
369
397
|
self._default_num_cpus = num_cpus
|
|
@@ -425,15 +453,17 @@ class RayDataExecutor(AbstractExecutor):
|
|
|
425
453
|
fixed_cpu = sum(count * cpu for _name, _concurrency, count, _initial, cpu, _gpu in fixed)
|
|
426
454
|
fixed_gpu = sum(count * gpu for _name, _concurrency, count, _initial, _cpu, gpu in fixed)
|
|
427
455
|
minimum_cpu = sum(initial * cpu for _name, _concurrency, _count, initial, cpu, _gpu in auto)
|
|
456
|
+
requested_cpu = self._source_cpu_reservation + fixed_cpu + minimum_cpu
|
|
428
457
|
minimum_gpu = sum(initial * gpu for _name, _concurrency, _count, initial, _cpu, gpu in auto)
|
|
429
|
-
if
|
|
458
|
+
if requested_cpu > available_cpus or fixed_gpu + minimum_gpu > available_gpus:
|
|
430
459
|
raise ValueError(
|
|
431
460
|
"Infeasible Ray CPU/GPU plan: requested at least "
|
|
432
|
-
f"{
|
|
461
|
+
f"{requested_cpu:g} CPUs (including {self._source_cpu_reservation:g} for source reads) "
|
|
462
|
+
f"and {fixed_gpu + minimum_gpu:g} GPUs, but Ray reports "
|
|
433
463
|
f"{available_cpus} CPUs and {available_gpus} GPUs available. "
|
|
434
464
|
"Reduce explicit *_workers or node_overrides concurrency, or wait for cluster capacity."
|
|
435
465
|
)
|
|
436
|
-
used_cpu, used_gpu = fixed_cpu + minimum_cpu, fixed_gpu + minimum_gpu
|
|
466
|
+
used_cpu, used_gpu = self._source_cpu_reservation + fixed_cpu + minimum_cpu, fixed_gpu + minimum_gpu
|
|
437
467
|
planned = {name: initial for name, _concurrency, _count, initial, _cpu, _gpu in auto}
|
|
438
468
|
while True:
|
|
439
469
|
candidates = sorted(
|
|
@@ -455,7 +485,7 @@ class RayDataExecutor(AbstractExecutor):
|
|
|
455
485
|
used_cpu += cpu
|
|
456
486
|
used_gpu += gpu
|
|
457
487
|
for name, concurrency, _count, _initial, _cpu, _gpu in auto:
|
|
458
|
-
self._node_overrides
|
|
488
|
+
self._node_overrides.setdefault(name, {})["concurrency"] = _planned_concurrency(concurrency, planned[name])
|
|
459
489
|
|
|
460
490
|
@staticmethod
|
|
461
491
|
def _linearize(graph: Graph) -> List[Node]:
|
|
@@ -510,21 +540,58 @@ class RayDataExecutor(AbstractExecutor):
|
|
|
510
540
|
ctx = rd.DataContext.get_current()
|
|
511
541
|
ctx.enable_rich_progress_bars = True
|
|
512
542
|
ctx.use_ray_tqdm = False
|
|
543
|
+
is_filesystem_source = not isinstance(data, rd.Dataset)
|
|
544
|
+
if is_filesystem_source:
|
|
545
|
+
required_source_cpu_reservation = 1
|
|
546
|
+
if self._resources_preflight_complete:
|
|
547
|
+
planned_source_cpu_reservation = self._preflight_source_cpu_reservation
|
|
548
|
+
if (
|
|
549
|
+
planned_source_cpu_reservation is None
|
|
550
|
+
or planned_source_cpu_reservation < required_source_cpu_reservation
|
|
551
|
+
):
|
|
552
|
+
raise ValueError(
|
|
553
|
+
"Filesystem inputs require 1 CPU for Ray Data source reads, but shared Ray resource "
|
|
554
|
+
"preflight completed without that reservation. Construct RayDataExecutor with "
|
|
555
|
+
"source_cpu_reservation=1 before calling preflight_executors."
|
|
556
|
+
)
|
|
557
|
+
else:
|
|
558
|
+
self._source_cpu_reservation = required_source_cpu_reservation
|
|
513
559
|
|
|
514
560
|
cluster = self._preflight_cluster_resources or gather_cluster_resources(ray)
|
|
515
561
|
available_gpus = cluster.available_gpu_count()
|
|
516
562
|
resolved_graph = resolve_graph(self.graph, cluster)
|
|
563
|
+
nodes = self._linearize(resolved_graph)
|
|
564
|
+
requires_stable_pandas_blocks = _requires_stable_pandas_blocks(nodes)
|
|
517
565
|
|
|
518
566
|
if isinstance(data, rd.Dataset):
|
|
519
|
-
ds = data
|
|
567
|
+
ds = rd.Dataset.copy(data, _deep_copy=True) if requires_stable_pandas_blocks else data
|
|
568
|
+
if requires_stable_pandas_blocks:
|
|
569
|
+
# Ray copies this context into repartition workers. Disabling
|
|
570
|
+
# Arrow output and tensor promotion only on an operator actor is
|
|
571
|
+
# too late because Ray converts its result after the call.
|
|
572
|
+
ds.context.batch_to_block_arrow_format = False
|
|
573
|
+
ds.context.enable_tensor_extension_casting = False
|
|
520
574
|
else:
|
|
521
575
|
try:
|
|
522
|
-
|
|
576
|
+
if requires_stable_pandas_blocks:
|
|
577
|
+
# read_binary_files snapshots the current context onto the
|
|
578
|
+
# new Dataset; restore the process default immediately so
|
|
579
|
+
# unrelated pipelines retain Ray's standard behavior.
|
|
580
|
+
original_arrow_format = ctx.batch_to_block_arrow_format
|
|
581
|
+
original_tensor_extension_casting = ctx.enable_tensor_extension_casting
|
|
582
|
+
ctx.batch_to_block_arrow_format = False
|
|
583
|
+
ctx.enable_tensor_extension_casting = False
|
|
584
|
+
try:
|
|
585
|
+
ds = rd.read_binary_files(input_paths, include_paths=True)
|
|
586
|
+
finally:
|
|
587
|
+
if requires_stable_pandas_blocks:
|
|
588
|
+
ctx.batch_to_block_arrow_format = original_arrow_format
|
|
589
|
+
ctx.enable_tensor_extension_casting = original_tensor_extension_casting
|
|
523
590
|
except FileNotFoundError as exc:
|
|
524
591
|
raise_input_path_not_found(input_paths or [], exc)
|
|
525
|
-
nodes = self._linearize(resolved_graph)
|
|
526
592
|
if nodes and not self._resources_preflight_complete:
|
|
527
593
|
self._preflight_resources(nodes, cluster.available_cpu_count(), available_gpus)
|
|
594
|
+
preserve_pandas_output = False
|
|
528
595
|
for node in nodes:
|
|
529
596
|
overrides = dict(self._node_overrides.get(node.name, {}))
|
|
530
597
|
target_num_rows_per_block = overrides.pop("target_num_rows_per_block", None)
|
|
@@ -580,7 +647,19 @@ class RayDataExecutor(AbstractExecutor):
|
|
|
580
647
|
# offsets for sliced structs with inferred null children.
|
|
581
648
|
# Compact the valid Arrow batch before that conversion.
|
|
582
649
|
map_operator_class = _make_arrow_pandas_operator_adapter(node.operator_class)
|
|
583
|
-
|
|
650
|
+
stable_pandas_input = preserve_pandas_output
|
|
651
|
+
# Once an operator reshapes the dataset into heterogeneous
|
|
652
|
+
# object rows, keep those rows in pandas through every
|
|
653
|
+
# downstream map stage. Re-enabling Arrow at embedding would
|
|
654
|
+
# otherwise split optional bbox values into object and tensor
|
|
655
|
+
# schemas that Ray cannot concatenate.
|
|
656
|
+
preserve_pandas_output = preserve_pandas_output or _preserves_pandas_output(
|
|
657
|
+
node.operator_class, node.operator_kwargs
|
|
658
|
+
)
|
|
659
|
+
# The opting-in stage still needs the compacting Arrow adapter
|
|
660
|
+
# on its input. Its downstream consumers must not ask Ray to
|
|
661
|
+
# turn the intentionally preserved pandas block back into Arrow.
|
|
662
|
+
map_batch_format = "pandas" if stable_pandas_input else "pyarrow"
|
|
584
663
|
constructor_kwargs = {
|
|
585
664
|
"operator_class": node.operator_class,
|
|
586
665
|
"operator_kwargs": node.operator_kwargs,
|
|
@@ -363,28 +363,6 @@ def batch_tuning_to_node_overrides(
|
|
|
363
363
|
plan.pdf_extract_tasks if plan else None,
|
|
364
364
|
)
|
|
365
365
|
|
|
366
|
-
# Cap PDF extract concurrency so persistent actors for page-elements,
|
|
367
|
-
# table structure, OCR, embed, and caption plus fixed pipeline tasks (DocToPdf,
|
|
368
|
-
# PDFSplit, UDFOperator(s), ReadBinary) cannot exhaust the cluster
|
|
369
|
-
# CPU budget.
|
|
370
|
-
if pdf_extract_tasks is not None and cluster_resources is not None:
|
|
371
|
-
# Conservative fixed overhead for the documented PDF flow:
|
|
372
|
-
# ReadBinary + DocToPdf + PDFSplit + TextChunk + DedupImages +
|
|
373
|
-
# the content-reshape UDF before embedding. Caption adds its actor
|
|
374
|
-
# and one additional UDF.
|
|
375
|
-
fixed_cpu_overhead = 6 + (2 if caption_params is not None else 0)
|
|
376
|
-
non_pdf_cpu_overhead = (
|
|
377
|
-
fixed_cpu_overhead
|
|
378
|
-
+ page_elements_concurrency * page_elements_cpus
|
|
379
|
-
+ ocr_concurrency * ocr_cpus
|
|
380
|
-
+ embed_concurrency * embed_cpus
|
|
381
|
-
+ ts_concurrency * ts_cpus
|
|
382
|
-
)
|
|
383
|
-
pdf_extract_tasks = min(
|
|
384
|
-
pdf_extract_tasks,
|
|
385
|
-
max(1, int((cluster_resources.total_cpu_count() - non_pdf_cpu_overhead) // pdf_extract_cpus)),
|
|
386
|
-
)
|
|
387
|
-
|
|
388
366
|
_set(PDFExtractionActor.__name__, "batch_size", pdf_bs)
|
|
389
367
|
_set(PDFExtractionActor.__name__, "concurrency", pdf_extract_tasks)
|
|
390
368
|
_set(PDFExtractionActor.__name__, "num_cpus", pdf_extract_cpus if pdf_extract_cpus != 1.0 else None)
|
|
@@ -578,6 +556,7 @@ def _append_ordered_transform_stages(
|
|
|
578
556
|
content_columns=content_columns,
|
|
579
557
|
),
|
|
580
558
|
name="CollapseContentToPageRows",
|
|
559
|
+
preserve_pandas_output=True,
|
|
581
560
|
)
|
|
582
561
|
else:
|
|
583
562
|
graph = graph >> UDFOperator(
|
|
@@ -590,6 +569,7 @@ def _append_ordered_transform_stages(
|
|
|
590
569
|
content_columns=content_columns,
|
|
591
570
|
),
|
|
592
571
|
name="ExplodeContentToRows",
|
|
572
|
+
preserve_pandas_output=True,
|
|
593
573
|
)
|
|
594
574
|
graph = graph >> _BatchEmbedActor(params=embed_params)
|
|
595
575
|
|
|
@@ -118,6 +118,7 @@ class ExtractionBranchExecutor:
|
|
|
118
118
|
graph,
|
|
119
119
|
derived_overrides,
|
|
120
120
|
default_concurrency_node_names(effective_extraction.extract_params, None, None, None),
|
|
121
|
+
source_cpu_reservation=1 if isinstance(input_data, list) else 0,
|
|
121
122
|
)
|
|
122
123
|
branch_executors.append(executor)
|
|
123
124
|
branch_inputs.append((executor, input_data))
|
|
@@ -146,6 +147,7 @@ class ExtractionBranchExecutor:
|
|
|
146
147
|
post_graph,
|
|
147
148
|
post_overrides,
|
|
148
149
|
default_concurrency_node_names(None, self.embed_params, self.store_params, self.caption_params),
|
|
150
|
+
source_cpu_reservation=0,
|
|
149
151
|
)
|
|
150
152
|
if hasattr(cluster_resources, "available_cpu_count"):
|
|
151
153
|
preflight_executors([*branch_executors, post_executor], cluster_resources)
|
|
@@ -222,6 +224,7 @@ class ExtractionBranchExecutor:
|
|
|
222
224
|
graph: Any,
|
|
223
225
|
derived_overrides: dict[str, dict[str, Any]],
|
|
224
226
|
auto_concurrency_nodes: set[str],
|
|
227
|
+
source_cpu_reservation: float,
|
|
225
228
|
) -> RayDataExecutor:
|
|
226
229
|
return RayDataExecutor(
|
|
227
230
|
graph,
|
|
@@ -231,6 +234,7 @@ class ExtractionBranchExecutor:
|
|
|
231
234
|
num_gpus=self.num_gpus,
|
|
232
235
|
node_overrides=merge_node_overrides(derived_overrides, self.node_overrides),
|
|
233
236
|
auto_concurrency_nodes=auto_concurrency_nodes - set(self.node_overrides),
|
|
237
|
+
source_cpu_reservation=source_cpu_reservation,
|
|
234
238
|
)
|
|
235
239
|
|
|
236
240
|
def _inprocess_branch_input(self, branch: ExtractionBranchPlan) -> Any:
|
|
@@ -65,6 +65,7 @@ from nemo_retriever.common.params import (
|
|
|
65
65
|
ExtractParams,
|
|
66
66
|
HtmlChunkParams,
|
|
67
67
|
IngestExecuteParams,
|
|
68
|
+
NO_API_KEY,
|
|
68
69
|
StoreParams,
|
|
69
70
|
TextChunkParams,
|
|
70
71
|
VideoFrameParams,
|
|
@@ -382,6 +383,9 @@ def _resolve_api_key(params: Any) -> Any:
|
|
|
382
383
|
"""Auto-resolve api_key from NVIDIA_API_KEY / NGC_API_KEY if not explicitly set."""
|
|
383
384
|
if params is None:
|
|
384
385
|
return params
|
|
386
|
+
uses_no_api_key = getattr(params, "_uses_no_api_key", None)
|
|
387
|
+
if callable(uses_no_api_key) and uses_no_api_key("api_key"):
|
|
388
|
+
return params
|
|
385
389
|
if not getattr(params, "api_key", None) and hasattr(params, "model_copy"):
|
|
386
390
|
key = resolve_remote_api_key()
|
|
387
391
|
if key:
|
|
@@ -400,7 +404,20 @@ def _coerce(params: Any, kwargs: dict[str, Any], *, default_factory: Callable[[]
|
|
|
400
404
|
if not kwargs:
|
|
401
405
|
return params
|
|
402
406
|
if hasattr(params, "model_copy"):
|
|
403
|
-
|
|
407
|
+
values = params.model_dump()
|
|
408
|
+
uses_no_api_key = getattr(params, "_uses_no_api_key", None)
|
|
409
|
+
api_key_env_reference = getattr(params, "_api_key_env_reference", None)
|
|
410
|
+
for field_name in type(params).model_fields:
|
|
411
|
+
if field_name in kwargs:
|
|
412
|
+
continue
|
|
413
|
+
if callable(uses_no_api_key) and uses_no_api_key(field_name):
|
|
414
|
+
values[field_name] = NO_API_KEY
|
|
415
|
+
continue
|
|
416
|
+
if callable(api_key_env_reference):
|
|
417
|
+
reference = api_key_env_reference(field_name)
|
|
418
|
+
if reference is not None:
|
|
419
|
+
values[field_name] = reference
|
|
420
|
+
return type(params).model_validate(values | kwargs)
|
|
404
421
|
return params
|
|
405
422
|
|
|
406
423
|
|
|
@@ -1199,7 +1216,11 @@ class GraphIngestor(ingestor):
|
|
|
1199
1216
|
if requested_columns is None
|
|
1200
1217
|
else [c for c in requested_columns if c in available_columns]
|
|
1201
1218
|
)
|
|
1202
|
-
|
|
1219
|
+
# ``iterrows`` materializes the full frame through NumPy, which is
|
|
1220
|
+
# unsafe for Ray pickled-object columns containing empty arrays.
|
|
1221
|
+
row_values = batch_df.itertuples(index=False, name=None)
|
|
1222
|
+
for row_index, values in zip(batch_df.index, row_values):
|
|
1223
|
+
row = dict(zip(available_columns, values))
|
|
1203
1224
|
source_identifier = cls._source_identifier_from_row(row, row_index)
|
|
1204
1225
|
for column in target_columns:
|
|
1205
1226
|
for record in cls._iter_stage_errors_from_value(row[column]):
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
7
|
import hashlib
|
|
8
|
-
from typing import Any, List, Tuple
|
|
8
|
+
from typing import Any, List, Optional, Tuple
|
|
9
9
|
|
|
10
|
+
import numpy as np
|
|
10
11
|
import pandas as pd
|
|
11
12
|
|
|
12
13
|
from nemo_retriever.common.api.internal.mutate.deduplicate import calculate_iou
|
|
@@ -15,19 +16,44 @@ from nemo_retriever.common.params import DedupParams
|
|
|
15
16
|
_STRUCTURED_COLUMNS = ("table", "chart", "infographic")
|
|
16
17
|
|
|
17
18
|
|
|
19
|
+
def _as_element_list(value: Any) -> Optional[List[Any]]:
|
|
20
|
+
"""Return an extracted-element cell as a plain list, or ``None`` if unsupported.
|
|
21
|
+
|
|
22
|
+
Batch mode delivers structural-element cells as one-dimensional NumPy
|
|
23
|
+
object arrays (Arrow list columns converted to pandas), while inprocess
|
|
24
|
+
mode uses Python lists.
|
|
25
|
+
"""
|
|
26
|
+
if isinstance(value, list):
|
|
27
|
+
return value
|
|
28
|
+
if isinstance(value, tuple):
|
|
29
|
+
return list(value)
|
|
30
|
+
if isinstance(value, np.ndarray) and value.ndim == 1:
|
|
31
|
+
return value.tolist()
|
|
32
|
+
return None
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _as_bbox(value: Any) -> Optional[Tuple[float, ...]]:
|
|
36
|
+
"""Return the first four bbox coordinates as a plain tuple."""
|
|
37
|
+
if isinstance(value, np.ndarray):
|
|
38
|
+
value = value.tolist()
|
|
39
|
+
if not isinstance(value, (list, tuple)) or len(value) < 4:
|
|
40
|
+
return None
|
|
41
|
+
return tuple(value[:4])
|
|
42
|
+
|
|
43
|
+
|
|
18
44
|
def _collect_structured_bboxes(row: pd.Series) -> List[Tuple[float, ...]]:
|
|
19
45
|
"""Gather all bounding boxes from tables, charts, and infographics columns."""
|
|
20
46
|
bboxes: List[Tuple[float, ...]] = []
|
|
21
47
|
for col in _STRUCTURED_COLUMNS:
|
|
22
|
-
items = row.get(col)
|
|
23
|
-
if
|
|
48
|
+
items = _as_element_list(row.get(col))
|
|
49
|
+
if items is None:
|
|
24
50
|
continue
|
|
25
51
|
for item in items:
|
|
26
52
|
if not isinstance(item, dict):
|
|
27
53
|
continue
|
|
28
|
-
bbox = item.get("bbox_xyxy_norm")
|
|
29
|
-
if bbox
|
|
30
|
-
bboxes.append(
|
|
54
|
+
bbox = _as_bbox(item.get("bbox_xyxy_norm"))
|
|
55
|
+
if bbox is not None:
|
|
56
|
+
bboxes.append(bbox)
|
|
31
57
|
return bboxes
|
|
32
58
|
|
|
33
59
|
|
|
@@ -54,9 +80,13 @@ def dedup_images(
|
|
|
54
80
|
if "images" not in batch_df.columns:
|
|
55
81
|
return batch_df
|
|
56
82
|
|
|
83
|
+
# Arrow-backed columns reject assignment of a filtered Python list.
|
|
84
|
+
if isinstance(batch_df["images"].dtype, pd.ArrowDtype):
|
|
85
|
+
batch_df["images"] = batch_df["images"].astype(object)
|
|
86
|
+
|
|
57
87
|
for row_idx, row in batch_df.iterrows():
|
|
58
|
-
images = row.get("images")
|
|
59
|
-
if not
|
|
88
|
+
images = _as_element_list(row.get("images"))
|
|
89
|
+
if not images:
|
|
60
90
|
continue
|
|
61
91
|
|
|
62
92
|
filtered = list(images)
|
|
@@ -88,11 +118,10 @@ def dedup_images(
|
|
|
88
118
|
if not isinstance(item, dict):
|
|
89
119
|
surviving.append(item)
|
|
90
120
|
continue
|
|
91
|
-
|
|
92
|
-
if
|
|
121
|
+
img_bbox_t = _as_bbox(item.get("bbox_xyxy_norm"))
|
|
122
|
+
if img_bbox_t is None:
|
|
93
123
|
surviving.append(item)
|
|
94
124
|
continue
|
|
95
|
-
img_bbox_t = tuple(img_bbox[:4])
|
|
96
125
|
overlaps = any(calculate_iou(img_bbox_t, sb) >= iou_threshold for sb in structured_bboxes)
|
|
97
126
|
if not overlaps:
|
|
98
127
|
surviving.append(item)
|