diff --git a/rust/lance/src/index/vector/ivf/v2.rs b/rust/lance/src/index/vector/ivf/v2.rs index 85103af54e0..51ceb2e4b7d 100644 --- a/rust/lance/src/index/vector/ivf/v2.rs +++ b/rust/lance/src/index/vector/ivf/v2.rs @@ -1194,7 +1194,14 @@ mod tests { .collect::>(); let recall = row_ids.intersection(>).count() as f32 / 100.0; // 100 can't be exactly expressed as a float, so we need to use a tolerance - assert_ge!(recall, recall_requirement - f32::EPSILON, "{}", recall); + assert_ge!( + recall, + recall_requirement - f32::EPSILON, + "num_rows: {}, intersection: {}, recall: {}", + row_ids.len(), + row_ids.intersection(>).count(), + recall + ); // delete so that only one row left, to trigger remap and there must be some empty partitions let (mut dataset, _) = generate_test_dataset::(test_uri, range).await; @@ -1341,7 +1348,9 @@ mod tests { test_index_multivec(params.clone(), nlist, recall_requirement).await; } test_distance_range(Some(params.clone()), nlist).await; - test_remap(params, nlist, recall_requirement).await; + // PQ performs worse on farther vectors, so if we delete the many nearest vectors, the recall will be lower + // lower the recall requirement in remap case for PQ, because it deletes half of the vectors + test_remap(params, nlist, recall_requirement * 0.9).await; } #[rstest] @@ -1365,7 +1374,9 @@ mod tests { test_index_multivec(params.clone(), nlist, recall_requirement).await; } test_distance_range(Some(params.clone()), nlist).await; - test_remap(params.clone(), nlist, recall_requirement).await; + // PQ performs worse on farther vectors, so if we delete the many nearest vectors, the recall will be lower + // lower the recall requirement in remap case for PQ, because it deletes half of the vectors + test_remap(params.clone(), nlist, recall_requirement * 0.9).await; test_delete_all_rows(params).await; } @@ -1386,7 +1397,9 @@ mod tests { if distance_type == DistanceType::Cosine { test_index_multivec(params.clone(), nlist, recall_requirement).await; } - test_remap(params, nlist, recall_requirement).await; + // PQ performs worse on farther vectors, so if we delete the many nearest vectors, the recall will be lower + // lower the recall requirement in remap case for PQ, because it deletes half of the vectors + test_remap(params, nlist, recall_requirement * 0.9).await; } #[rstest] @@ -1507,7 +1520,9 @@ mod tests { if distance_type == DistanceType::Cosine { test_index_multivec(params.clone(), nlist, recall_requirement).await; } - test_remap(params, nlist, recall_requirement).await; + // PQ performs worse on farther vectors, so if we delete the many nearest vectors, the recall will be lower + // lower the recall requirement in remap case for PQ, because it deletes half of the vectors + test_remap(params, nlist, recall_requirement * 0.9).await; } #[rstest]