Odeinjul/deep-100m-batch-update-eval
deep-100m-batch-update-eval Batch-update evaluation workload package generated from deep-100m-static-search-eval. Dataset Source static dataset: deep-100m-static-search-eval Vector count: 100,000,000 Dimension: 96 Dtype: float32 Metric: l2 Initial update index: 80,000,000 vectors with external labels equal to A = P[0:80M] Update order: update_order.u32, a seed-42 permutation of source IDs [0, 100M) Insert vector source: base_permuted.fbin, where row j equals… See the full description on the dataset page: https://huggingface.co/datasets/Odeinjul/deep-100m-batch-update-eval.
deep-100m-batch-update-eval
Batch-update evaluation workload package generated from deep-100m-static-search-eval.
Dataset
- Source static dataset:
deep-100m-static-search-eval - Vector count:
100,000,000 - Dimension:
96 - Dtype:
float32 - Metric:
l2 - Initial update index:
80,000,000vectors with external labels equal toA = P[0:80M] - Update order:
update_order.u32, a seed-42permutation of source IDs[0, 100M) - Insert vector source:
base_permuted.fbin, where rowjequalsbase.fbin[P[j]]
Traces
insert-20: starts fromA, then insertsP[80M:100M]in twenty1,000,000-vector batches.delete-20: starts from the static100Mstate, then deletesP[80M:100M]in twenty1,000,000-vector batches.mixed-replace-100: keeps80Mlive vectors for 100 rounds; each round deletes a cyclic1,000,000source-ID slice and insertsbase_permuted.fbinrow ranges: batches 1-20 use rows80M:100M, then batches 21-100 use rows0:80M. Insert external IDs use existingP[80M:100M]labels for the first20rounds, then new labels in[100,000,000, 180,000,000).
Batch JSON files use compact descriptors (range, u32_slice, and u32_cyclic_slice) instead of inline million-ID arrays. Insert external_ids continue to express user-visible source IDs. Insert vector_refs are row ranges in the reordered insert source and must be read from base_permuted.fbin.
Ground Truth
Checkpoint ground truth is produced by filtering the static source ground truth in source-distance order through the checkpoint owner map. Files are exact top-10 only when every query retains at least 10 active candidates from the static source GT depth. If a checkpoint cannot provide top-10 for every query, the package writes a matching .invalid.json marker instead of padding.
Files
workload.json: workload contract.static-workload-reference.json: immutable static-search-eval references.source_manifest.json: generation manifest.update_order.u32: seed-42 source-ID permutation.initial/index_80m_m32_efc500: HNSW index built frombase[A]with labelsA.groundtruth/active_80m.bin: initial80Mcheckpoint GT, oractive_80m.invalid.json.initial/layout-sidecar/index_80m_m32_efc500.*: optional runtime layout sidecar for the initial HNSW index.initial/pq/pq_m<M>.*: initial80MPQ artifacts reordered forinitial/index_80m_m32_efc500internal IDs.initial_pq_manifest.json: source static PQ files and validation samples for the reordered initial PQ artifacts.base_permuted.fbin: reordered insert vector source, present when insertvector_refsare row ranges.reordered_insert_manifest.json: source, formula, size, and sample-check manifest forbase_permuted.fbin.traces/*/trace.json: trace metadata.traces/*/batches/*.json: compact batch descriptors.traces/*/groundtruth/*: checkpoint GT or invalid markers.checksums.sha256: checksums for generated package files.
Static PQ codebooks and metadata are reused. initial/pq/pq_m<M>.pqcodes contains only 80,000,000 rows and is ordered by the initial HNSW internal ID, so it can be used directly with initial/index_80m_m32_efc500.
PQ row-order compatibility
Exhaustive validation confirmed that the corrected M24, M48, and M96 initial PQ files use the initial index's hnsw_internal_id row order for all 80,000,000 rows.
For initial-index internal row j, let e be the external label stored in initial/index_80m_m32_efc500. Its PQ row must encode base.fbin[e]. When using the corrected static PQ, obtain its source row through the inverse static index mapping: initial_PQ[j] = static_PQ[inverse_static_mapping[e]]. Neither j nor e can be used directly as a static PQ row in general.
The previously published assertion that the initial PQ was unaffected by the static row-order defect was incorrect. Independent checks against the actual initial-index vectors found wrongly paired rows in M24, M48, and M96, despite valid headers, checksums, and an internal-order declaration. The correction changes PQ row assignments; it does not retrain codebooks or alter the HNSW index, update order, insert vectors, traces, or checkpoint ground truth.
initial_pq_manifest.json records the corrected source mapping, sample rows, and correction provenance. Validate the sidecar against actual index labels, compare every initial PQ row to the correctly mapped static row, and include nonidentity mappings when independently encoding sampled vectors. A stored manifest declaration or its sample coordinates alone is not a correctness proof.
For relocated downloads, pass the local static package root explicitly to the preparation package validator; historical authoring paths are provenance only. Insert vector_refs remain offsets in base_permuted.fbin, independent of HNSW internal IDs and externally visible labels.
