From d0daf42611c56cbdddeb5e692a0a428da066f482 Mon Sep 17 00:00:00 2001 From: Jacob Ioffe Date: Tue, 4 Aug 2026 15:19:54 +0000 Subject: [PATCH 1/7] Default Retriever to weighted hybrid search Signed-off-by: Jacob Ioffe --- nemo_retriever/docs/cli/README.md | 2 +- nemo_retriever/harness/README.md | 33 +- .../docs/assets/hybrid-retrieval-latency.svg | 2097 +++++++++++++++ .../hybrid-retrieval-quality-ablation.svg | 2240 +++++++++++++++++ .../harness/docs/expected-results.md | 7 +- nemo_retriever/helm/README.md | 8 + nemo_retriever/helm/templates/configmap.yaml | 5 + .../helm/templates/deployment-vectordb.yaml | 2 + nemo_retriever/helm/values.yaml | 3 + .../cli/ingest/graph_commands.py | 2 +- .../src/nemo_retriever/cli/ingest/options.py | 5 +- .../src/nemo_retriever/cli/ingest_workflow.py | 2 + .../src/nemo_retriever/common/vdb/README.md | 4 +- .../common/vdb/hybrid_fusion.py | 76 + .../src/nemo_retriever/common/vdb/lancedb.py | 28 +- .../common/vdb/lancedb_capabilities.py | 3 +- .../src/nemo_retriever/graph/retriever.py | 21 +- .../harness/benchmark_registry.py | 35 +- .../src/nemo_retriever/harness/cli.py | 44 +- .../src/nemo_retriever/harness/diff.py | 26 +- .../src/nemo_retriever/harness/execution.py | 26 +- .../harness/release_reference.py | 5 + .../harness/retrieval_comparison.py | 941 +++++++ .../src/nemo_retriever/harness/slack.py | 7 + .../src/nemo_retriever/ingest/index_mode.py | 73 + .../src/nemo_retriever/ingest/plan.py | 59 +- .../src/nemo_retriever/service/config.py | 1 + .../service/retriever-service.yaml | 6 +- .../nemo_retriever/service/vectordb_app.py | 170 +- .../tests/test_harness_artifacts.py | 32 +- .../tests/test_harness_benchmark_registry.py | 17 +- nemo_retriever/tests/test_harness_slack.py | 43 +- .../tests/test_helm_vectordb_index_mode.py | 57 + .../tests/test_ingest_index_mode.py | 47 + .../tests/test_lancedb_capabilities.py | 43 +- .../tests/test_lancedb_retrieval_where.py | 57 + .../tests/test_retrieval_comparison.py | 202 ++ .../tests/test_root_cli_workflow.py | 4 + .../tests/test_service_vectordb_app.py | 20 +- ...t_service_vectordb_evidence_integration.py | 2 +- ...est_service_vectordb_hybrid_integration.py | 74 +- 41 files changed, 6423 insertions(+), 106 deletions(-) create mode 100644 nemo_retriever/harness/docs/assets/hybrid-retrieval-latency.svg create mode 100644 nemo_retriever/harness/docs/assets/hybrid-retrieval-quality-ablation.svg create mode 100644 nemo_retriever/src/nemo_retriever/common/vdb/hybrid_fusion.py create mode 100644 nemo_retriever/src/nemo_retriever/harness/retrieval_comparison.py create mode 100644 nemo_retriever/src/nemo_retriever/ingest/index_mode.py create mode 100644 nemo_retriever/tests/test_helm_vectordb_index_mode.py create mode 100644 nemo_retriever/tests/test_ingest_index_mode.py create mode 100644 nemo_retriever/tests/test_retrieval_comparison.py diff --git a/nemo_retriever/docs/cli/README.md b/nemo_retriever/docs/cli/README.md index 579688d1ae..f952054c6e 100644 --- a/nemo_retriever/docs/cli/README.md +++ b/nemo_retriever/docs/cli/README.md @@ -255,7 +255,7 @@ These options apply to `retriever ingest`, `retriever ingest local`, and | `--lancedb-uri` | `lancedb` | LanceDB database URI. | | `--table-name` | `nemo-retriever` | LanceDB table name. Must match query-time storage flags. | | `--overwrite/--append` | overwrite | Overwrite the table by default; use `--append` to add rows. | -| `--index-mode` | `dense` | Dense vector index by default; `hybrid` also builds BM25/FTS and `sparse` builds an FTS-only table. | +| `--index-mode` | `auto` | `auto` creates a hybrid vector + BM25/FTS table. On append it preserves the existing physical mode. Explicit `hybrid` upgrades a dense table; destructive or sparse/dense mismatches are rejected. | | `--method` | planner default | PDF extraction method such as `pdfium` or `nemotron_parse`. | | `--extract-text`, `--extract-tables`, `--extract-charts` | planner default | Enable or disable extraction families. | | `--ocr-version` | planner default | OCR engine version for local extraction. | diff --git a/nemo_retriever/harness/README.md b/nemo_retriever/harness/README.md index 6ebaa8d25a..2a607ee5e2 100644 --- a/nemo_retriever/harness/README.md +++ b/nemo_retriever/harness/README.md @@ -56,6 +56,7 @@ recorded before this behavior changed are not directly comparable. | `run-files` | Run one or more portable runfiles as a session. | | `run-helm` | Provision a service, run one session, collect failure logs, and tear it down. | | `check-vidore-access` | Check remote ViDoRe queries, qrels, and corpora without downloading them. | +| `compare-retrieval` | Replay dense, sparse, and hybrid retrieval against one completed ViDoRe index without re-ingesting. | | `post-slack` | Preview or post completed artifacts without rerunning a benchmark. | | `diff` | Compare summary metrics from two completed runs. | @@ -137,6 +138,33 @@ A multi-run session has this stable layout: Dry-runs resolve configuration and write planning artifacts, but they are not execution evidence. +### Compare ViDoRe retrieval modes + +Canonical BEIR benchmarks now ingest hybrid-capable tables. Explicitly named +`*_dense` benchmarks and the `vidore_v3_all_dense` runset retain the historical +dense configuration. Every run records both requested and resolved index mode +in `results.json`, so baseline tooling can keep them distinct. + +Hybrid query execution uses the shared no-model-reranker weighted-RRF policy: +50 candidates per dense/FTS leg, dense weight 0.8, sparse weight 0.2, and RRF +`k=10`. Comparison summaries record this resolved fusion policy alongside the +LanceDB version. + +After a completed local or batch ViDoRe run, replay all three retrieval modes +against the identical extracted rows: + +```bash +uv run --project nemo_retriever retriever harness compare-retrieval \ + /path/to/completed-run \ + --modes dense,sparse,hybrid +``` + +The command refuses non-hybrid source indexes and existing output directories. +It writes `retrieval_comparison/summary.json`, `query_cases.jsonl`, +`extraction_audit.json`, `report.md`, per-mode query/BEIR/TREC artifacts, and +available annotated evidence crops. Extraction `needs_review` classifications +are weak-overlap diagnostics, never confirmed extraction failures. + ## Gates and Exit Codes Metric gates compare values in `results.json.summary_metrics`: @@ -187,6 +215,7 @@ one release snapshot outside the repository: { "name": "RC26.05 Perflab", "dataset": "bo767", + "resolved_index_mode": "dense", "environment": {"gpu_sku": "NVIDIA H100 80GB HBM3", "gpu_count": 8}, "metrics": {"ingest_secs": 4036.85, "pages_per_sec_ingest": 13.56} } @@ -197,7 +226,9 @@ one release snapshot outside the repository: Pass it with `--reference-file` or set `RETRIEVER_HARNESS_REFERENCE_FILE`. The report shows the two observations with their GPU context; it does not assign a verdict, update the file, or maintain -history. +history. Retrieval references match only runs with the same +`resolved_index_mode`; this prevents a dense baseline from being presented as +a hybrid comparison. Compare two local runs without Slack: diff --git a/nemo_retriever/harness/docs/assets/hybrid-retrieval-latency.svg b/nemo_retriever/harness/docs/assets/hybrid-retrieval-latency.svg new file mode 100644 index 0000000000..a028c52eec --- /dev/null +++ b/nemo_retriever/harness/docs/assets/hybrid-retrieval-latency.svg @@ -0,0 +1,2097 @@ + + + + + + + + 2026-08-04T15:19:39.012321 + image/svg+xml + + + Matplotlib v3.11.1, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nemo_retriever/harness/docs/assets/hybrid-retrieval-quality-ablation.svg b/nemo_retriever/harness/docs/assets/hybrid-retrieval-quality-ablation.svg new file mode 100644 index 0000000000..62cd124ca7 --- /dev/null +++ b/nemo_retriever/harness/docs/assets/hybrid-retrieval-quality-ablation.svg @@ -0,0 +1,2240 @@ + + + + + + + + 2026-08-04T15:19:38.712368 + image/svg+xml + + + Matplotlib v3.11.1, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nemo_retriever/harness/docs/expected-results.md b/nemo_retriever/harness/docs/expected-results.md index f110447bf1..2a41bdd989 100644 --- a/nemo_retriever/harness/docs/expected-results.md +++ b/nemo_retriever/harness/docs/expected-results.md @@ -93,7 +93,8 @@ Integrity facts: | Pharmaceuticals | 52 | 2,313 | 2,184 | | Physics | 42 | 1,674 | 1,812 | -Observed complete batch runs on an eight-H100 DGX: +Observed complete **dense** batch runs on an eight-H100 DGX (these predate the +hybrid default and must not be compared to hybrid runs as one baseline series): | Dataset | Indexed rows | Ingest seconds | Pages/s | Recall@5 | Recall@10 | nDCG@10 | | --- | ---: | ---: | ---: | ---: | ---: | ---: | @@ -111,6 +112,10 @@ The observed all-domain macro-average nDCG@10 was about `0.519`. The observation predate separate physical and workload-visible GPU counts, so do not infer scaling behavior from their throughput. +Canonical ViDoRe benchmarks now create hybrid tables. Register equal-RRF, +weighted-hybrid, and historical dense results as distinct baseline series; use +`vidore_v3_all_dense` only to reproduce the historical dense configuration. + ### RC26.05 Recall Comparison | Dataset | RC26.05 Recall@5 | Observed Recall@5 | diff --git a/nemo_retriever/helm/README.md b/nemo_retriever/helm/README.md index 40fb6dc9b8..679c3d3c0c 100644 --- a/nemo_retriever/helm/README.md +++ b/nemo_retriever/helm/README.md @@ -333,11 +333,19 @@ The retriever service picks up the in-cluster ASR endpoint when `nimOperator.aud | `serviceConfig.llm.reasoningEnabled` | `true` | Request-level reasoning toggle for `/v1/answer`. Defaults to true for external OpenAI-compatible providers; set false for Nemotron endpoints that should receive portable no-reasoning controls. | | `serviceConfig.vectordb.enabled` | `true` | Deploy the LanceDB vectordb Pod. When `true` the chart **requires** a resolvable embed endpoint (refer to [VectorDB and the embed endpoint](#vectordb-and-the-embed-endpoint)); `helm install` / `helm upgrade` fails fast otherwise. | | `serviceConfig.vectordb.lancedbUri` | `/data/vectordb` | LanceDB on the vectordb Pod's PVC. | +| `serviceConfig.vectordb.indexMode` | `auto` | `auto`, `dense`, or `hybrid`. Fresh `auto` storage creates FTS and uses hybrid retrieval; persistent dense storage remains dense until `hybrid` is requested explicitly. | | `serviceConfig.vectordb.embedModel` | `nvidia/llama-nemotron-embed-vl-1b-v2` | Passed to vectordb + worker `embed_model_name`. | | `serviceConfig.vectordb.embedModelProviderPrefix` | `""` | Optional LiteLLM provider prefix prepended to the remote embed model name. | #### VectorDB and the embed endpoint { #vectordb-and-the-embed-endpoint } +The VectorDB storage default is `indexMode: auto`. A fresh table creates and +waits for its FTS index after the first write, while an existing dense table is +left dense. Set `serviceConfig.vectordb.indexMode=hybrid` to perform the +explicit dense-to-hybrid upgrade. Incremental rows remain searchable through +LanceDB's unindexed-tail scan; the service runs `optimize()` after 20 writes or +100,000 added rows and reports FTS and optimization state from `/v1/health`. + The vectordb Pod's `/v1/query` handler embeds the incoming query text before searching LanceDB. It needs a NIM embedding endpoint to do that, and rendering the Deployment with an empty `--embed-endpoint` produces a diff --git a/nemo_retriever/helm/templates/configmap.yaml b/nemo_retriever/helm/templates/configmap.yaml index 783e917732..a4473d41bb 100644 --- a/nemo_retriever/helm/templates/configmap.yaml +++ b/nemo_retriever/helm/templates/configmap.yaml @@ -163,11 +163,16 @@ auth: header_name: {{ .Values.serviceConfig.auth.headerName | quote }} bypass_paths: {{ toJson .Values.serviceConfig.auth.bypassPaths }} +{{- $indexMode := .Values.serviceConfig.vectordb.indexMode | default "auto" -}} +{{- if not (has $indexMode (list "auto" "dense" "hybrid")) -}} +{{- fail "serviceConfig.vectordb.indexMode must be one of: auto, dense, hybrid" -}} +{{- end -}} {{- if .Values.serviceConfig.vectordb.enabled }} vectordb: enabled: true lancedb_uri: {{ .Values.serviceConfig.vectordb.lancedbUri | quote }} table_name: {{ .Values.serviceConfig.vectordb.tableName | quote }} + index_mode: {{ $indexMode | quote }} embed_model: {{ .Values.serviceConfig.vectordb.embedModel | quote }} {{- if .Values.serviceConfig.vectordb.embedModelProviderPrefix }} embed_model_provider_prefix: {{ .Values.serviceConfig.vectordb.embedModelProviderPrefix | quote }} diff --git a/nemo_retriever/helm/templates/deployment-vectordb.yaml b/nemo_retriever/helm/templates/deployment-vectordb.yaml index 19c4efc009..db015304a7 100644 --- a/nemo_retriever/helm/templates/deployment-vectordb.yaml +++ b/nemo_retriever/helm/templates/deployment-vectordb.yaml @@ -75,6 +75,8 @@ spec: - {{ .Values.serviceConfig.vectordb.lancedbUri | quote }} - --table-name - {{ .Values.serviceConfig.vectordb.tableName | quote }} + - --index-mode + - {{ .Values.serviceConfig.vectordb.indexMode | default "auto" | quote }} {{- if $embedURL }} - --embed-endpoint - {{ $embedURL | quote }} diff --git a/nemo_retriever/helm/values.yaml b/nemo_retriever/helm/values.yaml index 07a1cde90d..cb99082c5a 100644 --- a/nemo_retriever/helm/values.yaml +++ b/nemo_retriever/helm/values.yaml @@ -675,6 +675,9 @@ serviceConfig: enabled: true lancedbUri: "/data/vectordb" tableName: "nemo_retriever" + # auto creates hybrid storage when fresh and preserves existing physical indexes. + # Use hybrid explicitly to upgrade an existing dense table by adding FTS. + indexMode: "auto" embedModel: "nvidia/llama-nemotron-embed-vl-1b-v2" embedModelProviderPrefix: "" diff --git a/nemo_retriever/src/nemo_retriever/cli/ingest/graph_commands.py b/nemo_retriever/src/nemo_retriever/cli/ingest/graph_commands.py index feefdb26b9..746495ba93 100644 --- a/nemo_retriever/src/nemo_retriever/cli/ingest/graph_commands.py +++ b/nemo_retriever/src/nemo_retriever/cli/ingest/graph_commands.py @@ -222,7 +222,7 @@ def _graph_ingest_command( dedup_iou_threshold: opts.DedupIouThresholdOption = None, store_images_uri: opts.StoreImagesUriOption = None, overwrite: opts.OverwriteOption = True, - index_mode: opts.IndexModeOption = "dense", + index_mode: opts.IndexModeOption = "auto", ray_address: opts.RayAddressOption = None, ray_log_to_driver: opts.RayLogToDriverOption = None, page_elements_invoke_url: opts.PageElementsInvokeUrlOption = None, diff --git a/nemo_retriever/src/nemo_retriever/cli/ingest/options.py b/nemo_retriever/src/nemo_retriever/cli/ingest/options.py index 8aae3b5ec8..26554ee85c 100644 --- a/nemo_retriever/src/nemo_retriever/cli/ingest/options.py +++ b/nemo_retriever/src/nemo_retriever/cli/ingest/options.py @@ -200,8 +200,9 @@ typer.Option( "--index-mode", help=( - "LanceDB index mode: dense, hybrid, or sparse. Dense is vector-only; hybrid also builds " - "BM25/FTS; sparse skips dense embedding and writes an FTS-only table." + "LanceDB index mode: auto, dense, hybrid, or sparse. Auto creates hybrid tables and preserves " + "an existing table's physical mode on append. Dense is vector-only; hybrid also builds BM25/FTS; " + "sparse skips dense embedding and writes an FTS-only table." ), ), ] diff --git a/nemo_retriever/src/nemo_retriever/cli/ingest_workflow.py b/nemo_retriever/src/nemo_retriever/cli/ingest_workflow.py index 29aefebcc1..23df680329 100644 --- a/nemo_retriever/src/nemo_retriever/cli/ingest_workflow.py +++ b/nemo_retriever/src/nemo_retriever/cli/ingest_workflow.py @@ -65,6 +65,8 @@ def _ingest_plan_to_dry_run_data(plan: ResolvedIngestPlan) -> dict[str, Any]: return { "dry_run": True, "profile": plan.profile, + "requested_index_mode": plan.requested_index_mode, + "index_mode": plan.index_mode, "documents": list(plan.documents), "branches": [ { diff --git a/nemo_retriever/src/nemo_retriever/common/vdb/README.md b/nemo_retriever/src/nemo_retriever/common/vdb/README.md index b7337966f7..4fdf9e6b70 100644 --- a/nemo_retriever/src/nemo_retriever/common/vdb/README.md +++ b/nemo_retriever/src/nemo_retriever/common/vdb/README.md @@ -106,9 +106,9 @@ For `vdb_op="lancedb"`, **`LanceDB.retrieval`**: - Opens the table with `lancedb.connect(table_path).open_table(table_name)`. - For dense retrieval, each query vector uses **`table.search([vector], vector_column_name=..., **search_kwargs)`**, optional **`.where(where_clause)`** (Lance / DataFusion SQL; `metadata` / `source` are stored as JSON strings), then **`.limit(top_k).refine_factor(...).nprobes(...)`**. -- For hybrid retrieval, callers pass `hybrid=True` plus `query_texts` aligned with the vectors. LanceDB uses **`table.search(query_type="hybrid", vector_column_name=..., fts_columns="text").vector(vector).text(query_text)`** before applying the same `where`, limit, refine, probe, and select handling. +- For hybrid retrieval, callers pass `hybrid=True` plus `query_texts` aligned with the vectors. LanceDB uses **`table.search(query_type="hybrid", vector_column_name=..., fts_columns="text").vector(vector).text(query_text)`** before applying the same `where`, limit, refine, probe, and select handling. Product query paths also pass the shared weighted-RRF policy (`candidate_depth=50`, `dense_weight=0.8`, `rrf_k=10`), then truncate the fused ranking to `top_k`. Direct low-level callers opt into that behavior explicitly with `hybrid_fusion=HybridFusionPolicy(...)`. -Notable kwargs: `top_k`, `refine_factor`, `n_probe` / `nprobes`, `where` or `_filter`, `table_path`, `table_name`, `search_kwargs`, `hybrid`, and `query_texts`. `query_texts` is stripped from constructor kwargs and forwarded only for retrieval calls whose effective mode is hybrid. +Notable kwargs: `top_k`, `refine_factor`, `n_probe` / `nprobes`, `where` or `_filter`, `table_path`, `table_name`, `search_kwargs`, `hybrid`, `query_texts`, and `hybrid_fusion`. `query_texts` is stripped from constructor kwargs and forwarded only for retrieval calls whose effective mode is hybrid. Example of **direct** operator use (you supply vectors): diff --git a/nemo_retriever/src/nemo_retriever/common/vdb/hybrid_fusion.py b/nemo_retriever/src/nemo_retriever/common/vdb/hybrid_fusion.py new file mode 100644 index 0000000000..62dfd92066 --- /dev/null +++ b/nemo_retriever/src/nemo_retriever/common/vdb/hybrid_fusion.py @@ -0,0 +1,76 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. +# All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Typed rank-fusion policy for LanceDB hybrid retrieval.""" + +from __future__ import annotations + +from collections import defaultdict +from dataclasses import dataclass +from typing import Any + +import pyarrow as pa +from lancedb.rerankers.base import Reranker + + +@dataclass(frozen=True) +class HybridFusionPolicy: + """Candidate depth and weighted-RRF parameters for one hybrid query.""" + + candidate_depth: int + dense_weight: float + rrf_k: int + + def __post_init__(self) -> None: + if self.candidate_depth <= 0: + raise ValueError("candidate_depth must be greater than zero") + if not 0.0 <= self.dense_weight <= 1.0: + raise ValueError("dense_weight must be between zero and one") + if self.rrf_k <= 0: + raise ValueError("rrf_k must be greater than zero") + + def __str__(self) -> str: + return ( + "weighted RRF " + f"(candidate_depth={self.candidate_depth}, dense_weight={self.dense_weight:g}, rrf_k={self.rrf_k})" + ) + + +DEFAULT_HYBRID_FUSION_POLICY = HybridFusionPolicy(candidate_depth=50, dense_weight=0.8, rrf_k=10) + + +class WeightedRRFReranker(Reranker): + """Fuse dense and FTS ranks while preferring dense order for score ties.""" + + def __init__(self, policy: HybridFusionPolicy) -> None: + super().__init__(return_score="relevance") + self.policy = policy + + def rerank_hybrid( + self, + query: str, + vector_results: pa.Table, + fts_results: pa.Table, + ) -> pa.Table: + del query + vector_ids = vector_results["_rowid"].to_pylist() if len(vector_results) else [] + fts_ids = fts_results["_rowid"].to_pylist() if len(fts_results) else [] + scores: defaultdict[Any, float] = defaultdict(float) + for weight, row_ids in ( + (self.policy.dense_weight, vector_ids), + (1.0 - self.policy.dense_weight, fts_ids), + ): + for rank, row_id in enumerate(row_ids, start=1): + scores[row_id] += weight / (self.policy.rrf_k + rank) + + combined = self.merge_results(vector_results, fts_results) + row_ids = combined["_rowid"].to_pylist() + combined = combined.append_column( + "_relevance_score", + pa.array([scores[row_id] for row_id in row_ids], type=pa.float64()), + ) + combined = combined.append_column("_fusion_order", pa.array(range(len(combined)), type=pa.int64())) + combined = combined.sort_by([("_relevance_score", "descending"), ("_fusion_order", "ascending")]) + combined = combined.drop_columns(["_fusion_order"]) + return self._keep_relevance_score(combined) diff --git a/nemo_retriever/src/nemo_retriever/common/vdb/lancedb.py b/nemo_retriever/src/nemo_retriever/common/vdb/lancedb.py index c4621ab41e..32186c6bcd 100644 --- a/nemo_retriever/src/nemo_retriever/common/vdb/lancedb.py +++ b/nemo_retriever/src/nemo_retriever/common/vdb/lancedb.py @@ -6,17 +6,19 @@ import logging import os import time - from collections.abc import Iterable, Sequence from datetime import timedelta from typing import Any, Final, FrozenSet -import lancedb import pyarrow as pa import pyarrow.compute as pc +import lancedb from nemo_retriever.common.vdb.adt_vdb import VDB - +from nemo_retriever.common.vdb.hybrid_fusion import ( + HybridFusionPolicy, + WeightedRRFReranker, +) logger = logging.getLogger(__name__) @@ -862,8 +864,13 @@ def retrieval(self, vectors: Iterable[Sequence[float]], **kwargs: Any) -> list[l query_texts: Raw query strings aligned with ``vectors``. Required for ``hybrid=True`` and ignored for dense-only retrieval. + hybrid_fusion: + Optional :class:`HybridFusionPolicy`. When present, each hybrid leg + retrieves at least ``candidate_depth`` rows, applies weighted RRF, + and returns only the requested ``top_k`` rows. """ hybrid = kwargs.pop("hybrid", self.hybrid) + hybrid_fusion = kwargs.pop("hybrid_fusion", None) query_texts = kwargs.pop("query_texts", None) table_path = kwargs.pop("table_path", self.uri) table_name = kwargs.pop("table_name", self.table_name) @@ -898,6 +905,14 @@ def retrieval(self, vectors: Iterable[Sequence[float]], **kwargs: Any) -> list[l ) search_kwargs["query_type"] = "hybrid" search_kwargs.setdefault("fts_columns", "text") + elif hybrid_fusion is not None: + raise ValueError("hybrid_fusion requires hybrid=True") + + if hybrid_fusion is not None and not isinstance(hybrid_fusion, HybridFusionPolicy): + raise TypeError( + "hybrid_fusion must be a HybridFusionPolicy or None; " + f"got {type(hybrid_fusion).__name__}" + ) where_clause = kwargs.pop("where", None) _filter_fallback = kwargs.pop("_filter", None) @@ -932,10 +947,15 @@ def retrieval(self, vectors: Iterable[Sequence[float]], **kwargs: Any) -> list[l query = table.search([vector], vector_column_name=vector_column_name, **search_kwargs) if where_clause is not None: query = query.where(where_clause) - query = query.limit(top_k).refine_factor(refine_factor).nprobes(n_probe) + query_limit = max(top_k, hybrid_fusion.candidate_depth) if hybrid_fusion is not None else top_k + query = query.limit(query_limit).refine_factor(refine_factor).nprobes(n_probe) + if hybrid_fusion is not None: + query = query.rerank(WeightedRRFReranker(hybrid_fusion)) if result_fields is not None: query = query.select(result_fields) results = query.to_list() + if hybrid_fusion is not None: + results = results[:top_k] search_results.append(results) return search_results diff --git a/nemo_retriever/src/nemo_retriever/common/vdb/lancedb_capabilities.py b/nemo_retriever/src/nemo_retriever/common/vdb/lancedb_capabilities.py index b675ff82b1..fbef9aa95f 100644 --- a/nemo_retriever/src/nemo_retriever/common/vdb/lancedb_capabilities.py +++ b/nemo_retriever/src/nemo_retriever/common/vdb/lancedb_capabilities.py @@ -133,7 +133,8 @@ def inspect_lancedb_table_object(table: Any) -> LanceTableCapabilities: has_vector = vector_column is not None has_fts = bool(fts_columns) - retrieval_mode = _metadata_retrieval_mode(schema) or _mode_from_capabilities(has_vector, has_fts) + physical_mode = _mode_from_capabilities(has_vector, has_fts) + retrieval_mode = physical_mode if physical_mode != "unknown" else (_metadata_retrieval_mode(schema) or "unknown") return LanceTableCapabilities( has_vector=has_vector, diff --git a/nemo_retriever/src/nemo_retriever/graph/retriever.py b/nemo_retriever/src/nemo_retriever/graph/retriever.py index 330bcbbdb2..dd2434b9fd 100644 --- a/nemo_retriever/src/nemo_retriever/graph/retriever.py +++ b/nemo_retriever/src/nemo_retriever/graph/retriever.py @@ -11,19 +11,20 @@ import pandas as pd -from nemo_retriever.models import VL_EMBED_MODEL, VL_RERANK_MODEL, resolve_embed_model -from nemo_retriever.graph.retriever_utils import ( - filter_retrieval_kwargs, - rerank_long_dataframe_to_hits, -) +from nemo_retriever.common.vdb.hybrid_fusion import DEFAULT_HYBRID_FUSION_POLICY from nemo_retriever.common.vdb.lancedb_capabilities import ( LanceRetrievalMode, LanceTableCapabilities, inspect_lancedb_table, ) from nemo_retriever.common.vdb.records import RetrievalHit, normalize_retrieval_results -from nemo_retriever.query.shaping import shape_query_hits +from nemo_retriever.graph.retriever_utils import ( + filter_retrieval_kwargs, + rerank_long_dataframe_to_hits, +) +from nemo_retriever.models import VL_EMBED_MODEL, VL_RERANK_MODEL, resolve_embed_model from nemo_retriever.operators.vdb import RetrieveVdbOperator +from nemo_retriever.query.shaping import shape_query_hits logger = logging.getLogger(__name__) @@ -103,8 +104,11 @@ def __post_init__(self) -> None: raise ValueError("run_mode must be 'local' or 'service'") def _merge_embed_params(self, extra: Optional[dict[str, Any]] = None) -> Any: - from nemo_retriever.models import _LOCAL_INGEST_EMBED_BACKENDS, normalize_backend from nemo_retriever.common.params import EmbedParams + from nemo_retriever.models import ( + _LOCAL_INGEST_EMBED_BACKENDS, + normalize_backend, + ) base: dict[str, Any] = { "model_name": VL_EMBED_MODEL, @@ -142,9 +146,9 @@ def _refine_factor(self) -> int: return int(self._merge_rerank_actor_kwargs().get("refine_factor", 4)) def _build_default_graph(self, *, embed_extra: Optional[dict[str, Any]] = None) -> Any: - from nemo_retriever.operators.rerank import NemotronRerankActor from nemo_retriever.operators.embed.cpu_operator import _BatchEmbedCPUActor from nemo_retriever.operators.embed.operators import _BatchEmbedActor + from nemo_retriever.operators.rerank import NemotronRerankActor embed_params = self._merge_embed_params(embed_extra) if self.run_mode == "service": @@ -458,6 +462,7 @@ def queries( ] if mode == "hybrid": vdb_call_kwargs["hybrid"] = True + vdb_call_kwargs.setdefault("hybrid_fusion", DEFAULT_HYBRID_FUSION_POLICY) elif mode == "dense" and has_mode_override: vdb_call_kwargs["hybrid"] = False if caps.vector_column and caps.vector_column != "vector": diff --git a/nemo_retriever/src/nemo_retriever/harness/benchmark_registry.py b/nemo_retriever/src/nemo_retriever/harness/benchmark_registry.py index c6b5c99445..270a5525a6 100644 --- a/nemo_retriever/src/nemo_retriever/harness/benchmark_registry.py +++ b/nemo_retriever/src/nemo_retriever/harness/benchmark_registry.py @@ -127,7 +127,7 @@ def _base_ingest(*, profile: str = "auto") -> dict[str, Any]: "storage": { "table_name": DEFAULT_TABLE_NAME, "overwrite": True, - "index_mode": "dense", + "index_mode": "hybrid", }, } @@ -193,7 +193,7 @@ def _vidore_v3_benchmark(dataset_name: str) -> BenchmarkSpec: ) -BENCHMARKS: dict[str, BenchmarkSpec] = { +_CANONICAL_BENCHMARKS: dict[str, BenchmarkSpec] = { "jp20_smoke": BenchmarkSpec( name="jp20_smoke", dataset="jp20", @@ -267,6 +267,31 @@ def _vidore_v3_benchmark(dataset_name: str) -> BenchmarkSpec: ), } + +def _dense_variant(spec: BenchmarkSpec) -> BenchmarkSpec: + ingest = deepcopy(dict(spec.ingest)) + ingest["storage"] = {**dict(ingest.get("storage") or {}), "index_mode": "dense"} + return BenchmarkSpec( + name=f"{spec.name}_dense", + dataset=spec.dataset, + ingest=ingest, + query={**dict(spec.query), "retrieval_mode": "dense"}, + evaluation=deepcopy(dict(spec.evaluation)), + summary_keys=spec.summary_keys, + tags=(*spec.tags, "dense-baseline"), + description=f"Dense historical baseline for {spec.description or spec.name}", + ) + + +BENCHMARKS: dict[str, BenchmarkSpec] = { + **_CANONICAL_BENCHMARKS, + **{ + f"{name}_dense": _dense_variant(spec) + for name, spec in _CANONICAL_BENCHMARKS.items() + if (spec.evaluation or {}).get("mode") == "beir" + }, +} + RUNSETS: dict[str, RunSet] = { "jp20_core": RunSet( name="jp20_core", @@ -280,6 +305,12 @@ def _vidore_v3_benchmark(dataset_name: str) -> BenchmarkSpec: tags=("vidore", "beir", "all"), description="All eight public ViDoRe v3 BEIR retrieval benchmarks.", ), + "vidore_v3_all_dense": RunSet( + name="vidore_v3_all_dense", + runs=tuple(f"{dataset_name}_beir_dense" for dataset_name in VIDORE_V3_PUBLIC_DATASETS), + tags=("vidore", "beir", "all", "dense-baseline"), + description="Historical dense baselines for all eight public ViDoRe v3 benchmarks.", + ), } diff --git a/nemo_retriever/src/nemo_retriever/harness/cli.py b/nemo_retriever/src/nemo_retriever/harness/cli.py index 5a0aa0369c..4bce7b4879 100644 --- a/nemo_retriever/src/nemo_retriever/harness/cli.py +++ b/nemo_retriever/src/nemo_retriever/harness/cli.py @@ -16,15 +16,20 @@ list_benchmarks, list_runsets, ) -from nemo_retriever.harness.contracts import EXIT_INVALID, EXIT_MISSING_INPUT, FailurePayload +from nemo_retriever.harness.contracts import ( + EXIT_INVALID, + EXIT_MISSING_INPUT, + FailurePayload, +) +from nemo_retriever.harness.diff import diff_artifact_dirs +from nemo_retriever.harness.release_reference import load_release_references +from nemo_retriever.harness.resolution import make_run_id +from nemo_retriever.harness.retrieval_comparison import compare_retrieval from nemo_retriever.harness.revamp_runner import ( HarnessRunError, run_benchmark, show_benchmark_payload, ) -from nemo_retriever.harness.diff import diff_artifact_dirs -from nemo_retriever.harness.resolution import make_run_id -from nemo_retriever.harness.release_reference import load_release_references from nemo_retriever.harness.runfile import load_runfile from nemo_retriever.harness.runsets import run_runfiles, run_runset from nemo_retriever.harness.slack import ( @@ -48,6 +53,37 @@ def _echo_json(payload: object) -> None: typer.echo(json.dumps(payload, indent=2, sort_keys=False)) +@app.command("compare-retrieval") +def compare_retrieval_command( + run_dir: Annotated[Path, typer.Argument(help="Completed local/batch ViDoRe harness run directory.")], + modes: Annotated[ + str, + typer.Option("--modes", help="Comma-separated retrieval modes replayed against the same index."), + ] = "dense,sparse,hybrid", + output_dir: Annotated[ + Path | None, + typer.Option("--output-dir", help="Comparison directory; defaults to RUN_DIR/retrieval_comparison."), + ] = None, + json_output: Annotated[bool, typer.Option("--json", help="Emit summary JSON to stdout.")] = False, +) -> None: + """Compare retrieval modes without re-ingesting the completed run.""" + try: + summary = compare_retrieval( + run_dir, + modes=[mode.strip() for mode in modes.split(",") if mode.strip()], + output_dir=output_dir, + ) + except ValueError as exc: + typer.echo(str(exc), err=True) + raise typer.Exit(code=EXIT_INVALID) from exc + if json_output: + _echo_json(summary) + else: + target = (output_dir or run_dir / "retrieval_comparison").expanduser().resolve() + typer.echo(f"Comparison artifacts: {target}") + typer.echo(f"Report: {target / 'report.md'}") + + @app.command("check-vidore-access") def check_vidore_access_command( dataset_names: Annotated[ diff --git a/nemo_retriever/src/nemo_retriever/harness/diff.py b/nemo_retriever/src/nemo_retriever/harness/diff.py index ebace02610..3cb477e880 100644 --- a/nemo_retriever/src/nemo_retriever/harness/diff.py +++ b/nemo_retriever/src/nemo_retriever/harness/diff.py @@ -7,11 +7,15 @@ from pathlib import Path from typing import Any -from nemo_retriever.harness.contracts import EXIT_INVALID, FailurePayload, HarnessRunError +from nemo_retriever.harness.contracts import ( + EXIT_INVALID, + FailurePayload, + HarnessRunError, +) from nemo_retriever.harness.json_io import read_json_object -def _read_summary(path_or_dir: Path) -> tuple[Path, dict[str, Any]]: +def _read_summary(path_or_dir: Path) -> tuple[Path, dict[str, Any], str | None]: try: path = path_or_dir.expanduser().resolve() if path.is_dir(): @@ -31,9 +35,10 @@ def _read_summary(path_or_dir: Path) -> tuple[Path, dict[str, Any]]: summary = payload.get("summary_metrics") if not isinstance(summary, dict): raise ValueError(f"'summary_metrics' must be an object in {results_path}") - return results_path, summary + resolved_index_mode = payload.get("resolved_index_mode") + return results_path, summary, str(resolved_index_mode) if resolved_index_mode is not None else None if legacy_summary_path.exists(): - return legacy_summary_path, read_json_object(legacy_summary_path) + return legacy_summary_path, read_json_object(legacy_summary_path), None raise FileNotFoundError(f"No results.json or summary_metrics.json found under {path}") except (FileNotFoundError, ValueError) as exc: raise HarnessRunError( @@ -57,8 +62,8 @@ def _numeric(value: Any) -> float | None: def diff_artifact_dirs(left: Path, right: Path) -> dict[str, Any]: - left_path, left_summary = _read_summary(left) - right_path, right_summary = _read_summary(right) + left_path, left_summary, left_index_mode = _read_summary(left) + right_path, right_summary, right_index_mode = _read_summary(right) keys = sorted(set(left_summary) | set(right_summary)) deltas: dict[str, dict[str, Any]] = {} for key in keys: @@ -76,8 +81,17 @@ def diff_artifact_dirs(left: Path, right: Path) -> dict[str, Any]: payload["delta"] = delta payload["percent_delta"] = (delta / left_number * 100.0) if left_number else None deltas[key] = payload + same_index_mode = left_index_mode == right_index_mode return { "left": str(left_path), "right": str(right_path), + "left_resolved_index_mode": left_index_mode, + "right_resolved_index_mode": right_index_mode, + "comparable_index_mode": same_index_mode, + "comparison_warning": ( + None + if same_index_mode + else "Dense, sparse, and hybrid results are distinct baseline series; interpret this cross-mode diff explicitly." + ), "summary_metrics": deltas, } diff --git a/nemo_retriever/src/nemo_retriever/harness/execution.py b/nemo_retriever/src/nemo_retriever/harness/execution.py index 6e6fe0a4f2..34f9150b8e 100644 --- a/nemo_retriever/src/nemo_retriever/harness/execution.py +++ b/nemo_retriever/src/nemo_retriever/harness/execution.py @@ -4,25 +4,28 @@ from __future__ import annotations -from copy import deepcopy -from dataclasses import dataclass import os import re import time import traceback +from copy import deepcopy +from dataclasses import dataclass from pathlib import Path from typing import Any, Sequence from nemo_retriever.cli.ingest_workflow import run_ingest_workflow from nemo_retriever.cli.shared import silence_noisy_libraries from nemo_retriever.harness.artifact_writer import ( + ArtifactWriter, append_text, artifact_paths, - ArtifactWriter, capture_output_to_log, redact, ) -from nemo_retriever.harness.beir_runner import run_beir_queries, run_service_beir_queries +from nemo_retriever.harness.beir_runner import ( + run_beir_queries, + run_service_beir_queries, +) from nemo_retriever.harness.contracts import ( EXIT_ARTIFACT_WRITE_FAILURE, EXIT_INGEST_FAILURE, @@ -30,15 +33,15 @@ EXIT_INVALID, EXIT_MISSING_INPUT, EXIT_SUCCESS, + PHASE_VALUES, FailurePayload, HarnessRunError, - PHASE_VALUES, RunOutcome, ) from nemo_retriever.harness.environment import collect_environment from nemo_retriever.harness.json_io import artifact_write_error, write_json -from nemo_retriever.harness.metrics import build_summary_metrics from nemo_retriever.harness.metric_gates import enforce_metric_gates, parse_metric_gates +from nemo_retriever.harness.metrics import build_summary_metrics from nemo_retriever.harness.resolution import ( build_ingest_request, build_query_request, @@ -52,7 +55,10 @@ validate_dataset_inputs, ) from nemo_retriever.ingest.plan import resolve_ingest_plan -from nemo_retriever.ingest.service import execute_service_ingest_request, resolve_service_ingest_request +from nemo_retriever.ingest.service import ( + execute_service_ingest_request, + resolve_service_ingest_request, +) from nemo_retriever.query.workflow import resolve_query_plan _ANSI_ESCAPE_RE = re.compile(r"\x1b\[[0-?]*[ -/]*[@-~]") @@ -428,6 +434,10 @@ def run_prepared_benchmark( ingest_summary: dict[str, Any] | None = None ingest_secs: float | None = None + requested_index_mode = str(((resolved.get("ingest") or {}).get("storage") or {}).get("index_mode", "auto")) + resolved_index_mode = requested_index_mode + if not service_mode: + resolved_index_mode = str(getattr(ingest_plan, "index_mode", requested_index_mode)) query_latencies_ms: list[float] = [] beir_metrics: dict[str, float] = {} query_count = 0 @@ -501,6 +511,8 @@ def run_prepared_benchmark( failure=None, metric_gates=list(requirements), skipped_metric_gates=list(skipped_metric_gates), + requested_index_mode=requested_index_mode, + resolved_index_mode=resolved_index_mode, ) write_json(writer.path("results.json"), result) writer.status( diff --git a/nemo_retriever/src/nemo_retriever/harness/release_reference.py b/nemo_retriever/src/nemo_retriever/harness/release_reference.py index fa0045bbc7..c462f6cece 100644 --- a/nemo_retriever/src/nemo_retriever/harness/release_reference.py +++ b/nemo_retriever/src/nemo_retriever/harness/release_reference.py @@ -17,6 +17,7 @@ class ReleaseReference: dataset: str environment: dict[str, Any] metrics: dict[str, int | float] + resolved_index_mode: str | None = None def load_release_references(path: Path) -> list[ReleaseReference]: @@ -33,6 +34,7 @@ def load_release_references(path: Path) -> list[ReleaseReference]: dataset = result.get("dataset") environment = result.get("environment", {}) metrics = result.get("metrics") + resolved_index_mode = result.get("resolved_index_mode") if not isinstance(release, str) or not release.strip(): raise ValueError(f"Release result at index {index} must define non-empty 'name' text") if not isinstance(dataset, str) or not dataset.strip(): @@ -43,12 +45,15 @@ def load_release_references(path: Path) -> list[ReleaseReference]: raise ValueError(f"Release result at index {index} must define non-empty 'metrics'") if any(isinstance(value, bool) or not isinstance(value, (int, float)) for value in metrics.values()): raise ValueError(f"Release result at index {index} metrics must be numeric") + if resolved_index_mode is not None and resolved_index_mode not in {"dense", "hybrid", "sparse"}: + raise ValueError(f"Release result at index {index} 'resolved_index_mode' must be dense, hybrid, or sparse") references.append( ReleaseReference( release=release.strip(), dataset=dataset.strip(), environment=dict(environment), metrics=dict(metrics), + resolved_index_mode=resolved_index_mode, ) ) return references diff --git a/nemo_retriever/src/nemo_retriever/harness/retrieval_comparison.py b/nemo_retriever/src/nemo_retriever/harness/retrieval_comparison.py new file mode 100644 index 0000000000..f9554f0fdb --- /dev/null +++ b/nemo_retriever/src/nemo_retriever/harness/retrieval_comparison.py @@ -0,0 +1,941 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. +# All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Replay dense, sparse, and hybrid retrieval against one completed ViDoRe index.""" + +from __future__ import annotations + +import json +import math +import re +import statistics +import time +from collections import Counter, defaultdict +from dataclasses import dataclass, field +from io import BytesIO +from pathlib import Path +from typing import Any, Iterable, Mapping, Sequence + +import lancedb +from nemo_retriever.common.vdb.hybrid_fusion import DEFAULT_HYBRID_FUSION_POLICY +from nemo_retriever.common.vdb.lancedb_capabilities import inspect_lancedb_table_object +from nemo_retriever.harness.json_io import write_json +from nemo_retriever.query.workflow import ResolvedQueryPlan +from nemo_retriever.tools.recall.beir import ( + BeirDataset, + build_beir_run_from_hits, + compute_beir_metrics, + load_beir_dataset, +) + +SUPPORTED_COMPARISON_MODES = ("dense", "sparse", "hybrid") +_TOKEN_RE = re.compile(r"[\w]+", re.UNICODE) +_ANCHOR_RE = re.compile(r"(?:[$€£¥]\s?\d|\d(?:[.,]\d+)?\s?%|\b[A-Z]{2,}[A-Z0-9_-]*\d[A-Z0-9_-]*\b|\b\d{2,}\b)") +_LABEL_FIELD_HINTS = ( + "format", + "type", + "evidence", + "source", + "origin", + "generator", + "generation", + "domain", + "language", + "synthetic", + "human", + "hop", +) +_REFERENCE_FIELD_HINTS = ( + "answer", + "reference", + "text", + "markdown", + "caption", + "content", + "ocr", + "title", + "entity", +) + + +@dataclass(frozen=True) +class LoadedVidoreMetadata: + query_rows: dict[str, dict[str, Any]] + corpus_rows: dict[str, dict[str, Any]] + qrel_rows: dict[tuple[str, str], dict[str, Any]] = field(default_factory=dict) + corpus_image_indices: dict[str, int] = field(default_factory=dict) + corpus_dataset: Any | None = field(default=None, repr=False, compare=False) + + +def _read_json(path: Path) -> dict[str, Any]: + if not path.exists(): + raise ValueError(f"Required run artifact is missing: {path}") + try: + value = json.loads(path.read_text(encoding="utf-8")) + except (OSError, json.JSONDecodeError) as exc: + raise ValueError(f"Could not read JSON artifact {path}: {exc}") from exc + if not isinstance(value, dict): + raise ValueError(f"Expected a JSON object in {path}") + return value + + +def _safe_scalar(value: Any) -> Any | None: + if value is None or isinstance(value, (str, int, float, bool)): + return value + if isinstance(value, (list, tuple)) and all(isinstance(item, (str, int, float, bool)) for item in value): + return list(value) + return None + + +def _tokens(value: Any) -> set[str]: + return {token.casefold() for token in _TOKEN_RE.findall(str(value or "")) if len(token) > 1} + + +def _flatten_reference_text(row: Mapping[str, Any]) -> str: + values: list[str] = [] + for key, value in row.items(): + normalized = key.casefold() + if not any(hint in normalized for hint in _REFERENCE_FIELD_HINTS): + continue + if isinstance(value, str): + values.append(value) + elif isinstance(value, (list, tuple)): + values.extend(str(item) for item in value if isinstance(item, (str, int, float))) + return "\n".join(values) + + +def _existing_labels(row: Mapping[str, Any]) -> dict[str, Any]: + labels: dict[str, Any] = {} + for key, value in row.items(): + normalized = key.casefold() + if key in {"query", "query_id", "corpus_id", "doc_id", "image"}: + continue + if not any(hint in normalized for hint in _LABEL_FIELD_HINTS): + continue + safe_value = _safe_scalar(value) + if safe_value not in (None, "", []): + labels[key] = safe_value + return labels + + +def _doc_id_from_corpus_row(row: Mapping[str, Any], *, doc_id_field: str) -> str | None: + doc_id = str(row.get("doc_id") or "").strip() + if doc_id_field == "source_id": + value = row.get("corpus_id") + return str(value) if value is not None else None + if doc_id_field == "path": + return f"{doc_id}.pdf" if doc_id else None + if doc_id_field == "pdf_basename": + return doc_id or None + if doc_id_field == "pdf_page": + try: + page = int(row.get("page_number_in_doc")) + 1 + except (TypeError, ValueError): + return None + return f"{doc_id}_{page}" if doc_id else None + return None + + +def _load_vidore_metadata(dataset_name: str, split: str, *, doc_id_field: str) -> LoadedVidoreMetadata: + try: + from datasets import load_dataset # type: ignore + except ImportError as exc: + raise ValueError("ViDoRe comparison requires the datasets package") from exc + + repository = f"vidore/{dataset_name}" + + def load_partition(name: str): + try: + return load_dataset(repository, name, split=split) + except Exception: + return load_dataset(repository, data_dir=name, split=split) + + query_rows: dict[str, dict[str, Any]] = {} + for index, row in enumerate(load_partition("queries")): + payload = dict(row) + query_rows[str(payload.get("query_id", index))] = payload + + corpus_partition = load_partition("corpus") + if "image" in corpus_partition.column_names: + from datasets import Image as DatasetImage # type: ignore + + corpus_partition = corpus_partition.cast_column("image", DatasetImage(decode=False)) + + corpus_rows: dict[str, dict[str, Any]] = {} + corpus_id_to_doc_id: dict[str, str] = {} + corpus_image_indices: dict[str, int] = {} + for index, row in enumerate(corpus_partition): + payload = dict(row) + payload.pop("image", None) + doc_id = _doc_id_from_corpus_row(payload, doc_id_field=doc_id_field) + if doc_id: + corpus_rows[doc_id] = payload + corpus_id_to_doc_id[str(payload.get("corpus_id"))] = doc_id + corpus_image_indices[doc_id] = index + + qrel_rows: dict[tuple[str, str], dict[str, Any]] = {} + for row in load_partition("qrels"): + payload = dict(row) + query_id = str(payload.get("query_id")) + doc_id = corpus_id_to_doc_id.get(str(payload.get("corpus_id"))) + if doc_id: + qrel_rows[(query_id, doc_id)] = payload + return LoadedVidoreMetadata( + query_rows=query_rows, + corpus_rows=corpus_rows, + qrel_rows=qrel_rows, + corpus_image_indices=corpus_image_indices, + corpus_dataset=corpus_partition, + ) + + +def _parse_mapping(value: Any) -> dict[str, Any]: + if isinstance(value, dict): + return value + if not isinstance(value, str) or not value.strip(): + return {} + try: + parsed = json.loads(value) + except json.JSONDecodeError: + return {} + return parsed if isinstance(parsed, dict) else {} + + +def _indexed_doc_id(row: Mapping[str, Any], *, doc_id_field: str) -> str | None: + metadata = _parse_mapping(row.get("metadata")) + source_metadata = _parse_mapping(row.get("source")) + source = ( + row.get("pdf_basename") + or metadata.get("pdf_basename") + or source_metadata.get("source_name") + or source_metadata.get("source_id") + or row.get("source_id") + ) + if doc_id_field == "pdf_page": + direct = row.get("pdf_page") or metadata.get("pdf_page") + if direct: + return str(direct) + page = row.get("page_number", metadata.get("page_number")) + if source and page is not None: + basename = Path(str(source)).name.removesuffix(".pdf") + return f"{basename}_{int(page)}" + if doc_id_field == "pdf_basename": + return Path(str(source)).name.removesuffix(".pdf") if source else None + value = row.get(doc_id_field, metadata.get(doc_id_field)) + return str(value) if value not in (None, "") else None + + +def _load_indexed_text(table: Any, *, doc_id_field: str) -> dict[str, list[str]]: + mapped: defaultdict[str, list[str]] = defaultdict(list) + for row in table.to_arrow().to_pylist(): + doc_id = _indexed_doc_id(row, doc_id_field=doc_id_field) + text = str(row.get("text") or "").strip() + if doc_id: + # An indexed page with empty text is an extraction concern, not a missing page. + mapped[doc_id].append(text) + return dict(mapped) + + +def _named_gold_entity(query: str, gold_rows: Iterable[Mapping[str, Any]]) -> bool: + normalized_query = " ".join(query.casefold().split()) + query_tokens = _tokens(query) + for row in gold_rows: + for key, value in row.items(): + if not any(hint in key.casefold() for hint in ("title", "entity", "doc_id", "name")): + continue + if not isinstance(value, str) or not value.strip(): + continue + candidate = " ".join(value.casefold().replace("_", " ").split()) + candidate_tokens = _tokens(candidate) + if candidate in normalized_query or (len(candidate_tokens) >= 2 and candidate_tokens <= query_tokens): + return True + return False + + +def _lexical_overlap(query: str, reference: str) -> float | None: + query_tokens = _tokens(query) + reference_tokens = _tokens(reference) + if not query_tokens or not reference_tokens: + return None + return len(query_tokens & reference_tokens) / len(query_tokens) + + +def _terciles(values: Mapping[str, float | None]) -> dict[str, str]: + observed = sorted(value for value in values.values() if value is not None) + if not observed: + return {key: "unavailable" for key in values} + low = observed[(len(observed) - 1) // 3] + high = observed[(2 * (len(observed) - 1)) // 3] + output: dict[str, str] = {} + for key, value in values.items(): + if value is None: + output[key] = "unavailable" + elif value <= low: + output[key] = "low" + elif value <= high: + output[key] = "middle" + else: + output[key] = "high" + return output + + +def _best_relevant_rank(hits: Sequence[Mapping[str, Any]], relevant: set[str], *, doc_id_field: str) -> int | None: + seen: set[str] = set() + rank = 0 + for hit in hits: + value = hit.get(doc_id_field) + if value is None and doc_id_field == "pdf_page": + value = _indexed_doc_id(hit, doc_id_field=doc_id_field) + if value is None or str(value) in seen: + continue + seen.add(str(value)) + rank += 1 + if str(value) in relevant: + return rank + return None + + +def _query_metrics( + hits: Sequence[Mapping[str, Any]], qrels: Mapping[str, int], *, doc_id_field: str +) -> dict[str, float | int | None]: + ranked: list[str] = [] + seen: set[str] = set() + for hit in hits: + value = hit.get(doc_id_field) + if value is None: + value = _indexed_doc_id(hit, doc_id_field=doc_id_field) + if value is None or str(value) in seen: + continue + seen.add(str(value)) + ranked.append(str(value)) + relevant = {doc_id for doc_id, score in qrels.items() if int(score) > 0} + rel_count = max(1, len(relevant)) + + def recall(k: int) -> float: + return len(set(ranked[:k]) & relevant) / rel_count + + dcg = sum(float(qrels.get(doc_id, 0)) / math.log2(rank + 1) for rank, doc_id in enumerate(ranked[:10], start=1)) + ideal_scores = sorted((int(score) for score in qrels.values() if int(score) > 0), reverse=True)[:10] + ideal = sum(float(score) / math.log2(rank + 1) for rank, score in enumerate(ideal_scores, start=1)) + return { + "recall_5": recall(5), + "recall_10": recall(10), + "ndcg_10": dcg / ideal if ideal else 0.0, + "best_relevant_rank": _best_relevant_rank(hits, relevant, doc_id_field=doc_id_field), + } + + +def _audit_qrel( + *, + query_row: Mapping[str, Any], + corpus_row: Mapping[str, Any], + indexed_texts: Sequence[str], +) -> dict[str, Any]: + if not indexed_texts: + return {"status": "missing_indexed_page", "answer_token_recall": None, "reference_token_recall": None} + + indexed = "\n".join(indexed_texts) + answer_text = " ".join( + str(value) + for key, value in query_row.items() + if "answer" in key.casefold() and isinstance(value, (str, int, float)) + ) + reference_text = _flatten_reference_text(corpus_row) + answer_tokens = _tokens(answer_text) + reference_tokens = _tokens(reference_text) + indexed_tokens = _tokens(indexed) + answer_recall = len(answer_tokens & indexed_tokens) / len(answer_tokens) if answer_tokens else None + reference_recall = len(reference_tokens & indexed_tokens) / len(reference_tokens) if reference_tokens else None + anchors = _ANCHOR_RE.findall(f"{answer_text} {reference_text}") + normalized_indexed = indexed.casefold() + anchors_covered = bool(anchors) and all(anchor.casefold() in normalized_indexed for anchor in anchors) + + if answer_recall is None and reference_recall is None and not anchors: + status = "not_machine_verifiable" + elif ( + (answer_recall is not None and answer_recall >= 0.6) + or (reference_recall is not None and reference_recall >= 0.35) + or anchors_covered + ): + status = "covered" + else: + status = "needs_review" + return { + "status": status, + "answer_token_recall": answer_recall, + "reference_token_recall": reference_recall, + "anchors": anchors[:20], + "anchors_covered": anchors_covered, + "indexed_text_excerpts": [text[:500] for text in indexed_texts[:3]], + } + + +def _percentile(values: Sequence[float], fraction: float) -> float | None: + if not values: + return None + ordered = sorted(float(value) for value in values) + position = (len(ordered) - 1) * fraction + lower = math.floor(position) + upper = math.ceil(position) + if lower == upper: + return ordered[lower] + return ordered[lower] + (ordered[upper] - ordered[lower]) * (position - lower) + + +def _paired_ci(values: Sequence[float], *, seed: int) -> list[float] | None: + """Return a deterministic paired normal-approximation confidence interval.""" + del seed # Kept in the interface so each reported comparison has a stable identity. + if not values: + return None + mean = statistics.fmean(values) + if len(values) == 1: + return [mean, mean] + margin = 1.96 * statistics.stdev(values) / math.sqrt(len(values)) + return [mean - margin, mean + margin] + + +def _mode_summary(cases: Sequence[Mapping[str, Any]], mode: str) -> dict[str, Any]: + latencies = [float(case["modes"][mode]["latency_ms"]) for case in cases] + return { + "query_count": len(cases), + "recall_5": statistics.fmean(float(case["modes"][mode]["recall_5"]) for case in cases), + "recall_10": statistics.fmean(float(case["modes"][mode]["recall_10"]) for case in cases), + "ndcg_10": statistics.fmean(float(case["modes"][mode]["ndcg_10"]) for case in cases), + "latency_p50_ms": _percentile(latencies, 0.5), + "latency_p95_ms": _percentile(latencies, 0.95), + } + + +def _comparable_rank(case: Mapping[str, Any], mode: str) -> int: + """Use one rank beyond the replay depth for a missing relevant result.""" + rank = case["modes"][mode]["best_relevant_rank"] + if rank is not None: + return int(rank) + replay_depth = max(len(payload["top_doc_ids"]) for payload in case["modes"].values()) + return replay_depth + 1 + + +def _paired_delta_summary(cases: Sequence[Mapping[str, Any]], *, baseline: str, seed_prefix: str) -> dict[str, Any]: + metrics: dict[str, Any] = {} + for metric in ("recall_5", "recall_10", "ndcg_10"): + deltas = [float(case["modes"]["hybrid"][metric]) - float(case["modes"][baseline][metric]) for case in cases] + metrics[metric] = { + "mean": statistics.fmean(deltas), + "ci95": _paired_ci(deltas, seed=sum(ord(char) for char in f"{seed_prefix}:{baseline}:{metric}")), + } + rank_deltas = [float(_comparable_rank(case, baseline) - _comparable_rank(case, "hybrid")) for case in cases] + metrics["best_relevant_rank"] = { + "mean_improvement": statistics.fmean(rank_deltas) if rank_deltas else None, + "paired_sample_count": len(rank_deltas), + "ci95": _paired_ci(rank_deltas, seed=sum(ord(char) for char in f"{seed_prefix}:{baseline}:rank")), + } + return metrics + + +def _slice_memberships(case: Mapping[str, Any]) -> list[tuple[str, str]]: + memberships: list[tuple[str, str]] = [] + for key, value in case.get("labels", {}).items(): + values = value if isinstance(value, list) else [value] + memberships.extend((str(key), str(item)) for item in values) + for key, value in case.get("derived_slices", {}).items(): + memberships.append((str(key), str(value))) + return memberships + + +def _slice_summaries(cases: Sequence[Mapping[str, Any]], modes: Sequence[str]) -> list[dict[str, Any]]: + groups: defaultdict[tuple[str, str], list[Mapping[str, Any]]] = defaultdict(list) + for case in cases: + for membership in _slice_memberships(case): + groups[membership].append(case) + summaries: list[dict[str, Any]] = [] + for (slice_field, value), members in sorted(groups.items()): + if len(members) < 30: + continue + payload: dict[str, Any] = { + "field": slice_field, + "value": value, + "sample_count": len(members), + "modes": {}, + } + for mode in modes: + payload["modes"][mode] = _mode_summary(members, mode) + if "hybrid" in modes: + payload["paired_deltas"] = {} + for baseline in ("dense", "sparse"): + if baseline not in modes: + continue + payload["paired_deltas"][f"hybrid_vs_{baseline}"] = _paired_delta_summary( + members, + baseline=baseline, + seed_prefix=f"{slice_field}:{value}", + ) + summaries.append(payload) + return summaries + + +def _write_jsonl(path: Path, rows: Iterable[Mapping[str, Any]]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + with path.open("w", encoding="utf-8") as handle: + for row in rows: + handle.write(json.dumps(row, ensure_ascii=False, default=str) + "\n") + + +def _read_query_results(path: Path, *, mode: str) -> list[dict[str, Any]]: + if not path.exists(): + raise ValueError(f"Required source query results are missing: {path}") + results: list[dict[str, Any]] = [] + try: + with path.open(encoding="utf-8") as handle: + for line_number, line in enumerate(handle, start=1): + if not line.strip(): + continue + payload = json.loads(line) + if not isinstance(payload, dict): + raise ValueError(f"Expected an object at {path}:{line_number}") + results.append({**payload, "mode": mode}) + except (OSError, json.JSONDecodeError) as exc: + raise ValueError(f"Could not read source query results {path}: {exc}") from exc + return results + + +def _write_trec(path: Path, query_results: Sequence[Mapping[str, Any]], *, doc_id_field: str) -> None: + with path.open("w", encoding="utf-8") as handle: + for result in query_results: + for rank, hit in enumerate(result["hits"], start=1): + doc_id = hit.get(doc_id_field) or _indexed_doc_id(hit, doc_id_field=doc_id_field) or "unknown" + score = float(hit.get("_relevance_score", 1.0 / rank)) + handle.write(f"{result['query_id']} Q0 {doc_id} {rank} {score:.6f} nrl-{result['mode']}\n") + + +def _write_report(path: Path, summary: Mapping[str, Any], cases: Sequence[Mapping[str, Any]]) -> None: + lines = [ + "# Retrieval comparison", + "", + "All modes replay the same extracted LanceDB rows. Extraction statuses are deterministic heuristics; " + "`needs_review` is not a confirmed extraction failure.", + "Best-relevant-rank deltas assign misses one rank beyond the replay depth so rescues and regressions remain paired.", + "", + "## Overall", + "", + "| Mode | Queries | Recall@5 | Recall@10 | nDCG@10 | p50 ms | p95 ms |", + "|---|---:|---:|---:|---:|---:|---:|", + ] + for mode, metrics in summary["modes"].items(): + lines.append( + f"| {mode} | {metrics['query_count']} | {metrics['recall_5']:.4f} | {metrics['recall_10']:.4f} | " + f"{metrics['ndcg_10']:.4f} | {metrics['latency_p50_ms']:.2f} | {metrics['latency_p95_ms']:.2f} |" + ) + lines.append("") + for comparison, metrics in summary.get("paired_deltas", {}).items(): + recall = metrics["recall_10"] + ndcg = metrics["ndcg_10"] + rank = metrics["best_relevant_rank"] + lines.append( + f"- {comparison}: paired ΔR@10 {recall['mean']:.4f} (95% CI {recall['ci95']}), " + f"ΔnDCG@10 {ndcg['mean']:.4f} (95% CI {ndcg['ci95']}), " + f"best-rank improvement {rank['mean_improvement']} (95% CI {rank['ci95']}, n={rank['paired_sample_count']})" + ) + lines.extend(["", "## Slices with at least 30 queries", ""]) + for slice_result in summary.get("slices", []): + lines.append(f"### {slice_result['field']} = {slice_result['value']} (n={slice_result['sample_count']})") + lines.append("") + for mode, metrics in slice_result["modes"].items(): + lines.append( + f"- {mode}: R@5 {metrics['recall_5']:.4f}, R@10 {metrics['recall_10']:.4f}, " + f"nDCG@10 {metrics['ndcg_10']:.4f}, p50/p95 {metrics['latency_p50_ms']:.2f}/{metrics['latency_p95_ms']:.2f} ms" + ) + for comparison, metrics in slice_result.get("paired_deltas", {}).items(): + recall = metrics["recall_10"] + ndcg = metrics["ndcg_10"] + rank = metrics["best_relevant_rank"] + lines.append( + f"- {comparison}: paired ΔR@10 {recall['mean']:.4f} (95% CI {recall['ci95']}), " + f"ΔnDCG@10 {ndcg['mean']:.4f} (95% CI {ndcg['ci95']}), " + f"best-rank improvement {rank['mean_improvement']} (95% CI {rank['ci95']}, n={rank['paired_sample_count']})" + ) + lines.append("") + lines.extend(["## Representative cases", ""]) + categories = Counter(case["comparison_category"] for case in cases) + for category, count in sorted(categories.items()): + lines.append(f"- {category}: {count}") + lines.extend( + [ + "", + "See `query_cases.jsonl` for ranked hits and indexed-text excerpts, and `evidence_crops/` for available annotated page evidence.", + "", + ] + ) + path.write_text("\n".join(lines), encoding="utf-8") + + +def _bbox_values(value: Any) -> list[tuple[float, float, float, float]]: + boxes: list[tuple[float, float, float, float]] = [] + if isinstance(value, dict): + keys = ("x1", "y1", "x2", "y2") + if all(key in value for key in keys): + boxes.append(tuple(float(value[key]) for key in keys)) + for nested in value.values(): + boxes.extend(_bbox_values(nested)) + elif isinstance(value, (list, tuple)): + if len(value) == 4 and all(isinstance(item, (int, float)) for item in value): + boxes.append(tuple(float(item) for item in value)) + else: + for nested in value: + boxes.extend(_bbox_values(nested)) + return boxes + + +def _evidence_case_severity(case: Mapping[str, Any]) -> float: + category = case["comparison_category"] + dense_delta = float(case.get("paired_deltas", {}).get("hybrid_vs_dense", {}).get("recall_10", 0.0)) + if category == "hybrid_rescue": + return dense_delta + if category == "hybrid_regression": + return -dense_delta + status_weight = {"missing_indexed_page": 3.0, "needs_review": 2.0, "not_machine_verifiable": 1.0} + return max((status_weight.get(audit["status"], 0.0) for audit in case.get("extraction_audit", [])), default=0.0) + + +def _evidence_doc_id(case: Mapping[str, Any]) -> str | None: + status_weight = {"missing_indexed_page": 3, "needs_review": 2, "not_machine_verifiable": 1, "covered": 0} + audits = sorted( + case.get("extraction_audit", []), + key=lambda audit: ( + bool(audit.get("vidore_qrel", {}).get("bounding_boxes")), + status_weight.get(audit.get("status"), 0), + ), + reverse=True, + ) + if audits: + return str(audits[0]["doc_id"]) + return next(iter(case.get("relevant_doc_ids", [])), None) + + +def _write_evidence_crops( + output_dir: Path, + cases: Sequence[Mapping[str, Any]], + metadata: LoadedVidoreMetadata, +) -> dict[str, list[str]]: + crops: defaultdict[str, list[str]] = defaultdict(list) + try: + from PIL import Image, ImageDraw + except ImportError: + return {} + for category in ("hybrid_rescue", "hybrid_regression", "all_modes_miss", "extraction_concern"): + candidates = sorted( + (case for case in cases if case["comparison_category"] == category), + key=_evidence_case_severity, + reverse=True, + )[:5] + for case in candidates: + doc_id = _evidence_doc_id(case) + image_index = metadata.corpus_image_indices.get(str(doc_id)) + image_value = ( + metadata.corpus_dataset[image_index].get("image") + if metadata.corpus_dataset is not None and image_index is not None + else None + ) + if isinstance(image_value, dict) and image_value.get("bytes"): + image = Image.open(BytesIO(image_value["bytes"])) + elif isinstance(image_value, dict) and image_value.get("path"): + image = Image.open(image_value["path"]) + else: + image = image_value + if image is None or not hasattr(image, "copy"): + continue + rendered = image.copy().convert("RGB") + draw = ImageDraw.Draw(rendered) + boxes = _bbox_values(metadata.qrel_rows.get((str(case["query_id"]), str(doc_id)), {})) + pixel_boxes: list[tuple[float, float, float, float]] = [] + for x1, y1, x2, y2 in boxes: + if max(x1, y1, x2, y2) <= 1.0: + x1, x2 = x1 * rendered.width, x2 * rendered.width + y1, y2 = y1 * rendered.height, y2 * rendered.height + pixel_boxes.append((x1, y1, x2, y2)) + draw.rectangle((x1, y1, x2, y2), outline="red", width=4) + if pixel_boxes: + padding = max(16, int(0.02 * max(rendered.width, rendered.height))) + rendered = rendered.crop( + ( + max(0, min(box[0] for box in pixel_boxes) - padding), + max(0, min(box[1] for box in pixel_boxes) - padding), + min(rendered.width, max(box[2] for box in pixel_boxes) + padding), + min(rendered.height, max(box[3] for box in pixel_boxes) + padding), + ) + ) + target = output_dir / "evidence_crops" / category / f"{case['query_id']}.png" + target.parent.mkdir(parents=True, exist_ok=True) + rendered.save(target) + crops[category].append(str(target.relative_to(output_dir))) + return dict(crops) + + +def build_comparison_artifacts( + *, + output_dir: Path, + dataset: BeirDataset, + metadata: LoadedVidoreMetadata, + indexed_text: Mapping[str, Sequence[str]], + mode_results: Mapping[str, Sequence[Mapping[str, Any]]], + doc_id_field: str, + provenance: Mapping[str, Any], +) -> dict[str, Any]: + """Analyze complete per-mode results and write the comparison artifact contract.""" + modes = tuple(mode_results) + for mode, results in mode_results.items(): + observed = {str(result["query_id"]) for result in results} + missing = set(dataset.query_ids) - observed + if missing: + raise ValueError(f"Mode {mode!r} is missing results for {len(missing)} queries") + + overlap_values: dict[str, float | None] = {} + for query_id, query in zip(dataset.query_ids, dataset.queries): + relevant = dataset.qrels[query_id] + reference = " ".join(_flatten_reference_text(metadata.corpus_rows.get(doc_id, {})) for doc_id in relevant) + overlap_values[query_id] = _lexical_overlap(query, reference) + overlap_terciles = _terciles(overlap_values) + + results_by_mode = { + mode: {str(result["query_id"]): result for result in results} for mode, results in mode_results.items() + } + extraction_cases: list[dict[str, Any]] = [] + extraction_by_query: defaultdict[str, list[dict[str, Any]]] = defaultdict(list) + cases: list[dict[str, Any]] = [] + for query_id, query in zip(dataset.query_ids, dataset.queries): + relevant = set(dataset.qrels[query_id]) + query_qrels = dataset.qrels[query_id] + query_row = metadata.query_rows.get(query_id, {}) + gold_rows = [metadata.corpus_rows.get(doc_id, {}) for doc_id in relevant] + labels = _existing_labels(query_row) + derived = { + "names_relevant_document_or_entity": _named_gold_entity(query, gold_rows), + "lexical_overlap_tercile": overlap_terciles[query_id], + "has_numeric_currency_percentage_or_identifier_anchor": bool(_ANCHOR_RE.search(query)), + "relevance_scope": "single_page" if len(relevant) == 1 else "multi_page", + } + mode_payload: dict[str, Any] = {} + for mode in modes: + result = results_by_mode[mode][query_id] + metrics = _query_metrics(result["hits"], query_qrels, doc_id_field=doc_id_field) + mode_payload[mode] = { + "latency_ms": float(result["latency_ms"]), + **metrics, + "top_doc_ids": [ + str(hit.get(doc_id_field) or _indexed_doc_id(hit, doc_id_field=doc_id_field) or "") + for hit in result["hits"][:10] + ], + } + for doc_id in sorted(relevant): + audit = { + "query_id": query_id, + "doc_id": doc_id, + "vidore_qrel": { + key: value + for key, value in metadata.qrel_rows.get((query_id, doc_id), {}).items() + if key in {"score", "content_type", "bounding_boxes"} + }, + **_audit_qrel( + query_row=query_row, + corpus_row=metadata.corpus_rows.get(doc_id, {}), + indexed_texts=indexed_text.get(doc_id, ()), + ), + } + extraction_cases.append(audit) + extraction_by_query[query_id].append(audit) + + dense_hit = mode_payload.get("dense", {}).get("recall_10", 0.0) > 0 + hybrid_hit = mode_payload.get("hybrid", {}).get("recall_10", 0.0) > 0 + selected_hits = [payload.get("recall_10", 0.0) > 0 for payload in mode_payload.values()] + if "dense" in modes and "hybrid" in modes and hybrid_hit and not dense_hit: + category = "hybrid_rescue" + elif "dense" in modes and "hybrid" in modes and dense_hit and not hybrid_hit: + category = "hybrid_regression" + elif not any(selected_hits): + category = "all_modes_miss" + elif any(item["status"] in {"missing_indexed_page", "needs_review"} for item in extraction_by_query[query_id]): + category = "extraction_concern" + else: + category = "other" + paired_deltas: dict[str, dict[str, float | int | None]] = {} + if "hybrid" in modes: + for baseline in ("dense", "sparse"): + if baseline not in modes: + continue + paired_deltas[f"hybrid_vs_{baseline}"] = { + metric: float(mode_payload["hybrid"][metric]) - float(mode_payload[baseline][metric]) + for metric in ("recall_5", "recall_10", "ndcg_10") + } + replay_depth = max(len(payload["top_doc_ids"]) for payload in mode_payload.values()) + hybrid_rank = mode_payload["hybrid"]["best_relevant_rank"] or replay_depth + 1 + baseline_rank = mode_payload[baseline]["best_relevant_rank"] or replay_depth + 1 + paired_deltas[f"hybrid_vs_{baseline}"]["best_relevant_rank_improvement"] = int(baseline_rank) - int( + hybrid_rank + ) + cases.append( + { + "query_id": query_id, + "query": query, + "labels": labels, + "derived_slices": derived, + "relevant_doc_ids": sorted(relevant), + "relevant_page_count": len(relevant), + "modes": mode_payload, + "paired_deltas": paired_deltas, + "comparison_category": category, + "extraction_audit": extraction_by_query[query_id], + } + ) + + audit_counts = Counter(item["status"] for item in extraction_cases) + extraction_audit = { + "total_positive_qrels": len(extraction_cases), + "classified_positive_qrels": len(extraction_cases), + "status_counts": dict(sorted(audit_counts.items())), + "method": { + "covered": "answer token recall >= 0.60, reference-page token recall >= 0.35, or all anchors present", + "warning": "needs_review is a weak-overlap heuristic and is never a confirmed extraction failure", + }, + "cases": extraction_cases, + } + summary = { + **dict(provenance), + "query_count": len(cases), + "positive_qrel_count": len(extraction_cases), + "modes": {mode: _mode_summary(cases, mode) for mode in modes}, + "paired_deltas": { + f"hybrid_vs_{baseline}": _paired_delta_summary(cases, baseline=baseline, seed_prefix="overall") + for baseline in ("dense", "sparse") + if "hybrid" in modes and baseline in modes + }, + "slices": _slice_summaries(cases, modes), + "case_counts": dict(sorted(Counter(case["comparison_category"] for case in cases).items())), + "best_relevant_rank_method": "A miss is assigned replay_depth + 1 for paired deltas.", + } + crops = _write_evidence_crops(output_dir, cases, metadata) + summary["evidence_crops"] = crops + write_json(output_dir / "summary.json", summary) + _write_jsonl(output_dir / "query_cases.jsonl", cases) + write_json(output_dir / "extraction_audit.json", extraction_audit) + _write_report(output_dir / "report.md", summary, cases) + + for mode, results in mode_results.items(): + mode_dir = output_dir / mode + mode_dir.mkdir(parents=True, exist_ok=True) + _write_jsonl(mode_dir / "query_results.jsonl", results) + run = build_beir_run_from_hits( + dataset.query_ids, + [results_by_mode[mode][query_id]["hits"] for query_id in dataset.query_ids], + doc_id_field=doc_id_field, + ) + metrics = compute_beir_metrics(dataset.qrels, run, ks=(1, 3, 5, 10)) + write_json(mode_dir / "beir_metrics.json", metrics) + _write_trec(mode_dir / "beir_run.trec", results, doc_id_field=doc_id_field) + return summary + + +def _resolved_query_plan(payload: Mapping[str, Any], mode: str) -> ResolvedQueryPlan: + return ResolvedQueryPlan( + top_k=int(payload.get("top_k", 10)), + candidate_k=payload.get("candidate_k"), + page_dedup=bool(payload.get("page_dedup", False)), + content_types=payload.get("content_types"), + lancedb_uri=str(payload["lancedb_uri"]), + table_name=str(payload["table_name"]), + retrieval_mode=mode, + embed_kwargs=dict(payload.get("embed_kwargs") or {}), + rerank=bool(payload.get("rerank", False)), + rerank_kwargs=dict(payload.get("rerank_kwargs") or {}), + ) + + +def _run_mode_queries(dataset: BeirDataset, plan: ResolvedQueryPlan, mode: str) -> list[dict[str, Any]]: + retriever = plan.create_retriever() + query_kwargs = plan.query_kwargs() + results: list[dict[str, Any]] = [] + for query_id, query in zip(dataset.query_ids, dataset.queries): + started = time.perf_counter() + hits = [dict(hit) for hit in retriever.query(query, **query_kwargs)] + results.append( + { + "query_id": query_id, + "query": query, + "mode": mode, + "latency_ms": round((time.perf_counter() - started) * 1000.0, 3), + "hits": hits, + } + ) + return results + + +def compare_retrieval( + run_dir: Path, + *, + modes: Sequence[str] = SUPPORTED_COMPARISON_MODES, + output_dir: Path | None = None, +) -> dict[str, Any]: + """Validate a completed ViDoRe run, replay its index, and write diagnostics.""" + run_dir = run_dir.expanduser().resolve() + normalized_modes = tuple(dict.fromkeys(str(mode).strip().lower() for mode in modes)) + invalid_modes = sorted(set(normalized_modes) - set(SUPPORTED_COMPARISON_MODES)) + if invalid_modes or not normalized_modes: + raise ValueError(f"modes must be a non-empty subset of {', '.join(SUPPORTED_COMPARISON_MODES)}") + + status = _read_json(run_dir / "status.json") + results = _read_json(run_dir / "results.json") + if status.get("status") != "complete" or not results.get("success") or results.get("dry_run"): + raise ValueError(f"RUN_DIR must contain a completed, successful, non-dry-run harness run: {run_dir}") + if results.get("mode") not in {"local", "batch"}: + raise ValueError("compare-retrieval requires a completed local or batch run") + + resolved = _read_json(run_dir / "resolved_benchmark.json") + evaluation = dict(resolved.get("evaluation") or {}) + if evaluation.get("loader") != "vidore_hf": + raise ValueError("compare-retrieval currently requires a ViDoRe Hugging Face evaluation run") + query_plan_payload = _read_json(run_dir / "query_plan.json") + if query_plan_payload.get("rerank"): + raise ValueError("compare-retrieval does not run model reranking; use an unrereanked source run") + + table = lancedb.connect(str(query_plan_payload["lancedb_uri"])).open_table(str(query_plan_payload["table_name"])) + caps = inspect_lancedb_table_object(table) + if not (caps.has_vector and caps.has_fts): + raise ValueError("RUN_DIR must contain a hybrid-capable LanceDB table with vector and FTS capabilities") + + target = (output_dir or run_dir / "retrieval_comparison").expanduser().resolve() + if target.exists(): + raise ValueError(f"Refusing to overwrite existing comparison directory: {target}") + + dataset_name = str(evaluation.get("dataset_name") or "") + split = str(evaluation.get("split") or "test") + doc_id_field = str(evaluation.get("doc_id_field") or "pdf_page") + dataset = load_beir_dataset( + "vidore_hf", + dataset_name=dataset_name, + split=split, + query_language=evaluation.get("query_language"), + doc_id_field=doc_id_field, + ) + metadata = _load_vidore_metadata(dataset_name, split, doc_id_field=doc_id_field) + indexed_text = _load_indexed_text(table, doc_id_field=doc_id_field) + mode_results: dict[str, Sequence[Mapping[str, Any]]] = {} + for mode in normalized_modes: + mode_results[mode] = _run_mode_queries(dataset, _resolved_query_plan(query_plan_payload, mode), mode) + target.mkdir(parents=True, exist_ok=False) + lancedb_version = getattr(lancedb, "__version__", "unknown") + return build_comparison_artifacts( + output_dir=target, + dataset=dataset, + metadata=metadata, + indexed_text=indexed_text, + mode_results=mode_results, + doc_id_field=doc_id_field, + provenance={ + "source_run_dir": str(run_dir), + "dataset": dataset_name, + "split": split, + "doc_id_field": doc_id_field, + "resolved_index_mode": caps.retrieval_mode, + "lancedb_version": lancedb_version, + "fusion": str(DEFAULT_HYBRID_FUSION_POLICY), + }, + ) diff --git a/nemo_retriever/src/nemo_retriever/harness/slack.py b/nemo_retriever/src/nemo_retriever/harness/slack.py index 180c54ee22..ad342be9e5 100644 --- a/nemo_retriever/src/nemo_retriever/harness/slack.py +++ b/nemo_retriever/src/nemo_retriever/harness/slack.py @@ -145,6 +145,9 @@ def _run_metadata(results_payload: dict[str, Any], environment_payload: dict[str if isinstance(raw_run_metadata, dict): metadata.update(raw_run_metadata) metadata.update(environment_payload) + for key in ("requested_index_mode", "resolved_index_mode"): + if results_payload.get(key) is not None: + metadata[key] = results_payload[key] if "python" in metadata and "python_version" not in metadata: metadata["python_version"] = metadata["python"] return metadata @@ -493,6 +496,10 @@ def _release_reference_blocks( for run in report.results: if not run.success or run.dataset != reference.dataset: continue + run_index_mode = run.run_metadata.get("resolved_index_mode") + if run_index_mode is not None or reference.resolved_index_mode is not None: + if run_index_mode != reference.resolved_index_mode: + continue rows = [_three_column_row("METRIC", "CURRENT", reference.release.upper(), bold=True)] for key in ("gpu_sku", "gpu_count", "workload_gpu_count"): current_value = run.run_metadata.get(key) diff --git a/nemo_retriever/src/nemo_retriever/ingest/index_mode.py b/nemo_retriever/src/nemo_retriever/ingest/index_mode.py new file mode 100644 index 0000000000..1b03b42330 --- /dev/null +++ b/nemo_retriever/src/nemo_retriever/ingest/index_mode.py @@ -0,0 +1,73 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. +# All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Policy for resolving requested ingest modes against an existing LanceDB table.""" + +from __future__ import annotations + +from typing import Literal, cast + +from nemo_retriever.common.vdb.lancedb_capabilities import inspect_lancedb_table_object + +RequestedIngestIndexMode = Literal["auto", "dense", "hybrid", "sparse"] +ResolvedIngestIndexMode = Literal["dense", "hybrid", "sparse"] + +SUPPORTED_INGEST_INDEX_MODES: tuple[RequestedIngestIndexMode, ...] = ( + "auto", + "dense", + "hybrid", + "sparse", +) + + +def validate_requested_index_mode(index_mode: str) -> RequestedIngestIndexMode: + """Normalize and validate the public ingest index-mode vocabulary.""" + normalized = index_mode.strip().lower() + if normalized not in SUPPORTED_INGEST_INDEX_MODES: + raise ValueError(f"index_mode must be one of {', '.join(SUPPORTED_INGEST_INDEX_MODES)}, got {index_mode!r}.") + return cast(RequestedIngestIndexMode, normalized) + + +def resolve_ingest_index_mode( + requested_mode: RequestedIngestIndexMode, + *, + overwrite: bool, + existing_mode: ResolvedIngestIndexMode | None, +) -> ResolvedIngestIndexMode: + """Resolve one ingest request without mutating storage. + + ``auto`` makes fresh and overwritten tables hybrid, but preserves the + physical mode of a table during append. The sole compatible mode-changing + append is an explicit dense-to-hybrid upgrade. + """ + if overwrite or existing_mode is None: + return "hybrid" if requested_mode == "auto" else cast(ResolvedIngestIndexMode, requested_mode) + + if requested_mode == "auto" or requested_mode == existing_mode: + return existing_mode + + if existing_mode == "dense" and requested_mode == "hybrid": + return "hybrid" + + raise ValueError( + f"Cannot append with index_mode={requested_mode!r} to an existing {existing_mode!r} table. " + "Use index_mode='auto' to preserve the table mode, request 'hybrid' to upgrade a dense table, " + "or overwrite the table to replace it." + ) + + +def inspect_existing_lancedb_mode(uri: str, table_name: str) -> ResolvedIngestIndexMode | None: + """Return the physical mode of an existing table, or ``None`` when absent.""" + import lancedb # type: ignore + + db = lancedb.connect(uri) + if table_name not in db.list_tables().tables: + return None + + capabilities = inspect_lancedb_table_object(db.open_table(table_name)) + if capabilities.retrieval_mode == "unknown": + raise ValueError( + f"Cannot determine physical retrieval capabilities for LanceDB table {table_name!r} at {uri!r}." + ) + return cast(ResolvedIngestIndexMode, capabilities.retrieval_mode) diff --git a/nemo_retriever/src/nemo_retriever/ingest/plan.py b/nemo_retriever/src/nemo_retriever/ingest/plan.py index 8672be63ec..25671ae610 100644 --- a/nemo_retriever/src/nemo_retriever/ingest/plan.py +++ b/nemo_retriever/src/nemo_retriever/ingest/plan.py @@ -10,10 +10,11 @@ from pathlib import Path from typing import Any, Literal, Sequence, cast -from nemo_retriever.ingestor.manifest import ( - ExtractionBranchPlan, - build_input_manifest, - plan_extraction_branches, +from nemo_retriever.common.input_files import ( + AUTO_INPUT_EXTENSIONS, + INPUT_TYPE_EXTENSIONS, + expand_input_file_patterns, + resolve_input_files, ) from nemo_retriever.common.modality.ocr.config import OCRLang, OCRVersion from nemo_retriever.common.params import ( @@ -33,18 +34,24 @@ VideoFrameTextDedupParams, build_embed_option_kwargs, ) -from nemo_retriever.common.input_files import ( - AUTO_INPUT_EXTENSIONS, - INPUT_TYPE_EXTENSIONS, - expand_input_file_patterns, - resolve_input_files, +from nemo_retriever.ingest.index_mode import ( + RequestedIngestIndexMode, + ResolvedIngestIndexMode, + inspect_existing_lancedb_mode, + resolve_ingest_index_mode, + validate_requested_index_mode, +) +from nemo_retriever.ingestor.manifest import ( + ExtractionBranchPlan, + build_input_manifest, + plan_extraction_branches, ) from nemo_retriever.models import resolve_embed_model IngestRunModeValue = Literal["inprocess", "batch"] IngestInputTypeValue = Literal["auto", "pdf", "doc", "txt", "html", "image", "audio", "video"] IngestProfileValue = Literal["auto", "fast-text"] -IngestIndexModeValue = Literal["dense", "hybrid", "sparse"] +IngestIndexModeValue = RequestedIngestIndexMode AudioSplitTypeValue = Literal["size", "time", "frame"] LocalIngestEmbedBackendValue = Literal["vllm", "hf"] OcrLangValue = OCRLang @@ -52,7 +59,6 @@ TableOutputFormatValue = Literal["pseudo_markdown", "markdown"] _SUPPORTED_RUN_MODES: tuple[IngestRunModeValue, ...] = ("inprocess", "batch") _SUPPORTED_PROFILES: tuple[IngestProfileValue, ...] = ("auto", "fast-text") -_SUPPORTED_INDEX_MODES: tuple[IngestIndexModeValue, ...] = ("dense", "hybrid", "sparse") _SUPPORTED_AUDIO_SPLIT_TYPES: tuple[AudioSplitTypeValue, ...] = ("size", "time", "frame") _SUPPORTED_INPUT_TYPES: tuple[IngestInputTypeValue, ...] = ( "auto", @@ -205,7 +211,7 @@ class IngestStorageOptions: lancedb_uri: str = "lancedb" table_name: str = "nemo-retriever" overwrite: bool = True - index_mode: IngestIndexModeValue = "dense" + index_mode: IngestIndexModeValue = "auto" @dataclass(frozen=True) @@ -241,10 +247,7 @@ def validate_ingest_profile(profile: str) -> IngestProfileValue: def validate_ingest_index_mode(index_mode: str) -> IngestIndexModeValue: - normalized = index_mode.strip().lower() - if normalized not in _SUPPORTED_INDEX_MODES: - raise ValueError(f"index_mode must be one of {', '.join(_SUPPORTED_INDEX_MODES)}, got {index_mode!r}.") - return cast(IngestIndexModeValue, normalized) + return validate_requested_index_mode(index_mode) def _validate_audio_split_type(split_type: str) -> AudioSplitTypeValue: @@ -309,6 +312,8 @@ class ResolvedIngestPlan: vdb_params: VdbUploadParams | None lancedb_uri: str table_name: str + requested_index_mode: IngestIndexModeValue + index_mode: ResolvedIngestIndexMode sparse: bool = False def extract_call_kwargs(self) -> dict[str, Any]: @@ -596,7 +601,15 @@ def resolve_ingest_plan(request: IngestPlanRequest) -> ResolvedIngestPlan: validated_run_mode = _validate_run_mode(runtime.run_mode) validated_profile = validate_ingest_profile(source.profile) validated_input_type = validate_ingest_input_type(source.input_type) - validated_index_mode = validate_ingest_index_mode(storage.index_mode) + requested_index_mode = validate_ingest_index_mode(storage.index_mode) + existing_index_mode = ( + None if storage.overwrite else inspect_existing_lancedb_mode(storage.lancedb_uri, storage.table_name) + ) + resolved_index_mode = resolve_ingest_index_mode( + requested_index_mode, + overwrite=storage.overwrite, + existing_mode=existing_index_mode, + ) validated_audio_split_type = _validate_audio_split_type(media.audio_split_type) document_list = expand_ingest_documents(source.documents, input_type=validated_input_type) branches = plan_extraction_branches(build_input_manifest(document_list)) @@ -635,7 +648,7 @@ def resolve_ingest_plan(request: IngestPlanRequest) -> ResolvedIngestPlan: if extract_tuning is not None: extract_kwargs["batch_tuning"] = extract_tuning - embedding_model_name = None if validated_index_mode == "sparse" else resolve_embed_model(embed.embed_model_name) + embedding_model_name = None if resolved_index_mode == "sparse" else resolve_embed_model(embed.embed_model_name) embed_runtime_model_name = ( embedding_model_name if embed.embed_model_name is not None or embed.embed_model_provider_prefix is not None @@ -657,16 +670,16 @@ def resolve_ingest_plan(request: IngestPlanRequest) -> ResolvedIngestPlan: embed_gpus_per_actor=embed.batch.embed_gpus_per_actor, ) extract_params = ExtractParams(**extract_kwargs) - embed_params = None if validated_index_mode == "sparse" else EmbedParams(**embed_kwargs) if embed_kwargs else None + embed_params = None if resolved_index_mode == "sparse" else EmbedParams(**embed_kwargs) if embed_kwargs else None vdb_upload_kwargs = { "uri": storage.lancedb_uri, "table_name": storage.table_name, "overwrite": bool(storage.overwrite), } # Keep dense ingest kwargs unchanged unless the index mode needs additional LanceDB behavior. - if validated_index_mode == "sparse": + if resolved_index_mode == "sparse": vdb_upload_kwargs["sparse"] = True - elif validated_index_mode == "hybrid": + elif resolved_index_mode == "hybrid": vdb_upload_kwargs["hybrid"] = True if embedding_model_name is not None: vdb_upload_kwargs["embedding_model_name"] = embedding_model_name @@ -743,5 +756,7 @@ def resolve_ingest_plan(request: IngestPlanRequest) -> ResolvedIngestPlan: vdb_params=vdb_params, lancedb_uri=storage.lancedb_uri, table_name=storage.table_name, - sparse=validated_index_mode == "sparse", + requested_index_mode=requested_index_mode, + index_mode=resolved_index_mode, + sparse=resolved_index_mode == "sparse", ) diff --git a/nemo_retriever/src/nemo_retriever/service/config.py b/nemo_retriever/src/nemo_retriever/service/config.py index 7fa9ada0ac..27da9576e2 100644 --- a/nemo_retriever/src/nemo_retriever/service/config.py +++ b/nemo_retriever/src/nemo_retriever/service/config.py @@ -349,6 +349,7 @@ class VectorDbConfig(RichModel): enabled: bool = False lancedb_uri: str = "/data/vectordb" table_name: str = "nemo_retriever" + index_mode: Literal["auto", "dense", "hybrid"] = "auto" embed_model: str = "nvidia/llama-nemotron-embed-vl-1b-v2" embed_model_provider_prefix: str | None = None vectordb_url: str = Field( diff --git a/nemo_retriever/src/nemo_retriever/service/retriever-service.yaml b/nemo_retriever/src/nemo_retriever/service/retriever-service.yaml index 2fbd077f99..5c014b063d 100644 --- a/nemo_retriever/src/nemo_retriever/service/retriever-service.yaml +++ b/nemo_retriever/src/nemo_retriever/service/retriever-service.yaml @@ -126,12 +126,14 @@ vectordb: enabled: false lancedb_uri: "/data/vectordb" table_name: "nemo_retriever" + # auto creates hybrid storage when fresh and preserves existing physical indexes. + # Set hybrid explicitly to add FTS to an existing dense table. + index_mode: "auto" embed_model: "nvidia/llama-nemotron-embed-vl-1b-v2" embed_model_provider_prefix: null # /v1/query auto-detects retrieval from the table's own indexes: a table with # both a vector column and an FTS/BM25 index runs hybrid, a vector-only table - # runs dense. The FTS index must be built at ingestion time; the service never - # mutates the table at query time. + # runs dense. Fresh auto/hybrid storage builds FTS after its first write. vectordb_url: "http://nemo-retriever-vectordb:7671" resources: diff --git a/nemo_retriever/src/nemo_retriever/service/vectordb_app.py b/nemo_retriever/src/nemo_retriever/service/vectordb_app.py index da2b3cf90c..3b84b9be2f 100644 --- a/nemo_retriever/src/nemo_retriever/service/vectordb_app.py +++ b/nemo_retriever/src/nemo_retriever/service/vectordb_app.py @@ -34,19 +34,21 @@ import logging import threading from contextlib import asynccontextmanager -from typing import Any, AsyncIterator, Union +from datetime import datetime, timedelta, timezone +from typing import Any, AsyncIterator, Literal, Union, cast -import lancedb import uvicorn from fastapi import FastAPI, HTTPException from pydantic import BaseModel +import lancedb from nemo_retriever.common.remote_auth import resolve_remote_api_key from nemo_retriever.common.vdb.lancedb_capabilities import ( LanceRetrievalMode, LanceTableCapabilities, inspect_lancedb_table_object, ) +from nemo_retriever.ingest.index_mode import resolve_ingest_index_mode from nemo_retriever.query.evidence import build_evidence_result from nemo_retriever.service.query_schema import ( EvidenceQueryResponse, @@ -58,6 +60,18 @@ logger = logging.getLogger(__name__) +ServiceIndexMode = Literal["auto", "dense", "hybrid"] +_OPTIMIZE_WRITE_THRESHOLD = 20 +_OPTIMIZE_ROW_THRESHOLD = 100_000 + + +def _validate_service_index_mode(index_mode: str) -> ServiceIndexMode: + normalized = index_mode.strip().lower() + if normalized not in {"auto", "dense", "hybrid"}: + raise ValueError(f"index_mode must be one of auto, dense, hybrid; got {index_mode!r}.") + return cast(ServiceIndexMode, normalized) + + # ── Request / response models ──────────────────────────────────────── @@ -134,6 +148,7 @@ def __init__( hf_cache_dir: str | None = None, device: str | None = None, gpu_memory_utilization: float = 0.45, + index_mode: ServiceIndexMode = "auto", ) -> None: self.lancedb_uri = lancedb_uri self.table_name = table_name @@ -146,14 +161,41 @@ def __init__( self.hf_cache_dir = hf_cache_dir self.device = device self.gpu_memory_utilization = gpu_memory_utilization + self.index_mode = _validate_service_index_mode(index_mode) self._write_lock = threading.Lock() self._embed_lock = threading.Lock() self._local_embedder: Any | None = None self._db = lancedb.connect(uri=lancedb_uri) self._table_exists = False + self._effective_index_mode: Literal["dense", "hybrid"] = ( + "hybrid" if self.index_mode == "auto" else self.index_mode + ) + self._writes_since_optimize = 0 + self._rows_since_optimize = 0 + self._last_optimization: dict[str, Any] = { + "status": "never", + "completed_at": None, + "error": None, + } if self.table_name in self._db.list_tables().tables: - self._db.open_table(table_name) + table = self._db.open_table(table_name) self._table_exists = True + caps = inspect_lancedb_table_object(table) + if caps.retrieval_mode not in {"dense", "hybrid"}: + raise ValueError( + f"LanceDB table {table_name!r} at {lancedb_uri!r} must have a vector column; " + f"detected mode {caps.retrieval_mode!r}." + ) + self._effective_index_mode = cast( + Literal["dense", "hybrid"], + resolve_ingest_index_mode( + self.index_mode, + overwrite=False, + existing_mode=cast(Literal["dense", "hybrid"], caps.retrieval_mode), + ), + ) + if self._effective_index_mode == "hybrid" and not caps.has_fts: + self._create_and_wait_for_fts(table) logger.info("Opened existing LanceDB table '%s' at %s", table_name, lancedb_uri) else: logger.info("LanceDB table '%s' does not exist yet at %s", table_name, lancedb_uri) @@ -176,13 +218,98 @@ def _table_capabilities(self): table = self._db.open_table(self.table_name) return inspect_lancedb_table_object(table) + @staticmethod + def _create_and_wait_for_fts(table: Any) -> None: + table.create_fts_index("text", replace=True) + fts_names = [ + index.name + for index in table.list_indices() + if "text" in index.name.lower() + or "fts" in index.name.lower() + or str(getattr(index, "index_type", "")).lower() == "fts" + ] + if fts_names: + table.wait_for_index(fts_names, timeout=timedelta(seconds=600)) + + @staticmethod + def _fts_unindexed_rows(table: Any) -> int | None: + values: list[int] = [] + for index in table.list_indices(): + if not ( + "text" in index.name.lower() + or "fts" in index.name.lower() + or str(getattr(index, "index_type", "")).lower() == "fts" + ): + continue + try: + stats = table.index_stats(index.name) + except Exception: + logger.debug("Unable to read LanceDB index stats for %s", index.name, exc_info=True) + continue + value = ( + stats.get("num_unindexed_rows") + if isinstance(stats, dict) + else getattr(stats, "num_unindexed_rows", None) + ) + if value is not None: + values.append(int(value)) + return sum(values) if values else None + + def _optimize_if_due(self, table: Any) -> None: + if ( + self._writes_since_optimize < _OPTIMIZE_WRITE_THRESHOLD + and self._rows_since_optimize < _OPTIMIZE_ROW_THRESHOLD + ): + return + try: + table.optimize() + except Exception as exc: + self._last_optimization = { + "status": "error", + "completed_at": datetime.now(timezone.utc).isoformat(), + "error": str(exc), + } + logger.exception("LanceDB optimization failed for table '%s'", self.table_name) + return + self._writes_since_optimize = 0 + self._rows_since_optimize = 0 + self._last_optimization = { + "status": "ok", + "completed_at": datetime.now(timezone.utc).isoformat(), + "error": None, + } + logger.info("Optimized LanceDB table '%s' after incremental writes", self.table_name) + + def index_health(self) -> dict[str, Any]: + caps = self._table_capabilities() + if caps is None: + return { + "configured_index_mode": self.index_mode, + "effective_index_mode": None, + "fts_present": False, + "fts_unindexed_rows": None, + "writes_since_optimize": self._writes_since_optimize, + "rows_since_optimize": self._rows_since_optimize, + "last_optimization": dict(self._last_optimization), + } + table = self._db.open_table(self.table_name) + return { + "configured_index_mode": self.index_mode, + "effective_index_mode": caps.retrieval_mode, + "fts_present": caps.has_fts, + "fts_unindexed_rows": self._fts_unindexed_rows(table) if caps.has_fts else None, + "writes_since_optimize": self._writes_since_optimize, + "rows_since_optimize": self._rows_since_optimize, + "last_optimization": dict(self._last_optimization), + } + def resolve_effective_retrieval_mode(self, caps: LanceTableCapabilities | None = None) -> LanceRetrievalMode: """Resolve retrieval mode from table capabilities (auto). Optional ``caps`` avoids re-opening the table when the caller already has it. """ if not self._table_exists: - return "dense" + return self._effective_index_mode if caps is None: caps = self._table_capabilities() @@ -227,7 +354,7 @@ def write_rows(self, rows: list[dict[str, Any]]) -> int: logger.warning("Cannot infer vector dimension from rows; skipping write") return 0 schema = lancedb_schema(vector_dim=dim) - create_or_append_lancedb_table( + table = create_or_append_lancedb_table( self._db, self.table_name, rows, @@ -235,6 +362,10 @@ def write_rows(self, rows: list[dict[str, Any]]) -> int: overwrite=True, ) self._table_exists = True + if self._effective_index_mode == "hybrid": + self._create_and_wait_for_fts(table) + self._writes_since_optimize = 0 + self._rows_since_optimize = 0 logger.info( "Created LanceDB table '%s' with %d rows (dim=%d)", self.table_name, @@ -245,6 +376,10 @@ def write_rows(self, rows: list[dict[str, Any]]) -> int: table = self._db.open_table(self.table_name) table.add(rows) self._table_exists = True + self._writes_since_optimize += 1 + self._rows_since_optimize += len(rows) + if self._effective_index_mode == "hybrid": + self._optimize_if_due(table) logger.info("Appended %d rows to table '%s'", len(rows), self.table_name) return len(rows) @@ -278,6 +413,7 @@ def search( mode = self.resolve_effective_retrieval_mode(caps) strategies = _strategies_for_retrieval_mode(mode) + from nemo_retriever.common.vdb.hybrid_fusion import DEFAULT_HYBRID_FUSION_POLICY from nemo_retriever.common.vdb.lancedb import LanceDB from nemo_retriever.common.vdb.records import normalize_retrieval_results @@ -286,6 +422,7 @@ def search( retrieval_kwargs: dict[str, Any] = {"top_k": top_k, "hybrid": hybrid} if hybrid: retrieval_kwargs["query_texts"] = query_texts + retrieval_kwargs["hybrid_fusion"] = DEFAULT_HYBRID_FUSION_POLICY if caps is not None and caps.vector_column and caps.vector_column != "vector": retrieval_kwargs["vector_column_name"] = caps.vector_column @@ -350,6 +487,7 @@ def create_vectordb_app( hf_cache_dir: str | None = None, device: str | None = None, gpu_memory_utilization: float = 0.45, + index_mode: ServiceIndexMode = "auto", ) -> FastAPI: """Build the VectorDB FastAPI application.""" @@ -368,6 +506,7 @@ async def lifespan(app: FastAPI) -> AsyncIterator[None]: hf_cache_dir=hf_cache_dir, device=device, gpu_memory_utilization=gpu_memory_utilization, + index_mode=index_mode, ) _query_semaphore = asyncio.Semaphore(MAX_CONCURRENT_QUERIES) logger.info( @@ -413,6 +552,19 @@ async def health() -> dict[str, Any]: lancedb_uri, exc_info=True, ) + index_health = ( + _state.index_health() + if _state + else { + "configured_index_mode": index_mode, + "effective_index_mode": None, + "fts_present": False, + "fts_unindexed_rows": None, + "writes_since_optimize": 0, + "rows_since_optimize": 0, + "last_optimization": {"status": "never", "completed_at": None, "error": None}, + } + ) return { "status": "ok", "table": table_name, @@ -420,6 +572,7 @@ async def health() -> dict[str, Any]: "table_exists": _state.table_exists if _state else False, "embed_mode": _state.embed_mode if _state else "none", "effective_retrieval_mode": effective_mode, + **index_health, } @app.post("/internal/vectordb/write", response_model=WriteResponse, tags=["internal"]) @@ -482,6 +635,12 @@ def main() -> None: parser = argparse.ArgumentParser(description="NeMo Retriever VectorDB service") parser.add_argument("--lancedb-uri", default="/data/vectordb", help="LanceDB directory") parser.add_argument("--table-name", default="nemo_retriever", help="LanceDB table name") + parser.add_argument( + "--index-mode", + default="auto", + choices=("auto", "dense", "hybrid"), + help="Fresh-table index mode; auto creates hybrid and preserves existing table capabilities.", + ) parser.add_argument("--embed-endpoint", default="", help="Remote NIM/OpenAI-compatible embed URL") parser.add_argument("--embed-model", default="nvidia/llama-nemotron-embed-vl-1b-v2") parser.add_argument("--embed-model-provider-prefix", default="", help="Optional LiteLLM provider prefix") @@ -534,6 +693,7 @@ def main() -> None: hf_cache_dir=args.hf_cache_dir or None, device=args.device or None, gpu_memory_utilization=args.gpu_memory_utilization, + index_mode=args.index_mode, ) uvicorn.run(app, host=args.host, port=args.port) diff --git a/nemo_retriever/tests/test_harness_artifacts.py b/nemo_retriever/tests/test_harness_artifacts.py index 69422c0d9f..11be9b6ce8 100644 --- a/nemo_retriever/tests/test_harness_artifacts.py +++ b/nemo_retriever/tests/test_harness_artifacts.py @@ -2,17 +2,16 @@ # All rights reserved. # SPDX-License-Identifier: Apache-2.0 -from contextlib import contextmanager import json import subprocess +from contextlib import contextmanager from types import SimpleNamespace import pytest - from nemo_retriever.harness.artifact_writer import ( + ArtifactWriter, append_text, artifact_paths, - ArtifactWriter, capture_output_to_log, redact, ) @@ -25,9 +24,15 @@ HarnessRunError, ) from nemo_retriever.harness.diff import diff_artifact_dirs -from nemo_retriever.harness import environment as harness_environment from nemo_retriever.harness.environment import collect_environment -from nemo_retriever.harness.execution import _concise_message, _run_result_payload, _write_failure_result, run_benchmark +from nemo_retriever.harness.execution import ( + _concise_message, + _run_result_payload, + _write_failure_result, + run_benchmark, +) + +from nemo_retriever.harness import environment as harness_environment def _write_json(path, payload): @@ -389,9 +394,26 @@ def test_diff_prefers_results_but_reads_legacy_summary(tmp_path): assert payload["left"].endswith("left/results.json") assert payload["right"].endswith("right/summary_metrics.json") + assert payload["comparable_index_mode"] is True assert payload["summary_metrics"]["recall_5"]["delta"] == pytest.approx(0.1) +def test_diff_marks_cross_index_mode_results_as_distinct_baseline_series(tmp_path): + left = tmp_path / "dense" + right = tmp_path / "hybrid" + left.mkdir() + right.mkdir() + _write_json(left / "results.json", {"resolved_index_mode": "dense", "summary_metrics": {"recall_5": 0.8}}) + _write_json(right / "results.json", {"resolved_index_mode": "hybrid", "summary_metrics": {"recall_5": 0.9}}) + + payload = diff_artifact_dirs(left, right) + + assert payload["left_resolved_index_mode"] == "dense" + assert payload["right_resolved_index_mode"] == "hybrid" + assert payload["comparable_index_mode"] is False + assert "distinct baseline series" in payload["comparison_warning"] + + def test_environment_records_relevant_runtime_flags_without_credentials(monkeypatch): monkeypatch.setenv("HF_HUB_OFFLINE", "1") monkeypatch.setenv("NEMO_RETRIEVER_HF_CACHE_DIR", "/models/huggingface") diff --git a/nemo_retriever/tests/test_harness_benchmark_registry.py b/nemo_retriever/tests/test_harness_benchmark_registry.py index c461471734..d94ffbd31f 100644 --- a/nemo_retriever/tests/test_harness_benchmark_registry.py +++ b/nemo_retriever/tests/test_harness_benchmark_registry.py @@ -5,17 +5,15 @@ from pathlib import Path import pytest - from nemo_retriever.harness.benchmark_registry import ( + VIDORE_V3_EMBED_MODEL, + VIDORE_V3_PUBLIC_DATASETS, get_benchmark, get_dataset, get_runset, - VIDORE_V3_EMBED_MODEL, - VIDORE_V3_PUBLIC_DATASETS, ) from nemo_retriever.harness.runfile import load_runfile - VIDORE_V3_DATASET_FACTS = { "vidore_v3_computer_science": (2, 1360, 1290), "vidore_v3_energy": (41, 2225, 1848), @@ -47,6 +45,7 @@ def test_vidore_v3_benchmarks_use_page_level_multimodal_defaults(dataset_name: s "embed_modality": "text_image", "embed_granularity": "page", } + assert benchmark.ingest["storage"]["index_mode"] == "hybrid" assert benchmark.query["embed_model_name"] == VIDORE_V3_EMBED_MODEL assert benchmark.evaluation["dataset_name"] == dataset_name assert benchmark.evaluation["doc_id_field"] == "pdf_page" @@ -71,3 +70,13 @@ def test_vidore_v3_all_runset_contains_every_public_dataset() -> None: runset = get_runset("vidore_v3_all") assert runset.runs == tuple(f"{name}_beir" for name in VIDORE_V3_PUBLIC_DATASETS) + + +def test_vidore_v3_dense_runset_keeps_historical_configuration_explicit() -> None: + runset = get_runset("vidore_v3_all_dense") + + assert runset.runs == tuple(f"{name}_beir_dense" for name in VIDORE_V3_PUBLIC_DATASETS) + for benchmark_name in runset.runs: + benchmark = get_benchmark(benchmark_name) + assert benchmark.ingest["storage"]["index_mode"] == "dense" + assert benchmark.query["retrieval_mode"] == "dense" diff --git a/nemo_retriever/tests/test_harness_slack.py b/nemo_retriever/tests/test_harness_slack.py index 2255b16931..70767f9258 100644 --- a/nemo_retriever/tests/test_harness_slack.py +++ b/nemo_retriever/tests/test_harness_slack.py @@ -7,21 +7,20 @@ import pytest import requests -from typer.testing import CliRunner - from nemo_retriever.harness.benchmark_registry import VIDORE_V3_PUBLIC_DATASETS from nemo_retriever.harness.cli import app from nemo_retriever.harness.slack import ( DEFAULT_SLACK_METRIC_KEYS, - HarnessRunReport, - HarnessSessionReport, MAX_SLACK_TABLE_ROWS, VIDORE_V3_REPORT_DATASETS, + HarnessRunReport, + HarnessSessionReport, build_slack_payload, load_replay_report, load_session_report, post_slack_payload, ) +from typer.testing import CliRunner def _write_json(path: Path, payload: dict) -> None: @@ -392,3 +391,39 @@ def test_post_slack_shows_current_release_reference_without_a_verdict(monkeypatc ["GPUs available to workload", "8", "N/A"], ["pages", "1940", "1940"], ] + + +def test_release_reference_matches_resolved_index_mode(monkeypatch, tmp_path): + session_dir = _write_session(tmp_path) + results_path = session_dir / "001_jp20_beir" / "results.json" + results = json.loads(results_path.read_text(encoding="utf-8")) + results["resolved_index_mode"] = "hybrid" + _write_json(results_path, results) + reference_file = tmp_path / "mode-specific-reference.json" + _write_json( + reference_file, + { + "baselines": [ + { + "name": "Dense baseline", + "dataset": "jp20", + "resolved_index_mode": "dense", + "metrics": {"pages": 1940}, + }, + { + "name": "Hybrid baseline", + "dataset": "jp20", + "resolved_index_mode": "hybrid", + "metrics": {"pages": 1940}, + }, + ], + }, + ) + monkeypatch.setenv("RETRIEVER_HARNESS_REFERENCE_FILE", str(reference_file)) + + result = CliRunner().invoke(app, ["post-slack", "--preview", str(session_dir)]) + + assert result.exit_code == 0 + payload_text = result.stdout + assert "Dense baseline" not in payload_text + assert "Hybrid baseline" in payload_text diff --git a/nemo_retriever/tests/test_helm_vectordb_index_mode.py b/nemo_retriever/tests/test_helm_vectordb_index_mode.py new file mode 100644 index 0000000000..03c4d61f2c --- /dev/null +++ b/nemo_retriever/tests/test_helm_vectordb_index_mode.py @@ -0,0 +1,57 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. +# All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from __future__ import annotations + +import shutil +import subprocess +from pathlib import Path + +import pytest +import yaml + +_ROOT = Path(__file__).resolve().parents[2] +_CHART = _ROOT / "nemo_retriever" / "helm" + + +def _helm_template(*args: str) -> subprocess.CompletedProcess[str]: + if shutil.which("helm") is None: + pytest.skip("helm executable is not installed") + return subprocess.run( + [ + "helm", + "template", + "retriever", + str(_CHART), + "--set", + "serviceConfig.nimEndpoints.embedInvokeUrl=http://embed.example/v1/embeddings", + *args, + ], + capture_output=True, + check=False, + text=True, + ) + + +@pytest.mark.parametrize("mode", ["auto", "dense", "hybrid"]) +def test_vectordb_index_mode_renders_into_config_and_deployment(mode: str) -> None: + result = _helm_template("--set", f"serviceConfig.vectordb.indexMode={mode}") + assert result.returncode == 0, result.stderr + documents = [doc for doc in yaml.safe_load_all(result.stdout) if doc] + configmap = next( + doc for doc in documents if doc.get("kind") == "ConfigMap" and "retriever-service.yaml" in doc.get("data", {}) + ) + config = yaml.safe_load(configmap["data"]["retriever-service.yaml"]) + assert config["vectordb"]["index_mode"] == mode + deployment = next( + doc for doc in documents if doc.get("kind") == "Deployment" and doc["metadata"]["name"].endswith("-vectordb") + ) + args = deployment["spec"]["template"]["spec"]["containers"][0]["args"] + assert args[args.index("--index-mode") + 1] == mode + + +def test_vectordb_index_mode_rejects_invalid_value() -> None: + result = _helm_template("--set", "serviceConfig.vectordb.indexMode=sparse") + assert result.returncode != 0 + assert "indexMode must be one of" in result.stderr diff --git a/nemo_retriever/tests/test_ingest_index_mode.py b/nemo_retriever/tests/test_ingest_index_mode.py new file mode 100644 index 0000000000..1f63bc5aec --- /dev/null +++ b/nemo_retriever/tests/test_ingest_index_mode.py @@ -0,0 +1,47 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. +# All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +import pytest +from nemo_retriever.ingest.index_mode import resolve_ingest_index_mode + + +@pytest.mark.parametrize( + ("requested", "existing", "expected"), + [ + ("auto", None, "hybrid"), + ("dense", None, "dense"), + ("hybrid", None, "hybrid"), + ("sparse", None, "sparse"), + ("auto", "dense", "dense"), + ("dense", "dense", "dense"), + ("hybrid", "dense", "hybrid"), + ("auto", "hybrid", "hybrid"), + ("hybrid", "hybrid", "hybrid"), + ("auto", "sparse", "sparse"), + ("sparse", "sparse", "sparse"), + ], +) +def test_resolve_ingest_index_mode_compatible_transitions(requested, existing, expected) -> None: + assert resolve_ingest_index_mode(requested, overwrite=False, existing_mode=existing) == expected + + +@pytest.mark.parametrize("requested", ["auto", "dense", "hybrid", "sparse"]) +def test_resolve_ingest_index_mode_overwrite_ignores_existing_mode(requested) -> None: + expected = "hybrid" if requested == "auto" else requested + assert resolve_ingest_index_mode(requested, overwrite=True, existing_mode="sparse") == expected + + +@pytest.mark.parametrize( + ("requested", "existing"), + [ + ("dense", "hybrid"), + ("sparse", "hybrid"), + ("dense", "sparse"), + ("hybrid", "sparse"), + ("sparse", "dense"), + ], +) +def test_resolve_ingest_index_mode_rejects_incompatible_append(requested, existing) -> None: + with pytest.raises(ValueError, match="Cannot append"): + resolve_ingest_index_mode(requested, overwrite=False, existing_mode=existing) diff --git a/nemo_retriever/tests/test_lancedb_capabilities.py b/nemo_retriever/tests/test_lancedb_capabilities.py index 778b582720..ade84ac213 100644 --- a/nemo_retriever/tests/test_lancedb_capabilities.py +++ b/nemo_retriever/tests/test_lancedb_capabilities.py @@ -13,8 +13,15 @@ pa = pytest.importorskip("pyarrow") import nemo_retriever.graph.retriever as retriever_module # noqa: E402 -from nemo_retriever.common.vdb.lancedb_capabilities import LanceTableCapabilities, inspect_lancedb_table # noqa: E402 +from nemo_retriever.common.vdb.hybrid_fusion import ( + DEFAULT_HYBRID_FUSION_POLICY, # noqa: E402 +) from nemo_retriever.common.vdb.lancedb import LanceDB # noqa: E402 +from nemo_retriever.common.vdb.lancedb_capabilities import ( # noqa: E402 + LanceTableCapabilities, + inspect_lancedb_table, + inspect_lancedb_table_object, +) from nemo_retriever.graph.retriever import Retriever # noqa: E402 from nemo_retriever.operators.vdb import RetrieveVdbOperator # noqa: E402 @@ -159,6 +166,36 @@ def test_detector_returns_hybrid_for_vector_plus_fts_table(tmp_path) -> None: assert caps.retrieval_mode == "hybrid" +def test_physical_fts_overrides_stale_dense_schema_metadata(tmp_path) -> None: + uri = str(tmp_path / "db") + _create_vector_table(uri, "upgraded", fts=True) + table = lancedb.connect(uri).open_table("upgraded") + stale_table = type( + "StaleSchemaTable", + (), + {"schema": table.schema.with_metadata({b"retrieval_mode": b"dense"}), "list_indices": table.list_indices}, + )() + + caps = inspect_lancedb_table_object(stale_table) + + assert caps.retrieval_mode == "hybrid" + + +def test_physical_vector_only_table_overrides_stale_hybrid_metadata(tmp_path) -> None: + uri = str(tmp_path / "db") + _create_vector_table(uri, "legacy") + table = lancedb.connect(uri).open_table("legacy") + stale_table = type( + "StaleSchemaTable", + (), + {"schema": table.schema.with_metadata({b"retrieval_mode": b"hybrid"}), "list_indices": table.list_indices}, + )() + + caps = inspect_lancedb_table_object(stale_table) + + assert caps.retrieval_mode == "dense" + + def test_detector_returns_sparse_for_fts_only_table(tmp_path) -> None: uri = str(tmp_path / "db") _create_sparse_table(uri, "sparse") @@ -191,7 +228,7 @@ def test_hybrid_table_query_automatically_enables_hybrid(monkeypatch, tmp_path) Retriever(vdb_kwargs={"uri": uri, "table_name": "hybrid"}).query("alpha", top_k=1) - assert calls == [{"hybrid": True}] + assert calls == [{"hybrid": True, "hybrid_fusion": DEFAULT_HYBRID_FUSION_POLICY}] def test_existing_dense_query_behavior_is_unchanged(monkeypatch, tmp_path) -> None: @@ -221,7 +258,7 @@ def test_explicit_hybrid_override_on_hybrid_table(monkeypatch, tmp_path) -> None Retriever(vdb_kwargs={"uri": uri, "table_name": "hybrid", "retrieval_mode": "hybrid"}).query("alpha", top_k=1) - assert calls == [{"hybrid": True}] + assert calls == [{"hybrid": True, "hybrid_fusion": DEFAULT_HYBRID_FUSION_POLICY}] def test_explicit_sparse_override_on_hybrid_table_uses_sparse_retrieval(monkeypatch, tmp_path) -> None: diff --git a/nemo_retriever/tests/test_lancedb_retrieval_where.py b/nemo_retriever/tests/test_lancedb_retrieval_where.py index c22774a300..40d79cba03 100644 --- a/nemo_retriever/tests/test_lancedb_retrieval_where.py +++ b/nemo_retriever/tests/test_lancedb_retrieval_where.py @@ -14,6 +14,7 @@ lancedb = pytest.importorskip("lancedb") +from nemo_retriever.common.vdb.hybrid_fusion import HybridFusionPolicy from nemo_retriever.common.vdb.lancedb import LanceDB from nemo_retriever.common.vdb.records import to_client_vdb_records @@ -47,6 +48,34 @@ def _tiny_table(uri: str, *, create_fts_index: bool = False) -> None: table.create_fts_index("text", replace=True) +def _hybrid_weighting_table(uri: str) -> None: + schema = pa.schema( + [ + pa.field("vector", pa.list_(pa.float32(), 2)), + pa.field("text", pa.string()), + pa.field("metadata", pa.string()), + pa.field("source", pa.string()), + ] + ) + rows = [ + { + "vector": vector, + "text": text, + "metadata": json.dumps({"doc_id": doc_id}), + "source": "{}", + } + for doc_id, vector, text in ( + ("dense", [1.0, 0.0], "semantic dense anchor"), + ("middle_1", [0.9, 0.1], "middle one"), + ("middle_2", [0.8, 0.2], "middle two"), + ("middle_3", [0.7, 0.3], "middle three"), + ("sparse", [0.0, 1.0], "rare unicorn identifier"), + ) + ] + table = lancedb.connect(uri).create_table("t", rows, schema=schema, mode="overwrite") + table.create_fts_index("text", replace=True) + + def test_retrieval_where_filters_rows() -> None: d = tempfile.mkdtemp() _tiny_table(d) @@ -124,6 +153,34 @@ def test_hybrid_retrieval_uses_query_texts() -> None: assert results[0][0]["text"] == "alpha" +def test_hybrid_retrieval_applies_explicit_weighted_rrf_policy() -> None: + d = tempfile.mkdtemp() + _hybrid_weighting_table(d) + op = LanceDB(uri=d, table_name="t", overwrite=False, vector_dim=2, validate_vector_length=False) + + equal_rrf = op.retrieval( + [[1.0, 0.0]], + top_k=5, + table_path=d, + table_name="t", + hybrid=True, + query_texts=["unicorn"], + ) + tuned = op.retrieval( + [[1.0, 0.0]], + top_k=1, + table_path=d, + table_name="t", + hybrid=True, + query_texts=["unicorn"], + hybrid_fusion=HybridFusionPolicy(candidate_depth=5, dense_weight=0.8, rrf_k=10), + ) + + assert json.loads(equal_rrf[0][0]["metadata"])["doc_id"] == "sparse" + assert json.loads(tuned[0][0]["metadata"])["doc_id"] == "dense" + assert len(tuned[0]) == 1 + + def test_hybrid_ingestion_builds_searchable_fts_index_from_record_text() -> None: """`LanceDB.run(..., hybrid=True)` builds the BM25/FTS side of hybrid search.""" d = tempfile.mkdtemp() diff --git a/nemo_retriever/tests/test_retrieval_comparison.py b/nemo_retriever/tests/test_retrieval_comparison.py new file mode 100644 index 0000000000..fa504069fa --- /dev/null +++ b/nemo_retriever/tests/test_retrieval_comparison.py @@ -0,0 +1,202 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. +# All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from __future__ import annotations + +import json +import math +from types import SimpleNamespace + +import nemo_retriever.harness.retrieval_comparison as retrieval_comparison +import pytest +from nemo_retriever.harness.retrieval_comparison import ( + LoadedVidoreMetadata, + _audit_qrel, + _indexed_doc_id, + _query_metrics, + build_comparison_artifacts, + compare_retrieval, +) +from nemo_retriever.tools.recall.beir import BeirDataset + + +def _result(query_id: str, mode: str, docs: list[str]) -> dict: + return { + "query_id": query_id, + "query": f"query {query_id}", + "mode": mode, + "latency_ms": {"dense": 10.0, "sparse": 5.0, "hybrid": 12.0}[mode], + "hits": [{"pdf_page": doc_id, "text": f"hit {doc_id}", "_relevance_score": 1.0} for doc_id in docs], + } + + +def test_indexed_doc_id_maps_raw_lancedb_metadata_and_source() -> None: + row = { + "metadata": json.dumps({"page_number": 12, "type": "text"}), + "source": json.dumps({"source_id": "/data/annual_report.pdf", "source_name": "annual_report.pdf"}), + } + + assert _indexed_doc_id(row, doc_id_field="pdf_page") == "annual_report_12" + + +def test_empty_text_on_an_indexed_page_is_not_reported_as_a_missing_page() -> None: + audit = _audit_qrel( + query_row={"answer": "42%"}, + corpus_row={"text": "The result was 42%."}, + indexed_texts=[""], + ) + + assert audit["status"] == "needs_review" + + +def test_per_query_ndcg_preserves_graded_qrels() -> None: + metrics = _query_metrics( + [{"pdf_page": "secondary"}, {"pdf_page": "primary"}], + {"primary": 2, "secondary": 1}, + doc_id_field="pdf_page", + ) + + expected = (1.0 + 2.0 / math.log2(3)) / (2.0 + 1.0 / math.log2(3)) + assert metrics["ndcg_10"] == pytest.approx(expected) + + +def test_tiny_comparison_covers_rescues_regressions_and_extraction_audit(tmp_path) -> None: + query_ids = ["rare", "paraphrase", "missing", "anchors", "regression"] + dataset = BeirDataset( + dataset_name="tiny", + query_ids=query_ids, + queries=[ + "Find identifier ZX-9001", + "Which team lowered its energy use?", + "What is the absent answer?", + "What percentage was reported?", + "Explain the semantic policy", + ], + qrels={query_id: {f"doc_{index}": 1} for index, query_id in enumerate(query_ids, start=1)}, + ) + metadata = LoadedVidoreMetadata( + query_rows={ + "rare": {"query_id": "rare", "answer": "ZX-9001", "query_format": "keyword"}, + "paraphrase": {"query_id": "paraphrase", "answer": "Facilities", "query_format": "question"}, + "missing": {"query_id": "missing", "answer": "missing", "query_format": "question"}, + "anchors": {"query_id": "anchors", "answer": "42%", "query_format": "question"}, + "regression": {"query_id": "regression", "answer": "semantic", "query_format": "instruction"}, + }, + corpus_rows={ + "doc_1": {"text": "The rare identifier is ZX-9001."}, + "doc_2": {"text": "Facilities reduced electricity consumption."}, + "doc_3": {"text": "missing reference page"}, + "doc_4": {"text": "The result was 42%."}, + "doc_5": {"text": "A semantic retrieval policy."}, + }, + ) + indexed_text = { + "doc_1": ["Identifier ZX-9001 appears here."], + "doc_2": ["Facilities reduced electricity consumption."], + "doc_4": ["unrelated extraction without the answer"], + "doc_5": ["semantic retrieval policy"], + } + rankings = { + "dense": [[], ["doc_2"], [], ["doc_4"], ["doc_5"]], + "sparse": [["doc_1"], [], [], ["doc_4"], []], + "hybrid": [["doc_1"], ["doc_2"], [], ["doc_4"], []], + } + mode_results = { + mode: [_result(query_id, mode, docs) for query_id, docs in zip(query_ids, mode_rankings)] + for mode, mode_rankings in rankings.items() + } + + summary = build_comparison_artifacts( + output_dir=tmp_path, + dataset=dataset, + metadata=metadata, + indexed_text=indexed_text, + mode_results=mode_results, + doc_id_field="pdf_page", + provenance={"dataset": "tiny", "lancedb_version": "test"}, + ) + + assert summary["query_count"] == 5 + assert summary["case_counts"] == { + "all_modes_miss": 1, + "extraction_concern": 1, + "hybrid_regression": 1, + "hybrid_rescue": 1, + "other": 1, + } + audit = json.loads((tmp_path / "extraction_audit.json").read_text()) + assert audit["classified_positive_qrels"] == 5 + assert audit["status_counts"]["missing_indexed_page"] == 1 + assert audit["status_counts"]["needs_review"] == 1 + assert (tmp_path / "summary.json").exists() + assert (tmp_path / "query_cases.jsonl").exists() + assert (tmp_path / "report.md").exists() + for mode in rankings: + assert (tmp_path / mode / "query_results.jsonl").exists() + assert (tmp_path / mode / "beir_metrics.json").exists() + assert (tmp_path / mode / "beir_run.trec").exists() + + +def test_compare_retrieval_replays_hybrid_even_when_source_run_was_hybrid(tmp_path, monkeypatch) -> None: + run_dir = tmp_path / "run" + run_dir.mkdir() + (run_dir / "status.json").write_text(json.dumps({"status": "complete"})) + (run_dir / "results.json").write_text(json.dumps({"success": True, "dry_run": False, "mode": "local"})) + (run_dir / "resolved_benchmark.json").write_text( + json.dumps({"evaluation": {"loader": "vidore_hf", "dataset_name": "tiny", "split": "test"}}) + ) + (run_dir / "query_plan.json").write_text( + json.dumps( + { + "lancedb_uri": str(tmp_path / "lancedb"), + "table_name": "tiny", + "retrieval_mode": "hybrid", + "rerank": False, + } + ) + ) + table = object() + monkeypatch.setattr( + retrieval_comparison.lancedb, + "connect", + lambda _uri: SimpleNamespace(open_table=lambda _table_name: table), + ) + monkeypatch.setattr( + retrieval_comparison, + "inspect_lancedb_table_object", + lambda _table: SimpleNamespace(has_vector=True, has_fts=True, retrieval_mode="hybrid"), + ) + dataset = BeirDataset(dataset_name="tiny", query_ids=["q1"], queries=["query"], qrels={"q1": {"d1": 1}}) + monkeypatch.setattr(retrieval_comparison, "load_beir_dataset", lambda *_args, **_kwargs: dataset) + monkeypatch.setattr( + retrieval_comparison, + "_load_vidore_metadata", + lambda *_args, **_kwargs: LoadedVidoreMetadata(query_rows={}, corpus_rows={}), + ) + monkeypatch.setattr(retrieval_comparison, "_load_indexed_text", lambda *_args, **_kwargs: {}) + resolved_plan = object() + monkeypatch.setattr(retrieval_comparison, "_resolved_query_plan", lambda _payload, _mode: resolved_plan) + calls = [] + replayed = [{"query_id": "q1", "query": "query", "mode": "hybrid", "latency_ms": 1.0, "hits": []}] + + def replay(_dataset, plan, mode): + calls.append((plan, mode)) + return replayed + + monkeypatch.setattr(retrieval_comparison, "_run_mode_queries", replay) + monkeypatch.setattr( + retrieval_comparison, + "_read_query_results", + lambda *_args, **_kwargs: pytest.fail("source hybrid results must not be reused"), + ) + monkeypatch.setattr( + retrieval_comparison, + "build_comparison_artifacts", + lambda **kwargs: {"mode_results": kwargs["mode_results"]}, + ) + + result = compare_retrieval(run_dir, modes=("hybrid",), output_dir=tmp_path / "comparison") + + assert calls == [(resolved_plan, "hybrid")] + assert result["mode_results"]["hybrid"] == replayed diff --git a/nemo_retriever/tests/test_root_cli_workflow.py b/nemo_retriever/tests/test_root_cli_workflow.py index 74573385e6..f87e60ff26 100644 --- a/nemo_retriever/tests/test_root_cli_workflow.py +++ b/nemo_retriever/tests/test_root_cli_workflow.py @@ -161,6 +161,7 @@ def fake_create_ingestor(**kwargs: Any) -> Any: "uri": "lancedb", "table_name": "nemo-retriever", "overwrite": True, + "hybrid": True, "embedding_model_name": "nvidia/llama-nemotron-embed-vl-1b-v2", } assert "Ingested 1 file(s) → 7 row(s) in LanceDB lancedb/nemo-retriever." in result.output @@ -202,6 +203,7 @@ def test_root_ingest_without_mode_accepts_local_options_before_documents(monkeyp "uri": "/tmp/default-lancedb", "table_name": "nemo-retriever", "overwrite": False, + "hybrid": True, "embedding_model_name": "nvidia/llama-nemotron-embed-vl-1b-v2", } @@ -398,6 +400,7 @@ def fake_create_ingestor(**kwargs: Any) -> Any: "uri": "/tmp/lancedb", "table_name": "docs", "overwrite": True, + "hybrid": True, "embedding_model_name": "nvidia/llama-nemotron-embed-vl-1b-v2", } assert "Ingested 2 file(s) → 12 row(s) in LanceDB /tmp/lancedb/docs." in result.output @@ -417,6 +420,7 @@ def test_root_ingest_append_forwards_overwrite_false(monkeypatch, tmp_path) -> N "uri": "lancedb", "table_name": "nemo-retriever", "overwrite": False, + "hybrid": True, "embedding_model_name": "nvidia/llama-nemotron-embed-vl-1b-v2", } diff --git a/nemo_retriever/tests/test_service_vectordb_app.py b/nemo_retriever/tests/test_service_vectordb_app.py index 3ae75b8b33..609806fd8a 100644 --- a/nemo_retriever/tests/test_service_vectordb_app.py +++ b/nemo_retriever/tests/test_service_vectordb_app.py @@ -7,10 +7,11 @@ import sys from unittest.mock import MagicMock, PropertyMock, patch +import nemo_retriever.service.vectordb_app as vectordb_module import pytest from fastapi.testclient import TestClient - -import nemo_retriever.service.vectordb_app as vectordb_module +from nemo_retriever.common.vdb.hybrid_fusion import DEFAULT_HYBRID_FUSION_POLICY +from nemo_retriever.service.config import VectorDbConfig from nemo_retriever.service.vectordb_app import ( VectorDBState, _embed_queries_remote, @@ -18,6 +19,7 @@ _tensor_to_embedding_rows, create_vectordb_app, ) +from pydantic import ValidationError @pytest.mark.parametrize( @@ -84,6 +86,19 @@ def test_health_reports_effective_retrieval_mode_none_without_table(tmp_path) -> body = resp.json() assert "retrieval_mode" not in body assert body["effective_retrieval_mode"] is None + assert body["configured_index_mode"] == "auto" + assert body["effective_index_mode"] is None + assert body["fts_present"] is False + assert body["fts_unindexed_rows"] is None + assert body["last_optimization"]["status"] == "never" + + +def test_vectordb_config_validates_index_mode() -> None: + assert VectorDbConfig().index_mode == "auto" + assert VectorDbConfig(index_mode="dense").index_mode == "dense" + assert VectorDbConfig(index_mode="hybrid").index_mode == "hybrid" + with pytest.raises(ValidationError): + VectorDbConfig(index_mode="sparse") def test_health_stays_ok_when_mode_resolution_errors(tmp_path) -> None: @@ -316,3 +331,4 @@ def test_search_hybrid_delegates_to_lancedb_wrapper(tmp_path) -> None: assert call_kwargs["top_k"] == 3 assert call_kwargs["hybrid"] is True assert call_kwargs["query_texts"] == ["revenue"] + assert call_kwargs["hybrid_fusion"] == DEFAULT_HYBRID_FUSION_POLICY diff --git a/nemo_retriever/tests/test_service_vectordb_evidence_integration.py b/nemo_retriever/tests/test_service_vectordb_evidence_integration.py index 9008c77e92..52b8e6dbd0 100644 --- a/nemo_retriever/tests/test_service_vectordb_evidence_integration.py +++ b/nemo_retriever/tests/test_service_vectordb_evidence_integration.py @@ -79,6 +79,6 @@ def test_query_evidence_format_end_to_end_over_real_lancedb(tmp_path) -> None: assert isinstance(ev["score"], (int, float)) coverage = item["coverage"] - assert coverage["strategies_used"] == ["dense"] + assert coverage["strategies_used"] == ["hybrid"] assert coverage["n_docs_seen"] == 1 assert coverage["thin_spots"] == ["single source"] diff --git a/nemo_retriever/tests/test_service_vectordb_hybrid_integration.py b/nemo_retriever/tests/test_service_vectordb_hybrid_integration.py index 1708cc6dc7..81d2481af1 100644 --- a/nemo_retriever/tests/test_service_vectordb_hybrid_integration.py +++ b/nemo_retriever/tests/test_service_vectordb_hybrid_integration.py @@ -8,12 +8,13 @@ from datetime import timedelta from unittest.mock import patch -import lancedb import pytest from fastapi.testclient import TestClient - +from nemo_retriever.service import vectordb_app as vectordb_module from nemo_retriever.service.vectordb_app import VectorDBState, create_vectordb_app +import lancedb + _DIM = 4 _ROW = { "vector": [1.0, 0.0, 0.0, 0.0], @@ -32,21 +33,21 @@ } -def _state(tmp_path) -> VectorDBState: +def _state(tmp_path, *, index_mode="auto") -> VectorDBState: return VectorDBState( lancedb_uri=str(tmp_path), table_name="nemo_retriever", embed_endpoint="http://embed.example/v1/embeddings", embed_model="nvidia/llama-nemotron-embed-vl-1b-v2", embed_api_key="", + index_mode=index_mode, ) def _prebuild_fts_index(uri: str, table_name: str) -> None: """Simulate an ingestion pipeline that wrote a table with a BM25/FTS index. - The VectorDB service itself never builds FTS; the query path only detects - an index that was created at ingestion time. + This also supports tests that seed the pre-migration storage shape. """ table = lancedb.connect(uri).open_table(table_name) table.create_fts_index("text", replace=True) @@ -56,20 +57,19 @@ def _prebuild_fts_index(uri: str, table_name: str) -> None: @pytest.mark.integration -def test_write_rows_persists_rows_without_building_fts(tmp_path) -> None: +def test_fresh_auto_write_builds_fts(tmp_path) -> None: state = _state(tmp_path) assert state.write_rows([_ROW]) == 1 caps = state._table_capabilities() assert caps is not None assert caps.has_vector - # The service must not build an FTS index on write; the table stays dense. - assert not caps.has_fts - assert state.resolve_effective_retrieval_mode() == "dense" + assert caps.has_fts + assert state.resolve_effective_retrieval_mode() == "hybrid" @pytest.mark.integration -def test_append_does_not_build_or_mutate_fts(tmp_path) -> None: +def test_append_keeps_hybrid_fts_and_unindexed_tail_searchable(tmp_path) -> None: state = _state(tmp_path) assert state.write_rows([_ROW]) == 1 @@ -80,15 +80,34 @@ def test_append_does_not_build_or_mutate_fts(tmp_path) -> None: table = state._db.open_table("nemo_retriever") assert table.count_rows() == 2 - # Still no FTS index — appends only persist rows. caps = state._table_capabilities() - assert not caps.has_fts + assert caps.has_fts + hits, strategies = state.search([[0.0, 1.0, 0.0, 0.0]], ["unicorn synergy"], top_k=5) + assert strategies == ["hybrid"] + assert any("Zephyr quarterly guidance" in hit["text"] for hit in hits[0]) + + +@pytest.mark.integration +def test_incremental_write_threshold_runs_optimize_and_updates_health(tmp_path, monkeypatch) -> None: + state = _state(tmp_path) + state.write_rows([_ROW]) + table = state._db.open_table("nemo_retriever") + monkeypatch.setattr(vectordb_module, "_OPTIMIZE_WRITE_THRESHOLD", 1) + + with patch.object(type(table), "optimize", autospec=True) as optimize: + state.write_rows([{**_ROW, "text": "second row"}]) + + optimize.assert_called_once() + health = state.index_health() + assert health["last_optimization"]["status"] == "ok" + assert health["writes_since_optimize"] == 0 + assert health["rows_since_optimize"] == 0 @pytest.mark.integration def test_auto_resolves_hybrid_when_fts_prebuilt(tmp_path) -> None: # Ingestion built the table with both a vector column and an FTS index. - seed = _state(tmp_path) + seed = _state(tmp_path, index_mode="dense") seed.write_rows([_ROW]) _prebuild_fts_index(str(tmp_path), "nemo_retriever") @@ -101,7 +120,7 @@ def test_auto_resolves_hybrid_when_fts_prebuilt(tmp_path) -> None: @pytest.mark.integration def test_auto_resolves_dense_when_no_fts(tmp_path) -> None: - seed = _state(tmp_path) + seed = _state(tmp_path, index_mode="dense") seed.write_rows([_ROW]) state = _state(tmp_path) @@ -112,7 +131,28 @@ def test_auto_resolves_dense_when_no_fts(tmp_path) -> None: @pytest.mark.integration -def test_query_auto_selects_hybrid_when_fts_prebuilt(tmp_path) -> None: +def test_explicit_hybrid_upgrades_existing_dense_table(tmp_path) -> None: + seed = _state(tmp_path, index_mode="dense") + seed.write_rows([_ROW]) + + upgraded = _state(tmp_path, index_mode="hybrid") + caps = upgraded._table_capabilities() + assert caps.has_vector + assert caps.has_fts + assert upgraded.resolve_effective_retrieval_mode() == "hybrid" + + +@pytest.mark.integration +def test_explicit_dense_rejects_existing_hybrid_table(tmp_path) -> None: + seed = _state(tmp_path) + seed.write_rows([_ROW]) + + with pytest.raises(ValueError, match="Cannot append"): + _state(tmp_path, index_mode="dense") + + +@pytest.mark.integration +def test_query_auto_selects_hybrid_for_fresh_default_table(tmp_path) -> None: app = create_vectordb_app( lancedb_uri=str(tmp_path), table_name="nemo_retriever", @@ -125,9 +165,6 @@ def test_query_auto_selects_hybrid_when_fts_prebuilt(tmp_path) -> None: write = client.post("/internal/vectordb/write", json={"rows": [_ROW]}) assert write.status_code == 200, write.text - # Ingestion builds the FTS index; the query path detects it. - _prebuild_fts_index(str(tmp_path), "nemo_retriever") - resp = client.post( "/v1/query", json={"query": "revenue", "top_k": 5, "format": "evidence"}, @@ -145,6 +182,7 @@ def test_query_auto_selects_dense_when_no_fts(tmp_path) -> None: table_name="nemo_retriever", embed_endpoint="http://embed.example/v1/embeddings", embed_model="nvidia/llama-nemotron-embed-vl-1b-v2", + index_mode="dense", ) with patch.object(VectorDBState, "embed_queries", return_value=[[1.0, 0.0, 0.0, 0.0]]): From a5c5544f971a1ef606c8a73484fcded203ff2f70 Mon Sep 17 00:00:00 2001 From: Jacob Ioffe Date: Tue, 4 Aug 2026 15:54:12 +0000 Subject: [PATCH 2/7] Refine hybrid retrieval ablation evidence Signed-off-by: Jacob Ioffe --- .../docs/assets/hybrid-fusion-selection.png | Bin 0 -> 169807 bytes .../docs/assets/hybrid-retrieval-latency.png | Bin 0 -> 109240 bytes .../docs/assets/hybrid-retrieval-latency.svg | 2097 --------------- .../hybrid-retrieval-quality-ablation.png | Bin 0 -> 150952 bytes .../hybrid-retrieval-quality-ablation.svg | 2240 ----------------- .../src/nemo_retriever/common/vdb/lancedb.py | 3 +- .../src/nemo_retriever/harness/diff.py | 5 +- .../harness/retrieval_comparison.py | 15 +- 8 files changed, 15 insertions(+), 4345 deletions(-) create mode 100644 nemo_retriever/harness/docs/assets/hybrid-fusion-selection.png create mode 100644 nemo_retriever/harness/docs/assets/hybrid-retrieval-latency.png delete mode 100644 nemo_retriever/harness/docs/assets/hybrid-retrieval-latency.svg create mode 100644 nemo_retriever/harness/docs/assets/hybrid-retrieval-quality-ablation.png delete mode 100644 nemo_retriever/harness/docs/assets/hybrid-retrieval-quality-ablation.svg diff --git a/nemo_retriever/harness/docs/assets/hybrid-fusion-selection.png b/nemo_retriever/harness/docs/assets/hybrid-fusion-selection.png new file mode 100644 index 0000000000000000000000000000000000000000..0f1d2c6578b608880c3e81caa8faad902444f596 GIT binary patch literal 169807 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

812QqNpI3LapQXRi_41}ot97q1m_!ryT;rt( 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

=v?nF-KAIES)?>uC4AeBnb+gA&8*z@t(o3MG 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 A@c;k- literal 0 HcmV?d00001 diff --git a/nemo_retriever/harness/docs/assets/hybrid-retrieval-latency.png b/nemo_retriever/harness/docs/assets/hybrid-retrieval-latency.png new file mode 100644 index 0000000000000000000000000000000000000000..6e5e5ef471cca68c87865d7db2fac8826e55fb87 GIT binary patch literal 109240 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%0A2P)Wh|4;nRHgr5<4!_tHLv+7Q`< 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 USdZeoWY8fhp00i_>zopr00kH*F8}}l literal 0 HcmV?d00001 diff --git a/nemo_retriever/harness/docs/assets/hybrid-retrieval-latency.svg b/nemo_retriever/harness/docs/assets/hybrid-retrieval-latency.svg deleted file mode 100644 index a028c52eec..0000000000 --- a/nemo_retriever/harness/docs/assets/hybrid-retrieval-latency.svg +++ /dev/null @@ -1,2097 +0,0 @@ - - - - - - - - 2026-08-04T15:19:39.012321 - image/svg+xml - - - Matplotlib v3.11.1, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/nemo_retriever/harness/docs/assets/hybrid-retrieval-quality-ablation.png b/nemo_retriever/harness/docs/assets/hybrid-retrieval-quality-ablation.png new file mode 100644 index 0000000000000000000000000000000000000000..72839af26526111f3da93511133ab0ea3839d52b GIT binary patch literal 150952 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%0AY=6)50ZVigy2wR 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 a@;T48Aete#_xHI35AHs`lXJ`9&Hn;k8ioP@ literal 0 HcmV?d00001 diff --git a/nemo_retriever/harness/docs/assets/hybrid-retrieval-quality-ablation.svg b/nemo_retriever/harness/docs/assets/hybrid-retrieval-quality-ablation.svg deleted file mode 100644 index 62cd124ca7..0000000000 --- a/nemo_retriever/harness/docs/assets/hybrid-retrieval-quality-ablation.svg +++ /dev/null @@ -1,2240 +0,0 @@ - - - - - - - - 2026-08-04T15:19:38.712368 - image/svg+xml - - - Matplotlib v3.11.1, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/nemo_retriever/src/nemo_retriever/common/vdb/lancedb.py b/nemo_retriever/src/nemo_retriever/common/vdb/lancedb.py index 32186c6bcd..2e3827a95b 100644 --- a/nemo_retriever/src/nemo_retriever/common/vdb/lancedb.py +++ b/nemo_retriever/src/nemo_retriever/common/vdb/lancedb.py @@ -910,8 +910,7 @@ def retrieval(self, vectors: Iterable[Sequence[float]], **kwargs: Any) -> list[l if hybrid_fusion is not None and not isinstance(hybrid_fusion, HybridFusionPolicy): raise TypeError( - "hybrid_fusion must be a HybridFusionPolicy or None; " - f"got {type(hybrid_fusion).__name__}" + "hybrid_fusion must be a HybridFusionPolicy or None; " f"got {type(hybrid_fusion).__name__}" ) where_clause = kwargs.pop("where", None) diff --git a/nemo_retriever/src/nemo_retriever/harness/diff.py b/nemo_retriever/src/nemo_retriever/harness/diff.py index 3cb477e880..af2435aa62 100644 --- a/nemo_retriever/src/nemo_retriever/harness/diff.py +++ b/nemo_retriever/src/nemo_retriever/harness/diff.py @@ -91,7 +91,10 @@ def diff_artifact_dirs(left: Path, right: Path) -> dict[str, Any]: "comparison_warning": ( None if same_index_mode - else "Dense, sparse, and hybrid results are distinct baseline series; interpret this cross-mode diff explicitly." + else ( + "Dense, sparse, and hybrid results are distinct baseline series; " + "interpret this cross-mode diff explicitly." + ) ), "summary_metrics": deltas, } diff --git a/nemo_retriever/src/nemo_retriever/harness/retrieval_comparison.py b/nemo_retriever/src/nemo_retriever/harness/retrieval_comparison.py index f9554f0fdb..d026fac0e5 100644 --- a/nemo_retriever/src/nemo_retriever/harness/retrieval_comparison.py +++ b/nemo_retriever/src/nemo_retriever/harness/retrieval_comparison.py @@ -514,7 +514,8 @@ def _write_report(path: Path, summary: Mapping[str, Any], cases: Sequence[Mappin "", "All modes replay the same extracted LanceDB rows. Extraction statuses are deterministic heuristics; " "`needs_review` is not a confirmed extraction failure.", - "Best-relevant-rank deltas assign misses one rank beyond the replay depth so rescues and regressions remain paired.", + "Best-relevant-rank deltas assign misses one rank beyond the replay depth so rescues and regressions " + "remain paired.", "", "## Overall", "", @@ -534,7 +535,8 @@ def _write_report(path: Path, summary: Mapping[str, Any], cases: Sequence[Mappin lines.append( f"- {comparison}: paired ΔR@10 {recall['mean']:.4f} (95% CI {recall['ci95']}), " f"ΔnDCG@10 {ndcg['mean']:.4f} (95% CI {ndcg['ci95']}), " - f"best-rank improvement {rank['mean_improvement']} (95% CI {rank['ci95']}, n={rank['paired_sample_count']})" + f"best-rank improvement {rank['mean_improvement']} " + f"(95% CI {rank['ci95']}, n={rank['paired_sample_count']})" ) lines.extend(["", "## Slices with at least 30 queries", ""]) for slice_result in summary.get("slices", []): @@ -543,7 +545,8 @@ def _write_report(path: Path, summary: Mapping[str, Any], cases: Sequence[Mappin for mode, metrics in slice_result["modes"].items(): lines.append( f"- {mode}: R@5 {metrics['recall_5']:.4f}, R@10 {metrics['recall_10']:.4f}, " - f"nDCG@10 {metrics['ndcg_10']:.4f}, p50/p95 {metrics['latency_p50_ms']:.2f}/{metrics['latency_p95_ms']:.2f} ms" + f"nDCG@10 {metrics['ndcg_10']:.4f}, " + f"p50/p95 {metrics['latency_p50_ms']:.2f}/{metrics['latency_p95_ms']:.2f} ms" ) for comparison, metrics in slice_result.get("paired_deltas", {}).items(): recall = metrics["recall_10"] @@ -552,7 +555,8 @@ def _write_report(path: Path, summary: Mapping[str, Any], cases: Sequence[Mappin lines.append( f"- {comparison}: paired ΔR@10 {recall['mean']:.4f} (95% CI {recall['ci95']}), " f"ΔnDCG@10 {ndcg['mean']:.4f} (95% CI {ndcg['ci95']}), " - f"best-rank improvement {rank['mean_improvement']} (95% CI {rank['ci95']}, n={rank['paired_sample_count']})" + f"best-rank improvement {rank['mean_improvement']} " + f"(95% CI {rank['ci95']}, n={rank['paired_sample_count']})" ) lines.append("") lines.extend(["## Representative cases", ""]) @@ -562,7 +566,8 @@ def _write_report(path: Path, summary: Mapping[str, Any], cases: Sequence[Mappin lines.extend( [ "", - "See `query_cases.jsonl` for ranked hits and indexed-text excerpts, and `evidence_crops/` for available annotated page evidence.", + "See `query_cases.jsonl` for ranked hits and indexed-text excerpts, and `evidence_crops/` " + "for available annotated page evidence.", "", ] ) From e7550682938ed91829d638d7bb6f569d43dc4cd9 Mon Sep 17 00:00:00 2001 From: Jacob Ioffe Date: Tue, 4 Aug 2026 16:00:23 +0000 Subject: [PATCH 3/7] Simplify hybrid retrieval visuals Signed-off-by: Jacob Ioffe --- .../docs/assets/hybrid-fusion-selection.png | Bin 169807 -> 0 bytes .../hybrid-retrieval-quality-ablation.png | Bin 150952 -> 106037 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 nemo_retriever/harness/docs/assets/hybrid-fusion-selection.png diff --git a/nemo_retriever/harness/docs/assets/hybrid-fusion-selection.png b/nemo_retriever/harness/docs/assets/hybrid-fusion-selection.png deleted file mode 100644 index 0f1d2c6578b608880c3e81caa8faad902444f596..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169807 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

812QqNpI3LapQXRi_41}ot97q1m_!ryT;rt( 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

=v?nF-KAIES)?>uC4AeBnb+gA&8*z@t(o3MG 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 A@c;k- diff --git a/nemo_retriever/harness/docs/assets/hybrid-retrieval-quality-ablation.png b/nemo_retriever/harness/docs/assets/hybrid-retrieval-quality-ablation.png index 72839af26526111f3da93511133ab0ea3839d52b..6162849d096bb84ac86fd2a3c6e9e52db79698ca 100644 GIT binary patch literal 106037 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 literal 150952 zcmeFZXH=C}v^7j(5~HHThGM~X5J8G`sTLGCfS^?A(tD9A-6RSsHV#M^Ec8Q>-a$hU zX(GLYg(6+40s`OMB)5$F{eFME@3@YUL?dvXXYaMwnrqIv_U(&GvYR*V*~q}au$d}% zPKANt*9HcLpN{_e3;xfJLq)ssA2H|imz`DZ&79o~9ZeZ77&<%H*gM-;8Xa^sb#$_{ zw-eyu}Qpqem__;&sie3^~}~Yr!U?y*u-gce#eVl zzy194tFzmOOQ^ff{3s_&Y5uA4*M}RcBz*g;zGvE0AMN<}H$?#_LgHtQ{?zS5?Zmb@4xUM_B zIGP?gv>3vzGbOf<+W773r@FA#RGrYa4+s6X9FR)6`ssC&apirhcTawIw_#Tdd)W3= z^u|Cy=^g%@jgoR z7z{TTG^-60&$VTEW8G8a)>hy&M4{3((>1DSY||$XGra7%GTxcvG4$ANN{o@jLq7c> z35@IFBkdW+R!#Buu+VX?`K9YjyY)t9zOrAg$Lg>VRifV?Two@1yKr$is+65)$aSY;(s%A?~j@m zBfmNMi@CYE_t%PDoEM*57q#!owRPW3zT$ltcC^-#iHS*6RCM6qCz*f3P9C$H@8^v> zF7_0<SlX= zmTb8VN_C$;eL7g&k!5a;ztu1;avpxhB=zm3m!xf{U|p1`DsASkO}rLg-oKKUmv0=b zi_9^p+V)t~Nk%hGw;@$0Z>G(_m&2gcix%7GvvgrQyHYSka-lzHkGQK%+IZj8K+Wu2 zm%RdQq&exiR+gD*AvYC=rEF#_t6rWaAHtQ?Lf6!JRNy`xzp}DqKi-}p&8`&n?$L40 z9eeh0va_=$WsbJWyJT05)a3y8v&nJl{vxFY#cp8~XI%R4Z@U_rp|=={k{?1my#C{tn5| zxFUM0CZg}_r%DByRZDW*0pITp@#EhYhGO>c8Qq{HDTecFXBeFiF|NDw;>8K_mvAKg8cl% zYhOQd>J?^d=h>wq*g1SxzSC&_b=JrYl;Q6S(`J&7#ocmGzUJ`x{#7=MJwqXsCkdyF z7K^2{#!(7?-S)yzx}p*fx@F(VhjsVFy!`d+S2LV%=SxlT7XdlQiXWkrnka*_L zUmUMq%}6Sp`TO^Z9(g zma3g2PZKn)-r@53-5ESgBhEDm%b$P#nL|uW8{49ZR}r#!_k?Tn&^P?F;ZOsghG@vOjIL3FS0Q>pavSiMqEG|LXe@mg) zLMDwyt95TnH^>{gkcp$N{o=~+3u38rigI%A@WI)R1M*mZB_wf9wZwqc<(##_sJ#D=rS9N?smSpz$!t_v%QN>0Q_=gT1D!ls1 z@6Ha6XVtAKT^gX zgKQ|ppl;SJT z(h!v2bm?T{2dB7oa!vNkZ{jV!5)vcj?Ga&`>B-Y)YwP{#_2zQy$3v5oqM|ITD@*AY zy7r#9a$T$M#)j>+3w(ThGIbF`b!AwwPBjA=eUD+b$j%yk!?zK7x=otf*N+u46?b+D zq_&lpm!EVQ2{zpAw{`Dc>*-l#T88(MtCOes+bF&vWaWj~;(=Df;&9+NZcseSV~uP{aLrctNFTiEu-S z^LKXe)yT@o?8!2(7v9LsWue~o^7nPAt&$!yi4E}=A{mVxTwR5ueHJZ0y}q}1`1KbY zGnRXMMRJq819tI7e^@awLv;+#)sgT1^Ow#1&z?UQNSUl+j}dGO7qO4NiV%6O^jK`T zRp-T(GoR-BeDgS3H*7y@vfKIrtK?mz%1>V_4~PtLYh_Yo$Adn;2|OZGO ziq7H|t2gn;I5are(Ew{G3C$r~TnNY}RwK6dGF&$#5wJL%VWaogHx$*w37uWw%%M~hv@ zBlwK|{N&QwnwH!R`iccj8V|w<< znLksi|Ni^$W5U9%ekF4EQ>j5m3-SCH2AnuWjFy%r%hdDi^p;VBg&g6dWvlC@Fh%EAorPe+Nn5pqrg4y z5Wmg6vNU-r$EJh7e6G}Ixo~lAoQ^0kz1$YYXFP+IFyB22Y}Z`k>DE*1-W31MCdaI9 zkC09KiMrmicILbNo;`cU&t;tMTA+Eq=gWukSs;9q{P7f4anF*ziC_SvMBA=hF`w`G zEty^EY>^`N8q80t+j(wgrkP}VVcX6`-2z7v2sbzF z%EsE%Jr>u*CvDugQ3VBpV3e>~#jq1+R+su#1>Giey;l~7XtCHp>)J3rjV>HMhr+AA zvn`tPii&E#|M;_@$(!GDY`ZkrbX|u{_%* z&^gVf+`LEdB63d?*U*O#Pm!vUfoMG5|Gr)=+v3tr4wZ9PuU-{H0uA9cNJG-A zIl)LOC;GD%w?6OCIM+8kp0Anr?Mp#~j3O%z76U&e`L3=cYh}e3mz3;eW{!XV{t7vX zC^@w)9*#O1^#etzsXzhl7aohLt4zJKA+1t(cXwk?pQzJd7qQi_U-7EUL5&QAJ1Jsb1 zKS`PMn4hpc`WlE>Zrv}87tt%#{nY;C$w2~1Htpg;8N(qii^kf~{a*-})t;z7g%)Ub zvd>_@xT_i-pnrHc2_L6d;CLPtuA$Inlz-orS`C6s@xxl4o!|6`OG^bSNnjMpjLXdD zOWfMoayq#-fx!}twTL&;fSYPhqM1+q`|oo*dG&ScrIu32sW^LcBSD(SHB#Pz26+?~ zmIz!l+@fi4LFCX!RHZg_H@2lb+S!RR_x8k*SVB84<~f(b%%htKoM}Du_OU2yFK5mX z+53t1eWe5$iKYX~klcn|nUj~7mpnOuGiiHjKX~#RrMm`BtQd>f_eum%-hQkIutuwI z)fjubxVYGPqFZzs`G;V|y2`iFlOj4P24(s52>g zUwfR7?-Ee;9x1PUz{+@_sp^V~itndxQf}V3k!Von!@S{CiRXN)@dL?t06&hSM@c1Z zM4Pa4+qT10?c!@0Qs3UME17N8VVS7Jw+DxX9m8X9-Y=&1Kw|3F_vPif4;L%i8L)dYx**g*nuLS|30d2Y%=4(cB}li<4M=yu7`+N4}w2)=pAr&9T(&q;*XOXz=p#at2`2 zEA`SMXA$jS;Dq@Vy9svWzAIVcJ+p)Yo8Zl59NNLcV(A6KhFQ8?E#-28iM2H*FHwxZ~KBkWIh-D(Ch& zW(StiQeX3c*OxO{(E{dgP4*buZ5}eIpW|a(+B_88_%wVi0R>r2T;X}*fWsaO-oDiw#GTITH8vk?O-Oom6QERg&Q zho-sRpU zN@IGwhsW>g{DC55i{~h2%;j%lMP}+z3{w4`QYYIxrk6u@CY@UE?d8SK?d$0Yu1}=y zgN*84A**1m-nzQF%f;8OMhsvrx&6GRzkE5tV^C_N&NKVlIoe(DGkZaC$Ys3+*3t@o zWHK|-a=dP}i$bC7Mgt&FvzdjT(lqx*Ze(@T)6;V=&Z>M?_wDWMDSmD8_9qiSUNmy4 zA~=luO1+2eRzVpsudZMGK3$($-Q62PT7)gE5@BZE2}+Oo{hNbL2sBNuMJ}`FnZ$z@ zX2jik@IZNbx~}(Ml(|OVz6orm3ZlZEK=!s=X-T|PeoQkhs$$(4s!TY)X`^@kZdO*i zYuB#rrZFljD}Tb;hQIz&!&?^S!nFIuOREA&nuY5`w`G$@INRO+*DEE9BlN+ktw&^H zb?T8O>-?{xeh5pxds}-vy_jaX?GMQyi!l}*Ik{UOMn95`q_0Iy!5$+vIc!Uj%#{~}H2&tv!Ljy@Qvjh6Zn&Ucm#+Pu4;KYwGUl!(UhU_^vL`vxM~JUwvL775C^|5PB$yFE7`bg#&n-?~xsu_r$BE zg!J`>ST6r|D5tsY8P4citA)EP0<{BJ*IL2S?Ecq2KOzHmeBi>rUn;5i8B!O-!L0uA z#~;DL!4&G$+*~U<=wuY0WTT2ZmaQ4!H3B|pVy%OQT|H+c)bGT_9iO&lyB+BPoJ7n%qO}F1|PB!>@?yhDUO0-tAuCo6HTj+<`1w%-w7}f zLP-LaS?pU~2~8bur$>vwiXL*ba!XESOERyI9(8uEA&;7Wb6V)aEy8bLjhSQIy|(qc1(rFK<>1{)RR&>|ur z_~FBc18c$KmlPO#>A6hOl~;eTgd8~KQ|xZ%f8)ky@YyUOs9i$>`}NIcM_LAF&^in3 zKP)fL8qHQQ9;3=Jew;d4JbnMHw6s9#q*B$0c{{Lk;D;{{XwAj$PEL!+5*jtCOf4;0 z=E{=a-v7zcIzLsz+huz)0S$dv69BC`j{mqyx@0FCeQL2C@M)wKUxV#+tF7qPBg)wdLhUn(9};CVdV!kLEK-C}oY0!``rLDd-1I2165;4m=n3 z;o_;JboE`l`n3*SEFF3FF$H~~j$6nZaP{Td>a?Jsmh;Qr-`B9l@aI^ysDSn4zen2n zLB5TQjA}MEHif37JP;zNe39SNH`cCSuWD$4!(Ws);r)eHY%`} z@Z-t39ox1&+j(5Wg3w+7{LbT@LO@k|^%Ukn$Cw$6v>yQ!(7@lffYNPA)6?0!SGZQNs#?Et6osEJp)1Ea)N%pc=Ezfj z)<)C-3KjTW<@D*(g#)$)zr?OYMSx2YwrRgosx;}u$wpPm^vM_V`sPp<#wVSi9McN! zRSl&=$hK4MLWJNYLjONGv+fbMj&M_cCMT92&2P)w$Koy@|K4z3Muzj~(btM&k7(&T zIcydf>EP?*O}~HtUOS90)8amb^DX-L(vPR_U=fZVJoxfs_nWlt!nF41dMZUa5A;Ti z!Sx=G969bHCfQ725?sjx_nd{ zxe-xYZRUF4jN;M_d1^6X-%aAQ4rkj=&H0TQc_S7gMho9D)$Ve%Jm*( zGnqfvGYK0Q6uDkFbLPzAK&U~s&$0)ades=OsoP)%XUdsQ#cIh`U%1GzaK>6rPA(rHE;-cS|3gX1NWu0@4?++={@7t2(}Jo&S`bS>XbM!j0#?HRstI5LKbFEBm~&bGE+Ef~hzDo*Cu2prj7r&Fw?=&Wq8^&D30K*FmR1 zistg9?`jhwDJe1W80oh_Wj_k;w!Q?GcD6rA+3L;1LmHAS?W5Ov@~@UZ+qF+;y8=`M z^P>$QY|JmWhFG5-sZRp`r%e&;ILyge{W0gkg9j+{NublUribd=K*MCCM%wliws5JI zdbvx^wHv#Rx(q{{YtXSTF%7f`WYKw>RqOE!&E)I#lP-<2cbY5Tw0e7^8y};c3(|?v zoU;hs;WnM2us?`fa)Z3eaATZ+;Wppi=nOoc9{mb7;;{t`yHY5`AfY0J^g5c<_+qbK( z?o0B0YQdEI{f}l1Y&kmeP$D^6Vlg!&ThTpMMzNlBxZ)=*T?^F=Y)zfY#~YLY1DPRa z&(|S~hAv7TGHXdj14$+$RW+DXy?X5YAwj`rMOQgKkS$J&1w+v_U*~LqYcGHXR_gPf z*9+Npjxs7-mE@@lMvd8SaGLlYSrY;9l82J<1U-?yH2I=``SM68vFFZ zbT!MVG>*p&iEJNRR{x`-uM&Y1wFMtXMv_JPyj0QqYL|KykdV!>XgCYvkVe~XOo#;3 zGDT&HuQytL%bu?$fa3j%tTItq^N*lajD@P?4H}3R8>;U?1qyhWmzQ_Gpjj`euQ%&n z>R897dnE&{D+}0M(1oOB-nM=FEOLwWSbGL77Q}X4%&9)E$cA^qTeoiYfT&v62AaTQ zETd8ltR`U%q@<)A-P}Thf`TZPlf5M#;1{!snK}$X?;i+=Vmxn}?m-F9=;F*;KiJ`t zm+N9xe`>WjgiGr%b#bC-vbHyrG`Dkw!TdYwAAhM6>HCbo7c>yDY&`c^%thr9r#hjW z+&w(BB`BWbIc>-E814ve30JSEjRgA&dEb|LQ;Z_AwpRoCA9BbJ+(PAe>tuTXI$UfHb)f zEz#knm!>O9dTDHp8YG8-@$pozg{knNZ$!_=JDa(Siw1gFyr}iqBEOZH*(}s{=yguJ z{=`k=P>+*`Q3cEf9MK)MsTe#^F-YL26-MRdx%o-2cBeXil8j!I7;a6CJPHTIKt3n> zivgF+n(}gK0AGRa(c8Cg&#~{5BK${$ly_m8L0KA_QX=Uuf^VpsoyZ~D(97ij%0H?% zpeVr7G|}{+$%43-jW~Jr+4*p2N?}bD@(cErio$vwlC0_1cb{E3q;GX^n7f~f!!S65nw7Obv}7dEWbP=X zs=Mv3iA(!>ot{+N$J%JmKvJ1LK6&*l2&V>MS+yh;Hg7m9%)-T6Hr=Ce>*l|UiaufZ zN3X|dDr1d#FvCE9e=MGn2(>g?7njT4!Q7N+fAD#4vfWrbbL$_g!C4?VT`NHN_0DX| z=fLI1`T13d*Fu4}gi_^GS<}&>Wm+A)hQQd^6XI5Cotb5__4_Il+`(>Y;_gxZk zQr?RumsbE@#2nsV*UQzzdl6+)Wy)R5W5%MW*_vs-GouR(e0(KLO_vaK)h}uvdzJNA zCi$Cn0yr|3zY(Mgm|Cb*NwsAaJ1lv2GlRpdaX>}y2Yo%??G9f58Ig7&fgq8G0)tXG z3Wi<+ZH1Lnde>x->r0g-p>LUxrad(vQ3^r+ou1ug;AJ>l(=5yC{&$pqhSANpF{ffa zjraBndFfZ*TUKZ&_4dT!lcy2kdD`zg5T!*(RpPEa9PV=Wb|_0NnE2h^uHyK|+s8(e z?O0)BrAa_!t6R)E9dy>Jsa^S~8dWcB&YioFYu6JoZfn|aXFJ+;Z#Umr6-VV`NRw)S zl+eVvI2Lw|kp!lfYaGyQE9}_+hOx%a&(Ey$m!vKmuoa?v8V}RkUIw#XqM)!T6ne~B z`3;c%OK~*YZK>N5Ovy+`R>Hy}gaYQ8ahGCJo|Nh%gpM~&m3^NIFfuk~W1E+2fKFp$ zE0WV3qe_AR0+5q#0ynGY7@yPP++2?O$h6JpcTdB&1ZD!y+dw0O{%fODA1P9A^f@$} zOTW0?uJYildm%^;U4_4E?|Xh|kCXTo8Vgm|JVGKLB~vjy#(mbOXnTa9rIFJ5_3I-y z=nnHSN~5{_b3tr&_KQAkQ9{)D^Tl|o15j84HcNo3323jNurR`9qCMkC<<-GQ*vXOK z*Rwthj{240;fR`vgtZe}a_^rLd#T)?NfXpGUdiEM;iwOX`?p6R!WC$E%~@cldqz0(s1exl>pJjdwNeYmcN6v zXgk725ua$yE$zWV*BbB=AQvI(6pt>Hjk<3Amf+A(&HH(V$91~Ka2yE7&0_B1w`IST z()wS186oPa|3X!AivGHuo}M~ZI)s0SC$-Ks(cnX|5I$%(ioC}L0GlKDP49%?q6L1c zd=S}`cj|p!+t-o4vNF*UAkVsR0rs9uG_5Vx=_O{R69^0mNy)6@x-OTAZY`wgkl=3P zPV`~6BP^fs9E)fmoRPN!7A8yPqc3cD&XSX!n&~(W>LooJaY6#YW9G9VYXYF!=sl5M zxjY*XE<}7RvMqw?$t=?r>JGvvLorBVBG_}FJ#MDi1$dLuKY}QFpm(AyAJ6%e^<22K z^SD`Hz7PyvjQ%1B659ECZE}v%UWe)sqXevP5$WJxqbJN2jf|c}L#b0dH4U|ddxhzg z!~4^bLGOj_due_`%dgfl3tO2DTaNtsGX>Z@AH6E(+AGg`WF*M|mk>7erdM`Tv zynek-@B(&Y;N!=`)XoymJXW7?h9tXcl(g>ldx~Wo&8nADMHAYLL_{y7XfYZn&?mnHLlQ(++@B^F7WPyDl((iQJuin$0=_ z?ej}HQyr@aq^0NRB0dAqW_Y}D8g1qN89NRRqAlC9$uTt=sWohN-zgtm;vEys4hZ&A z8tcka-Y@1%f>@xZY^*S{OH9bXz(8R5AcO{xH)#c2aiI~!?}CJ^J!qih{|mLp3~;gy zr;6L-NC7yF)^vk(s5I@(f2yJrCfI*^7D+n^g~%ExOQWRf-1+mCNGXU#iwLF|RfBb) z`;x=L!W8rR;8bv0OwH?U%9{(40Or5|sr0SbuU>sZ8Jz2nBb;LC_&rjBBNZ@;(( zI+lzPmVPwQ9-r=saM5mK)ed${UUM1mYk!oV(iY(3by{U;qx6DVOj7r(7W#9n{3FgJ-_;dj zPivVPZA-UCud@f93(?87T$W3geik+oo!POg-@XtvPmZ_v%h}xAKw=we#C}_suAqG( zx*#+vgc~sqLYwInT4*B=Gi(bim#mYQMldGb6^ik@G`%80yY77PsVj^6Ctcxf_{S26 z=X(dhXdk#EA~-k}-FG5LS;$<@II&C1u6fj+bpyyMbnJx%LWsHKn{M&7OVE0Dx)T<-VTj1t$K3MP+LnDch&i+W zG*HuKsvpI;F_tQvx_#F!^I#6u*Shw=G#aMyN{_90l$SMuB#xj{PrRJ*jPQc=0Z`^y z$;S^Jdi7;`I_sEbp|d68Vh^#N+=F_w$G-ThUxgTsRsEC?i=Uxlj8u>AP|2kgZa=HAA@0sJm#;z{(6Gsl#}A(ku@^+_l47EXC`{OlA}?JSbq572brg5Z`Qh_ zRgfWqVH<2V%2}mjQ8jL!ItjVHt3Grw(0b9s9?&l8r#z1zv2IPtxKmzJQq+zW= z(0*FtS62G~0#iOtf%YfOv>JpKthGQ?R1{YTYG(&}$&BP0P&}|`%Al*|s)oyVFMJ#V zP`8X+bSW$cyk{;IE?th5+nS|oViH?tE8sfTF4&ij5+DpvYZlCF&`ZP-^>EVVHBW<* z)E-wLj4xj9xk(kx4-!zt6mYxN;|IALnV9nOmE`#$N8eq~dhI1y`i;AIY%)^7eTD1W zM?<~h(qjiQe5{yWAY#}3qVTmmKOx1}9(`_3c*q?(1ZYeF176s1bZmn$UekJV!U<2hKpWzOu6NV>{fY5RK5k1s@t96-N{djgMZ+^v{Tow8;mzT%kzAf>3b!jlqZjTI5*xC( z{7@C_O>XDp;q!NPlYl|9!abO0+tnJyD&=*p&?QYP>-EQJ5tkB}qlH*KJ|Cjb2U0#g zcI(YZK2EnSfV(Hl3$c|N@?f86qg4?UR2j0ph(9f_w+Y{g)uf=5Fh-|c-)&!0`%c0r z7Vu#c=s-)M=5oLWVmaK&quXxe-rX{kVL+O?h&1w)x?{*un{*Cn$*L??viRURf1 zL0^~g$;ouI6m;n1;jP1H24PtwLM-z%taQ%M_VA_E$q9bhIK4XH4EPMN(W8Ig-aa@x z3GW<{!z;vKpu%Cw>K`05%jkj6Vi>xukf*gJSUP}cn>qgA=x&Pxp2QnLY>hjQU3?j} z3+gg?cyU)nI3$@Rxv`BGaLTDp?G(@b={N>fNI`=y#8n(8nL*zXLrujAI{<3J{s`f~ zaE<42OD%pr;=MGUH~7#}Wol^_=|Ie}{}zh6aRWUtGBOgW&(vi(0^J!%VEYVSfW+p8 z=dy$v35fOpd~tHNJq|M%>Yn*kFT37iV#OWC!M$_q*25X!@sN(+{0k~-Y7~f#2OS63 zV9Y6BeQ?eKp1Zz60>KBSdRV$`K=!7c=knSBc{oK7u$n=*Esv z{_(Q4W0J2cD`jDfP=h8`%b%1kkOy1axZRpJr#t^DbIf*_9h)+YE1gkD0-VMPGYsmJ zJI!}K86R``al(fWAJCvBLJy^|t*)*RByjzQbvDUaSo+QkWB&>vp}1bM4gFO?gR47L zv+euz(IH*iGWWM|y~On0mib_yBC_&WS7vE#q$g{9@|whArsptQlQ_d0^~8smki=!6Ca4k7|rb&ChA#8z9L5@|iaw6wI8 zppGs3#bWV~iRFQ;5gd!IQN>H(YzPum;OnR%bSx9PwG06JW7 zr5B=BC!_R7mh+e#73pM8fWct~_5L%Uz#>GSmTXH^x^)J)Mv(n!IQ1I8|NgrM)2vEX zN z;I5cK(ea6iG@LH$ss1Xru~#!V5;%$JNbMuzd40mGypez5IDn#TfJeI-ZGFJgcK*F8 zO{|l7MS-C0q@aEhL=NX#Fa+SWXN4Ed9&x4-V(>YHDg?iIu?tT|^{s zrG4Vz;j!u~Eon{DqZ8X{QZER{wS`1?LbwYv$5uk4LSV3j&_*a>l2AV_S1BUnWt-M8 z13nuNLb=6LT7G40kHobX;7qLfYR$DLT1nS?-PnPDVn$g36~w_n6s+AsO*`yq)qQ<^ zgD$+f`A=}hFo5z_U`c2kk4EMQ;J~VGYEs48D`$yZul*aDl#m9g+XhgR<&ht=y`iCj zd^=$uHam#JU8oh-^OH zzauvj2Zh!}ynMvkPbNi>2Br(qt_pj4CSfilcmBNmL>xQ%GvroP@}2N+&|{z1QrOtw zwQK*F#p5!$cMis=L?FlGa8Ug-#*mfoCv)!HXY@_9##Jvdw~45ZO?SB4Zjb3ZNlQx; zqafC^3Oj!IZS$l*KHogzZs2~+bbWOTi$uoqhh=5H@k`-do&T8py~*6bvv9U-X*8ECxC^+cXg{ zcx3hggCD4i1e!OwhqUD0y?wg@eG3?yWHs!aV%}C()-*io8$1ZsKts~O?7Zvzb_DsG zEo<{u3=H!r=n5Y38tB6~MZ*y##-=z5EA0H`@IaAXma2llaDlcUasO9*C&QIZYdQ=j znX*b(S3EI^LZvmMz1oHWF82u>fq%Gr@5Py_ax&A!z@T;JpAo|M(L{dwhb{oEBXRc^ zhWEb`ix(Vt7YKs!&rsO9b7$NEpKoW7pPO*B*r;%#khWR>1{vgJc=JnJZ2bBzLqsff7xNK^k3 zn$f9a^5msXyNaTZ>v#E${DGmJ80iZkkL&8{!mY-)u(UMfBFDh69%F!TDUC;O8x(h z9uGydtwlA%6?+1ZW`>)%2Z3+tfG@BoH2ldVl?YE!GCY6o+Ydh6r0@0h{F=)@6Nh7LM3wIk3as{$dzZ+!b#LVfKrH9M)!@1JZ6)L&y3oL@!EK_ z@&k#bJ4kyHOASIJ6_4-i=5gtz?iIEnqo!(EW*3NgWN?;{&t|o|=?iFu@Jg5PU@gE+ zAdv>B`z;qf2JrTeR39NJ=A?qd!Be}yF^>4DEDIpRSiqA^cU;;>6i7{+tt(E5Q}j`gTR>WLQ*Q9HUqYdfpqm;tbA#Mss0UAsah=ts`Om+Hq< zb#)RGXDDZ>lwmCRyS?_sfo278zggm0M;hY-G}3g#pSNQW z?FqkWwH%EIfj|Ddu^$Tnf6_&mSm35h%g@i}O5KYROYkIZ2A1uCD)U*iG;njB#2|z; zxThTV5_l=9$RG|sI2(_FN16m#zp1L?s2`ET^b~P_MOKpqm_OcFO(NsH)QR^Unp0vo zY?j<#vlnQu${z5h!0|{`QB=GOPY4Dl5~0V9f&n3pYoFy=O>X_-%U~3%S}tEPkd4Xp zxqL1C*RUYZGE0w-x7nNXuYO{zx#sCP)Hyc^BMc{$S3>cl6z))sL9f1pP>b^xY;t zS?nY`Di@GiC5*R!xqSDZZ2!_54qQVh)j1IdQ1JngKf}(~h(gm+lNp>8$riLk8rT^)`wa`b$?9t*Nx4BG3Dy<*R_=C8Ravn}jn*4gNn& z$#3;W53)A?VKa|U!b@C_^AvD7fZs4&-$#mB>Gvsx5?K3av9PO*fK96Yl*rI8giS4h zgABY#$O4{tI(AEU8OZHJR7|)M_?i*|KYtGwh<;T)fMkT8T%Im*p^WMMtwE-rVD<%n zaQ*?s?KCpOZ1wRf$qh2Hvc$So6|^?Zefi^%3waI(e__a$V6c>ld|&$QvoZmOBMz-pkx&NJ|8DKm&y%?=qGl z867McP&1t5E+B6(I0HB~m9nKf2HYPT=0MIvsX+9Cu?eY|!behRq>qIo()gS7C+`EIyN z-W_=$L3{44WDEMHGt)Gn#b@AXnh-YcWsmMY&?)0E?5e|7{vBEo~W71!iPYVcdvkaf%eSg|c*%zR+=RC)$_>FgMwt83Pv5OXeal>XnXnvxH=ggphiE zTOAxvF!u=(M_&&m0)`oK@&TYTDgjJ*m9mY{TuQw7oGv>0RL1ks>fdqCVZg~&(%!jae*wuYb3vy%bO z?eeN^U$I2iFR%YFSd2uc?bYgy$$aL~U>?2B!?%x$FL6;xQ)OlHaGVbSh`ETrz# zd1tKuAKO!o>mUL}z2Cq5fw-qsrqTxvxc6@z?=8_m@+Sj1D7E0GrItZGkiL}+pTYHL zg*dWoErA=E+=f8NN^G%Oydn#sK~F8u1i@X9UdigINE$}pLovYZC<6 z&4FV`=7K;xJ_SdrZClBj@z+&o56UR^4=Hd~Tp(;1a<3v(GNBWCz2d|jLS8Wc{*?g$N^>rnaiZHlOe8QN)n`&WKa{)&A%_{fW*#$uRvhy z(F%+^y9`wCBzuNE(S&qJhNr;fy*a@+o%IpLapQ&!fiu44(s9>7#R*zAQmDkd3sA8g z0DI>3epiASO#QL?cpJ5@;w3#rZb-#Aclp9Kbc2MQ{Bk7#H!3)y`#^qj&>iz^1UVFG#=@?XI$(WLJfM`;UG4 zFc;Jf<71sXP~M1KTphwq#}X$3KrxS&VC04*MzRAyFLZFZ8ZQ1fZzjP(7a{JJ*75v0 zg}6!4Z#9Ai&hcJyoj&v#gNZJfq$E>##E&|yIRNurZiM-R%U6BBk!g2W2AxCuq$o|0 zd+L6QzyQ>FLZcOo!4TGrIq)Z#xfIhh(t{*Od>LP_=+dMX`nPZ1ck&|CxF+;{q1IH1 z|AGb>HhPK{8oss>%&yfs|GL|=?P?J!lJ@5LKRpeqg-)UCN0L&7z`(X_Fv$<@CX@o5 zAqlrBbQZeMaUX!$oNkE9TaZamPfv`JfCn{0zQz({5SjU`a3zBSWULaLP~K6csKoTr z#p?KLLtwh?oDhFxJgZ=gkjH2lh0uF5j>;)227?fUke>p`88HnOk65u$))gW^n-MOK zT2(FtI`TQ!99emhYziTlQ@9&T0Bb@n*aioZYe(=Zm`v3F z^N&Af$o&;KNJ#rxmV4*YKDmNt6|9#gNjUJ|TZA00q38@cS3gvMZ9GEEC7EIgwL^o- zL4)?l4S`Y~iL@2)s!>sq1Cu?lEEoo!KEgJC_97W&My`QHJ$r=u#NoqVxGKRp;w!FR zX#bc~VpOqgh_i&$uTWTHe}G2DN(a9;ZxB?OI&lT?zY%1<3mkhzl}Nu$fjP3!estLmvVY45`Hqd4TV7ECb6~qc_GOufLiWB@I}B+d#FHfEdYOH0QnfW*!XKIHC0jxx~s$!l9PrZ2&v^6 zRpPcIwxp0x^0wfx2^?wpj_0xhxDcLo4T^M;Q$hZv64NxpxqmNiA|v9W(sxFg>)|L6PRVuAz z=nRb56f%p81qy=AG5+fc@&PRt#<|#n?yfE!Vgo^V@Tai5I9{{@m-;YPG035j7UcbQ zY;g#=9w(J7wATIOIY={fOi%!h79%(!$st26A1<0KZNhp^UfZ9iKz&C#m3{mFy>H9k z4V=DHC#na{`Rm8?PWoojYI2PzIZaUpxF^K9jXErOkdLn+ii|;n5LYMS1N4J<5}K&# z$(XwV;C%{ODG5N9dA9wyM)v_w-Koemow`zS{^8jkC*%VgGNZzPV2Csqa4t8yzg09+ zL#HlUQiq5|B=TUr(4H;4nlSQmIUURx*%nd7MpPgoI!J#1QqBnpO)Cv)9(TR))qpVr z@I8Y!6;cQc3$rMV0amb8Wh7d@;O#-E0cOfvEP9)ePD2ePF*t=lzTl*#9pj(-rb?<0 z{(K^5I<79Zp|8d3)*JOgx=-aZe*GEgN(D!?8GWoo(poRT_Ae{Bg?HdpEaIbuH@m01 zdj?i}Q*GJ6!{^7Cl>xbSK(NALwMIVf%rbvKnh_Ln(j)ERH<61d`J?}QO8z{E0tI=W zi_y`@&PDcaAOHtnsGyK&B5kOHQFV8B59cG}v2dJRM1R(k7ZXj!+5tQlk#}Yx=FovV zu?Pj9T;8vQ(iogpzPppVl;9$zne-GX66zTv4Mfp^p_~-3*#5tRusLyB%)_I=b33M_HQBywGOhA%*jt!=;B7HcTLKtQqe7GW1f98=H(#Lm&6hx6(bt& z;6j_cbNQuojV*bYZpmj^1f_kksggvUF_I=9(tYXo*q41Nkoog__?6ghq44XUAgiEN73wP zLvy-;0fN_z1q$(_W0%g7i)7&2h2u=C=nrA0jnp?^&#Y-ja&*c+zlUmERj^H zP)>zH*PgYSO$UDq2y5Il|C+jkm3p8?R==yemu zp|yC)PhT5<jyAq^O2t#;t+ z!CVcayClLN(Z&I>22S>pQFtPUV-oubfCL@)f{+4_AR?&g7;ZH|rX;#Xbmg6*CP2<) ze5}dkLClm0)c=m|`ZIplgt#a7v5g{OlIsM>Wl*Rx92CkqEL$TnE{$Aua%zIZfxrd} zAS(hWN7~ZUvBFm9o=Mflm)82PBoT``+UroCrEw85qe$L>G7Pjx{NhB#-78{;i{}mv z-J@+LM;IkG2eumo+j-zFP$Uk%*06v8ds@uh3en&dq^Uu6BR^^I-C3}g#383%0810` zdlIRhd=Rj?JV`+7m?WNH9$pW2Jit&*7;s2`iCW*a!yJIJ1#VCx_>%4(O8oj3WDRly zK(=KN4`#9T*;Q!zW3PaZ$vrVJ2R6g5MlKVBTpB_l>>+MGkh?#(5Gc#qK$>}kI~9}H zndIg`q$mu^$>8nOz;PC~o$?&U?P`#pP&T(%!Z>AlRJP~#8UaK(vUXP>6yQivC$orY zAd_@hMhUw*EM-G3-~f-CLfnNYHAEsMei-$74B;eWkGt4<|COMK8L(qi(F(<;jcg$t zl0)t(`Qqdf1h@;TUMS+7xwj?3O2CPeGHYq+e?K_90{XXN!E#gCnkpnIqCoQBcA8G>h1N zRvyy#f(W(71z}dm3Zxa)L_`sj&ldIIMu7|3!1yFzC#hCGlg(`Yw{Jf~cnmVQ38LYx zQ2`iE^h8kuv1z#cBoUCDOnwkM#vK0uTGt0si*mRbi(FLMbnkdk>Eg(7(n({Yhzvf8 zmf;W(GK(@`6JuT%5eJM(xDiZ1zUcUL50|05G8XWWF=N6mLSPPC_Su;3RWPsO-tw zImtc770VyM&RlTXot}*`QgtAPtO#GU@|dhsCweiuHbR2IZFZS3S2&+75J`DtBbZ+B8kDAhW8gS^_$(v_g8aY^Qm7Gp#(rcJ z6%K1U40nTKxM_s^zu12NAuY*t)y`yOhmE-QAx{^02CdXn!c#(!L<_G)w!906;u&6s z+DNz_OdsG{hZ83*in~n&2X}u`1hnE$T_R8hcf9;nUQSFVq-YZ}m(yM>A?X`q`wj2I zoYjM^11E`kj%SHvJ|L0CiI^ghgORTvty|$ms7|f};}T zI>>YbUR3_s@vb&2cevUKghT09#-ZnDlqSQkU~?R^>yuz9CqxFh#t?#bGrB!crtLHC z(aZ=G{Rzaz75%nG!e)>mTJ)IAtL*trYmxHL#h(b2@E2^if4TmNBxph~p#LBm0O*$L z(T60E4(g1FoaQFK!>{+H+2-}EPA8L^)AUP-hD$bq=mjeFYhU7!clDo(U)R3cEe~{s z1r8MW9Y0Qulw*JjL=eZilerHvJA~Y>4Gr6UKPUMPlfD1811La@WRjgEa%3XnmI^Q> zLqbGALQB$r$(elpl>IP8TBX7rCi<)2rypRvBC>(|{w>!f$XEfn%mvvS zKGur}M{*AsZm;ZjSrgzN8vjqpSM*<|n|uWMbz1-5)c4OH85p)a_@6rRzsUUGFL?ju zU*z%cpRbqy?+^IjH9%1RZyfxeTZ3*lFgJ%Fg1TS3M*MtQ`u}O|*!RF%e~n#T;?OV7 zN9wW?>I06(#4LPT&xnKroIrS0H>sE66u5`bve9Dki;K5j4#WspwM2kZ2wKtvGh&tw z_gksq{xV<~WsEMUA_)(S*?7M7@TlZTB~qBy9hSAT@411ANfUK7Wl&sP9F~5C-rnA+ z`FTx1H8Qs=iG~P&tZ&WDweL&AM_Az}5nmHN0v;P;YawV4>0Sj_NfJDw>g~Hc8>-a@ zMgnl02iy*^wZR>B33K~|bSAJy=j%}lgrUgxyP2AEzmvrP| zK--wQ+1I$Q7F{s$3KHoJ+{!TO9BK_jj8=G1BjZjU!F5)cB|$eTF1* zE~jd|qK4akG?#wpE@kxBlb&EN{2ED`aLEY?(H`<((8ELWX4_$1RYVRC4F?jaSFBlDS|V;?(k@@va2hC2Nn{QqBEw)$g)2CyXk!up z9Us|6VOJvr%|u7h`-|X>j+;Auy*2pVKO%k;+jKBN*_HY zuH~Umi8Xuv)m!4J9w)!^-hos45TZ!0KzPq(tXUy$d?L4k!JSUOv zcR?1Ah;45xB9r@m&$utT?z#%epUDcnbVX!leS3>1RL5n)QvN^o-aH!XzI_{2-PP0RZc;?*?kbs*A|W($5i-wILI`D^ zHQc3=q02m1$V|vQ)m;c7a|lJ|Df7%eK6;+tyWjo(@$R+Pe&4nBTKih-Y2A6cT;J>a z{d_*>c^>C+9OvzlsNpBCiMSs<+Z;V8Ls3nj(Vk5F%u()=vWOG{`m@N$W00y6Y8$NE z-okN1WbD(yz6KX!SO@>oIq+U;7Mu&w(jh$$nC~g#S@6Srd-H&IB-y+WIT4i@akzs3 zVSj5XP}o{hh#|X0{@;tc`RT1Q6)xZp2_A>uQ7mv8(k<}wz7FNiD*)a%V%dVQE(c)k z3PAz%{0>OMZ+M!+!X4SX~{sQF3RMhZa~qt(I89sS)C{s&hInD4_dM2ci(d7jTV)KrITX~Y$->uLCwY2bD zID)rpq702DvmYiV#~oJpqw}h?+MPlwdlaF7%uykbsPDXpa#a$b+E}{sHM&q8Q*L9|C>`P7VbGB&|%s`iRHUq(uTa zj1o+!C1Uh8<2^uXa`NjV^}r)op+@AP$s0IHH0FqNsoA1ntm9qMXm%MMl?9%R+f959 zK^##f#}JIc%`6saiZ9NrB3*0z(|QmNR&+0k;YzVB3t+@w&in@Yz~?^PqaLHnsBhg@ zQtaDjVqK`d%9(kH*o5OnBobx?vzJIAK-jO_whhNY^G0O2DRiX>u?OM~30jzFED;es_nTHB;QOdus3 zG|kC!rsL=!6H6cB+C%&a-1HFGNXZY;0YBlhAju$aAqp$>c9E*YK&1snf*}?&8}5@6 zq!xiw3u)j@kR^fIN)DS_34CzUV+C+kneMc5ynkB;k$x92FL;AMh5jEiCSrw;MavEh z4X|PZYD|(41iSt#wVsGWWuhlpY})edx+j2bS>)y8oD8U~5}DTY7?2u5)m{&Xk$6Dh z8B}z%l>v4lk()Gg0ML=H{=`>ZPeR+GQBcg`@+D|Ug$NG|x;jXj)QBcYtMjr6;(NCx zC=|8ayZ`+21p=lN4M<6{rrUbDyScko%Dk;dCZz+>d{yT{Ai$Z9}f z^5L9c85VMznSiBjaKy=<>2M=3%D+RrJA9mImffEjv334QYPl@p_yuv0+Yfxj0mNh< zpO72!$d{N+IFUdgF!@mc?Y0+jyvS^>-~CKB+#c%wY9a^)c~1HqSHZ+D5Mp{ zvWcLM{AO*Mpmk-#uYzls5zal5p!@h;+e0MygA6@GSehKf^A3a%okx0b+}_Wg-MIh5 zF>~(2D6ucC6w9Xq&;dUJip2`I9qU?^3joCkahj%qu#5Il{y(Ac)UKDZ+V7S5+ILs>|Hj-U}$47ehgh5Zv9EJhxN;R^cNoq!1 znL!#M3lbcOdMpB`*)D(m-5(+SCT{M7ZI{TY0>cA-1f6(F1VHXSd}BEf-Uwz*APB%N zBqxA)B4{|d3wjv}74W1|P&t}FkwjxfxTrXG$xesh983#4BEqH^B9dafi*(TWt0c#z zyBd!HGKAVthqh20@{&(zl_FEE1N+@@Y7dyNM(BwZo3?P_=I+Xtnme6O3Op@lJ z>a74i$*~X3A}s7Qs7`76XrfH(mZL!ffjuxuy{Rt6lH z7O;$^c@s|p-^gSNYB-W760Ra~8wbo2otq5E>Umn4MUK`1c$26QhX?G$XxDxA5^Zg5 zq)UfJm>5ZS3Ck3=z&6Ag#bIa#69NGWNe=9mB`nm+zKFv|Z*q^f0(*WneAd}v^&S## z-`n}tKA|Emp>7&k0b<#~ib8Y@tK%H)r#B-Ad=9&TfcFafF&?HNWZ967foJxqq=c;^ zObcHs1~+d28numEwp8>FH~&Nzopz(z0@7E6rgZ2%JXVwgcjvz#A>lTi%K||K-;!uK zcCoM|BIp@GlA&A}AatkWZ}bqksl@sm?G3NtlW0p{vtG`HXQagv8YQ}01xYRh#higL zEAbx#>p&Z~NrgBR5&4-cd*O>R_aE-q`D{?D0S1F8SCU=?OsFfMD%{(P$xLb)4GY zSErZC$vH^~2Oo~NFWJDWD}D?Ws5b@c?DO>{JS9XJV3Esw4zZKd(~ZDtYuzK@3Pg)U z$TZkvW*znR3HMNN+nv>rm8{4pZ?hiX{GsD@6%wt_dPpkBQbnP|89(X4EO=c;;O3Y8 zwL>Uuci8Fk@YU z+KE=yom~wgYcwJku9W%BABio$F|mddr=s}EsrbzmZB8yzI?~8Nq$XyFq*lQ3Lwb$M z15pJjd>E#Hl>7{O(q8`l{)nAEVlK|(RXDGigN__OUZcqaZ@Q2v*bABul4_55P*7_Q zdY*oTihlrFP*P{$o@C1+pD8zQ&3Fuz)3rSS_*2!9j`LHGJN!+RLTz3f;sV?kk*pjo zXl%2lr-?XKyC;x9r75j|A#`{;j7Mb|UtqoQFpi^r4J z|BIZ1$GM>8)~_Bnk!0?Jb)*;i5rC|@yL*0y-GecCCfr=4O(puIPemEDKZ~4r)cNBF zku|;h@$WT(_E2ipDk9Z_u$oHRO>p$2Pzk*WQPVUA~`zLk9iLl{;<*f|!Bvfni2GoHW#)MR5_mv`tK z_s%JRW!WO44I(RXJV6B3nCzu_JFG*$hPeMD6(SwJ+@c_LbnGL4vR;X@sydiXV0xM& zYWdvF$!qD}<^R0`6tC|X98AF8i^oOMA_=(z2Tb=^oz}KxG%y*cCm0ve(5TQ%UUBF` zXD4-MI}Vy%AoWv;?{^Ki4J6fWZDxaHIu$v=;MsK1+{?#tT!IG2jSWy3+TX+q>^%*Im5$EvuF4Tt7X}7G2vtjoHOe4)Tb)KTnL8T!%xxp*e z74{yPFV~}b8SZ?Cb#Uwph3i$d$b-)~p4&rE4BF&$VW3JZQG1d+#GD%+F|7RWi~!~Z zr0DPiXZ8!E6W5Qz10cih#7%$=4EaqrCj4{aJ5l!p6$TM|%9{K;K7KxbFtK-rDHB&n zi_oS~U9hr4hDTn(#Fo@1(m6kR#WJ1_ND%aS33`QuG?dc!ge{DC z^kBinLwG>2EkeFW22?SI#MK^lePogs0Y(vJ5bRz2I^l>#T=TA6@ya$~WevYI%<}uL zRTA(AOHfjBN$wLMl!GWr;)z3l5ZYTIp`pHBUN7)8j6ru}YzW0)01)VqJYYuD*}(~W z7}>fvP{d%vyudBtA#EZL!1{&5?O9snGCVw2-0;v7gT*7^FOtiIad5>LkUiojMe1&x z-Qy(!*-_XG`h(~)%chwSjWNj=<;Q->l5TcV(HcnN4ur_wl|P&$x4e6%nGUNoTxehBA$XB?K3c3~K#l?;gcUplh~FPA5_x7E4j@3no{BHettBKsWP+D19LU52 zlxyi^%GU3>STvev1$bdZSV{;5v`Cnt>~Hjbyz&S?ZN+c{gaR zJ?iG+adI8~zFQKhGZygD4`M4Nv*45#Q8Zlwu$)*XBrL3v2l1|3kv$RO0!^vaA{+S< zmeMFV+)T7*NGHD;wLo7|dMx9!-`+>pCP3!%y0IB1;6`egiNXs}N(8L^A5lKQRRqM~ z;87%gOpqyGLeyC?v$2K9;TgVo{fbq4$tzHjPNrMooP7pbv%rU(m4_=)j%W0F#D9e; zL1v{KD78iPljsK>l)9r1Y+VGFO_wWqN^fH}6Y@6$W)b_kZq>|NP1pbUO z1_q2B!Kx_6La$9U!_<#%kv}yGTpaA}nP9of3sOmlz7t744wT-+C`-a?Oc_MPDh7Ge z9R)iRAo)jlP$;(c>SA@E2m1(IYGOqZ0fe;}DmDXHg6TK!BX#aYVO-^2yhT4RlZQ}8 za;(tnuO{yH^}LdSQ}7molV`9Y0dGwe&eo3C(^?VeReZY1}sYQSU2p7m^LE3nQ@OlfE7iEz{Ww(hUTPYwEF%aA3z(;@6 z%NzY~Q%_>^MZ#BQr60@bwzh|s`UHyskVn)Jgr)(;9a*AyM1(egHxm*UnZ4w^b_Maw zGKM5h&2hc8m6b2Z8dzmYP(ot9r3x79DSHZ<7zmjkcy~Ic*Cnc^oFfwnvH8eeCyahX zIR(PcK;#s`d{_OEqkV>GB@l5Mt|D*}6}b$SG}=07e3AP^zzpP!1XkoweRDNuk_00x zFF!)q1^z+!Ki$W{@|F%cB?n0O@_5);;DAu_r`GKQ2E*89oaLk@NiS@OvN#dx{VSqm zLSfK|ElVtaaDtOrv7}5=!t@)iqV-VaeJnk8obekO1Umf;M?K@C0|hrY~APEXl zOhC+6_2w3`Ko9RzH97ZuLdU@6z{oEeSdU2H6B?)z5?*BNs77l@*)6-LKxEk}{- zh2Kkntb^r^SRvH*ks2SOvB7w-lI%PN@^%9k;(S=Qdb_nc*8%xkQ1%| zrBG6qQ@Lrd8WPtQW%?LtMb8c%SKKvPC`S=#^w5qUD zkV~sU^!eilI*^{1cif~jbzM?Y-hT5qM>xV0BCqP9FOdn}sXB(Oe~?QqaGLKY{=|q- z1cFDxB#(`l#y$)hUJM==yik0kyUfH_6T2q5cVY4_yDJBC?aCG(zTJK^ayi%EYmO%q zA2aWwVr^|*X+0(ZRALgz@Cr!=EiL?lNCf!ix5G$I>fobCGR*E%wMOF;OR3E=lrMxJ z*}FpN`t%VYnh(x~L|KMb1aTFv!zv=$8MrCEyqV@0nEg zM5;)-Opw*}gFN_o;P%Q=ddC8W(TYz#^eUv^MfNlc3pY>|*bl^`)kX$}BJoSYn}1qm zq59tP`{M**k?<+Gc;#yE?ixmS__o=B--NoApW%U-h_dAD;Qn8}&67DQOpDClW?O({lcK>#t`>&5;{(p7c`nzS_k%EYbnC4R+%Qe)4 z?rjb``u0nhtzLb9XW#1892=irU8N)E!*TKKshTJZiVTpv*9my|JKTJR4SAX ziaS^$BSDkg$@AJX$4Yt0(T>*I^ZkdI@oc{pEi!bk@~8Lj542?s2~Xdwyk8__^MeN3 zxl)EDyVEc2_0XafQB0TLe^AdbPm~E4Nfw?SF0E=*@zv&xo)&s5SG?J|w32w#0DEpN z<_;3Hd6}e{dz433wmweoBCBQJkw(itE+Ll|kJh==W%>;nX6oq@rb$VMONQHWlP7~S zZnhRD3fU~Z%FC-UuAm7%@z}9#TWp}kZll)M++)*)5kR>H+|~K(rb6`*Pcx3F(9wBK z9U+pb8Gj+mp8@J`M_ze(UFl5eWRo?nPE}GrWszFu!*R_iT-?+6+ea}yGqYrjXkgsD zE^W_)_b-yyZ>|n^sW>U<{QZkuh1MHYgRLXS_w7B|zuSGEKs9AJ@2Fu_!J43x7D)^X z{M4eS3>iXXs0!}pwulnLI-bHn<`$b@ZsDr5N!q>^~0l4+~{&w`yPCweN4#~WCL?B_yI zH{(x;{%7r`BM-upE48y?n*aE`vvt$T*S+fC5qb*L>_x50N}2xY z+2}aA^iA>^Yrb}7D87hyT=sQ41* zhde1OEigc`wfdF5@2`H@9qybktR+mPJ!Lo=bANU`PO`N)h}YoW+*BVsQLfF6k59_A zozA8`i&uRa;xXLB1tt}hmLKZ$YLv4fp>gSfxDT6+Orqv7g}zz`rWOt#&IqhOw=sm$ z<*iSa%Zc4OUy5#{HdQ{@&us6eo0L-A;vsc@e@q2WFX>oH(#|z?JkKfBeR)H1V$&O{ zY}ns1G8IOL*Ye%L7~8`yMe(ljt&(_Q6$h=E%Rczi;MEBS>9Y8O$FMv5$TA?2Uhont%u zl+st1M5eRcCz=_mrZw#b}++oo4xxwL!shs90LB zB7|zz5Fas>sPXCj{Z|3OnG053%~nduV>v};D~7ssbQ1CxE<`4^XGPsoJI;xvr{?ga z<6^qufVEbZrJA0k@0*yaqH<-!sf8j4|5b49iiM`!`L%=GZry_0cL?~)=U!5h4iY-= z=AWz#qwS|VIbvjnGzQYg^yKTraOnmshvF}uoqz73uv^Fe=qX~^=x;WZd3PIE;9=9ZQ< znTvC(J_lEB?U|4l->(wDf+uV>Q|VmxHfnR)@{7@VvYm$>RRrbUj@6f8(yg`}2CAzegW9c*(dS?_zOAtwEJ>>C^hTJ6B!u=f6#TCA;2jhzxsOdbpXFmv$r7 zS0N;8wO>qcFJ<0t=E#}$E&E=!iHIqZ!}^)$)2BWZ>44+XlSYkS{!vqSd#z~omc^yL zv$hU~oqm{zY;g9k9`RU%@Z@xZ<+JWA{1+~6+$CX-0v4~k21ONal!@bB`MWF*A~m;< zu->wG(mv~Cg6fMXi|7F~a($CMGjVFYU=?2s8axg2QKXQGci)}iR?m@lnxCi(I%M(o zR-2{O@Rv*L9-M7oIHtIiIYM#3#`#rs{m{zUbwFVHtH6u<5AH_|zBW1g{ymK%OFvDS zpEdn;o2(Aj{Pw0-cUoI@=N+SNZj)wOPP>yDXPfd@SqS@swt+UO_y*G}CDw_bE4R>l zewi1UzlpCkXEJe{KS8JQ74J%_OBbdWvU`Iwvzf!2JEk8GmKOBaCA^-qG7e;RNOWYZ zk5N`L%bWCI;L>`@I_Kh>aGHgg`Df74&~qRDfxnkX{rHEY#TgsB%AnSjaPv#7dsNX< z_foq2hC6=wlG@H{+^L04U1i%e1TB_o^mcKoe~lbkcqnz4cSE+#^1W^z^}{->X5fC{ z$KBj6RC(VV_paXWF)Vxiq-bM5%h;)LsxK3oTC{yRmAojePkV-9zke_3pE)Z#Bxb9+ z!;@ixV|AZlYHa+P&M`TB_#~rL>xNN$jET5$(%@7B?Cv_rkT1 z;V@z+&DR*a!K(Y4UH+1~U|L3*ZyCaz?`UNdi5YAeWXjIWZVr{#krc!F<}LaroQ(|b<;&)`R<0o-%u1;rIZKDd z_8+@qGu)D#o?9bZIj#Gs z&-<%hIBxSUN~PcKleDw9jd5-bdNTD~P~p;0+gpydkxC1*fa!CNN?2AKN5k*B<7Wt~Gh3ZQW=p;zQ{w>kcjsq+|bJz{s;nwA{8j z0Ljxk^M*?IJ)761+h+!641GI@=%rU0LS41$-o`DPyjA8V)YEQwjCGglJ!{8PF4%WW zb<04#(sDt*dx=z`wgz_or?xh2eBPB`oh9~Tlne5MM!Ds?KVNyjFnhT;Nj2@>=zP{L zeeNMn3Mw+i??6%2f`mXTI=-&8{ z+-hNQ_u{czKHc2vhnHJyDAZkLehpt(mki|393*je$4uE3NAFlS<)XWuYfro4$@#-1*32amV_k@jOm>TOp%>!| zzGd|hIaAt(=$^HIz}2PmPrb5$vq%^8hX4dOc1D|-9ioU&B>-C$o7VfNvB6gDms)Z8 z{i@^IeBHa~=-y~bc3;BIwHjG+ikhDAiH;V}EUwx zR>lQKq+H?OZE*!sZ?K2`;StiByL<+5V?)x{;GNE{MJvCY!O_ozo^$2U#JHR$_K3AR zc&NKRp60~0FcjH2*p;@FbH1NKOYey8B{$aC8 zqlxl}--4?u6$7YjNk|#-xgEG7-XUiXd0joYlJ5Wh3;w)Y5%G8hp#0BIPI{6A`oF!t zo_@Nbr1{TJu8#jN{{>aNi96_OYP?qIaH^bae=D;_;<<6=KFRIjdJ8?HYPi~WE?dSo z+A{v)dPEjEt}Jq$@`~@ne=hR>!M9?r63Xu1>w@AywunhL04h z2y!E_5uX`IRz!#14A+Syl))&Cyl`QLE!aGm#D)S)upyzT+orO{9ps#(eaxn0qG zgN2F6q==-BnS}*_<+bg5L2`odG?+OpGn34L8ys2=42qgD_oASkf~h!52L%^);Jwfv z_%#^P(P^)S`Y(2B#8TBZi&END%3duR5fQPAan~X7_3H(N)R#EXi*`q+?ZS;n&5%$% z0|WmAQLcPZDf1MVkSv(_FyX@fIrx{n}D2RL`?6^rj{nG@X|=`;igju z{633C@-_bY^)JCwUp4qMX+fQA(Vi|X%;F)BA4@bf5vZ8DehuBP?eo)%oQwC#Xh=ZY zM7vwm;|SAx;u#2z<{>KDss4b}LDV#3$c6P1IA#Hkfci?StK~p7RUujiK%|7?3BG2m zl^V7CJ1jxq83mAe0Kk4DdVmsmcCbD@;zI4{FPG4GPxKZ?RYsIUAD{A>cXnDZf^OoS9-qDH`Nkb-!vsGzW*Rj z^4T2Ak*IS~9PF~ysZ4weJ(T&@94CKu8%LeBl6kMcT`Z5W{?HvHY8+O->^D6ZR~Xl5 zOdB-5+&@RVK4cZyU{&}pR9752lNcd+`maQVl@#s_9#asX)uXsN!vyAslI+XzyXs~? z$Xbrp_}-YF{YibS9bbLM?x~-WoApRw`iSuDucu`HY;T+l&g>YPmOJyJVDIU3UGen_ z9_OMIJJOlvCfv*{XUq8G$Aqos62=PTWjGs6-}L9z?P(91ck1frUz`{iiEE7X-RKt+ zGq_eN?pBx3T-@@R)_j}xxNka`SbLAx4#}C2?C1X z(PBs8+W`zmwG5RC3!g2YKYz)Ccj*>D5QL-tax>>EC@B=Pudj8R6TH*^jDbr#DcprQ zAR#l2E4$#Mssl@`RV&X^%sCfzUKZK1Z#1pVA=7>AXQl7!*_D&(md5hE4}5mbT-21R zFNlygCv&8m(?(t>a|b2n*(JD`vH(h1yKe0v#-85ZBd)f}%1=f{*pYuKjAxAWy~8T7)500e!BSTH3(-XYX# zMc6x%;ZaIS+_B6c?-At-nY6glmT})R+HUL647NI&`;Fl0TK@QF?Zbx;*`aMB%3`$Y zaM(n{xPeSjGz{gS`!06%i>Fv0o@Jceq!r880&OIF)d^xQ{+TNF6>4uTFnwmh+vT3i;)}T+5SzQtz9dRylVzGQMy)l9)4}L!f2%1YdtYT zl@2>8g@lTHik6szYRQzT+=n@`wNw z>2}e9ud9NllhqG^uFv)cQ!@5jq0g&y)AgK7kDRIiWk z4NktkEE33X_FT!yv@JtHN;#q7(}DKjA^N2RRH#upmo_U$th4I+F&uWI5U7eb#c8?1 zzkl?-L)rHpPHLIIK<1;xU+!hT?0Ry}nIqrobKEuR2NNHe!;Yah#6Zp7X+z4Cko-W- zhkrg)WH=w+vpJSwWVrjaKzmGL6la6#g#K^770*8*Yo#bf3~78uS5&rc-CE|u`=EG< zPm%G&3;_?6cU{D|tG@B%^)cE*Oh&4OGI3qm_N|9mgzreM9q*|R>D!@{^D`cw3XWZH zkbp_#Na1WvM*$uNkq7W67}z<-@)x8}JN(0QaI(ulL~*QM1+OOyThamlpAkiBc@zUy7LxX4E%RuR-1GzdX+ul}PG z(`I5oVhId6SY$d%9xAc|HepwgQVhZG1&2=_Oa?U4{eB99xIkUHue(89T)dM(9>z7P zy&=e);mR3#^Be3|ATxrG2S;@l$YSv$BcSYYvrqZ|1H1J|iZtCjso^irbuoBEv7+DC zS2Vvb&Rm+Q!T-U72UEjhH}1Hg<|UCMzh#OgU%B9NTvwmVyvNpkq8wskI###lJt8C7 zgtn*NY?4H=7XN;4dZMU6RHMO4AQZoNk;Kscg&)y5=959q*2778MP=+N&ufgDbG)~* z2>QL6IYrR3FK><|s^(YrGq1!-i7gJ(tUeTele%|5vy5{rjecD+AxJy*|d|gvh;dYeo6wSZIY?ICn_ITcY;PAYgTaC-cHw;SwRt01M2M}C*~6JJ?ipIsT=>bS$IkxWPy>KqmgI0`m{so*w@yrK_{JSYorL;(62(k zi_C=)37Y9_d-W&Y&iaA)rP%E{8H!YbIN*Fq=iosm&2Uoff-XW9Y(gYxgxJ#C+iTm| zkzr1JB@r+?-Knwbwp{1*g`=S5U_c+MK4Dzp*$}?D{lZKNA#efn2UjZ|7QZn2P91K~ zbk-@u&NT*kiWUhDM$z7JaE+krlP4a7;FWZJ|Gpm^7cFaJNH2*b7)-5e^;uwu_)#GJ z;eMaEjf~j9e+GWk_{&ry4lGf2$Sah)*3!M0clbF+N zSkv6XDxJf%E=$xn`5=F?#?w&Ma#Z;QGaWFXH(s8yG8(nkefZFIU|?1E!~BL~gGwJc zXXgT;fOnGoD|u2L@m7I4Rr+?=hZ5nbtSHXH=^?QzQIdJDtP_JYLOu|LZ~OLK+7fW9 zAR%3kemW2U;Xqir@1Zx26vm8z7w|9 ze?8=?Tg^G=53X~GP7}B8`zIwo=#;gOV_yE- ztE1*aZ8rOhM$y>vqp+L~`6UBUdfw+-sgEzsIXE1K%SWP4VOzo?NDf4OO&xT*0#lq<&arIpNbD-0tfdPF<62OwP24oWl(pF+`CxjP9V`dRbd8*q4g@iZ^rfxBvaP)e* zi#-xO*WPaK<()-RG{Eb_#p92D6IuWK{{qYDkxkkoFomqtIK*tlO99ze563K}o zr|@Rr6pMtt+feTGb)BPAZ%>BTLF%0HE?Zvo6_-^xZPylY_e@huOZma)-1LVG$KI;tICjAjdPw)U;Eo+E z8h>nO+_h`o;`mg9A0>GrCH_0YUB73FSnSm$N2Eqq!oFqmIe)&b_iMcV{fCmBJAG`= z4s@~|piw}7Ov_kjmZ^*qTe?6dOf)#|-+4iaUDVBMdY`Z6)JI@r#1&}E$qyc{XMf_4 z&IvtE7QoLn2`fE=ySqz)xMFsqJyIaE`G|LCsFLRCi{h*9&7r+AIrGL19LVb->;L8X z*o(q=;~1wTyTX{#mW7ODZKtRh^zs3!B=sxlG=A%Iff`Ax#d^5f+v`tVN3i(f-%iZ+ zI^{1m1e@Dfcq7A8=QBwNW3_%xF=;E{EH&QhoKxn8?yhFZD?QGNZb5sIw4BRE&%$fw zoxXqB#&6uBhPYL8KTzRk=aBEuNzr6`UrGHEBSj~zn)a4}Xi8h{LF?hqLH;oSAp*bN z+U7nnz3~KCsl2m#@2(!Z3Cbib5=saSt+lt@(IxGiMuv)vo=?d6v~}?PrNz#6?^G0I z#1$#x6BW1&Z7isGkzR4dg-V1ZA6tx9#^{l`~$KxZ@K}iroT}~=FxDvo<00wLy zv$iOm<1C|4l1}Nv22#JAaTsJ~aL2sC%EC(a{>cyjojsmJ-v(Bh;-?dZUTf(740p6M zm!g66VAjC!=bji~-^$trFLdKm@U#W+XX~Q5>&F44KB9>hz>>GjJ8%@9Q84FKN z=mjp=S+F&iyykAPLhF%aa5wh7aI6=gQ0M9Q$zko)XIM;A#z#k|=Q?|3TAfSMS>Ps{UAhXY-NiZWH19)bj#e zWr63%4K91w)L)hQC}4vDK-}z0cAJblJD0TmzW6C2nhf5`dHfobL2STKaOu+_#_b%% zhV4bE4QDuI8CqZei97K%sF#av6JTpU8V1ItfhM&F=gEdC7vc|rY#o6G+Lk#`2!Fz3 z6`G$o2b*ynYtMb|t)0i=5ob5{^Em`mHPNzWT$-aW6a#>~j^0D-(I^&_vX&W4N_po9=$5jjZIfxg2S1CwwBHe#Rz%=?FK6pqr`@3Hk%O)az#qT`QElGe+^M1ql?x_Z?k_ zOIXF6U)2wsECU^2S6R_==A%ROGm0&ar zjNY{L)zTsE8X1Rdxy(+FGc**JRQRKX#NH&hn(mj5e(gm*>`-DFLaF5r?I?gfS{`(* zbLT8hL5n>)k8vXsG(cs4QNibV4r|~0J;mv2Igw#NdSQNS^i2{hVJb1YrC$DC8?_Fz zOWiM?c;bWvpz>8p=hv2&0RrMo*i=8GkYO8;!qT?4m-VS3+?Rz2rV+LyR@*0(4n%;9 z*pgVbf$pltx7OCWNVzr0S^D$o#p+{g4R-C>8F{E&#jy7iFHWIEjew9HjEsgER&tJO zkEm2J%V$;&9ir}VVTp=2*cv-m+jZvn z8;O13>dAqIXo*ZnjYF$gJ+Q^NxjExe)7pu=)F`R`=E>lVTTkk^A3ji;T`)83o!ZE%eX_!d(gAJ_jw!~4kFh7H7lKl)7iNYP z%!j9S(tt!&&BfjPac*wFGX;;Gw@FC&^yz=%24LtJZiIHO`YGe594ZN3gLm+pOjCDfQluBg zc{&-WBN>LVKOPjG$RN@Dq-j%<(|Y>&Yvb03dmuWw32;+`&$R35uD8}7^jU<=KS%Z+ zNJp|?w=D8Zn$q;E zzpr{-H4=D2ukM9ep?tXWnhB-ldjt{jo{|;o*VjBCz>C9@0}BMas=7GGL>94^^EZYT zm--spNtuP7dS88`Q9ze3?}KoUkrty-D?Y=zGizKIBkz51J}%f6>tyWvB>GoT^9(jn z?CqDU%K~_p3Z;QLq^9-x-lX)o3$$HYRg85Z+iO8rY%@BNK`3EdW1g7}~rpQSGz_GG@i81T}*AspzoB{diDN z|H5oOut->}wfPgxB_f2GMLI*o-tWQrf20oPo)Rt}%|7(Jwe{Ou+e$^JIXQu@s$lVb z`-aQFW@yedeQ71t!#F)AQ`X|X7qgS(z~0C_BAVUk|HUbFrNoH(+TjnLPAoNIjsSyT zq14AKD3te9J+`@C**pW3hxGs5`!#g_SYfiAG3oqiQoT`8;*OYc?J(hRAOye87gk=pP^ zf8pb>H~(}?(V-vN`*#}{AhlAp+7fO#5_e$DQuIF$H-4)9aQ@+@U0>cU=@iY6d8UuL zdhTn)a&{1k&SIfFt6dfNaJ@pl{!{w;g?d z_1LG%%A@b6{$3zn0q_y<5wXI#}MA*3Zrgkaf(z1se{61i7`xrJdBK-G9Iu|IwJg zu4AZ}Y1DG9@TGH3*@4w zc%~lqx~QKk{4lkAEnq1?=sap(1#mWKgC)(j)VXfgmvhDqjx67@&oVB|urRTI7~i8! z+Wejs$rlbT=9|>QSmId`B{s#E_=S_y>CZp+11|_Yb?4j({m*3F2JsAQEpXC6K}yUl zsH@y5P!&m#`-;dmDB)cOXBs0on(eN>2by#K84`Qg*No%?L=_?0;IhzNHc0-z8hl6>NGMC?KVu?7{@0XFF@ zVRI?0fzQ+aA-fd9E6!>?6cf^v7Dd`?czq2SDOl1ZTsyxc)d+oQrq@H*Bj=7n)kQ?8 zh^fTsn2fSJ9Han_3-Kv(XAxFLlHQ17zYCtrkb1^r2N|{Iqz?{N?A~F2()Ht0O(fYX zgFJyclCMn$+o8aaq!CdW8T$iZK|S9-ooq=juRrxZ2gu>Jslc>=Xi144=!y3E>!9F^ zkk~>aOAj~k@E!+%T149h|AYo~kSt+IL6wJn2eA&o*p~~WqImG&eCjx4273Nq+P?A- zMwQ#NjjT)_%4v^5nYO2nD>rU`*T$da@ltG4(N;{$d&Jqqvk@EGDpREoC%7+rSr1EZlhR1{UAKikt_7;BV(0l)z z-jz|3I;ODlN&o)i`=Lw!7h%A@6(-(){hK#-E4;`5`uqP}S@1vo1%j`wR-aKH+cS42 zJ9YN871Nognz@r#Xkey@c~%|ACoLHVsJtt`YrvbwHN%DNwx1tdsQG zG;ocLPg3P{aONQ9`Mjx5RSGr2?J_GoHebjlGN|~}?VSj8IE>VHgr_TW_mwA(a`~B*%U$+H>_aSA| zShAV;Reg|f0|U8i^<}7GRYIUy5dMxMz=nZ^kCDnA)2yd`mWPDL#w3$91yeOFWp4k{ zZOyWi($?-a;XePDCaC*o&%U>x^nFEG7W>_=5cSG0);s7qJ1tGpv4}AWH<6Y@ zGk=^>-IozxL51QQlY&qzOfFiZQBrbmu|7pB-nLW!v)YUB5}7YZ6lfImWAaWxaDj+ws~%-;PuBxZR*SRmoeRLyo@rfKuq1{Q*>pEPTE`RUUUaP;%@Ig}iw#kR~U zXIpgf2^$oLtRuEPAze4Q|Sp(?kh&$k#e6mRE=Y(j=bbCJuLPmGWG<4 z>RTrYO-_gLOX*L}%`E=W6Og2t|9aK=OQe#3#dfG{DV|_Kf31S_UVe!mzER(@$9LDi z94Jv2UFPxS(GVifJaW}gA(-M`xZliZ5O4BNQXC0u z?dlD%9h%0wEr0!z1FCp2&&z<CG`k%2WNgl98S85=q8oo4(%8=X_0>PQJL6gB0D!BKG?-%Td z0%CElh2mE1RNdbYmsE2|r~dANgSA4t=*}>`Bm~Cqtl#(aCVzIDXCLoyHqW-xR2$o+ z;^$ao)jy%;R>`_FehNIASi^{QLOBL*r1iAe(inST^tzD6aNbgoNL7Cb*tr*)()6gm zD)v*G-`E8oz8rWIHJCKBuw==!Nj+&MTwgv(*#6igA+KgWE{wHMpc;s6(l9&Bn0vc# zBmb>786Xbc&!iI_)RL{YaEI_;^p_cK%t)6?cNpj34ieTtrd~%@hQa&m-ZLA#qoru; z=x5Zy52-Hp-DKt1uAJZUItmV7{D#e!$(N18#cgEx6wTYYEb;GziRZaN&!vRW-GVqk z^eZ$7!kwtjC#BKIRsEi2fPZ4%j6!YSGA9SF8$-`n_uh0u^GQpFd?)xL`t8q(7x^yt zcn(#+4BeZqS8<)CEnm*8Ku!byd~UX}T}L&Hz%715xpmo2dz)I=7JKrFxrJ|b)MmSq zLy9mRzGOO)OJ!+IQ`@U@wC>4b3*Ywv9tyQkCV&gf?Ps1~2YR+SP5%0EkTif;n)0bQ ztQ)2#%hL_YjrdJMCKjs1qAXk+gluPe3%eh((Y+IM`z_nbMpGzJyO0X<3}G{8XPuII z>SS#6l|E$$Gn59YaaC4(GeMJr_2eMfh==mZ%D=X=Nzt5Vx~1|b^+m8Ns83rn;8oM6 zShP`3VQ07(x?+%(NE_9}+=IA1At&QwWOx3;MCY^;h+E!^|D@@czOrda_oZkRj!w7e zpwpP+Fj9b8Ucuj{g=qw!cG{fd+;d9ctx=zVh!WZUiKcNH1=Vf2N>X24U)qMG7rG{S zl=NH8s^T7@Us85Na{(g5>+WvD(J>`(N#s`uR={%;>E38SroX@Q+~|6IhrSx$cpk1Q!xKGVeV4vcx|#4?UC@tHK~hUNT?L?M zv95=Q$J`rZ@vhI$wdnVq2H`U%#RNyR5NK#5Gulw-p}0;=M^|GwM6eEW4Tdh(Or|>s zC{+0~S6|442t|Ms^jb2H!k?g`LV8{&%jf(Xz`b|+t==dP6}6B74J1yrAfzUGn$M6^ zA?|O2Z$SO@Y+iz`3&-!|ytP-3^{wdRRhRuv^Bg&%>Ojvdk0U4Ds7-O(w&y}lQ+Y?V zb6$a=va^IuzpHr*j(hnbCZ$9n9`;x#o=%INKFZ~S)7j5R+DeWz(0`P#Uh$$Xpq+b& zx^}E9C1&|#sOXnyodsD$coknEccs{d;JErX+1l(n^;yl*k{yR)L0P9o5|Ylp0ezmD z9}#R6D%1$q8k7rVxT!TS50)hMj~7e3uz;R`G&oZz91Yh}AiUV`P6zCY$$-fINe+e7 zzfq4TR`T%jbZCnXP$eF(Uh{w;71_DVT8^Z(O_h(HN+hPogi!@xZsWf$+bjJrC`!DP z2b{{O-sQzp|Kubgcl8*>D0QQ@VUgCnuJBj3WPq^(v~q7vKj8&A>P~@#oLw#$(;qA*{Tbjm0^YZvE)+qB#p|aLOE2@ zlZ;NS1$HI`bZQdRMbJ6=={)Z;J;RLLpp#@ z&Ca|>G1#x-atDcY+nztSk3KKJt(_qWqFm#I+W5rTs;VwPG5c7p(``TBeYZb-VC*^M z0xCbwtp(_=;>jvjZS%m@cx*zA-GfIn<}P61w-!~RZbUbOGx%cm9Zu`?M#s^-yR?zM z6VBhHIQ#-Ye=So=j0fYYAE*^!x)Q}pQIBl6pe&S^{a;>pZ7LmKc(@7TI{8>y5qD*& zJeCLR+CTcg|A-)TNCqyoB!;1!BS%iDIynSa3Wti=K&O(YDreQ#CKbg|FCTh|TQT95 zQhrOK>+rXHgL@pxO9bnrHA4ddcVJnAf$(x z5h>dtXMBML&eIq>O0l!G|JX7-J28Wn19i%3ruWX`Y$G$FSKeUnnEB(6;-rA>=!hL< zog|V9B5ll_X6;>i;5r9&A4=E=Y;!hFQC>Egu;h2S_3{7RqS1y8BZq9*S!1F zQ9xT-VD$`~G_CI9R7tmPIt?WcGM1+C-TV&yf7B-^tH}?3yW;ODT8m7a&v^Kp)li-2 z#nFcwi`&w4*<@qO29nhrAzoZ|N?6H>>C@=#d@R45K#!Y3t=@2pcjqn^ZmPNY6aVQAa#5 z-;$>qvOq!Bk+S*NPkR=OpDw zdmdce`hjw@w|B~?dWzjcy#?+16Z|TIlNMVVj7lDLHK#ZSZtSj#AK%Sm-1bitgXg?+ z&(z^@4V=35F)!CpsKFV-m+#~yXJ%3eiI;%uwt~Ma8hR<0>*-3PcOKGj5P4fN)XLKS zu`CT4SrUF%EcL@2GKZK^PSaif#*Jp=n8;cF{*uC|VwsYe+4%TE}-w$0&i~bMx-aDwuY~A+O?pC(}*{xy#h29D%AfiYR5a?D>7eOQo z2&hO-k~7%aMv^W-1O$|vkt|tTfhNaA4oVQoEOO=>6Z`D?&bfb_`l`NLw{G3bAG>O+ zy;y6#?>pywo@b2TC>H6;I-6q^FB`XuQ^(TzS->&v%EYRvKotYUVQmSM%E!NHWE#G( zGr#_ZCbMsNl+(hfYEh0^)Y$VB=b8CbQTO?{d-uZ(KU8vwW>`m%v*hljtf82jlHcab z8irN}_wDrw6f>xHn7iQ9zFOYBcI9bLRLe>y2bVx72XRQkVt5pNVHB(~eYT$T7*h{Fuvx0s3X!?dbqghmal_z`1&SGO_2oluyqa_P+413} z3zw1_V#Zk>NUOE1?iif_@%H)D*s(bL)H9-n> z+O0;S#BncW(ow^&K1x>;wN0DDS^2T+i;EuG)JWGYJ2lUm$L;#6sl~*jcnwtz=BIW~ zdmExW3g+Itx%vGXy$!+a{C&~&4?m>(9wIJ26K9Z9toNNLZ!Q(|4e5zYOKFJ-+?^;JJh@Hx9)nP1(@`|Jt5yL)>_litTvEK8)= z*D%u1G3P8TS)<3miza=V(?>1Z^T4hV;mk3;bCAx_mV84svTjA;@%oqRKIdf!PRT7m zW&qs&-1~bm=cEC0K+pp_4?g9+fwC*O?+oN$bXLY4PYVoc_Wh#H!bjOCulAZQ_mz-- z&^^iAbNrb+Y;VnVy+_G1=bMFT?x&KzY?t7^`97SqP~|khn^4&X+jpFN(Q;UM0B=$e zrl%X|0Of)8zH*skPo;X;1#CCr7BDp|T^ zDClUheD{idy!TZ2Ew_Yy^}%vqF-+M+V&Gi}%&2;m4oLO$cDk~;Yo+{H;f zR33w!SeE|0_G=FWER%ZDT=R6@LuYJ0MW(!e{mZDk({Z)xgJn7L$d`pnGp;RYtSi|})qhnApBWyh9k>f4KEhQ?cmg@%`r*~vS-W1gL( zCU@sY;e$v&<&Ac1>Kja-wj3`cr%-)a*038J<&3`uaw(ZAlyw@YS|MH3zjvzrTIs3% zJ4Btw?y;A3t&Wc-8!LN_T2Bd0CHV@OcX4vrb(JVu=190#-Z&X+_~jm#w~waO(b5LT z(;M!N-uP~~zUCP`!{cl-+HwVcY}s+wMj2Pwvf0l5YH1 zr~B(674E>q{?uH&6Iev(|Pe;^Yuqmjc8QM~=ro*(buvq5n!7^_(k@4QZ{ zc<)ggdGkkxLkk{4rd`oKl1tJs?9u=PnXa(#C1!k5)Aj$gYM*-E!Ql^-61>7{YD~b3 zcpMR5oc3j>B`c`pSbx2$Y?E>2)!C%71_R8}FAFB9oeIp}kELMq&Ls*tho-P%`VeTX zpX1M~#oy}48F~9j%VYp{7aYxV1av*i#j>Q<{$iiDrfxG@x}{|-UyVN-#pe_E$T_< z#LHQy^uXy=#;Ty~%SAp1lB2!4WoO?Jy?Js-n^ApZ;G$iv52qRWVYTuf-7YJ*oQqe9 zi`=RdZ8HA*$2jc^zRYv{TB7^JU8XNfO7iBPswlFOBEv$u0h`{d(~Kt`*KwAf)}Qd0W7T9STKoJnW?(ALi+0}~n?}g> z*3xxnj=wVQ9{xZ^&G<{be@Pas--a#kS2^j~%NAq|?gXiv+4Y=>akq}n47kOKQO(p7 zoiwA$iQhO&Rg+tP;j+_fg|62_IGbg_`>(pXQ|gYKpPEZA6+himUwHo!@6+sy@trb^ z_PkoD7ZaMyJncO#B^iBDzS3Vpe#hx~;0-apr}>+BCG<)YpEksQNx+b3x*QVEv!~5( zRmuRYqM?_~t`2>@$TMz0;*hq}US zuO>)+T)-rJNTn*9t=yL%FmMQfzrOh2KM6OU#||6ieUSWoMr zH${@mVE(!1=QdF*;XkhKGccKyl?4?gVeLJeEgEnBJWAYU^J!7iFU_R_#vwEg1d_uQ6^5@$`-&1j)5 zMuTlhkEoH?TU~To_7|6{DtM2yW|+6;@7uLDPv7mIs7%_nZ;fpa=3ifZQo}zX5C8l6 z@OH!Txsi^`2fs>H7O(6a?*9_Y?>`*7pvfTUGGTA@idJ-~Bdc#JdhKT2wp`-Tc+KYC z^hq+tq`N5-lYS*>r7ZQcK3^~tYMpI~u_ZsS!_jxjzCY;U{IwL;5~Zm^~Mb>#dc(xv3B=ZN@DKR z?A6|yY`&1oA5B+TP*P8871hi%k1PO1t-3fJY7|m0!-tdj(oWWe}x3=L~@_uk8RKbEvOQd|<2R8Cu*L8H(`roYoPo&`g zDla)r!rz}K*g_*_W8`0%nv5K{Nmi%UXJ(&^9y)Hy-{G+LBQfLSZ7Tk_e!lwmyZ--S zkoVs)#{SzW-T!@o|9chibp5xmy8jbzq=A=BTQ?XD4sSePzdpF$5O<^G({rPcA2zUj z$|p;Wsmb69hFRClI2hXIok0S_~{aaQ@KAaEtHJ_w&S)4`wG+0MGeB4iGl4%LLik~(1y zz4#po7?AUzFoZB&>%sQD&mxYvmu!9}G+zYH8eW^Tv(Os8ph=7^B@NGhg{)(vj(f8A zsD^q+4f?y&qp#U)`-g0MPdPg~XFBAiZk`!Wm>v}0eRd9~0ps?CA4yN(Tx&gjZ(Swq z+1-o>-k`Ttq6@RvqS3cG0QjPd9oJjQrlo(BH3-`D?Z;4(#fMn2+}8B|;GbXMbX*Ng zAD~6p7hTX5&9n$H{JHAw&k-56OLmm{@&~7@o*J^EaU4AU$dEosgV*a6YfZpWNZIE# z1QUwa!nbb7zx=mO!}JP@*{;#1^O$!LR}r_$u^99?4ZA;lBw|c5LlqvTQPRSow~T}4 zlp9-cj@8$z^za8v%kxk06})!b9>D#}FIOAZ_Op!VK!%{>vQjYFUlwtCpt_VLU4Mmh zW^s~*qKG4zzodmZ;qE~ipwR3i+0fIfq>?Nfce@+BBYd$H1|O*X#DGF(Kbcl~ebD%# zW-%-sD;TOT2zXH$!YL+}cVX!-sGov_jrLo#Cl_oX%Jv{3<7b~2G_%Z_XG6qP-u@~P zQgnx_>m{S)!gct=Uw{$A{UYTTMtgf=$P7rnPRr|*Xv)=_LYMNl3ciCI6gU2@VhK(+ z?bjeaWrPwm*XK0!_d>261jDt{+=?n>q*<|#^}E8ONQOs+zJ<}W&yU1sNWu8@9RKw(Rd2}$(nLPxT+wPcZ zLWd;!y-YLO^@Yj4rcl={wgY1Y>{IJv;+BV`5dfG2T5;ugQHook#A0}JDK%0rp@}nZ z%|D@;2L*JJrhwc@eH4JiA~iRc$FYC+{Ip~4xt#ivADAgX>?sewNOj!;ScI7ThRY}Z zK4=LIVAeqD;2G|e;LPID9JlFDaiHR5UaN~)2@w!kMG6As(^RM!P)Ssc%oc#83)87y1$GYCsn#XjBaaAAJF1a%6KF^%(eV;$S zwht11lD&eKEa90fx^-Q`baCq}x@IQ`Qv;|9kg-l1i8&pgJ+R~-{=gT@7W+P;3C53U zH9ASS_jgl#o5j`j+=xO)BmjsL)Ib0h}Py7z)GQWty zN;DAacJ~3#;J8%!2U~^s*$z^YBx@BBBSF0BAa$J`I6U2IO^t;Ah&NaN`@=Ur8`5IX ziaPma<~nVOr(k)-*R9K|CaOXWC+dx~cx@H+^xHxvKG3T`$8j|s)8(kADI9G9V0#n} z&*c#0nV@-{HW}qU%F82SQAdv#arl+Sos*-t`?qf3`t7@X?0xiwix-i-Ds65~Pnp=I zb`5!#LAQ0r%+0}Ced;tl7y}}k@Stu_N))$r=Ea%SYhUsn4(265lO4&6+dAjr=A>@D{qUiv1Sx(2Y-0hfO?Z=46?~C7)oFa?Cu~ zUdiOhJULm^o=#Ow?tBd;icv`)owU|yIY0a=y*_S$@J*ypq6;15-?2VaW+~^oE+w;< z)zk==xh<}plqG#%3@jRxRkrui(Jsw2?N+((wyf^Yqk1)NS23}e$Ss&;k+lNw#giqQ zH;E%#%3=QU_7}(1zIq-|$+VK9D1zw+lZd@pN17JyTLnUVi@NqRifLt3ooZA+am^;b z&UM-Odzp_l&6lV)OWq5{r_szM)Il^WQggdAS+c%iR5H{Srl^Klf~DQCC02)^CxXPx!pS^;mQZZTyt?qvd<5BA z|MQnY1m)G8OE!>|p*vR}X@*Ua8hQA^HulzJu=~CkCUs&mfHr41Cijq|NL`Xs&fj>5!dvPh>8RB@RWq#l0v{TfM z^FdaW)SV$UaN@f1n;#au%z8OxpR@Z02pqTUjV?k5J&JfC@F;v@X^8#6Lc(cRm)QmE z68e;4^DdID7nshz(NR5>&<)R+|Aw`-yn?-{ zA*D#J9()z}7wrqwQ?f`)S~9x&Dme$ar`&(_YE?UQv8!OIE!R3bO}{L$oQY?@Pjixr z78xz4XNAz>i`%)Ce@Vggn6@aVnd#chDstvbtesapHF8o9GX)c-GVP|PH~O)Nc^HUih27mZ0!<>D(ri#NpEoU6B- zPt;Dke8a|)~T^L9bwK%A2^|{=+m{L9HTGj zdpKy-b?F$SwU5_ERe084q`r?vTp6!LIorReCZUf7Mve9rb4=tinn zb@A(H3FZLY` zRsfkxL0<*lCSebMJT3%qp`bW3|#!)_wXDld!2Z z0nF4)s8hOg+VBm=|GJuQ+?tUJ9siBJI(hnnM5r-{e7`nq*l(UPmB(NHa&D4RGAnJ# zleW09_%ag%e{EZn=Gyp77MsCI71R>kc;_lkNv}}C97oBKQ2OItzqHf)cRb9v^224G z(Qbo5Yus3$^-k*c{FQNKdsIZ;JdDvYjYz0dg?tG-puI>q(&M{AK2|R*iz^ZJQ*h? z*Lp6rWOeotJ6FM@1oe?EkXRsfxzbzGZTSLt8uh8Wk23Antqlm9d4^T6*s+8-2T=kl zJ+O*Wi7?hnsF9bIhB^&}J(iX!y^3LUbEtr0t*EsrnB;u)g01>NuNi0lFiRv)8UCtjR zidKXX3IMVKGyci0mq@uXX^d4MaY*^2Aeq%RC28`OJK~Q>@_Q>C%mju5{1;#^QUMB! z5{$tW%tO(L(T-evM;D>hRfnG;U)P#jakToHL!QaFo9)WGY=E_HpVfzR8I18pvehWC zp=dgP$-8dcH--!3iO5lCJ_T=9{=>KILw`b3oTkqoVd}}RBx2!*j|(+;1-W$Nh@(e_ zd%LKklhZX@^IM8XN=YYZ%I!y+&l3tTU|oja3F1rFt&)tKLStgQnle-?y(zhBj;J6G z9@T`U7#-u8o>o=)GKjG zW^x2}PZ1G534fTitx(LYWfvUl2L(y+=A;c+#HLmqP@S>a4o9XGed7=lYZ&nSBI!eW zNq0XcD%$2y3H(Ob%>1u9(~D;|srfm1vr5J}$!Qq z>uXQGN)iAeiD{<~JYr-ULP)Jfp-awAHVKjhHi!sx5UWm!@CgVglK`#B{t6C?h*jU! zh>Ko+N99=oEVza&?IzfhGhG&}h@B8v3l%sNt4hWZVMJo`ZnzMX(cq zNsL|%`(Dz?V7kjGU7Na6shJ^Lv@AqwCgW=<-rM$ZzXk{=!=@M!cg{-e3ixU(} zxmh4e->ZB^JbRm*aX%LYkG@HHhWZe#_dfe}Lo(TyTz&N>+KVODA$4A->GJ47i;n4L z3}pLiN3K{~#H5pe(Re0CyG1zP| zbCPv56JY}N5{y;T^kLm(xZ0x^lz!t0I#@~a5<@R;OY#N@DaJXd^1JTYA4}i8ru-l+ z%4?HA4YyLfA9G{UO}n!V)(N#gZQg8DF{?!+uAM=&%(dE|2@`a3yX(cvhOrktSz};p z<5d5ZB$41gP{}N3Qc05T5p#=dD(J{D2m@9}B>@k3O|T~V3~lb;9s>~;qvIZyIMSLH zue8)uGM}?OUO(UnPZh%s>XGPzr-t0G_p(s+2eroDi0CMR$rR<@{vF}5SwTO zG@BFBN9EcWHs2>^Xgh7`zi$+|Pzf1wlO)^}mz&p%q|1?Y{@eY~u;CaTx9r#nUEnyW zk-vA(su0b&kNdQnfr@*?6LQkUj5nR8XH1I)>S~vJ6Q$}bhY{G>Pd%S14)2xo^(+8U zzvRlx#KRA^v#Ve5)ezas{Y(dr8MPdK4z%cQTYGw#8D=_CZW5?7vIj;nspe&kI-tlG9?i#MW2sTDD zAaiR>glGs!ms5%}Uy^!}x)*aJd_;F|%Q(q#Eguy?ni&jR{_G%EHAkAk#=1CF(<0m{ zv9@fDHT_c}T6qNHi-#C7Gg=6;T%6Y(ezBJ8G!qX(?O_TDHdS9LaGoPkX_R^_GgaFR zBU_#nH|w~It9-wV^NHQ>q!dSfYD$;k5H`A|L#pIJ>j8l0ynd=))x3S%k39~MK+aO@ z{=bs*9jzdrY`b07pHY4qf>Z0g$D6VY{A|}c4=maSq|v}ub8FnVQU?qBmCkQf`^iwuf>F{n>T`AG3D!-#nkG0r1Y z1!R#>e~q~`v|i}RJKE#Un|_hKapM{NCA_+b4+4)!FH1@htqzs=3zmQ-oA4&>_NsO49mXkN!kS(G4f$q4$I&Nl))AbBrI~=PMd^DxaIq5tkQF;Ta@YU;1l-9$>LopMd0?3ziWzBk{k zj;VboI9r>87=i`t{=7{#Pyb;(d5C<|pL)+K$jQ>TF9!1?OQq2_x7qvA_D zjYs|{Ys)k!il;ft6cjFBjBs0!(^(#OF3?VRlQr5BLaYd=(6BUQLbfly^~u_%-Jgr@ zj=s`9JWvxB!0tQhi7zm7o8f?o<0GN;u{sZ6v;tlJ<_j*aXI*nM} zf&<+T`GM+74;fM`?jU$w2euS~pi@o09tU?hk5aVkdT1_CPj%OtJiniKodHGx;u}gH zj;>iO^3qR3?#f69Tp7(kLxEwDe$=crOG#?`zD9IyGxR@l;!I=+FJrH`#h(ovfxYjd zWn$J`X98h8nL9VxQ6N0)^$vb8IsPW*xWHbI{c~SF&UZiakWb+&Qh=DTG1=By>XMWR zM6|g!{qdsqYsyGbIPJ_+-!{)5C1bc6u9xdHnhQ*>Q9l#u(cHC#`;Cv0(LPFk+^FeA zy+P&y>sxBArk!a<_fA1>T-!F|ZqYD|RySjAe!{BG%$1qL`?#_u&QqlWE_V)S4;FXH z;H&!m<3#{BDdG~#&PzOaUYSn3)FFLDTwU3$Ke{sQi*WK;5D=~?9hJQE62X^^P~%2f zQ-~In7zBozB7E!;b)b4Z9eE5BJ8IiIy*wfyXI9}kI$*cK$Q#enCxF;&dOmHXD7I&r zd6oJgrE_B94h2ygD!fBH)?X{R0plQ6e>nfuZK}a?vZdb|X?NXf7DoVs6h$;#X%Uwg zu`E^}kA|~6NW?mtA1pZIUNVMzKh+cJyQ?jsLofs)o#V&PmKCB$BWU$)Zn1A_%?Q(} zwp1}Y4=sQ$Rs=@26f8bn@Ysr3Cd8+uQ1SL3F{sFG=w<~*LoDd#Gel?{Q*{G{PKc=`CNg|Eu}jz#|!3#PH1qVw#b+W9B$dYw7~|SZg~ZlS%Xk#uJ8};*aFv1!G7QPV7t4#wuIC4Wke-6;BeCS z?OQBTz2iY?D4B)1pQXs%?mkF=(X_#{u41aPZg-;$L=%rZMqYNt*+kg$1SlM;_Hu(!9CbCp|!|p8w&` zDaFaeEI@=ws|l44JqukoDUYw!@SO(w@dT&P=O=SGkECd$hgV5Kvc^`fz4AXir`KV`l_XO;<6V7X-B3b*+exR%p9D{UzzGk`avE zpL@*Ob1s1i_?(@Vs4W#Gy{EaRX!QgmkKNF>t|Z^G7Y!%@hNj9cX}q(E+IdhSsKitF8`UyuE85t?{V1)X5GHl&i zhqeL-WxR07Jij6ZEekTDrrIn{8xcw!(9n~*Soj)XMQ%mnH6?9v6m>Fz1 zTD<;v|LT%oP|p+M;bGp9&jjCfOewO^Uf$NxaXoz%0AY=6)50ZVigy2wR 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 a@;T48Aete#_xHI35AHs`lXJ`9&Hn;k8ioP@ From df08c45dc33add62411658cb523dca2f2d9639fc Mon Sep 17 00:00:00 2001 From: Jacob Ioffe Date: Tue, 4 Aug 2026 16:19:13 +0000 Subject: [PATCH 4/7] Address review feedback and simplify diagnostics Signed-off-by: Jacob Ioffe --- .../harness/retrieval_comparison.py | 30 ++------ .../nemo_retriever/service/vectordb_app.py | 76 ++++++++----------- .../tests/test_retrieval_comparison.py | 5 -- .../tests/test_service_vectordb_app.py | 15 ++-- 4 files changed, 44 insertions(+), 82 deletions(-) diff --git a/nemo_retriever/src/nemo_retriever/harness/retrieval_comparison.py b/nemo_retriever/src/nemo_retriever/harness/retrieval_comparison.py index d026fac0e5..a86d1a2ed6 100644 --- a/nemo_retriever/src/nemo_retriever/harness/retrieval_comparison.py +++ b/nemo_retriever/src/nemo_retriever/harness/retrieval_comparison.py @@ -383,9 +383,8 @@ def _percentile(values: Sequence[float], fraction: float) -> float | None: return ordered[lower] + (ordered[upper] - ordered[lower]) * (position - lower) -def _paired_ci(values: Sequence[float], *, seed: int) -> list[float] | None: +def _paired_ci(values: Sequence[float]) -> list[float] | None: """Return a deterministic paired normal-approximation confidence interval.""" - del seed # Kept in the interface so each reported comparison has a stable identity. if not values: return None mean = statistics.fmean(values) @@ -416,19 +415,19 @@ def _comparable_rank(case: Mapping[str, Any], mode: str) -> int: return replay_depth + 1 -def _paired_delta_summary(cases: Sequence[Mapping[str, Any]], *, baseline: str, seed_prefix: str) -> dict[str, Any]: +def _paired_delta_summary(cases: Sequence[Mapping[str, Any]], *, baseline: str) -> dict[str, Any]: metrics: dict[str, Any] = {} for metric in ("recall_5", "recall_10", "ndcg_10"): deltas = [float(case["modes"]["hybrid"][metric]) - float(case["modes"][baseline][metric]) for case in cases] metrics[metric] = { "mean": statistics.fmean(deltas), - "ci95": _paired_ci(deltas, seed=sum(ord(char) for char in f"{seed_prefix}:{baseline}:{metric}")), + "ci95": _paired_ci(deltas), } rank_deltas = [float(_comparable_rank(case, baseline) - _comparable_rank(case, "hybrid")) for case in cases] metrics["best_relevant_rank"] = { "mean_improvement": statistics.fmean(rank_deltas) if rank_deltas else None, "paired_sample_count": len(rank_deltas), - "ci95": _paired_ci(rank_deltas, seed=sum(ord(char) for char in f"{seed_prefix}:{baseline}:rank")), + "ci95": _paired_ci(rank_deltas), } return metrics @@ -468,7 +467,6 @@ def _slice_summaries(cases: Sequence[Mapping[str, Any]], modes: Sequence[str]) - payload["paired_deltas"][f"hybrid_vs_{baseline}"] = _paired_delta_summary( members, baseline=baseline, - seed_prefix=f"{slice_field}:{value}", ) summaries.append(payload) return summaries @@ -481,24 +479,6 @@ def _write_jsonl(path: Path, rows: Iterable[Mapping[str, Any]]) -> None: handle.write(json.dumps(row, ensure_ascii=False, default=str) + "\n") -def _read_query_results(path: Path, *, mode: str) -> list[dict[str, Any]]: - if not path.exists(): - raise ValueError(f"Required source query results are missing: {path}") - results: list[dict[str, Any]] = [] - try: - with path.open(encoding="utf-8") as handle: - for line_number, line in enumerate(handle, start=1): - if not line.strip(): - continue - payload = json.loads(line) - if not isinstance(payload, dict): - raise ValueError(f"Expected an object at {path}:{line_number}") - results.append({**payload, "mode": mode}) - except (OSError, json.JSONDecodeError) as exc: - raise ValueError(f"Could not read source query results {path}: {exc}") from exc - return results - - def _write_trec(path: Path, query_results: Sequence[Mapping[str, Any]], *, doc_id_field: str) -> None: with path.open("w", encoding="utf-8") as handle: for result in query_results: @@ -809,7 +789,7 @@ def build_comparison_artifacts( "positive_qrel_count": len(extraction_cases), "modes": {mode: _mode_summary(cases, mode) for mode in modes}, "paired_deltas": { - f"hybrid_vs_{baseline}": _paired_delta_summary(cases, baseline=baseline, seed_prefix="overall") + f"hybrid_vs_{baseline}": _paired_delta_summary(cases, baseline=baseline) for baseline in ("dense", "sparse") if "hybrid" in modes and baseline in modes }, diff --git a/nemo_retriever/src/nemo_retriever/service/vectordb_app.py b/nemo_retriever/src/nemo_retriever/service/vectordb_app.py index 3b84b9be2f..7901793c94 100644 --- a/nemo_retriever/src/nemo_retriever/service/vectordb_app.py +++ b/nemo_retriever/src/nemo_retriever/service/vectordb_app.py @@ -218,16 +218,15 @@ def _table_capabilities(self): table = self._db.open_table(self.table_name) return inspect_lancedb_table_object(table) + @staticmethod + def _is_fts_index(index: Any) -> bool: + name = index.name.lower() + return "text" in name or "fts" in name or str(getattr(index, "index_type", "")).lower() == "fts" + @staticmethod def _create_and_wait_for_fts(table: Any) -> None: table.create_fts_index("text", replace=True) - fts_names = [ - index.name - for index in table.list_indices() - if "text" in index.name.lower() - or "fts" in index.name.lower() - or str(getattr(index, "index_type", "")).lower() == "fts" - ] + fts_names = [index.name for index in table.list_indices() if VectorDBState._is_fts_index(index)] if fts_names: table.wait_for_index(fts_names, timeout=timedelta(seconds=600)) @@ -235,11 +234,7 @@ def _create_and_wait_for_fts(table: Any) -> None: def _fts_unindexed_rows(table: Any) -> int | None: values: list[int] = [] for index in table.list_indices(): - if not ( - "text" in index.name.lower() - or "fts" in index.name.lower() - or str(getattr(index, "index_type", "")).lower() == "fts" - ): + if not VectorDBState._is_fts_index(index): continue try: stats = table.index_stats(index.name) @@ -281,27 +276,35 @@ def _optimize_if_due(self, table: Any) -> None: logger.info("Optimized LanceDB table '%s' after incremental writes", self.table_name) def index_health(self) -> dict[str, Any]: - caps = self._table_capabilities() - if caps is None: - return { - "configured_index_mode": self.index_mode, - "effective_index_mode": None, - "fts_present": False, - "fts_unindexed_rows": None, - "writes_since_optimize": self._writes_since_optimize, - "rows_since_optimize": self._rows_since_optimize, - "last_optimization": dict(self._last_optimization), - } - table = self._db.open_table(self.table_name) - return { + health = { "configured_index_mode": self.index_mode, - "effective_index_mode": caps.retrieval_mode, - "fts_present": caps.has_fts, - "fts_unindexed_rows": self._fts_unindexed_rows(table) if caps.has_fts else None, + "effective_index_mode": None, + "fts_present": False, + "fts_unindexed_rows": None, "writes_since_optimize": self._writes_since_optimize, "rows_since_optimize": self._rows_since_optimize, "last_optimization": dict(self._last_optimization), } + try: + caps = self._table_capabilities() + if caps is None: + return health + unindexed_rows = self._fts_unindexed_rows(self._db.open_table(self.table_name)) if caps.has_fts else None + except Exception: + health["effective_index_mode"] = "unknown" + logger.warning( + "Failed to inspect index health for table '%s' at %s; reporting unavailable index state", + self.table_name, + self.lancedb_uri, + exc_info=True, + ) + return health + health.update( + effective_index_mode=caps.retrieval_mode, + fts_present=caps.has_fts, + fts_unindexed_rows=unindexed_rows, + ) + return health def resolve_effective_retrieval_mode(self, caps: LanceTableCapabilities | None = None) -> LanceRetrievalMode: """Resolve retrieval mode from table capabilities (auto). @@ -537,21 +540,6 @@ async def lifespan(app: FastAPI) -> AsyncIterator[None]: @app.get("/v1/health", tags=["system"]) async def health() -> dict[str, Any]: rows = _state.total_rows() if _state else 0 - effective_mode: str | None = None - if _state is not None and _state.table_exists: - try: - effective_mode = _state.resolve_effective_retrieval_mode() - except Exception: - # Health must never 500 (it backs k8s liveness/readiness probes), - # so report "unknown" for any failure — misconfiguration - # (ValueError) or transient I/O / LanceDB errors on open_table. - effective_mode = "unknown" - logger.warning( - "Failed to resolve effective retrieval mode for table '%s' at %s; reporting unknown to health", - table_name, - lancedb_uri, - exc_info=True, - ) index_health = ( _state.index_health() if _state @@ -571,7 +559,7 @@ async def health() -> dict[str, Any]: "total_rows": rows, "table_exists": _state.table_exists if _state else False, "embed_mode": _state.embed_mode if _state else "none", - "effective_retrieval_mode": effective_mode, + "effective_retrieval_mode": index_health["effective_index_mode"], **index_health, } diff --git a/nemo_retriever/tests/test_retrieval_comparison.py b/nemo_retriever/tests/test_retrieval_comparison.py index fa504069fa..df7422f7c5 100644 --- a/nemo_retriever/tests/test_retrieval_comparison.py +++ b/nemo_retriever/tests/test_retrieval_comparison.py @@ -185,11 +185,6 @@ def replay(_dataset, plan, mode): return replayed monkeypatch.setattr(retrieval_comparison, "_run_mode_queries", replay) - monkeypatch.setattr( - retrieval_comparison, - "_read_query_results", - lambda *_args, **_kwargs: pytest.fail("source hybrid results must not be reused"), - ) monkeypatch.setattr( retrieval_comparison, "build_comparison_artifacts", diff --git a/nemo_retriever/tests/test_service_vectordb_app.py b/nemo_retriever/tests/test_service_vectordb_app.py index 609806fd8a..43ba0a1f96 100644 --- a/nemo_retriever/tests/test_service_vectordb_app.py +++ b/nemo_retriever/tests/test_service_vectordb_app.py @@ -101,22 +101,21 @@ def test_vectordb_config_validates_index_mode() -> None: VectorDbConfig(index_mode="sparse") -def test_health_stays_ok_when_mode_resolution_errors(tmp_path) -> None: +def test_health_stays_ok_when_index_inspection_errors(tmp_path) -> None: app = create_vectordb_app( lancedb_uri=str(tmp_path), embed_endpoint="http://embed.example/v1/embeddings", ) with TestClient(app) as client: - with patch.object(VectorDBState, "table_exists", new_callable=PropertyMock, return_value=True), patch.object( - VectorDBState, - "resolve_effective_retrieval_mode", - side_effect=OSError("transient I/O error"), - ): + with patch.object(VectorDBState, "_table_capabilities", side_effect=OSError("transient I/O error")): resp = client.get("/v1/health") - # Health backs k8s probes; a mode-resolution failure must not 500. + # Health backs k8s probes; an index-inspection failure must not 500. assert resp.status_code == 200 - assert resp.json()["effective_retrieval_mode"] == "unknown" + body = resp.json() + assert body["effective_retrieval_mode"] == "unknown" + assert body["effective_index_mode"] == "unknown" + assert body["fts_present"] is False def test_strategies_for_retrieval_mode() -> None: From 69d62ab035d687c96c04b67ad71ccaee013ff792 Mon Sep 17 00:00:00 2001 From: Jacob Ioffe Date: Fri, 7 Aug 2026 13:02:20 +0000 Subject: [PATCH 5/7] Slim weighted hybrid implementation Signed-off-by: Jacob Ioffe --- nemo_retriever/harness/README.md | 33 +- .../docs/assets/hybrid-retrieval-latency.png | Bin 109240 -> 0 bytes .../hybrid-retrieval-quality-ablation.png | Bin 106037 -> 0 bytes .../harness/docs/expected-results.md | 7 +- nemo_retriever/helm/templates/configmap.yaml | 5 - .../helm/templates/deployment-vectordb.yaml | 6 +- .../src/nemo_retriever/cli/ingest_workflow.py | 2 - .../common/vdb/hybrid_fusion.py | 6 - .../src/nemo_retriever/common/vdb/lancedb.py | 4 +- .../src/nemo_retriever/graph/retriever.py | 19 +- .../harness/benchmark_registry.py | 35 +- .../src/nemo_retriever/harness/cli.py | 44 +- .../src/nemo_retriever/harness/diff.py | 29 +- .../src/nemo_retriever/harness/execution.py | 26 +- .../harness/release_reference.py | 5 - .../harness/retrieval_comparison.py | 926 ------------------ .../src/nemo_retriever/harness/slack.py | 7 - .../src/nemo_retriever/ingest/plan.py | 27 +- .../src/nemo_retriever/service/config.py | 1 - .../service/retriever-service.yaml | 6 +- .../nemo_retriever/service/vectordb_app.py | 4 - .../test_vectordb_index_mode.py} | 9 +- .../test_index_mode.py} | 1 + .../tests/test_harness_artifacts.py | 32 +- .../tests/test_harness_benchmark_registry.py | 17 +- nemo_retriever/tests/test_harness_slack.py | 43 +- .../tests/test_retrieval_comparison.py | 197 ---- .../tests/test_root_cli_workflow.py | 60 ++ .../tests/test_service_vectordb_app.py | 13 +- ...est_service_vectordb_hybrid_integration.py | 6 +- 30 files changed, 130 insertions(+), 1440 deletions(-) delete mode 100644 nemo_retriever/harness/docs/assets/hybrid-retrieval-latency.png delete mode 100644 nemo_retriever/harness/docs/assets/hybrid-retrieval-quality-ablation.png delete mode 100644 nemo_retriever/src/nemo_retriever/harness/retrieval_comparison.py rename nemo_retriever/tests/{test_helm_vectordb_index_mode.py => helm/test_vectordb_index_mode.py} (79%) rename nemo_retriever/tests/{test_ingest_index_mode.py => ingest/test_index_mode.py} (99%) delete mode 100644 nemo_retriever/tests/test_retrieval_comparison.py diff --git a/nemo_retriever/harness/README.md b/nemo_retriever/harness/README.md index 2a607ee5e2..6ebaa8d25a 100644 --- a/nemo_retriever/harness/README.md +++ b/nemo_retriever/harness/README.md @@ -56,7 +56,6 @@ recorded before this behavior changed are not directly comparable. | `run-files` | Run one or more portable runfiles as a session. | | `run-helm` | Provision a service, run one session, collect failure logs, and tear it down. | | `check-vidore-access` | Check remote ViDoRe queries, qrels, and corpora without downloading them. | -| `compare-retrieval` | Replay dense, sparse, and hybrid retrieval against one completed ViDoRe index without re-ingesting. | | `post-slack` | Preview or post completed artifacts without rerunning a benchmark. | | `diff` | Compare summary metrics from two completed runs. | @@ -138,33 +137,6 @@ A multi-run session has this stable layout: Dry-runs resolve configuration and write planning artifacts, but they are not execution evidence. -### Compare ViDoRe retrieval modes - -Canonical BEIR benchmarks now ingest hybrid-capable tables. Explicitly named -`*_dense` benchmarks and the `vidore_v3_all_dense` runset retain the historical -dense configuration. Every run records both requested and resolved index mode -in `results.json`, so baseline tooling can keep them distinct. - -Hybrid query execution uses the shared no-model-reranker weighted-RRF policy: -50 candidates per dense/FTS leg, dense weight 0.8, sparse weight 0.2, and RRF -`k=10`. Comparison summaries record this resolved fusion policy alongside the -LanceDB version. - -After a completed local or batch ViDoRe run, replay all three retrieval modes -against the identical extracted rows: - -```bash -uv run --project nemo_retriever retriever harness compare-retrieval \ - /path/to/completed-run \ - --modes dense,sparse,hybrid -``` - -The command refuses non-hybrid source indexes and existing output directories. -It writes `retrieval_comparison/summary.json`, `query_cases.jsonl`, -`extraction_audit.json`, `report.md`, per-mode query/BEIR/TREC artifacts, and -available annotated evidence crops. Extraction `needs_review` classifications -are weak-overlap diagnostics, never confirmed extraction failures. - ## Gates and Exit Codes Metric gates compare values in `results.json.summary_metrics`: @@ -215,7 +187,6 @@ one release snapshot outside the repository: { "name": "RC26.05 Perflab", "dataset": "bo767", - "resolved_index_mode": "dense", "environment": {"gpu_sku": "NVIDIA H100 80GB HBM3", "gpu_count": 8}, "metrics": {"ingest_secs": 4036.85, "pages_per_sec_ingest": 13.56} } @@ -226,9 +197,7 @@ one release snapshot outside the repository: Pass it with `--reference-file` or set `RETRIEVER_HARNESS_REFERENCE_FILE`. The report shows the two observations with their GPU context; it does not assign a verdict, update the file, or maintain -history. Retrieval references match only runs with the same -`resolved_index_mode`; this prevents a dense baseline from being presented as -a hybrid comparison. +history. Compare two local runs without Slack: diff --git a/nemo_retriever/harness/docs/assets/hybrid-retrieval-latency.png b/nemo_retriever/harness/docs/assets/hybrid-retrieval-latency.png deleted file mode 100644 index 6e5e5ef471cca68c87865d7db2fac8826e55fb87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109240 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%0A2P)Wh|4;nRHgr5<4!_tHLv+7Q`< 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 USdZeoWY8fhp00i_>zopr00kH*F8}}l diff --git a/nemo_retriever/harness/docs/assets/hybrid-retrieval-quality-ablation.png b/nemo_retriever/harness/docs/assets/hybrid-retrieval-quality-ablation.png deleted file mode 100644 index 6162849d096bb84ac86fd2a3c6e9e52db79698ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106037 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 diff --git a/nemo_retriever/harness/docs/expected-results.md b/nemo_retriever/harness/docs/expected-results.md index 2a41bdd989..f110447bf1 100644 --- a/nemo_retriever/harness/docs/expected-results.md +++ b/nemo_retriever/harness/docs/expected-results.md @@ -93,8 +93,7 @@ Integrity facts: | Pharmaceuticals | 52 | 2,313 | 2,184 | | Physics | 42 | 1,674 | 1,812 | -Observed complete **dense** batch runs on an eight-H100 DGX (these predate the -hybrid default and must not be compared to hybrid runs as one baseline series): +Observed complete batch runs on an eight-H100 DGX: | Dataset | Indexed rows | Ingest seconds | Pages/s | Recall@5 | Recall@10 | nDCG@10 | | --- | ---: | ---: | ---: | ---: | ---: | ---: | @@ -112,10 +111,6 @@ The observed all-domain macro-average nDCG@10 was about `0.519`. The observation predate separate physical and workload-visible GPU counts, so do not infer scaling behavior from their throughput. -Canonical ViDoRe benchmarks now create hybrid tables. Register equal-RRF, -weighted-hybrid, and historical dense results as distinct baseline series; use -`vidore_v3_all_dense` only to reproduce the historical dense configuration. - ### RC26.05 Recall Comparison | Dataset | RC26.05 Recall@5 | Observed Recall@5 | diff --git a/nemo_retriever/helm/templates/configmap.yaml b/nemo_retriever/helm/templates/configmap.yaml index a4473d41bb..783e917732 100644 --- a/nemo_retriever/helm/templates/configmap.yaml +++ b/nemo_retriever/helm/templates/configmap.yaml @@ -163,16 +163,11 @@ auth: header_name: {{ .Values.serviceConfig.auth.headerName | quote }} bypass_paths: {{ toJson .Values.serviceConfig.auth.bypassPaths }} -{{- $indexMode := .Values.serviceConfig.vectordb.indexMode | default "auto" -}} -{{- if not (has $indexMode (list "auto" "dense" "hybrid")) -}} -{{- fail "serviceConfig.vectordb.indexMode must be one of: auto, dense, hybrid" -}} -{{- end -}} {{- if .Values.serviceConfig.vectordb.enabled }} vectordb: enabled: true lancedb_uri: {{ .Values.serviceConfig.vectordb.lancedbUri | quote }} table_name: {{ .Values.serviceConfig.vectordb.tableName | quote }} - index_mode: {{ $indexMode | quote }} embed_model: {{ .Values.serviceConfig.vectordb.embedModel | quote }} {{- if .Values.serviceConfig.vectordb.embedModelProviderPrefix }} embed_model_provider_prefix: {{ .Values.serviceConfig.vectordb.embedModelProviderPrefix | quote }} diff --git a/nemo_retriever/helm/templates/deployment-vectordb.yaml b/nemo_retriever/helm/templates/deployment-vectordb.yaml index db015304a7..ca1248cdd5 100644 --- a/nemo_retriever/helm/templates/deployment-vectordb.yaml +++ b/nemo_retriever/helm/templates/deployment-vectordb.yaml @@ -6,6 +6,10 @@ {{- $embedURL := include "nemo-retriever.nim.endpointURL" (dict "context" . "key" "vlm_embed" "serviceName" .Values.nimOperator.vlm_embed.nimServiceName "configKey" "embedInvokeUrl" "invokePath" "/v1/embeddings") -}} {{- $localEmbed := include "nemo-retriever.localEmbed.enabled" . | eq "true" -}} {{- $localModels := .Values.serviceConfig.localModels -}} +{{- $indexMode := .Values.serviceConfig.vectordb.indexMode | default "auto" -}} +{{- if not (has $indexMode (list "auto" "dense" "hybrid")) -}} +{{- fail "serviceConfig.vectordb.indexMode must be one of: auto, dense, hybrid" -}} +{{- end -}} {{- /* Fail-fast guard: rendering a vectordb Deployment without any query-time embedding backend produces a "healthy" Pod whose first /v1/query request @@ -76,7 +80,7 @@ spec: - --table-name - {{ .Values.serviceConfig.vectordb.tableName | quote }} - --index-mode - - {{ .Values.serviceConfig.vectordb.indexMode | default "auto" | quote }} + - {{ $indexMode | quote }} {{- if $embedURL }} - --embed-endpoint - {{ $embedURL | quote }} diff --git a/nemo_retriever/src/nemo_retriever/cli/ingest_workflow.py b/nemo_retriever/src/nemo_retriever/cli/ingest_workflow.py index 23df680329..29aefebcc1 100644 --- a/nemo_retriever/src/nemo_retriever/cli/ingest_workflow.py +++ b/nemo_retriever/src/nemo_retriever/cli/ingest_workflow.py @@ -65,8 +65,6 @@ def _ingest_plan_to_dry_run_data(plan: ResolvedIngestPlan) -> dict[str, Any]: return { "dry_run": True, "profile": plan.profile, - "requested_index_mode": plan.requested_index_mode, - "index_mode": plan.index_mode, "documents": list(plan.documents), "branches": [ { diff --git a/nemo_retriever/src/nemo_retriever/common/vdb/hybrid_fusion.py b/nemo_retriever/src/nemo_retriever/common/vdb/hybrid_fusion.py index 62dfd92066..d16c00b85b 100644 --- a/nemo_retriever/src/nemo_retriever/common/vdb/hybrid_fusion.py +++ b/nemo_retriever/src/nemo_retriever/common/vdb/hybrid_fusion.py @@ -30,12 +30,6 @@ def __post_init__(self) -> None: if self.rrf_k <= 0: raise ValueError("rrf_k must be greater than zero") - def __str__(self) -> str: - return ( - "weighted RRF " - f"(candidate_depth={self.candidate_depth}, dense_weight={self.dense_weight:g}, rrf_k={self.rrf_k})" - ) - DEFAULT_HYBRID_FUSION_POLICY = HybridFusionPolicy(candidate_depth=50, dense_weight=0.8, rrf_k=10) diff --git a/nemo_retriever/src/nemo_retriever/common/vdb/lancedb.py b/nemo_retriever/src/nemo_retriever/common/vdb/lancedb.py index 2e3827a95b..57e1a0e3fa 100644 --- a/nemo_retriever/src/nemo_retriever/common/vdb/lancedb.py +++ b/nemo_retriever/src/nemo_retriever/common/vdb/lancedb.py @@ -6,15 +6,17 @@ import logging import os import time + from collections.abc import Iterable, Sequence from datetime import timedelta from typing import Any, Final, FrozenSet +import lancedb import pyarrow as pa import pyarrow.compute as pc -import lancedb from nemo_retriever.common.vdb.adt_vdb import VDB + from nemo_retriever.common.vdb.hybrid_fusion import ( HybridFusionPolicy, WeightedRRFReranker, diff --git a/nemo_retriever/src/nemo_retriever/graph/retriever.py b/nemo_retriever/src/nemo_retriever/graph/retriever.py index dd2434b9fd..3e1621bf6c 100644 --- a/nemo_retriever/src/nemo_retriever/graph/retriever.py +++ b/nemo_retriever/src/nemo_retriever/graph/retriever.py @@ -11,6 +11,11 @@ import pandas as pd +from nemo_retriever.models import VL_EMBED_MODEL, VL_RERANK_MODEL, resolve_embed_model +from nemo_retriever.graph.retriever_utils import ( + filter_retrieval_kwargs, + rerank_long_dataframe_to_hits, +) from nemo_retriever.common.vdb.hybrid_fusion import DEFAULT_HYBRID_FUSION_POLICY from nemo_retriever.common.vdb.lancedb_capabilities import ( LanceRetrievalMode, @@ -18,13 +23,8 @@ inspect_lancedb_table, ) from nemo_retriever.common.vdb.records import RetrievalHit, normalize_retrieval_results -from nemo_retriever.graph.retriever_utils import ( - filter_retrieval_kwargs, - rerank_long_dataframe_to_hits, -) -from nemo_retriever.models import VL_EMBED_MODEL, VL_RERANK_MODEL, resolve_embed_model -from nemo_retriever.operators.vdb import RetrieveVdbOperator from nemo_retriever.query.shaping import shape_query_hits +from nemo_retriever.operators.vdb import RetrieveVdbOperator logger = logging.getLogger(__name__) @@ -104,11 +104,8 @@ def __post_init__(self) -> None: raise ValueError("run_mode must be 'local' or 'service'") def _merge_embed_params(self, extra: Optional[dict[str, Any]] = None) -> Any: + from nemo_retriever.models import _LOCAL_INGEST_EMBED_BACKENDS, normalize_backend from nemo_retriever.common.params import EmbedParams - from nemo_retriever.models import ( - _LOCAL_INGEST_EMBED_BACKENDS, - normalize_backend, - ) base: dict[str, Any] = { "model_name": VL_EMBED_MODEL, @@ -146,9 +143,9 @@ def _refine_factor(self) -> int: return int(self._merge_rerank_actor_kwargs().get("refine_factor", 4)) def _build_default_graph(self, *, embed_extra: Optional[dict[str, Any]] = None) -> Any: + from nemo_retriever.operators.rerank import NemotronRerankActor from nemo_retriever.operators.embed.cpu_operator import _BatchEmbedCPUActor from nemo_retriever.operators.embed.operators import _BatchEmbedActor - from nemo_retriever.operators.rerank import NemotronRerankActor embed_params = self._merge_embed_params(embed_extra) if self.run_mode == "service": diff --git a/nemo_retriever/src/nemo_retriever/harness/benchmark_registry.py b/nemo_retriever/src/nemo_retriever/harness/benchmark_registry.py index 270a5525a6..c6b5c99445 100644 --- a/nemo_retriever/src/nemo_retriever/harness/benchmark_registry.py +++ b/nemo_retriever/src/nemo_retriever/harness/benchmark_registry.py @@ -127,7 +127,7 @@ def _base_ingest(*, profile: str = "auto") -> dict[str, Any]: "storage": { "table_name": DEFAULT_TABLE_NAME, "overwrite": True, - "index_mode": "hybrid", + "index_mode": "dense", }, } @@ -193,7 +193,7 @@ def _vidore_v3_benchmark(dataset_name: str) -> BenchmarkSpec: ) -_CANONICAL_BENCHMARKS: dict[str, BenchmarkSpec] = { +BENCHMARKS: dict[str, BenchmarkSpec] = { "jp20_smoke": BenchmarkSpec( name="jp20_smoke", dataset="jp20", @@ -267,31 +267,6 @@ def _vidore_v3_benchmark(dataset_name: str) -> BenchmarkSpec: ), } - -def _dense_variant(spec: BenchmarkSpec) -> BenchmarkSpec: - ingest = deepcopy(dict(spec.ingest)) - ingest["storage"] = {**dict(ingest.get("storage") or {}), "index_mode": "dense"} - return BenchmarkSpec( - name=f"{spec.name}_dense", - dataset=spec.dataset, - ingest=ingest, - query={**dict(spec.query), "retrieval_mode": "dense"}, - evaluation=deepcopy(dict(spec.evaluation)), - summary_keys=spec.summary_keys, - tags=(*spec.tags, "dense-baseline"), - description=f"Dense historical baseline for {spec.description or spec.name}", - ) - - -BENCHMARKS: dict[str, BenchmarkSpec] = { - **_CANONICAL_BENCHMARKS, - **{ - f"{name}_dense": _dense_variant(spec) - for name, spec in _CANONICAL_BENCHMARKS.items() - if (spec.evaluation or {}).get("mode") == "beir" - }, -} - RUNSETS: dict[str, RunSet] = { "jp20_core": RunSet( name="jp20_core", @@ -305,12 +280,6 @@ def _dense_variant(spec: BenchmarkSpec) -> BenchmarkSpec: tags=("vidore", "beir", "all"), description="All eight public ViDoRe v3 BEIR retrieval benchmarks.", ), - "vidore_v3_all_dense": RunSet( - name="vidore_v3_all_dense", - runs=tuple(f"{dataset_name}_beir_dense" for dataset_name in VIDORE_V3_PUBLIC_DATASETS), - tags=("vidore", "beir", "all", "dense-baseline"), - description="Historical dense baselines for all eight public ViDoRe v3 benchmarks.", - ), } diff --git a/nemo_retriever/src/nemo_retriever/harness/cli.py b/nemo_retriever/src/nemo_retriever/harness/cli.py index 4bce7b4879..5a0aa0369c 100644 --- a/nemo_retriever/src/nemo_retriever/harness/cli.py +++ b/nemo_retriever/src/nemo_retriever/harness/cli.py @@ -16,20 +16,15 @@ list_benchmarks, list_runsets, ) -from nemo_retriever.harness.contracts import ( - EXIT_INVALID, - EXIT_MISSING_INPUT, - FailurePayload, -) -from nemo_retriever.harness.diff import diff_artifact_dirs -from nemo_retriever.harness.release_reference import load_release_references -from nemo_retriever.harness.resolution import make_run_id -from nemo_retriever.harness.retrieval_comparison import compare_retrieval +from nemo_retriever.harness.contracts import EXIT_INVALID, EXIT_MISSING_INPUT, FailurePayload from nemo_retriever.harness.revamp_runner import ( HarnessRunError, run_benchmark, show_benchmark_payload, ) +from nemo_retriever.harness.diff import diff_artifact_dirs +from nemo_retriever.harness.resolution import make_run_id +from nemo_retriever.harness.release_reference import load_release_references from nemo_retriever.harness.runfile import load_runfile from nemo_retriever.harness.runsets import run_runfiles, run_runset from nemo_retriever.harness.slack import ( @@ -53,37 +48,6 @@ def _echo_json(payload: object) -> None: typer.echo(json.dumps(payload, indent=2, sort_keys=False)) -@app.command("compare-retrieval") -def compare_retrieval_command( - run_dir: Annotated[Path, typer.Argument(help="Completed local/batch ViDoRe harness run directory.")], - modes: Annotated[ - str, - typer.Option("--modes", help="Comma-separated retrieval modes replayed against the same index."), - ] = "dense,sparse,hybrid", - output_dir: Annotated[ - Path | None, - typer.Option("--output-dir", help="Comparison directory; defaults to RUN_DIR/retrieval_comparison."), - ] = None, - json_output: Annotated[bool, typer.Option("--json", help="Emit summary JSON to stdout.")] = False, -) -> None: - """Compare retrieval modes without re-ingesting the completed run.""" - try: - summary = compare_retrieval( - run_dir, - modes=[mode.strip() for mode in modes.split(",") if mode.strip()], - output_dir=output_dir, - ) - except ValueError as exc: - typer.echo(str(exc), err=True) - raise typer.Exit(code=EXIT_INVALID) from exc - if json_output: - _echo_json(summary) - else: - target = (output_dir or run_dir / "retrieval_comparison").expanduser().resolve() - typer.echo(f"Comparison artifacts: {target}") - typer.echo(f"Report: {target / 'report.md'}") - - @app.command("check-vidore-access") def check_vidore_access_command( dataset_names: Annotated[ diff --git a/nemo_retriever/src/nemo_retriever/harness/diff.py b/nemo_retriever/src/nemo_retriever/harness/diff.py index af2435aa62..ebace02610 100644 --- a/nemo_retriever/src/nemo_retriever/harness/diff.py +++ b/nemo_retriever/src/nemo_retriever/harness/diff.py @@ -7,15 +7,11 @@ from pathlib import Path from typing import Any -from nemo_retriever.harness.contracts import ( - EXIT_INVALID, - FailurePayload, - HarnessRunError, -) +from nemo_retriever.harness.contracts import EXIT_INVALID, FailurePayload, HarnessRunError from nemo_retriever.harness.json_io import read_json_object -def _read_summary(path_or_dir: Path) -> tuple[Path, dict[str, Any], str | None]: +def _read_summary(path_or_dir: Path) -> tuple[Path, dict[str, Any]]: try: path = path_or_dir.expanduser().resolve() if path.is_dir(): @@ -35,10 +31,9 @@ def _read_summary(path_or_dir: Path) -> tuple[Path, dict[str, Any], str | None]: summary = payload.get("summary_metrics") if not isinstance(summary, dict): raise ValueError(f"'summary_metrics' must be an object in {results_path}") - resolved_index_mode = payload.get("resolved_index_mode") - return results_path, summary, str(resolved_index_mode) if resolved_index_mode is not None else None + return results_path, summary if legacy_summary_path.exists(): - return legacy_summary_path, read_json_object(legacy_summary_path), None + return legacy_summary_path, read_json_object(legacy_summary_path) raise FileNotFoundError(f"No results.json or summary_metrics.json found under {path}") except (FileNotFoundError, ValueError) as exc: raise HarnessRunError( @@ -62,8 +57,8 @@ def _numeric(value: Any) -> float | None: def diff_artifact_dirs(left: Path, right: Path) -> dict[str, Any]: - left_path, left_summary, left_index_mode = _read_summary(left) - right_path, right_summary, right_index_mode = _read_summary(right) + left_path, left_summary = _read_summary(left) + right_path, right_summary = _read_summary(right) keys = sorted(set(left_summary) | set(right_summary)) deltas: dict[str, dict[str, Any]] = {} for key in keys: @@ -81,20 +76,8 @@ def diff_artifact_dirs(left: Path, right: Path) -> dict[str, Any]: payload["delta"] = delta payload["percent_delta"] = (delta / left_number * 100.0) if left_number else None deltas[key] = payload - same_index_mode = left_index_mode == right_index_mode return { "left": str(left_path), "right": str(right_path), - "left_resolved_index_mode": left_index_mode, - "right_resolved_index_mode": right_index_mode, - "comparable_index_mode": same_index_mode, - "comparison_warning": ( - None - if same_index_mode - else ( - "Dense, sparse, and hybrid results are distinct baseline series; " - "interpret this cross-mode diff explicitly." - ) - ), "summary_metrics": deltas, } diff --git a/nemo_retriever/src/nemo_retriever/harness/execution.py b/nemo_retriever/src/nemo_retriever/harness/execution.py index 34f9150b8e..6e6fe0a4f2 100644 --- a/nemo_retriever/src/nemo_retriever/harness/execution.py +++ b/nemo_retriever/src/nemo_retriever/harness/execution.py @@ -4,28 +4,25 @@ from __future__ import annotations +from copy import deepcopy +from dataclasses import dataclass import os import re import time import traceback -from copy import deepcopy -from dataclasses import dataclass from pathlib import Path from typing import Any, Sequence from nemo_retriever.cli.ingest_workflow import run_ingest_workflow from nemo_retriever.cli.shared import silence_noisy_libraries from nemo_retriever.harness.artifact_writer import ( - ArtifactWriter, append_text, artifact_paths, + ArtifactWriter, capture_output_to_log, redact, ) -from nemo_retriever.harness.beir_runner import ( - run_beir_queries, - run_service_beir_queries, -) +from nemo_retriever.harness.beir_runner import run_beir_queries, run_service_beir_queries from nemo_retriever.harness.contracts import ( EXIT_ARTIFACT_WRITE_FAILURE, EXIT_INGEST_FAILURE, @@ -33,15 +30,15 @@ EXIT_INVALID, EXIT_MISSING_INPUT, EXIT_SUCCESS, - PHASE_VALUES, FailurePayload, HarnessRunError, + PHASE_VALUES, RunOutcome, ) from nemo_retriever.harness.environment import collect_environment from nemo_retriever.harness.json_io import artifact_write_error, write_json -from nemo_retriever.harness.metric_gates import enforce_metric_gates, parse_metric_gates from nemo_retriever.harness.metrics import build_summary_metrics +from nemo_retriever.harness.metric_gates import enforce_metric_gates, parse_metric_gates from nemo_retriever.harness.resolution import ( build_ingest_request, build_query_request, @@ -55,10 +52,7 @@ validate_dataset_inputs, ) from nemo_retriever.ingest.plan import resolve_ingest_plan -from nemo_retriever.ingest.service import ( - execute_service_ingest_request, - resolve_service_ingest_request, -) +from nemo_retriever.ingest.service import execute_service_ingest_request, resolve_service_ingest_request from nemo_retriever.query.workflow import resolve_query_plan _ANSI_ESCAPE_RE = re.compile(r"\x1b\[[0-?]*[ -/]*[@-~]") @@ -434,10 +428,6 @@ def run_prepared_benchmark( ingest_summary: dict[str, Any] | None = None ingest_secs: float | None = None - requested_index_mode = str(((resolved.get("ingest") or {}).get("storage") or {}).get("index_mode", "auto")) - resolved_index_mode = requested_index_mode - if not service_mode: - resolved_index_mode = str(getattr(ingest_plan, "index_mode", requested_index_mode)) query_latencies_ms: list[float] = [] beir_metrics: dict[str, float] = {} query_count = 0 @@ -511,8 +501,6 @@ def run_prepared_benchmark( failure=None, metric_gates=list(requirements), skipped_metric_gates=list(skipped_metric_gates), - requested_index_mode=requested_index_mode, - resolved_index_mode=resolved_index_mode, ) write_json(writer.path("results.json"), result) writer.status( diff --git a/nemo_retriever/src/nemo_retriever/harness/release_reference.py b/nemo_retriever/src/nemo_retriever/harness/release_reference.py index c462f6cece..fa0045bbc7 100644 --- a/nemo_retriever/src/nemo_retriever/harness/release_reference.py +++ b/nemo_retriever/src/nemo_retriever/harness/release_reference.py @@ -17,7 +17,6 @@ class ReleaseReference: dataset: str environment: dict[str, Any] metrics: dict[str, int | float] - resolved_index_mode: str | None = None def load_release_references(path: Path) -> list[ReleaseReference]: @@ -34,7 +33,6 @@ def load_release_references(path: Path) -> list[ReleaseReference]: dataset = result.get("dataset") environment = result.get("environment", {}) metrics = result.get("metrics") - resolved_index_mode = result.get("resolved_index_mode") if not isinstance(release, str) or not release.strip(): raise ValueError(f"Release result at index {index} must define non-empty 'name' text") if not isinstance(dataset, str) or not dataset.strip(): @@ -45,15 +43,12 @@ def load_release_references(path: Path) -> list[ReleaseReference]: raise ValueError(f"Release result at index {index} must define non-empty 'metrics'") if any(isinstance(value, bool) or not isinstance(value, (int, float)) for value in metrics.values()): raise ValueError(f"Release result at index {index} metrics must be numeric") - if resolved_index_mode is not None and resolved_index_mode not in {"dense", "hybrid", "sparse"}: - raise ValueError(f"Release result at index {index} 'resolved_index_mode' must be dense, hybrid, or sparse") references.append( ReleaseReference( release=release.strip(), dataset=dataset.strip(), environment=dict(environment), metrics=dict(metrics), - resolved_index_mode=resolved_index_mode, ) ) return references diff --git a/nemo_retriever/src/nemo_retriever/harness/retrieval_comparison.py b/nemo_retriever/src/nemo_retriever/harness/retrieval_comparison.py deleted file mode 100644 index a86d1a2ed6..0000000000 --- a/nemo_retriever/src/nemo_retriever/harness/retrieval_comparison.py +++ /dev/null @@ -1,926 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. -# All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -"""Replay dense, sparse, and hybrid retrieval against one completed ViDoRe index.""" - -from __future__ import annotations - -import json -import math -import re -import statistics -import time -from collections import Counter, defaultdict -from dataclasses import dataclass, field -from io import BytesIO -from pathlib import Path -from typing import Any, Iterable, Mapping, Sequence - -import lancedb -from nemo_retriever.common.vdb.hybrid_fusion import DEFAULT_HYBRID_FUSION_POLICY -from nemo_retriever.common.vdb.lancedb_capabilities import inspect_lancedb_table_object -from nemo_retriever.harness.json_io import write_json -from nemo_retriever.query.workflow import ResolvedQueryPlan -from nemo_retriever.tools.recall.beir import ( - BeirDataset, - build_beir_run_from_hits, - compute_beir_metrics, - load_beir_dataset, -) - -SUPPORTED_COMPARISON_MODES = ("dense", "sparse", "hybrid") -_TOKEN_RE = re.compile(r"[\w]+", re.UNICODE) -_ANCHOR_RE = re.compile(r"(?:[$€£¥]\s?\d|\d(?:[.,]\d+)?\s?%|\b[A-Z]{2,}[A-Z0-9_-]*\d[A-Z0-9_-]*\b|\b\d{2,}\b)") -_LABEL_FIELD_HINTS = ( - "format", - "type", - "evidence", - "source", - "origin", - "generator", - "generation", - "domain", - "language", - "synthetic", - "human", - "hop", -) -_REFERENCE_FIELD_HINTS = ( - "answer", - "reference", - "text", - "markdown", - "caption", - "content", - "ocr", - "title", - "entity", -) - - -@dataclass(frozen=True) -class LoadedVidoreMetadata: - query_rows: dict[str, dict[str, Any]] - corpus_rows: dict[str, dict[str, Any]] - qrel_rows: dict[tuple[str, str], dict[str, Any]] = field(default_factory=dict) - corpus_image_indices: dict[str, int] = field(default_factory=dict) - corpus_dataset: Any | None = field(default=None, repr=False, compare=False) - - -def _read_json(path: Path) -> dict[str, Any]: - if not path.exists(): - raise ValueError(f"Required run artifact is missing: {path}") - try: - value = json.loads(path.read_text(encoding="utf-8")) - except (OSError, json.JSONDecodeError) as exc: - raise ValueError(f"Could not read JSON artifact {path}: {exc}") from exc - if not isinstance(value, dict): - raise ValueError(f"Expected a JSON object in {path}") - return value - - -def _safe_scalar(value: Any) -> Any | None: - if value is None or isinstance(value, (str, int, float, bool)): - return value - if isinstance(value, (list, tuple)) and all(isinstance(item, (str, int, float, bool)) for item in value): - return list(value) - return None - - -def _tokens(value: Any) -> set[str]: - return {token.casefold() for token in _TOKEN_RE.findall(str(value or "")) if len(token) > 1} - - -def _flatten_reference_text(row: Mapping[str, Any]) -> str: - values: list[str] = [] - for key, value in row.items(): - normalized = key.casefold() - if not any(hint in normalized for hint in _REFERENCE_FIELD_HINTS): - continue - if isinstance(value, str): - values.append(value) - elif isinstance(value, (list, tuple)): - values.extend(str(item) for item in value if isinstance(item, (str, int, float))) - return "\n".join(values) - - -def _existing_labels(row: Mapping[str, Any]) -> dict[str, Any]: - labels: dict[str, Any] = {} - for key, value in row.items(): - normalized = key.casefold() - if key in {"query", "query_id", "corpus_id", "doc_id", "image"}: - continue - if not any(hint in normalized for hint in _LABEL_FIELD_HINTS): - continue - safe_value = _safe_scalar(value) - if safe_value not in (None, "", []): - labels[key] = safe_value - return labels - - -def _doc_id_from_corpus_row(row: Mapping[str, Any], *, doc_id_field: str) -> str | None: - doc_id = str(row.get("doc_id") or "").strip() - if doc_id_field == "source_id": - value = row.get("corpus_id") - return str(value) if value is not None else None - if doc_id_field == "path": - return f"{doc_id}.pdf" if doc_id else None - if doc_id_field == "pdf_basename": - return doc_id or None - if doc_id_field == "pdf_page": - try: - page = int(row.get("page_number_in_doc")) + 1 - except (TypeError, ValueError): - return None - return f"{doc_id}_{page}" if doc_id else None - return None - - -def _load_vidore_metadata(dataset_name: str, split: str, *, doc_id_field: str) -> LoadedVidoreMetadata: - try: - from datasets import load_dataset # type: ignore - except ImportError as exc: - raise ValueError("ViDoRe comparison requires the datasets package") from exc - - repository = f"vidore/{dataset_name}" - - def load_partition(name: str): - try: - return load_dataset(repository, name, split=split) - except Exception: - return load_dataset(repository, data_dir=name, split=split) - - query_rows: dict[str, dict[str, Any]] = {} - for index, row in enumerate(load_partition("queries")): - payload = dict(row) - query_rows[str(payload.get("query_id", index))] = payload - - corpus_partition = load_partition("corpus") - if "image" in corpus_partition.column_names: - from datasets import Image as DatasetImage # type: ignore - - corpus_partition = corpus_partition.cast_column("image", DatasetImage(decode=False)) - - corpus_rows: dict[str, dict[str, Any]] = {} - corpus_id_to_doc_id: dict[str, str] = {} - corpus_image_indices: dict[str, int] = {} - for index, row in enumerate(corpus_partition): - payload = dict(row) - payload.pop("image", None) - doc_id = _doc_id_from_corpus_row(payload, doc_id_field=doc_id_field) - if doc_id: - corpus_rows[doc_id] = payload - corpus_id_to_doc_id[str(payload.get("corpus_id"))] = doc_id - corpus_image_indices[doc_id] = index - - qrel_rows: dict[tuple[str, str], dict[str, Any]] = {} - for row in load_partition("qrels"): - payload = dict(row) - query_id = str(payload.get("query_id")) - doc_id = corpus_id_to_doc_id.get(str(payload.get("corpus_id"))) - if doc_id: - qrel_rows[(query_id, doc_id)] = payload - return LoadedVidoreMetadata( - query_rows=query_rows, - corpus_rows=corpus_rows, - qrel_rows=qrel_rows, - corpus_image_indices=corpus_image_indices, - corpus_dataset=corpus_partition, - ) - - -def _parse_mapping(value: Any) -> dict[str, Any]: - if isinstance(value, dict): - return value - if not isinstance(value, str) or not value.strip(): - return {} - try: - parsed = json.loads(value) - except json.JSONDecodeError: - return {} - return parsed if isinstance(parsed, dict) else {} - - -def _indexed_doc_id(row: Mapping[str, Any], *, doc_id_field: str) -> str | None: - metadata = _parse_mapping(row.get("metadata")) - source_metadata = _parse_mapping(row.get("source")) - source = ( - row.get("pdf_basename") - or metadata.get("pdf_basename") - or source_metadata.get("source_name") - or source_metadata.get("source_id") - or row.get("source_id") - ) - if doc_id_field == "pdf_page": - direct = row.get("pdf_page") or metadata.get("pdf_page") - if direct: - return str(direct) - page = row.get("page_number", metadata.get("page_number")) - if source and page is not None: - basename = Path(str(source)).name.removesuffix(".pdf") - return f"{basename}_{int(page)}" - if doc_id_field == "pdf_basename": - return Path(str(source)).name.removesuffix(".pdf") if source else None - value = row.get(doc_id_field, metadata.get(doc_id_field)) - return str(value) if value not in (None, "") else None - - -def _load_indexed_text(table: Any, *, doc_id_field: str) -> dict[str, list[str]]: - mapped: defaultdict[str, list[str]] = defaultdict(list) - for row in table.to_arrow().to_pylist(): - doc_id = _indexed_doc_id(row, doc_id_field=doc_id_field) - text = str(row.get("text") or "").strip() - if doc_id: - # An indexed page with empty text is an extraction concern, not a missing page. - mapped[doc_id].append(text) - return dict(mapped) - - -def _named_gold_entity(query: str, gold_rows: Iterable[Mapping[str, Any]]) -> bool: - normalized_query = " ".join(query.casefold().split()) - query_tokens = _tokens(query) - for row in gold_rows: - for key, value in row.items(): - if not any(hint in key.casefold() for hint in ("title", "entity", "doc_id", "name")): - continue - if not isinstance(value, str) or not value.strip(): - continue - candidate = " ".join(value.casefold().replace("_", " ").split()) - candidate_tokens = _tokens(candidate) - if candidate in normalized_query or (len(candidate_tokens) >= 2 and candidate_tokens <= query_tokens): - return True - return False - - -def _lexical_overlap(query: str, reference: str) -> float | None: - query_tokens = _tokens(query) - reference_tokens = _tokens(reference) - if not query_tokens or not reference_tokens: - return None - return len(query_tokens & reference_tokens) / len(query_tokens) - - -def _terciles(values: Mapping[str, float | None]) -> dict[str, str]: - observed = sorted(value for value in values.values() if value is not None) - if not observed: - return {key: "unavailable" for key in values} - low = observed[(len(observed) - 1) // 3] - high = observed[(2 * (len(observed) - 1)) // 3] - output: dict[str, str] = {} - for key, value in values.items(): - if value is None: - output[key] = "unavailable" - elif value <= low: - output[key] = "low" - elif value <= high: - output[key] = "middle" - else: - output[key] = "high" - return output - - -def _best_relevant_rank(hits: Sequence[Mapping[str, Any]], relevant: set[str], *, doc_id_field: str) -> int | None: - seen: set[str] = set() - rank = 0 - for hit in hits: - value = hit.get(doc_id_field) - if value is None and doc_id_field == "pdf_page": - value = _indexed_doc_id(hit, doc_id_field=doc_id_field) - if value is None or str(value) in seen: - continue - seen.add(str(value)) - rank += 1 - if str(value) in relevant: - return rank - return None - - -def _query_metrics( - hits: Sequence[Mapping[str, Any]], qrels: Mapping[str, int], *, doc_id_field: str -) -> dict[str, float | int | None]: - ranked: list[str] = [] - seen: set[str] = set() - for hit in hits: - value = hit.get(doc_id_field) - if value is None: - value = _indexed_doc_id(hit, doc_id_field=doc_id_field) - if value is None or str(value) in seen: - continue - seen.add(str(value)) - ranked.append(str(value)) - relevant = {doc_id for doc_id, score in qrels.items() if int(score) > 0} - rel_count = max(1, len(relevant)) - - def recall(k: int) -> float: - return len(set(ranked[:k]) & relevant) / rel_count - - dcg = sum(float(qrels.get(doc_id, 0)) / math.log2(rank + 1) for rank, doc_id in enumerate(ranked[:10], start=1)) - ideal_scores = sorted((int(score) for score in qrels.values() if int(score) > 0), reverse=True)[:10] - ideal = sum(float(score) / math.log2(rank + 1) for rank, score in enumerate(ideal_scores, start=1)) - return { - "recall_5": recall(5), - "recall_10": recall(10), - "ndcg_10": dcg / ideal if ideal else 0.0, - "best_relevant_rank": _best_relevant_rank(hits, relevant, doc_id_field=doc_id_field), - } - - -def _audit_qrel( - *, - query_row: Mapping[str, Any], - corpus_row: Mapping[str, Any], - indexed_texts: Sequence[str], -) -> dict[str, Any]: - if not indexed_texts: - return {"status": "missing_indexed_page", "answer_token_recall": None, "reference_token_recall": None} - - indexed = "\n".join(indexed_texts) - answer_text = " ".join( - str(value) - for key, value in query_row.items() - if "answer" in key.casefold() and isinstance(value, (str, int, float)) - ) - reference_text = _flatten_reference_text(corpus_row) - answer_tokens = _tokens(answer_text) - reference_tokens = _tokens(reference_text) - indexed_tokens = _tokens(indexed) - answer_recall = len(answer_tokens & indexed_tokens) / len(answer_tokens) if answer_tokens else None - reference_recall = len(reference_tokens & indexed_tokens) / len(reference_tokens) if reference_tokens else None - anchors = _ANCHOR_RE.findall(f"{answer_text} {reference_text}") - normalized_indexed = indexed.casefold() - anchors_covered = bool(anchors) and all(anchor.casefold() in normalized_indexed for anchor in anchors) - - if answer_recall is None and reference_recall is None and not anchors: - status = "not_machine_verifiable" - elif ( - (answer_recall is not None and answer_recall >= 0.6) - or (reference_recall is not None and reference_recall >= 0.35) - or anchors_covered - ): - status = "covered" - else: - status = "needs_review" - return { - "status": status, - "answer_token_recall": answer_recall, - "reference_token_recall": reference_recall, - "anchors": anchors[:20], - "anchors_covered": anchors_covered, - "indexed_text_excerpts": [text[:500] for text in indexed_texts[:3]], - } - - -def _percentile(values: Sequence[float], fraction: float) -> float | None: - if not values: - return None - ordered = sorted(float(value) for value in values) - position = (len(ordered) - 1) * fraction - lower = math.floor(position) - upper = math.ceil(position) - if lower == upper: - return ordered[lower] - return ordered[lower] + (ordered[upper] - ordered[lower]) * (position - lower) - - -def _paired_ci(values: Sequence[float]) -> list[float] | None: - """Return a deterministic paired normal-approximation confidence interval.""" - if not values: - return None - mean = statistics.fmean(values) - if len(values) == 1: - return [mean, mean] - margin = 1.96 * statistics.stdev(values) / math.sqrt(len(values)) - return [mean - margin, mean + margin] - - -def _mode_summary(cases: Sequence[Mapping[str, Any]], mode: str) -> dict[str, Any]: - latencies = [float(case["modes"][mode]["latency_ms"]) for case in cases] - return { - "query_count": len(cases), - "recall_5": statistics.fmean(float(case["modes"][mode]["recall_5"]) for case in cases), - "recall_10": statistics.fmean(float(case["modes"][mode]["recall_10"]) for case in cases), - "ndcg_10": statistics.fmean(float(case["modes"][mode]["ndcg_10"]) for case in cases), - "latency_p50_ms": _percentile(latencies, 0.5), - "latency_p95_ms": _percentile(latencies, 0.95), - } - - -def _comparable_rank(case: Mapping[str, Any], mode: str) -> int: - """Use one rank beyond the replay depth for a missing relevant result.""" - rank = case["modes"][mode]["best_relevant_rank"] - if rank is not None: - return int(rank) - replay_depth = max(len(payload["top_doc_ids"]) for payload in case["modes"].values()) - return replay_depth + 1 - - -def _paired_delta_summary(cases: Sequence[Mapping[str, Any]], *, baseline: str) -> dict[str, Any]: - metrics: dict[str, Any] = {} - for metric in ("recall_5", "recall_10", "ndcg_10"): - deltas = [float(case["modes"]["hybrid"][metric]) - float(case["modes"][baseline][metric]) for case in cases] - metrics[metric] = { - "mean": statistics.fmean(deltas), - "ci95": _paired_ci(deltas), - } - rank_deltas = [float(_comparable_rank(case, baseline) - _comparable_rank(case, "hybrid")) for case in cases] - metrics["best_relevant_rank"] = { - "mean_improvement": statistics.fmean(rank_deltas) if rank_deltas else None, - "paired_sample_count": len(rank_deltas), - "ci95": _paired_ci(rank_deltas), - } - return metrics - - -def _slice_memberships(case: Mapping[str, Any]) -> list[tuple[str, str]]: - memberships: list[tuple[str, str]] = [] - for key, value in case.get("labels", {}).items(): - values = value if isinstance(value, list) else [value] - memberships.extend((str(key), str(item)) for item in values) - for key, value in case.get("derived_slices", {}).items(): - memberships.append((str(key), str(value))) - return memberships - - -def _slice_summaries(cases: Sequence[Mapping[str, Any]], modes: Sequence[str]) -> list[dict[str, Any]]: - groups: defaultdict[tuple[str, str], list[Mapping[str, Any]]] = defaultdict(list) - for case in cases: - for membership in _slice_memberships(case): - groups[membership].append(case) - summaries: list[dict[str, Any]] = [] - for (slice_field, value), members in sorted(groups.items()): - if len(members) < 30: - continue - payload: dict[str, Any] = { - "field": slice_field, - "value": value, - "sample_count": len(members), - "modes": {}, - } - for mode in modes: - payload["modes"][mode] = _mode_summary(members, mode) - if "hybrid" in modes: - payload["paired_deltas"] = {} - for baseline in ("dense", "sparse"): - if baseline not in modes: - continue - payload["paired_deltas"][f"hybrid_vs_{baseline}"] = _paired_delta_summary( - members, - baseline=baseline, - ) - summaries.append(payload) - return summaries - - -def _write_jsonl(path: Path, rows: Iterable[Mapping[str, Any]]) -> None: - path.parent.mkdir(parents=True, exist_ok=True) - with path.open("w", encoding="utf-8") as handle: - for row in rows: - handle.write(json.dumps(row, ensure_ascii=False, default=str) + "\n") - - -def _write_trec(path: Path, query_results: Sequence[Mapping[str, Any]], *, doc_id_field: str) -> None: - with path.open("w", encoding="utf-8") as handle: - for result in query_results: - for rank, hit in enumerate(result["hits"], start=1): - doc_id = hit.get(doc_id_field) or _indexed_doc_id(hit, doc_id_field=doc_id_field) or "unknown" - score = float(hit.get("_relevance_score", 1.0 / rank)) - handle.write(f"{result['query_id']} Q0 {doc_id} {rank} {score:.6f} nrl-{result['mode']}\n") - - -def _write_report(path: Path, summary: Mapping[str, Any], cases: Sequence[Mapping[str, Any]]) -> None: - lines = [ - "# Retrieval comparison", - "", - "All modes replay the same extracted LanceDB rows. Extraction statuses are deterministic heuristics; " - "`needs_review` is not a confirmed extraction failure.", - "Best-relevant-rank deltas assign misses one rank beyond the replay depth so rescues and regressions " - "remain paired.", - "", - "## Overall", - "", - "| Mode | Queries | Recall@5 | Recall@10 | nDCG@10 | p50 ms | p95 ms |", - "|---|---:|---:|---:|---:|---:|---:|", - ] - for mode, metrics in summary["modes"].items(): - lines.append( - f"| {mode} | {metrics['query_count']} | {metrics['recall_5']:.4f} | {metrics['recall_10']:.4f} | " - f"{metrics['ndcg_10']:.4f} | {metrics['latency_p50_ms']:.2f} | {metrics['latency_p95_ms']:.2f} |" - ) - lines.append("") - for comparison, metrics in summary.get("paired_deltas", {}).items(): - recall = metrics["recall_10"] - ndcg = metrics["ndcg_10"] - rank = metrics["best_relevant_rank"] - lines.append( - f"- {comparison}: paired ΔR@10 {recall['mean']:.4f} (95% CI {recall['ci95']}), " - f"ΔnDCG@10 {ndcg['mean']:.4f} (95% CI {ndcg['ci95']}), " - f"best-rank improvement {rank['mean_improvement']} " - f"(95% CI {rank['ci95']}, n={rank['paired_sample_count']})" - ) - lines.extend(["", "## Slices with at least 30 queries", ""]) - for slice_result in summary.get("slices", []): - lines.append(f"### {slice_result['field']} = {slice_result['value']} (n={slice_result['sample_count']})") - lines.append("") - for mode, metrics in slice_result["modes"].items(): - lines.append( - f"- {mode}: R@5 {metrics['recall_5']:.4f}, R@10 {metrics['recall_10']:.4f}, " - f"nDCG@10 {metrics['ndcg_10']:.4f}, " - f"p50/p95 {metrics['latency_p50_ms']:.2f}/{metrics['latency_p95_ms']:.2f} ms" - ) - for comparison, metrics in slice_result.get("paired_deltas", {}).items(): - recall = metrics["recall_10"] - ndcg = metrics["ndcg_10"] - rank = metrics["best_relevant_rank"] - lines.append( - f"- {comparison}: paired ΔR@10 {recall['mean']:.4f} (95% CI {recall['ci95']}), " - f"ΔnDCG@10 {ndcg['mean']:.4f} (95% CI {ndcg['ci95']}), " - f"best-rank improvement {rank['mean_improvement']} " - f"(95% CI {rank['ci95']}, n={rank['paired_sample_count']})" - ) - lines.append("") - lines.extend(["## Representative cases", ""]) - categories = Counter(case["comparison_category"] for case in cases) - for category, count in sorted(categories.items()): - lines.append(f"- {category}: {count}") - lines.extend( - [ - "", - "See `query_cases.jsonl` for ranked hits and indexed-text excerpts, and `evidence_crops/` " - "for available annotated page evidence.", - "", - ] - ) - path.write_text("\n".join(lines), encoding="utf-8") - - -def _bbox_values(value: Any) -> list[tuple[float, float, float, float]]: - boxes: list[tuple[float, float, float, float]] = [] - if isinstance(value, dict): - keys = ("x1", "y1", "x2", "y2") - if all(key in value for key in keys): - boxes.append(tuple(float(value[key]) for key in keys)) - for nested in value.values(): - boxes.extend(_bbox_values(nested)) - elif isinstance(value, (list, tuple)): - if len(value) == 4 and all(isinstance(item, (int, float)) for item in value): - boxes.append(tuple(float(item) for item in value)) - else: - for nested in value: - boxes.extend(_bbox_values(nested)) - return boxes - - -def _evidence_case_severity(case: Mapping[str, Any]) -> float: - category = case["comparison_category"] - dense_delta = float(case.get("paired_deltas", {}).get("hybrid_vs_dense", {}).get("recall_10", 0.0)) - if category == "hybrid_rescue": - return dense_delta - if category == "hybrid_regression": - return -dense_delta - status_weight = {"missing_indexed_page": 3.0, "needs_review": 2.0, "not_machine_verifiable": 1.0} - return max((status_weight.get(audit["status"], 0.0) for audit in case.get("extraction_audit", [])), default=0.0) - - -def _evidence_doc_id(case: Mapping[str, Any]) -> str | None: - status_weight = {"missing_indexed_page": 3, "needs_review": 2, "not_machine_verifiable": 1, "covered": 0} - audits = sorted( - case.get("extraction_audit", []), - key=lambda audit: ( - bool(audit.get("vidore_qrel", {}).get("bounding_boxes")), - status_weight.get(audit.get("status"), 0), - ), - reverse=True, - ) - if audits: - return str(audits[0]["doc_id"]) - return next(iter(case.get("relevant_doc_ids", [])), None) - - -def _write_evidence_crops( - output_dir: Path, - cases: Sequence[Mapping[str, Any]], - metadata: LoadedVidoreMetadata, -) -> dict[str, list[str]]: - crops: defaultdict[str, list[str]] = defaultdict(list) - try: - from PIL import Image, ImageDraw - except ImportError: - return {} - for category in ("hybrid_rescue", "hybrid_regression", "all_modes_miss", "extraction_concern"): - candidates = sorted( - (case for case in cases if case["comparison_category"] == category), - key=_evidence_case_severity, - reverse=True, - )[:5] - for case in candidates: - doc_id = _evidence_doc_id(case) - image_index = metadata.corpus_image_indices.get(str(doc_id)) - image_value = ( - metadata.corpus_dataset[image_index].get("image") - if metadata.corpus_dataset is not None and image_index is not None - else None - ) - if isinstance(image_value, dict) and image_value.get("bytes"): - image = Image.open(BytesIO(image_value["bytes"])) - elif isinstance(image_value, dict) and image_value.get("path"): - image = Image.open(image_value["path"]) - else: - image = image_value - if image is None or not hasattr(image, "copy"): - continue - rendered = image.copy().convert("RGB") - draw = ImageDraw.Draw(rendered) - boxes = _bbox_values(metadata.qrel_rows.get((str(case["query_id"]), str(doc_id)), {})) - pixel_boxes: list[tuple[float, float, float, float]] = [] - for x1, y1, x2, y2 in boxes: - if max(x1, y1, x2, y2) <= 1.0: - x1, x2 = x1 * rendered.width, x2 * rendered.width - y1, y2 = y1 * rendered.height, y2 * rendered.height - pixel_boxes.append((x1, y1, x2, y2)) - draw.rectangle((x1, y1, x2, y2), outline="red", width=4) - if pixel_boxes: - padding = max(16, int(0.02 * max(rendered.width, rendered.height))) - rendered = rendered.crop( - ( - max(0, min(box[0] for box in pixel_boxes) - padding), - max(0, min(box[1] for box in pixel_boxes) - padding), - min(rendered.width, max(box[2] for box in pixel_boxes) + padding), - min(rendered.height, max(box[3] for box in pixel_boxes) + padding), - ) - ) - target = output_dir / "evidence_crops" / category / f"{case['query_id']}.png" - target.parent.mkdir(parents=True, exist_ok=True) - rendered.save(target) - crops[category].append(str(target.relative_to(output_dir))) - return dict(crops) - - -def build_comparison_artifacts( - *, - output_dir: Path, - dataset: BeirDataset, - metadata: LoadedVidoreMetadata, - indexed_text: Mapping[str, Sequence[str]], - mode_results: Mapping[str, Sequence[Mapping[str, Any]]], - doc_id_field: str, - provenance: Mapping[str, Any], -) -> dict[str, Any]: - """Analyze complete per-mode results and write the comparison artifact contract.""" - modes = tuple(mode_results) - for mode, results in mode_results.items(): - observed = {str(result["query_id"]) for result in results} - missing = set(dataset.query_ids) - observed - if missing: - raise ValueError(f"Mode {mode!r} is missing results for {len(missing)} queries") - - overlap_values: dict[str, float | None] = {} - for query_id, query in zip(dataset.query_ids, dataset.queries): - relevant = dataset.qrels[query_id] - reference = " ".join(_flatten_reference_text(metadata.corpus_rows.get(doc_id, {})) for doc_id in relevant) - overlap_values[query_id] = _lexical_overlap(query, reference) - overlap_terciles = _terciles(overlap_values) - - results_by_mode = { - mode: {str(result["query_id"]): result for result in results} for mode, results in mode_results.items() - } - extraction_cases: list[dict[str, Any]] = [] - extraction_by_query: defaultdict[str, list[dict[str, Any]]] = defaultdict(list) - cases: list[dict[str, Any]] = [] - for query_id, query in zip(dataset.query_ids, dataset.queries): - relevant = set(dataset.qrels[query_id]) - query_qrels = dataset.qrels[query_id] - query_row = metadata.query_rows.get(query_id, {}) - gold_rows = [metadata.corpus_rows.get(doc_id, {}) for doc_id in relevant] - labels = _existing_labels(query_row) - derived = { - "names_relevant_document_or_entity": _named_gold_entity(query, gold_rows), - "lexical_overlap_tercile": overlap_terciles[query_id], - "has_numeric_currency_percentage_or_identifier_anchor": bool(_ANCHOR_RE.search(query)), - "relevance_scope": "single_page" if len(relevant) == 1 else "multi_page", - } - mode_payload: dict[str, Any] = {} - for mode in modes: - result = results_by_mode[mode][query_id] - metrics = _query_metrics(result["hits"], query_qrels, doc_id_field=doc_id_field) - mode_payload[mode] = { - "latency_ms": float(result["latency_ms"]), - **metrics, - "top_doc_ids": [ - str(hit.get(doc_id_field) or _indexed_doc_id(hit, doc_id_field=doc_id_field) or "") - for hit in result["hits"][:10] - ], - } - for doc_id in sorted(relevant): - audit = { - "query_id": query_id, - "doc_id": doc_id, - "vidore_qrel": { - key: value - for key, value in metadata.qrel_rows.get((query_id, doc_id), {}).items() - if key in {"score", "content_type", "bounding_boxes"} - }, - **_audit_qrel( - query_row=query_row, - corpus_row=metadata.corpus_rows.get(doc_id, {}), - indexed_texts=indexed_text.get(doc_id, ()), - ), - } - extraction_cases.append(audit) - extraction_by_query[query_id].append(audit) - - dense_hit = mode_payload.get("dense", {}).get("recall_10", 0.0) > 0 - hybrid_hit = mode_payload.get("hybrid", {}).get("recall_10", 0.0) > 0 - selected_hits = [payload.get("recall_10", 0.0) > 0 for payload in mode_payload.values()] - if "dense" in modes and "hybrid" in modes and hybrid_hit and not dense_hit: - category = "hybrid_rescue" - elif "dense" in modes and "hybrid" in modes and dense_hit and not hybrid_hit: - category = "hybrid_regression" - elif not any(selected_hits): - category = "all_modes_miss" - elif any(item["status"] in {"missing_indexed_page", "needs_review"} for item in extraction_by_query[query_id]): - category = "extraction_concern" - else: - category = "other" - paired_deltas: dict[str, dict[str, float | int | None]] = {} - if "hybrid" in modes: - for baseline in ("dense", "sparse"): - if baseline not in modes: - continue - paired_deltas[f"hybrid_vs_{baseline}"] = { - metric: float(mode_payload["hybrid"][metric]) - float(mode_payload[baseline][metric]) - for metric in ("recall_5", "recall_10", "ndcg_10") - } - replay_depth = max(len(payload["top_doc_ids"]) for payload in mode_payload.values()) - hybrid_rank = mode_payload["hybrid"]["best_relevant_rank"] or replay_depth + 1 - baseline_rank = mode_payload[baseline]["best_relevant_rank"] or replay_depth + 1 - paired_deltas[f"hybrid_vs_{baseline}"]["best_relevant_rank_improvement"] = int(baseline_rank) - int( - hybrid_rank - ) - cases.append( - { - "query_id": query_id, - "query": query, - "labels": labels, - "derived_slices": derived, - "relevant_doc_ids": sorted(relevant), - "relevant_page_count": len(relevant), - "modes": mode_payload, - "paired_deltas": paired_deltas, - "comparison_category": category, - "extraction_audit": extraction_by_query[query_id], - } - ) - - audit_counts = Counter(item["status"] for item in extraction_cases) - extraction_audit = { - "total_positive_qrels": len(extraction_cases), - "classified_positive_qrels": len(extraction_cases), - "status_counts": dict(sorted(audit_counts.items())), - "method": { - "covered": "answer token recall >= 0.60, reference-page token recall >= 0.35, or all anchors present", - "warning": "needs_review is a weak-overlap heuristic and is never a confirmed extraction failure", - }, - "cases": extraction_cases, - } - summary = { - **dict(provenance), - "query_count": len(cases), - "positive_qrel_count": len(extraction_cases), - "modes": {mode: _mode_summary(cases, mode) for mode in modes}, - "paired_deltas": { - f"hybrid_vs_{baseline}": _paired_delta_summary(cases, baseline=baseline) - for baseline in ("dense", "sparse") - if "hybrid" in modes and baseline in modes - }, - "slices": _slice_summaries(cases, modes), - "case_counts": dict(sorted(Counter(case["comparison_category"] for case in cases).items())), - "best_relevant_rank_method": "A miss is assigned replay_depth + 1 for paired deltas.", - } - crops = _write_evidence_crops(output_dir, cases, metadata) - summary["evidence_crops"] = crops - write_json(output_dir / "summary.json", summary) - _write_jsonl(output_dir / "query_cases.jsonl", cases) - write_json(output_dir / "extraction_audit.json", extraction_audit) - _write_report(output_dir / "report.md", summary, cases) - - for mode, results in mode_results.items(): - mode_dir = output_dir / mode - mode_dir.mkdir(parents=True, exist_ok=True) - _write_jsonl(mode_dir / "query_results.jsonl", results) - run = build_beir_run_from_hits( - dataset.query_ids, - [results_by_mode[mode][query_id]["hits"] for query_id in dataset.query_ids], - doc_id_field=doc_id_field, - ) - metrics = compute_beir_metrics(dataset.qrels, run, ks=(1, 3, 5, 10)) - write_json(mode_dir / "beir_metrics.json", metrics) - _write_trec(mode_dir / "beir_run.trec", results, doc_id_field=doc_id_field) - return summary - - -def _resolved_query_plan(payload: Mapping[str, Any], mode: str) -> ResolvedQueryPlan: - return ResolvedQueryPlan( - top_k=int(payload.get("top_k", 10)), - candidate_k=payload.get("candidate_k"), - page_dedup=bool(payload.get("page_dedup", False)), - content_types=payload.get("content_types"), - lancedb_uri=str(payload["lancedb_uri"]), - table_name=str(payload["table_name"]), - retrieval_mode=mode, - embed_kwargs=dict(payload.get("embed_kwargs") or {}), - rerank=bool(payload.get("rerank", False)), - rerank_kwargs=dict(payload.get("rerank_kwargs") or {}), - ) - - -def _run_mode_queries(dataset: BeirDataset, plan: ResolvedQueryPlan, mode: str) -> list[dict[str, Any]]: - retriever = plan.create_retriever() - query_kwargs = plan.query_kwargs() - results: list[dict[str, Any]] = [] - for query_id, query in zip(dataset.query_ids, dataset.queries): - started = time.perf_counter() - hits = [dict(hit) for hit in retriever.query(query, **query_kwargs)] - results.append( - { - "query_id": query_id, - "query": query, - "mode": mode, - "latency_ms": round((time.perf_counter() - started) * 1000.0, 3), - "hits": hits, - } - ) - return results - - -def compare_retrieval( - run_dir: Path, - *, - modes: Sequence[str] = SUPPORTED_COMPARISON_MODES, - output_dir: Path | None = None, -) -> dict[str, Any]: - """Validate a completed ViDoRe run, replay its index, and write diagnostics.""" - run_dir = run_dir.expanduser().resolve() - normalized_modes = tuple(dict.fromkeys(str(mode).strip().lower() for mode in modes)) - invalid_modes = sorted(set(normalized_modes) - set(SUPPORTED_COMPARISON_MODES)) - if invalid_modes or not normalized_modes: - raise ValueError(f"modes must be a non-empty subset of {', '.join(SUPPORTED_COMPARISON_MODES)}") - - status = _read_json(run_dir / "status.json") - results = _read_json(run_dir / "results.json") - if status.get("status") != "complete" or not results.get("success") or results.get("dry_run"): - raise ValueError(f"RUN_DIR must contain a completed, successful, non-dry-run harness run: {run_dir}") - if results.get("mode") not in {"local", "batch"}: - raise ValueError("compare-retrieval requires a completed local or batch run") - - resolved = _read_json(run_dir / "resolved_benchmark.json") - evaluation = dict(resolved.get("evaluation") or {}) - if evaluation.get("loader") != "vidore_hf": - raise ValueError("compare-retrieval currently requires a ViDoRe Hugging Face evaluation run") - query_plan_payload = _read_json(run_dir / "query_plan.json") - if query_plan_payload.get("rerank"): - raise ValueError("compare-retrieval does not run model reranking; use an unrereanked source run") - - table = lancedb.connect(str(query_plan_payload["lancedb_uri"])).open_table(str(query_plan_payload["table_name"])) - caps = inspect_lancedb_table_object(table) - if not (caps.has_vector and caps.has_fts): - raise ValueError("RUN_DIR must contain a hybrid-capable LanceDB table with vector and FTS capabilities") - - target = (output_dir or run_dir / "retrieval_comparison").expanduser().resolve() - if target.exists(): - raise ValueError(f"Refusing to overwrite existing comparison directory: {target}") - - dataset_name = str(evaluation.get("dataset_name") or "") - split = str(evaluation.get("split") or "test") - doc_id_field = str(evaluation.get("doc_id_field") or "pdf_page") - dataset = load_beir_dataset( - "vidore_hf", - dataset_name=dataset_name, - split=split, - query_language=evaluation.get("query_language"), - doc_id_field=doc_id_field, - ) - metadata = _load_vidore_metadata(dataset_name, split, doc_id_field=doc_id_field) - indexed_text = _load_indexed_text(table, doc_id_field=doc_id_field) - mode_results: dict[str, Sequence[Mapping[str, Any]]] = {} - for mode in normalized_modes: - mode_results[mode] = _run_mode_queries(dataset, _resolved_query_plan(query_plan_payload, mode), mode) - target.mkdir(parents=True, exist_ok=False) - lancedb_version = getattr(lancedb, "__version__", "unknown") - return build_comparison_artifacts( - output_dir=target, - dataset=dataset, - metadata=metadata, - indexed_text=indexed_text, - mode_results=mode_results, - doc_id_field=doc_id_field, - provenance={ - "source_run_dir": str(run_dir), - "dataset": dataset_name, - "split": split, - "doc_id_field": doc_id_field, - "resolved_index_mode": caps.retrieval_mode, - "lancedb_version": lancedb_version, - "fusion": str(DEFAULT_HYBRID_FUSION_POLICY), - }, - ) diff --git a/nemo_retriever/src/nemo_retriever/harness/slack.py b/nemo_retriever/src/nemo_retriever/harness/slack.py index ad342be9e5..180c54ee22 100644 --- a/nemo_retriever/src/nemo_retriever/harness/slack.py +++ b/nemo_retriever/src/nemo_retriever/harness/slack.py @@ -145,9 +145,6 @@ def _run_metadata(results_payload: dict[str, Any], environment_payload: dict[str if isinstance(raw_run_metadata, dict): metadata.update(raw_run_metadata) metadata.update(environment_payload) - for key in ("requested_index_mode", "resolved_index_mode"): - if results_payload.get(key) is not None: - metadata[key] = results_payload[key] if "python" in metadata and "python_version" not in metadata: metadata["python_version"] = metadata["python"] return metadata @@ -496,10 +493,6 @@ def _release_reference_blocks( for run in report.results: if not run.success or run.dataset != reference.dataset: continue - run_index_mode = run.run_metadata.get("resolved_index_mode") - if run_index_mode is not None or reference.resolved_index_mode is not None: - if run_index_mode != reference.resolved_index_mode: - continue rows = [_three_column_row("METRIC", "CURRENT", reference.release.upper(), bold=True)] for key in ("gpu_sku", "gpu_count", "workload_gpu_count"): current_value = run.run_metadata.get(key) diff --git a/nemo_retriever/src/nemo_retriever/ingest/plan.py b/nemo_retriever/src/nemo_retriever/ingest/plan.py index 25671ae610..88329b772c 100644 --- a/nemo_retriever/src/nemo_retriever/ingest/plan.py +++ b/nemo_retriever/src/nemo_retriever/ingest/plan.py @@ -10,11 +10,10 @@ from pathlib import Path from typing import Any, Literal, Sequence, cast -from nemo_retriever.common.input_files import ( - AUTO_INPUT_EXTENSIONS, - INPUT_TYPE_EXTENSIONS, - expand_input_file_patterns, - resolve_input_files, +from nemo_retriever.ingestor.manifest import ( + ExtractionBranchPlan, + build_input_manifest, + plan_extraction_branches, ) from nemo_retriever.common.modality.ocr.config import OCRLang, OCRVersion from nemo_retriever.common.params import ( @@ -34,19 +33,19 @@ VideoFrameTextDedupParams, build_embed_option_kwargs, ) +from nemo_retriever.common.input_files import ( + AUTO_INPUT_EXTENSIONS, + INPUT_TYPE_EXTENSIONS, + expand_input_file_patterns, + resolve_input_files, +) +from nemo_retriever.models import resolve_embed_model from nemo_retriever.ingest.index_mode import ( RequestedIngestIndexMode, - ResolvedIngestIndexMode, inspect_existing_lancedb_mode, resolve_ingest_index_mode, validate_requested_index_mode, ) -from nemo_retriever.ingestor.manifest import ( - ExtractionBranchPlan, - build_input_manifest, - plan_extraction_branches, -) -from nemo_retriever.models import resolve_embed_model IngestRunModeValue = Literal["inprocess", "batch"] IngestInputTypeValue = Literal["auto", "pdf", "doc", "txt", "html", "image", "audio", "video"] @@ -312,8 +311,6 @@ class ResolvedIngestPlan: vdb_params: VdbUploadParams | None lancedb_uri: str table_name: str - requested_index_mode: IngestIndexModeValue - index_mode: ResolvedIngestIndexMode sparse: bool = False def extract_call_kwargs(self) -> dict[str, Any]: @@ -756,7 +753,5 @@ def resolve_ingest_plan(request: IngestPlanRequest) -> ResolvedIngestPlan: vdb_params=vdb_params, lancedb_uri=storage.lancedb_uri, table_name=storage.table_name, - requested_index_mode=requested_index_mode, - index_mode=resolved_index_mode, sparse=resolved_index_mode == "sparse", ) diff --git a/nemo_retriever/src/nemo_retriever/service/config.py b/nemo_retriever/src/nemo_retriever/service/config.py index 27da9576e2..7fa9ada0ac 100644 --- a/nemo_retriever/src/nemo_retriever/service/config.py +++ b/nemo_retriever/src/nemo_retriever/service/config.py @@ -349,7 +349,6 @@ class VectorDbConfig(RichModel): enabled: bool = False lancedb_uri: str = "/data/vectordb" table_name: str = "nemo_retriever" - index_mode: Literal["auto", "dense", "hybrid"] = "auto" embed_model: str = "nvidia/llama-nemotron-embed-vl-1b-v2" embed_model_provider_prefix: str | None = None vectordb_url: str = Field( diff --git a/nemo_retriever/src/nemo_retriever/service/retriever-service.yaml b/nemo_retriever/src/nemo_retriever/service/retriever-service.yaml index 5c014b063d..2fbd077f99 100644 --- a/nemo_retriever/src/nemo_retriever/service/retriever-service.yaml +++ b/nemo_retriever/src/nemo_retriever/service/retriever-service.yaml @@ -126,14 +126,12 @@ vectordb: enabled: false lancedb_uri: "/data/vectordb" table_name: "nemo_retriever" - # auto creates hybrid storage when fresh and preserves existing physical indexes. - # Set hybrid explicitly to add FTS to an existing dense table. - index_mode: "auto" embed_model: "nvidia/llama-nemotron-embed-vl-1b-v2" embed_model_provider_prefix: null # /v1/query auto-detects retrieval from the table's own indexes: a table with # both a vector column and an FTS/BM25 index runs hybrid, a vector-only table - # runs dense. Fresh auto/hybrid storage builds FTS after its first write. + # runs dense. The FTS index must be built at ingestion time; the service never + # mutates the table at query time. vectordb_url: "http://nemo-retriever-vectordb:7671" resources: diff --git a/nemo_retriever/src/nemo_retriever/service/vectordb_app.py b/nemo_retriever/src/nemo_retriever/service/vectordb_app.py index 7901793c94..d51c44a98d 100644 --- a/nemo_retriever/src/nemo_retriever/service/vectordb_app.py +++ b/nemo_retriever/src/nemo_retriever/service/vectordb_app.py @@ -281,8 +281,6 @@ def index_health(self) -> dict[str, Any]: "effective_index_mode": None, "fts_present": False, "fts_unindexed_rows": None, - "writes_since_optimize": self._writes_since_optimize, - "rows_since_optimize": self._rows_since_optimize, "last_optimization": dict(self._last_optimization), } try: @@ -548,8 +546,6 @@ async def health() -> dict[str, Any]: "effective_index_mode": None, "fts_present": False, "fts_unindexed_rows": None, - "writes_since_optimize": 0, - "rows_since_optimize": 0, "last_optimization": {"status": "never", "completed_at": None, "error": None}, } ) diff --git a/nemo_retriever/tests/test_helm_vectordb_index_mode.py b/nemo_retriever/tests/helm/test_vectordb_index_mode.py similarity index 79% rename from nemo_retriever/tests/test_helm_vectordb_index_mode.py rename to nemo_retriever/tests/helm/test_vectordb_index_mode.py index 03c4d61f2c..2f19f1c0c2 100644 --- a/nemo_retriever/tests/test_helm_vectordb_index_mode.py +++ b/nemo_retriever/tests/helm/test_vectordb_index_mode.py @@ -11,7 +11,7 @@ import pytest import yaml -_ROOT = Path(__file__).resolve().parents[2] +_ROOT = Path(__file__).resolve().parents[3] _CHART = _ROOT / "nemo_retriever" / "helm" @@ -35,15 +35,10 @@ def _helm_template(*args: str) -> subprocess.CompletedProcess[str]: @pytest.mark.parametrize("mode", ["auto", "dense", "hybrid"]) -def test_vectordb_index_mode_renders_into_config_and_deployment(mode: str) -> None: +def test_vectordb_index_mode_renders_into_deployment(mode: str) -> None: result = _helm_template("--set", f"serviceConfig.vectordb.indexMode={mode}") assert result.returncode == 0, result.stderr documents = [doc for doc in yaml.safe_load_all(result.stdout) if doc] - configmap = next( - doc for doc in documents if doc.get("kind") == "ConfigMap" and "retriever-service.yaml" in doc.get("data", {}) - ) - config = yaml.safe_load(configmap["data"]["retriever-service.yaml"]) - assert config["vectordb"]["index_mode"] == mode deployment = next( doc for doc in documents if doc.get("kind") == "Deployment" and doc["metadata"]["name"].endswith("-vectordb") ) diff --git a/nemo_retriever/tests/test_ingest_index_mode.py b/nemo_retriever/tests/ingest/test_index_mode.py similarity index 99% rename from nemo_retriever/tests/test_ingest_index_mode.py rename to nemo_retriever/tests/ingest/test_index_mode.py index 1f63bc5aec..f32662646c 100644 --- a/nemo_retriever/tests/test_ingest_index_mode.py +++ b/nemo_retriever/tests/ingest/test_index_mode.py @@ -3,6 +3,7 @@ # SPDX-License-Identifier: Apache-2.0 import pytest + from nemo_retriever.ingest.index_mode import resolve_ingest_index_mode diff --git a/nemo_retriever/tests/test_harness_artifacts.py b/nemo_retriever/tests/test_harness_artifacts.py index 11be9b6ce8..69422c0d9f 100644 --- a/nemo_retriever/tests/test_harness_artifacts.py +++ b/nemo_retriever/tests/test_harness_artifacts.py @@ -2,16 +2,17 @@ # All rights reserved. # SPDX-License-Identifier: Apache-2.0 +from contextlib import contextmanager import json import subprocess -from contextlib import contextmanager from types import SimpleNamespace import pytest + from nemo_retriever.harness.artifact_writer import ( - ArtifactWriter, append_text, artifact_paths, + ArtifactWriter, capture_output_to_log, redact, ) @@ -24,15 +25,9 @@ HarnessRunError, ) from nemo_retriever.harness.diff import diff_artifact_dirs -from nemo_retriever.harness.environment import collect_environment -from nemo_retriever.harness.execution import ( - _concise_message, - _run_result_payload, - _write_failure_result, - run_benchmark, -) - from nemo_retriever.harness import environment as harness_environment +from nemo_retriever.harness.environment import collect_environment +from nemo_retriever.harness.execution import _concise_message, _run_result_payload, _write_failure_result, run_benchmark def _write_json(path, payload): @@ -394,26 +389,9 @@ def test_diff_prefers_results_but_reads_legacy_summary(tmp_path): assert payload["left"].endswith("left/results.json") assert payload["right"].endswith("right/summary_metrics.json") - assert payload["comparable_index_mode"] is True assert payload["summary_metrics"]["recall_5"]["delta"] == pytest.approx(0.1) -def test_diff_marks_cross_index_mode_results_as_distinct_baseline_series(tmp_path): - left = tmp_path / "dense" - right = tmp_path / "hybrid" - left.mkdir() - right.mkdir() - _write_json(left / "results.json", {"resolved_index_mode": "dense", "summary_metrics": {"recall_5": 0.8}}) - _write_json(right / "results.json", {"resolved_index_mode": "hybrid", "summary_metrics": {"recall_5": 0.9}}) - - payload = diff_artifact_dirs(left, right) - - assert payload["left_resolved_index_mode"] == "dense" - assert payload["right_resolved_index_mode"] == "hybrid" - assert payload["comparable_index_mode"] is False - assert "distinct baseline series" in payload["comparison_warning"] - - def test_environment_records_relevant_runtime_flags_without_credentials(monkeypatch): monkeypatch.setenv("HF_HUB_OFFLINE", "1") monkeypatch.setenv("NEMO_RETRIEVER_HF_CACHE_DIR", "/models/huggingface") diff --git a/nemo_retriever/tests/test_harness_benchmark_registry.py b/nemo_retriever/tests/test_harness_benchmark_registry.py index d94ffbd31f..c461471734 100644 --- a/nemo_retriever/tests/test_harness_benchmark_registry.py +++ b/nemo_retriever/tests/test_harness_benchmark_registry.py @@ -5,15 +5,17 @@ from pathlib import Path import pytest + from nemo_retriever.harness.benchmark_registry import ( - VIDORE_V3_EMBED_MODEL, - VIDORE_V3_PUBLIC_DATASETS, get_benchmark, get_dataset, get_runset, + VIDORE_V3_EMBED_MODEL, + VIDORE_V3_PUBLIC_DATASETS, ) from nemo_retriever.harness.runfile import load_runfile + VIDORE_V3_DATASET_FACTS = { "vidore_v3_computer_science": (2, 1360, 1290), "vidore_v3_energy": (41, 2225, 1848), @@ -45,7 +47,6 @@ def test_vidore_v3_benchmarks_use_page_level_multimodal_defaults(dataset_name: s "embed_modality": "text_image", "embed_granularity": "page", } - assert benchmark.ingest["storage"]["index_mode"] == "hybrid" assert benchmark.query["embed_model_name"] == VIDORE_V3_EMBED_MODEL assert benchmark.evaluation["dataset_name"] == dataset_name assert benchmark.evaluation["doc_id_field"] == "pdf_page" @@ -70,13 +71,3 @@ def test_vidore_v3_all_runset_contains_every_public_dataset() -> None: runset = get_runset("vidore_v3_all") assert runset.runs == tuple(f"{name}_beir" for name in VIDORE_V3_PUBLIC_DATASETS) - - -def test_vidore_v3_dense_runset_keeps_historical_configuration_explicit() -> None: - runset = get_runset("vidore_v3_all_dense") - - assert runset.runs == tuple(f"{name}_beir_dense" for name in VIDORE_V3_PUBLIC_DATASETS) - for benchmark_name in runset.runs: - benchmark = get_benchmark(benchmark_name) - assert benchmark.ingest["storage"]["index_mode"] == "dense" - assert benchmark.query["retrieval_mode"] == "dense" diff --git a/nemo_retriever/tests/test_harness_slack.py b/nemo_retriever/tests/test_harness_slack.py index 70767f9258..2255b16931 100644 --- a/nemo_retriever/tests/test_harness_slack.py +++ b/nemo_retriever/tests/test_harness_slack.py @@ -7,20 +7,21 @@ import pytest import requests +from typer.testing import CliRunner + from nemo_retriever.harness.benchmark_registry import VIDORE_V3_PUBLIC_DATASETS from nemo_retriever.harness.cli import app from nemo_retriever.harness.slack import ( DEFAULT_SLACK_METRIC_KEYS, - MAX_SLACK_TABLE_ROWS, - VIDORE_V3_REPORT_DATASETS, HarnessRunReport, HarnessSessionReport, + MAX_SLACK_TABLE_ROWS, + VIDORE_V3_REPORT_DATASETS, build_slack_payload, load_replay_report, load_session_report, post_slack_payload, ) -from typer.testing import CliRunner def _write_json(path: Path, payload: dict) -> None: @@ -391,39 +392,3 @@ def test_post_slack_shows_current_release_reference_without_a_verdict(monkeypatc ["GPUs available to workload", "8", "N/A"], ["pages", "1940", "1940"], ] - - -def test_release_reference_matches_resolved_index_mode(monkeypatch, tmp_path): - session_dir = _write_session(tmp_path) - results_path = session_dir / "001_jp20_beir" / "results.json" - results = json.loads(results_path.read_text(encoding="utf-8")) - results["resolved_index_mode"] = "hybrid" - _write_json(results_path, results) - reference_file = tmp_path / "mode-specific-reference.json" - _write_json( - reference_file, - { - "baselines": [ - { - "name": "Dense baseline", - "dataset": "jp20", - "resolved_index_mode": "dense", - "metrics": {"pages": 1940}, - }, - { - "name": "Hybrid baseline", - "dataset": "jp20", - "resolved_index_mode": "hybrid", - "metrics": {"pages": 1940}, - }, - ], - }, - ) - monkeypatch.setenv("RETRIEVER_HARNESS_REFERENCE_FILE", str(reference_file)) - - result = CliRunner().invoke(app, ["post-slack", "--preview", str(session_dir)]) - - assert result.exit_code == 0 - payload_text = result.stdout - assert "Dense baseline" not in payload_text - assert "Hybrid baseline" in payload_text diff --git a/nemo_retriever/tests/test_retrieval_comparison.py b/nemo_retriever/tests/test_retrieval_comparison.py deleted file mode 100644 index df7422f7c5..0000000000 --- a/nemo_retriever/tests/test_retrieval_comparison.py +++ /dev/null @@ -1,197 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. -# All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -from __future__ import annotations - -import json -import math -from types import SimpleNamespace - -import nemo_retriever.harness.retrieval_comparison as retrieval_comparison -import pytest -from nemo_retriever.harness.retrieval_comparison import ( - LoadedVidoreMetadata, - _audit_qrel, - _indexed_doc_id, - _query_metrics, - build_comparison_artifacts, - compare_retrieval, -) -from nemo_retriever.tools.recall.beir import BeirDataset - - -def _result(query_id: str, mode: str, docs: list[str]) -> dict: - return { - "query_id": query_id, - "query": f"query {query_id}", - "mode": mode, - "latency_ms": {"dense": 10.0, "sparse": 5.0, "hybrid": 12.0}[mode], - "hits": [{"pdf_page": doc_id, "text": f"hit {doc_id}", "_relevance_score": 1.0} for doc_id in docs], - } - - -def test_indexed_doc_id_maps_raw_lancedb_metadata_and_source() -> None: - row = { - "metadata": json.dumps({"page_number": 12, "type": "text"}), - "source": json.dumps({"source_id": "/data/annual_report.pdf", "source_name": "annual_report.pdf"}), - } - - assert _indexed_doc_id(row, doc_id_field="pdf_page") == "annual_report_12" - - -def test_empty_text_on_an_indexed_page_is_not_reported_as_a_missing_page() -> None: - audit = _audit_qrel( - query_row={"answer": "42%"}, - corpus_row={"text": "The result was 42%."}, - indexed_texts=[""], - ) - - assert audit["status"] == "needs_review" - - -def test_per_query_ndcg_preserves_graded_qrels() -> None: - metrics = _query_metrics( - [{"pdf_page": "secondary"}, {"pdf_page": "primary"}], - {"primary": 2, "secondary": 1}, - doc_id_field="pdf_page", - ) - - expected = (1.0 + 2.0 / math.log2(3)) / (2.0 + 1.0 / math.log2(3)) - assert metrics["ndcg_10"] == pytest.approx(expected) - - -def test_tiny_comparison_covers_rescues_regressions_and_extraction_audit(tmp_path) -> None: - query_ids = ["rare", "paraphrase", "missing", "anchors", "regression"] - dataset = BeirDataset( - dataset_name="tiny", - query_ids=query_ids, - queries=[ - "Find identifier ZX-9001", - "Which team lowered its energy use?", - "What is the absent answer?", - "What percentage was reported?", - "Explain the semantic policy", - ], - qrels={query_id: {f"doc_{index}": 1} for index, query_id in enumerate(query_ids, start=1)}, - ) - metadata = LoadedVidoreMetadata( - query_rows={ - "rare": {"query_id": "rare", "answer": "ZX-9001", "query_format": "keyword"}, - "paraphrase": {"query_id": "paraphrase", "answer": "Facilities", "query_format": "question"}, - "missing": {"query_id": "missing", "answer": "missing", "query_format": "question"}, - "anchors": {"query_id": "anchors", "answer": "42%", "query_format": "question"}, - "regression": {"query_id": "regression", "answer": "semantic", "query_format": "instruction"}, - }, - corpus_rows={ - "doc_1": {"text": "The rare identifier is ZX-9001."}, - "doc_2": {"text": "Facilities reduced electricity consumption."}, - "doc_3": {"text": "missing reference page"}, - "doc_4": {"text": "The result was 42%."}, - "doc_5": {"text": "A semantic retrieval policy."}, - }, - ) - indexed_text = { - "doc_1": ["Identifier ZX-9001 appears here."], - "doc_2": ["Facilities reduced electricity consumption."], - "doc_4": ["unrelated extraction without the answer"], - "doc_5": ["semantic retrieval policy"], - } - rankings = { - "dense": [[], ["doc_2"], [], ["doc_4"], ["doc_5"]], - "sparse": [["doc_1"], [], [], ["doc_4"], []], - "hybrid": [["doc_1"], ["doc_2"], [], ["doc_4"], []], - } - mode_results = { - mode: [_result(query_id, mode, docs) for query_id, docs in zip(query_ids, mode_rankings)] - for mode, mode_rankings in rankings.items() - } - - summary = build_comparison_artifacts( - output_dir=tmp_path, - dataset=dataset, - metadata=metadata, - indexed_text=indexed_text, - mode_results=mode_results, - doc_id_field="pdf_page", - provenance={"dataset": "tiny", "lancedb_version": "test"}, - ) - - assert summary["query_count"] == 5 - assert summary["case_counts"] == { - "all_modes_miss": 1, - "extraction_concern": 1, - "hybrid_regression": 1, - "hybrid_rescue": 1, - "other": 1, - } - audit = json.loads((tmp_path / "extraction_audit.json").read_text()) - assert audit["classified_positive_qrels"] == 5 - assert audit["status_counts"]["missing_indexed_page"] == 1 - assert audit["status_counts"]["needs_review"] == 1 - assert (tmp_path / "summary.json").exists() - assert (tmp_path / "query_cases.jsonl").exists() - assert (tmp_path / "report.md").exists() - for mode in rankings: - assert (tmp_path / mode / "query_results.jsonl").exists() - assert (tmp_path / mode / "beir_metrics.json").exists() - assert (tmp_path / mode / "beir_run.trec").exists() - - -def test_compare_retrieval_replays_hybrid_even_when_source_run_was_hybrid(tmp_path, monkeypatch) -> None: - run_dir = tmp_path / "run" - run_dir.mkdir() - (run_dir / "status.json").write_text(json.dumps({"status": "complete"})) - (run_dir / "results.json").write_text(json.dumps({"success": True, "dry_run": False, "mode": "local"})) - (run_dir / "resolved_benchmark.json").write_text( - json.dumps({"evaluation": {"loader": "vidore_hf", "dataset_name": "tiny", "split": "test"}}) - ) - (run_dir / "query_plan.json").write_text( - json.dumps( - { - "lancedb_uri": str(tmp_path / "lancedb"), - "table_name": "tiny", - "retrieval_mode": "hybrid", - "rerank": False, - } - ) - ) - table = object() - monkeypatch.setattr( - retrieval_comparison.lancedb, - "connect", - lambda _uri: SimpleNamespace(open_table=lambda _table_name: table), - ) - monkeypatch.setattr( - retrieval_comparison, - "inspect_lancedb_table_object", - lambda _table: SimpleNamespace(has_vector=True, has_fts=True, retrieval_mode="hybrid"), - ) - dataset = BeirDataset(dataset_name="tiny", query_ids=["q1"], queries=["query"], qrels={"q1": {"d1": 1}}) - monkeypatch.setattr(retrieval_comparison, "load_beir_dataset", lambda *_args, **_kwargs: dataset) - monkeypatch.setattr( - retrieval_comparison, - "_load_vidore_metadata", - lambda *_args, **_kwargs: LoadedVidoreMetadata(query_rows={}, corpus_rows={}), - ) - monkeypatch.setattr(retrieval_comparison, "_load_indexed_text", lambda *_args, **_kwargs: {}) - resolved_plan = object() - monkeypatch.setattr(retrieval_comparison, "_resolved_query_plan", lambda _payload, _mode: resolved_plan) - calls = [] - replayed = [{"query_id": "q1", "query": "query", "mode": "hybrid", "latency_ms": 1.0, "hits": []}] - - def replay(_dataset, plan, mode): - calls.append((plan, mode)) - return replayed - - monkeypatch.setattr(retrieval_comparison, "_run_mode_queries", replay) - monkeypatch.setattr( - retrieval_comparison, - "build_comparison_artifacts", - lambda **kwargs: {"mode_results": kwargs["mode_results"]}, - ) - - result = compare_retrieval(run_dir, modes=("hybrid",), output_dir=tmp_path / "comparison") - - assert calls == [(resolved_plan, "hybrid")] - assert result["mode_results"]["hybrid"] == replayed diff --git a/nemo_retriever/tests/test_root_cli_workflow.py b/nemo_retriever/tests/test_root_cli_workflow.py index f87e60ff26..c898222101 100644 --- a/nemo_retriever/tests/test_root_cli_workflow.py +++ b/nemo_retriever/tests/test_root_cli_workflow.py @@ -1730,6 +1730,66 @@ def test_root_ingest_rejects_redundant_no_dedup_flag(tmp_path) -> None: assert "No such option" in result.output +def test_root_ingest_default_builds_vector_and_fts_table(monkeypatch, tmp_path) -> None: + lancedb = pytest.importorskip("lancedb") + from nemo_retriever.common.vdb.lancedb import LanceDB + + fake_ingestor = _make_fake_ingestor() + doc = tmp_path / "a.pdf" + doc.write_bytes(b"%PDF-1.4\n") + db_path = tmp_path / "db" + records = [ + [ + { + "document_type": "text", + "metadata": { + "embedding": [1.0, 0.0], + "content": "alpha hybrid manual", + "content_metadata": {"id": "alpha", "page_number": 1}, + "source_metadata": {"source_id": str(doc)}, + }, + }, + { + "document_type": "text", + "metadata": { + "embedding": [0.0, 1.0], + "content": "beta hybrid manual", + "content_metadata": {"id": "beta", "page_number": 2}, + "source_metadata": {"source_id": str(doc)}, + }, + }, + ] + ] + + def write_with_real_lancedb(params) -> Any: + LanceDB( + **params.vdb_kwargs, + vector_dim=2, + num_partitions=1, + num_sub_vectors=1, + ).run(records) + return fake_ingestor + + fake_ingestor.vdb_upload.side_effect = write_with_real_lancedb + monkeypatch.setattr(ingest_execution, "create_ingestor", lambda **_: fake_ingestor) + monkeypatch.setattr( + ingest_execution, + "_count_lancedb_rows", + lambda uri, table_name: lancedb.connect(uri).open_table(table_name).count_rows(), + ) + + result = RUNNER.invoke( + cli_main.app, + ["ingest", str(doc), "--lancedb-uri", str(db_path), "--table-name", "hybrid_docs"], + ) + + assert result.exit_code == 0, result.output + table = lancedb.connect(str(db_path)).open_table("hybrid_docs") + assert "vector" in table.schema.names + index_names = {index.name.lower() for index in table.list_indices()} + assert any("text" in name or "fts" in name for name in index_names) + + def test_root_ingest_index_mode_sparse_skips_embedding_and_writes_fts_table(monkeypatch, tmp_path) -> None: lancedb = pytest.importorskip("lancedb") fake_ingestor = _make_fake_ingestor() diff --git a/nemo_retriever/tests/test_service_vectordb_app.py b/nemo_retriever/tests/test_service_vectordb_app.py index 43ba0a1f96..847e04e6fc 100644 --- a/nemo_retriever/tests/test_service_vectordb_app.py +++ b/nemo_retriever/tests/test_service_vectordb_app.py @@ -7,11 +7,11 @@ import sys from unittest.mock import MagicMock, PropertyMock, patch -import nemo_retriever.service.vectordb_app as vectordb_module import pytest from fastapi.testclient import TestClient + +import nemo_retriever.service.vectordb_app as vectordb_module from nemo_retriever.common.vdb.hybrid_fusion import DEFAULT_HYBRID_FUSION_POLICY -from nemo_retriever.service.config import VectorDbConfig from nemo_retriever.service.vectordb_app import ( VectorDBState, _embed_queries_remote, @@ -19,7 +19,6 @@ _tensor_to_embedding_rows, create_vectordb_app, ) -from pydantic import ValidationError @pytest.mark.parametrize( @@ -93,14 +92,6 @@ def test_health_reports_effective_retrieval_mode_none_without_table(tmp_path) -> assert body["last_optimization"]["status"] == "never" -def test_vectordb_config_validates_index_mode() -> None: - assert VectorDbConfig().index_mode == "auto" - assert VectorDbConfig(index_mode="dense").index_mode == "dense" - assert VectorDbConfig(index_mode="hybrid").index_mode == "hybrid" - with pytest.raises(ValidationError): - VectorDbConfig(index_mode="sparse") - - def test_health_stays_ok_when_index_inspection_errors(tmp_path) -> None: app = create_vectordb_app( lancedb_uri=str(tmp_path), diff --git a/nemo_retriever/tests/test_service_vectordb_hybrid_integration.py b/nemo_retriever/tests/test_service_vectordb_hybrid_integration.py index 81d2481af1..5babb6985d 100644 --- a/nemo_retriever/tests/test_service_vectordb_hybrid_integration.py +++ b/nemo_retriever/tests/test_service_vectordb_hybrid_integration.py @@ -8,13 +8,13 @@ from datetime import timedelta from unittest.mock import patch +import lancedb import pytest from fastapi.testclient import TestClient + from nemo_retriever.service import vectordb_app as vectordb_module from nemo_retriever.service.vectordb_app import VectorDBState, create_vectordb_app -import lancedb - _DIM = 4 _ROW = { "vector": [1.0, 0.0, 0.0, 0.0], @@ -100,8 +100,6 @@ def test_incremental_write_threshold_runs_optimize_and_updates_health(tmp_path, optimize.assert_called_once() health = state.index_health() assert health["last_optimization"]["status"] == "ok" - assert health["writes_since_optimize"] == 0 - assert health["rows_since_optimize"] == 0 @pytest.mark.integration From a2b072e1124e0f179d9ced54d4b8db7dff0386dd Mon Sep 17 00:00:00 2001 From: Jacob Ioffe Date: Fri, 7 Aug 2026 15:03:12 +0000 Subject: [PATCH 6/7] Clarify auto index mode defaults Signed-off-by: Jacob Ioffe --- nemo_retriever/README.md | 6 ++++++ nemo_retriever/docs/cli/README.md | 2 +- nemo_retriever/helm/README.md | 9 +++++---- nemo_retriever/src/nemo_retriever/cli/ingest/options.py | 6 +++--- nemo_retriever/src/nemo_retriever/cli/query/options.py | 4 ++-- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/nemo_retriever/README.md b/nemo_retriever/README.md index f640fdedb5..c775d96abb 100644 --- a/nemo_retriever/README.md +++ b/nemo_retriever/README.md @@ -193,6 +193,12 @@ retriever ingest /your-example-dir \ --table-name nemo-retriever ``` +You do not need to choose a retrieval index mode for the normal workflow. The +default `index_mode=auto` creates NeMo Retriever's tested hybrid table (dense +vectors plus BM25/full-text search), and query mode `auto` uses that table +automatically. The explicit `dense`, `hybrid`, and `sparse` modes are advanced +overrides for experiments or specialized deployments. + Chunks land at `./lancedb/nemo-retriever`, which matches the storage settings used in [Run a recall query](#run-a-recall-query) below. With the `[local]` extra installed (see setup), defaults point at local-GPU extraction diff --git a/nemo_retriever/docs/cli/README.md b/nemo_retriever/docs/cli/README.md index f952054c6e..6a542bdb22 100644 --- a/nemo_retriever/docs/cli/README.md +++ b/nemo_retriever/docs/cli/README.md @@ -255,7 +255,7 @@ These options apply to `retriever ingest`, `retriever ingest local`, and | `--lancedb-uri` | `lancedb` | LanceDB database URI. | | `--table-name` | `nemo-retriever` | LanceDB table name. Must match query-time storage flags. | | `--overwrite/--append` | overwrite | Overwrite the table by default; use `--append` to add rows. | -| `--index-mode` | `auto` | `auto` creates a hybrid vector + BM25/FTS table. On append it preserves the existing physical mode. Explicit `hybrid` upgrades a dense table; destructive or sparse/dense mismatches are rejected. | +| `--index-mode` | `auto` | Recommended: leave this unset. `auto` creates the tested hybrid vector + BM25/FTS configuration for new tables and preserves an existing table on append. Use `dense`, `hybrid`, or `sparse` only for explicit experiments or specialized deployments. | | `--method` | planner default | PDF extraction method such as `pdfium` or `nemotron_parse`. | | `--extract-text`, `--extract-tables`, `--extract-charts` | planner default | Enable or disable extraction families. | | `--ocr-version` | planner default | OCR engine version for local extraction. | diff --git a/nemo_retriever/helm/README.md b/nemo_retriever/helm/README.md index 46c15af540..a54ecec8e5 100644 --- a/nemo_retriever/helm/README.md +++ b/nemo_retriever/helm/README.md @@ -344,10 +344,11 @@ The retriever service picks up the in-cluster ASR endpoint when `nimOperator.aud #### VectorDB and the embed endpoint { #vectordb-and-the-embed-endpoint } -The VectorDB storage default is `indexMode: auto`. A fresh table creates and -waits for its FTS index after the first write, while an existing dense table is -left dense. Set `serviceConfig.vectordb.indexMode=hybrid` to perform the -explicit dense-to-hybrid upgrade. Incremental rows remain searchable through +The VectorDB storage default is `indexMode: auto`; most users should leave it +unchanged. A fresh table creates and waits for its FTS index after the first +write, while an existing dense table is left dense. Set +`serviceConfig.vectordb.indexMode=hybrid` only when you explicitly want to +upgrade an existing dense table. Incremental rows remain searchable through LanceDB's unindexed-tail scan; the service runs `optimize()` after 20 writes or 100,000 added rows and reports FTS and optimization state from `/v1/health`. diff --git a/nemo_retriever/src/nemo_retriever/cli/ingest/options.py b/nemo_retriever/src/nemo_retriever/cli/ingest/options.py index 26554ee85c..8db14c4fcd 100644 --- a/nemo_retriever/src/nemo_retriever/cli/ingest/options.py +++ b/nemo_retriever/src/nemo_retriever/cli/ingest/options.py @@ -200,9 +200,9 @@ typer.Option( "--index-mode", help=( - "LanceDB index mode: auto, dense, hybrid, or sparse. Auto creates hybrid tables and preserves " - "an existing table's physical mode on append. Dense is vector-only; hybrid also builds BM25/FTS; " - "sparse skips dense embedding and writes an FTS-only table." + "Recommended: leave unset. Auto selects the tested hybrid default for new tables and preserves an " + "existing table on append. Dense, hybrid, and sparse are advanced overrides for experiments or " + "specialized deployments." ), ), ] diff --git a/nemo_retriever/src/nemo_retriever/cli/query/options.py b/nemo_retriever/src/nemo_retriever/cli/query/options.py index 20218fd1f1..b03f48b272 100644 --- a/nemo_retriever/src/nemo_retriever/cli/query/options.py +++ b/nemo_retriever/src/nemo_retriever/cli/query/options.py @@ -131,8 +131,8 @@ typer.Option( "--retrieval-mode", help=( - "Expert LanceDB retrieval mode: auto, dense, hybrid, or sparse. Default auto inspects the table " - "and chooses the supported mode." + "Advanced override: auto, dense, hybrid, or sparse. Leave at auto to inspect the table and use " + "the supported default mode." ), ), ] From 9cb6a25e23438fb48a51497fa9063845f7fe6ace Mon Sep 17 00:00:00 2001 From: Jacob Ioffe Date: Tue, 11 Aug 2026 22:35:04 +0000 Subject: [PATCH 7/7] Refine hybrid index maintenance Signed-off-by: Jacob Ioffe --- nemo_retriever/README.md | 2 +- nemo_retriever/docs/cli/README.md | 2 +- nemo_retriever/helm/README.md | 4 ++-- .../src/nemo_retriever/cli/ingest/options.py | 6 ++--- .../src/nemo_retriever/common/vdb/lancedb.py | 22 +++++++++---------- ...est_service_vectordb_hybrid_integration.py | 15 +++++++++++-- 6 files changed, 30 insertions(+), 21 deletions(-) diff --git a/nemo_retriever/README.md b/nemo_retriever/README.md index c775d96abb..b016397b17 100644 --- a/nemo_retriever/README.md +++ b/nemo_retriever/README.md @@ -194,7 +194,7 @@ retriever ingest /your-example-dir \ ``` You do not need to choose a retrieval index mode for the normal workflow. The -default `index_mode=auto` creates NeMo Retriever's tested hybrid table (dense +default `index_mode=auto` creates a hybrid table (dense vectors plus BM25/full-text search), and query mode `auto` uses that table automatically. The explicit `dense`, `hybrid`, and `sparse` modes are advanced overrides for experiments or specialized deployments. diff --git a/nemo_retriever/docs/cli/README.md b/nemo_retriever/docs/cli/README.md index 6a542bdb22..0e92874a40 100644 --- a/nemo_retriever/docs/cli/README.md +++ b/nemo_retriever/docs/cli/README.md @@ -255,7 +255,7 @@ These options apply to `retriever ingest`, `retriever ingest local`, and | `--lancedb-uri` | `lancedb` | LanceDB database URI. | | `--table-name` | `nemo-retriever` | LanceDB table name. Must match query-time storage flags. | | `--overwrite/--append` | overwrite | Overwrite the table by default; use `--append` to add rows. | -| `--index-mode` | `auto` | Recommended: leave this unset. `auto` creates the tested hybrid vector + BM25/FTS configuration for new tables and preserves an existing table on append. Use `dense`, `hybrid`, or `sparse` only for explicit experiments or specialized deployments. | +| `--index-mode` | `auto` | Recommended: leave this unset. `auto` creates a hybrid vector + BM25/FTS configuration for new tables and preserves an existing table on append. Use `dense`, `hybrid`, or `sparse` only for explicit experiments or specialized deployments. | | `--method` | planner default | PDF extraction method such as `pdfium` or `nemotron_parse`. | | `--extract-text`, `--extract-tables`, `--extract-charts` | planner default | Enable or disable extraction families. | | `--ocr-version` | planner default | OCR engine version for local extraction. | diff --git a/nemo_retriever/helm/README.md b/nemo_retriever/helm/README.md index a54ecec8e5..804802cd30 100644 --- a/nemo_retriever/helm/README.md +++ b/nemo_retriever/helm/README.md @@ -349,8 +349,8 @@ unchanged. A fresh table creates and waits for its FTS index after the first write, while an existing dense table is left dense. Set `serviceConfig.vectordb.indexMode=hybrid` only when you explicitly want to upgrade an existing dense table. Incremental rows remain searchable through -LanceDB's unindexed-tail scan; the service runs `optimize()` after 20 writes or -100,000 added rows and reports FTS and optimization state from `/v1/health`. +LanceDB's unindexed-tail scan; the service performs incremental FTS maintenance +automatically and reports FTS and maintenance state from `/v1/health`. The vectordb Pod's `/v1/query` handler embeds the incoming query text before searching LanceDB. It needs a NIM embedding endpoint to do that, diff --git a/nemo_retriever/src/nemo_retriever/cli/ingest/options.py b/nemo_retriever/src/nemo_retriever/cli/ingest/options.py index 8db14c4fcd..e29ae7924b 100644 --- a/nemo_retriever/src/nemo_retriever/cli/ingest/options.py +++ b/nemo_retriever/src/nemo_retriever/cli/ingest/options.py @@ -200,9 +200,9 @@ typer.Option( "--index-mode", help=( - "Recommended: leave unset. Auto selects the tested hybrid default for new tables and preserves an " - "existing table on append. Dense, hybrid, and sparse are advanced overrides for experiments or " - "specialized deployments." + "Recommended: leave unset. Auto creates a hybrid table for new indexes and preserves an existing " + "table on append. Dense, hybrid, and sparse are advanced overrides for experiments or specialized " + "deployments." ), ), ] diff --git a/nemo_retriever/src/nemo_retriever/common/vdb/lancedb.py b/nemo_retriever/src/nemo_retriever/common/vdb/lancedb.py index a6202fe3de..f828ccd0b1 100644 --- a/nemo_retriever/src/nemo_retriever/common/vdb/lancedb.py +++ b/nemo_retriever/src/nemo_retriever/common/vdb/lancedb.py @@ -53,6 +53,8 @@ _RETRIEVAL_MODE_METADATA_KEY: Final[bytes] = b"retrieval_mode" _NEMO_RETRIEVER_RETRIEVAL_MODE_METADATA_KEY: Final[bytes] = b"nemo_retriever.retrieval_mode" _EMBEDDING_MODEL_METADATA_KEY: Final[bytes] = b"nemo_retriever.embedding_model_name" +# Appended rows remain searchable through LanceDB's unindexed-tail scan until +# optimize() folds them into FTS. These thresholds follow its recommended cadence. _SERVICE_OPTIMIZE_WRITE_THRESHOLD: Final[int] = 20 _SERVICE_OPTIMIZE_ROW_THRESHOLD: Final[int] = 100_000 @@ -574,7 +576,7 @@ def __init__( self._service_index_mode = str(service_index_mode) if service_index_mode is not None else None self._service_write_lock = threading.Lock() self._writes_since_optimize = 0 - self._rows_since_optimize = 0 + # Process-local status is diagnostic; persisted index statistics are authoritative. self._last_optimization: dict[str, Any] = { "status": "never", "completed_at": None, @@ -625,9 +627,10 @@ def _fts_unindexed_rows(self, table: Any) -> int | None: return sum(values) if values else None def _optimize_service_table_if_due(self, table: Any) -> None: - if ( - self._writes_since_optimize < _SERVICE_OPTIMIZE_WRITE_THRESHOLD - and self._rows_since_optimize < _SERVICE_OPTIMIZE_ROW_THRESHOLD + # Persisted FTS statistics keep the row threshold valid across restarts. + unindexed_rows = self._fts_unindexed_rows(table) + if self._writes_since_optimize < _SERVICE_OPTIMIZE_WRITE_THRESHOLD and ( + unindexed_rows is None or unindexed_rows < _SERVICE_OPTIMIZE_ROW_THRESHOLD ): return try: @@ -639,9 +642,9 @@ def _optimize_service_table_if_due(self, table: Any) -> None: "error": str(exc), } logger.exception("LanceDB optimization failed for table %r", self.table_name) + # Preserve the trigger state so a later write retries transient failures. return self._writes_since_optimize = 0 - self._rows_since_optimize = 0 self._last_optimization = { "status": "ok", "completed_at": datetime.now(timezone.utc).isoformat(), @@ -1104,12 +1107,9 @@ def run(self, records): lock = self._service_write_lock if service_write else nullcontext() with lock: table_existed = False - rows_before = 0 if service_write: db = lancedb.connect(uri=self.uri) table_existed = self.table_name in db.list_tables().tables - if table_existed: - rows_before = int(db.open_table(self.table_name).count_rows()) table = self.create_index(records=records, table_name=self.table_name) if self.build_index: @@ -1127,11 +1127,9 @@ def run(self, records): elif service_write: if self.hybrid: self._ensure_fts_index(table) - if table_existed: + if self.hybrid and table_existed: self._writes_since_optimize += 1 - self._rows_since_optimize += max(0, int(table.count_rows()) - rows_before) - if self.hybrid: - self._optimize_service_table_if_due(table) + self._optimize_service_table_if_due(table) else: logger.info( "Skipping LanceDB index creation for table %r because build_index=False.", diff --git a/nemo_retriever/tests/test_service_vectordb_hybrid_integration.py b/nemo_retriever/tests/test_service_vectordb_hybrid_integration.py index 5cd9ac02c9..ca17fdde59 100644 --- a/nemo_retriever/tests/test_service_vectordb_hybrid_integration.py +++ b/nemo_retriever/tests/test_service_vectordb_hybrid_integration.py @@ -132,11 +132,22 @@ def test_explicit_dense_rejects_existing_hybrid_table(tmp_path) -> None: @pytest.mark.integration -def test_incremental_write_threshold_optimizes_and_updates_health(tmp_path, monkeypatch) -> None: +@pytest.mark.parametrize( + ("write_threshold", "row_threshold"), + [(1, 100_000), (20, 1)], + ids=("write-count", "unindexed-rows"), +) +def test_incremental_maintenance_thresholds_optimize_and_update_health( + tmp_path, + monkeypatch, + write_threshold: int, + row_threshold: int, +) -> None: backend = _backend(tmp_path) _write(backend, _RECORD) table = lancedb.connect(backend.uri).open_table(backend.table_name) - monkeypatch.setattr(lancedb_module, "_SERVICE_OPTIMIZE_WRITE_THRESHOLD", 1) + monkeypatch.setattr(lancedb_module, "_SERVICE_OPTIMIZE_WRITE_THRESHOLD", write_threshold) + monkeypatch.setattr(lancedb_module, "_SERVICE_OPTIMIZE_ROW_THRESHOLD", row_threshold) with patch.object(type(table), "optimize", autospec=True) as optimize: _write(backend, _record(text="second row"))