diff --git a/python/python/lancedb/rerankers/mrr.py b/python/python/lancedb/rerankers/mrr.py index e2d5d1a97..af5ce778d 100644 --- a/python/python/lancedb/rerankers/mrr.py +++ b/python/python/lancedb/rerankers/mrr.py @@ -125,6 +125,9 @@ class MRRReranker(Reranker): This cannot reuse rerank_hybrid because MRR semantics require treating each vector result as a separate ranking system. """ + if not vector_results: + raise ValueError("vector_results must not be empty") + if not all(isinstance(v, type(vector_results[0])) for v in vector_results): raise ValueError( "All elements in vector_results should be of the same type" diff --git a/python/python/tests/test_rerankers.py b/python/python/tests/test_rerankers.py index c886772bb..5ab24be5d 100644 --- a/python/python/tests/test_rerankers.py +++ b/python/python/tests/test_rerankers.py @@ -344,6 +344,12 @@ def test_mrr_reranker(tmp_path): assert len(result_deduped) == len(result) +def test_mrr_reranker_empty_input(): + reranker = MRRReranker() + with pytest.raises(ValueError, match="must not be empty"): + reranker.rerank_multivector([]) + + def test_rrf_reranker_distance(): data = pa.table( {