Skip to content

Commit f4b0c94

Browse files
jioffe502claude
andcommitted
Add deployment fingerprint logging and enable BEIR for Vidore datasets
- Add embed model fallback detection (dim=1024 warning) to e2e.py and recall.py - Add Milvus collection vector dimension verification after ingestion - Enable BEIR metrics by default for all Vidore V3 datasets Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Jacob Ioffe <jioffe@nvidia.com>
1 parent 4e233d9 commit f4b0c94

File tree

3 files changed

+57
-0
lines changed

3 files changed

+57
-0
lines changed

tools/harness/src/nv_ingest_harness/cases/e2e.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,11 @@ def main(config=None, log_path: str = "test_results") -> int:
8181

8282
model_name, dense_dim = embed_info()
8383

84+
# Deployment fingerprint - detect silent fallback to wrong model
85+
if dense_dim == 1024:
86+
print("WARNING: Embedding model returned dim=1024 (nv-embedqa-e5-v5 fallback)")
87+
print("WARNING: Expected dim=2048 for multimodal embed. Check embedding NIM status.")
88+
8489
# Log configuration for transparency
8590
print("=== Test Configuration ===")
8691
print(f"Dataset: {data_dir}")
@@ -254,6 +259,24 @@ def main(config=None, log_path: str = "test_results") -> int:
254259
# Optional: log chunk stats and per-type breakdown
255260
if vdb_backend != "lancedb":
256261
milvus_chunks(f"http://{hostname}:19530", collection_name)
262+
# Verify collection vector dimension matches expected
263+
try:
264+
from pymilvus import MilvusClient
265+
266+
mc = MilvusClient(uri=f"http://{hostname}:19530")
267+
col_info = mc.describe_collection(collection_name)
268+
for field in col_info.get("fields", []):
269+
params = field.get("params", {})
270+
if "dim" in params:
271+
actual_dim = int(params["dim"])
272+
if actual_dim != dense_dim:
273+
print(f"WARNING: Collection vector dim={actual_dim} != expected dim={dense_dim}")
274+
print("WARNING: Collection may have been created with a different embedding model")
275+
else:
276+
print(f"Collection vector dim={actual_dim} matches expected dim={dense_dim}")
277+
mc.close()
278+
except Exception as e:
279+
print(f"Could not verify collection schema: {e}")
257280
text_results, table_results, chart_results = segment_results(results)
258281
kv_event_log("text_chunks", sum(len(x) for x in text_results), log_path)
259282
kv_event_log("table_chunks", sum(len(x) for x in table_results), log_path)

tools/harness/src/nv_ingest_harness/cases/recall.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@ def main(config=None, log_path: str = "test_results") -> int:
8888
gpu_search = config.gpu_search
8989
model_name, dense_dim = embed_info()
9090

91+
# Deployment fingerprint - detect silent fallback to wrong model
92+
if dense_dim == 1024:
93+
print("WARNING: Embedding model returned dim=1024 (nv-embedqa-e5-v5 fallback)")
94+
print("WARNING: Expected dim=2048 for multimodal embed. Check embedding NIM status.")
95+
9196
# Recall-specific configuration with defaults
9297
reranker_mode = getattr(config, "reranker_mode", "none")
9398
recall_top_k = getattr(config, "recall_top_k", 10)
@@ -145,6 +150,27 @@ def main(config=None, log_path: str = "test_results") -> int:
145150
if lancedb_path:
146151
print(f"Using LanceDB at: {lancedb_path}")
147152

153+
# Verify collection schema if using Milvus
154+
if vdb_backend == "milvus":
155+
try:
156+
from pymilvus import MilvusClient
157+
158+
verify_uri = f"http://{hostname}:19530"
159+
mc = MilvusClient(uri=verify_uri)
160+
col_info = mc.describe_collection(collection_name)
161+
for field in col_info.get("fields", []):
162+
params = field.get("params", {})
163+
if "dim" in params:
164+
actual_dim = int(params["dim"])
165+
if actual_dim != dense_dim:
166+
print(f"WARNING: Collection vector dim={actual_dim} != embed model dim={dense_dim}")
167+
print("WARNING: Collection may have been created with a different embedding model")
168+
else:
169+
print(f"Collection vector dim={actual_dim} matches embed model dim={dense_dim}")
170+
mc.close()
171+
except Exception as e:
172+
print(f"Could not verify collection schema: {e}")
173+
148174
try:
149175
recall_results = {}
150176

tools/harness/test_configs.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ datasets:
183183
extract_method: ocr
184184
image_elements_modality: text_image
185185
recall_dataset: vidore_v3_finance_en
186+
enable_beir: true
186187

187188
vidore_v3_industrial:
188189
path: /datasets/nv-ingest/vidore_v3_corpus/vidore_v3_industrial
@@ -195,6 +196,7 @@ datasets:
195196
extract_method: ocr
196197
image_elements_modality: text_image
197198
recall_dataset: vidore_v3_industrial
199+
enable_beir: true
198200

199201
vidore_v3_computer_science:
200202
path: /datasets/nv-ingest/vidore_v3_corpus/vidore_v3_computer_science
@@ -207,6 +209,7 @@ datasets:
207209
extract_method: ocr
208210
image_elements_modality: text_image
209211
recall_dataset: vidore_v3_computer_science
212+
enable_beir: true
210213

211214
vidore_v3_pharmaceuticals:
212215
path: /datasets/nv-ingest/vidore_v3_corpus/vidore_v3_pharmaceuticals
@@ -219,6 +222,7 @@ datasets:
219222
extract_method: ocr
220223
image_elements_modality: text_image
221224
recall_dataset: vidore_v3_pharmaceuticals
225+
enable_beir: true
222226

223227
vidore_v3_hr:
224228
path: /datasets/nv-ingest/vidore_v3_corpus/vidore_v3_hr
@@ -231,6 +235,7 @@ datasets:
231235
extract_method: ocr
232236
image_elements_modality: text_image
233237
recall_dataset: vidore_v3_hr
238+
enable_beir: true
234239

235240
vidore_v3_energy:
236241
path: /datasets/nv-ingest/vidore_v3_corpus/vidore_v3_energy
@@ -243,6 +248,7 @@ datasets:
243248
extract_method: ocr
244249
image_elements_modality: text_image
245250
recall_dataset: vidore_v3_energy
251+
enable_beir: true
246252

247253
vidore_v3_physics:
248254
path: /datasets/nv-ingest/vidore_v3_corpus/vidore_v3_physics
@@ -255,6 +261,7 @@ datasets:
255261
extract_method: ocr
256262
image_elements_modality: text_image
257263
recall_dataset: vidore_v3_physics
264+
enable_beir: true
258265

259266
vidore_v3_finance_fr:
260267
path: /datasets/nv-ingest/vidore_v3_corpus/vidore_v3_finance_fr
@@ -267,6 +274,7 @@ datasets:
267274
extract_method: ocr
268275
image_elements_modality: text_image
269276
recall_dataset: vidore_v3_finance_fr
277+
enable_beir: true
270278

271279
# Dataset groups for running multiple datasets together
272280
# Use: uv run nv-ingest-harness-run --case=e2e_recall --dataset=vidore

0 commit comments

Comments
 (0)