Skip to content

Commit 90cc844

Browse files
committed
fix(cli): Handle empty results in reranker
1 parent cf6381f commit 90cc844

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

src/vectorcode/subcommands/query/reranker/base.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ async def compute_similarity(
6262
raise NotImplementedError
6363

6464
async def rerank(self, results: QueryResult | dict) -> list[str]:
65+
if len(results["ids"]) == 0 or all(len(i) == 0 for i in results["ids"]):
66+
return []
67+
6568
self._raw_results = cast(QueryResult, results)
6669
query_chunks = self.configs.query
6770
assert query_chunks

tests/subcommands/query/test_reranker.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,16 @@ def query_result():
5252
}
5353

5454

55+
@pytest.fixture(scope="function")
56+
def empty_query_result():
57+
return {
58+
"ids": [],
59+
"distances": [],
60+
"metadatas": [],
61+
"documents": [],
62+
}
63+
64+
5565
@pytest.fixture(scope="function")
5666
def query_chunks():
5767
return ["query chunk 1", "query chunk 2"]
@@ -97,6 +107,15 @@ async def test_naive_reranker_rerank(naive_reranker_conf, query_result):
97107
assert isinstance(path, str)
98108

99109

110+
@pytest.mark.asyncio
111+
async def test_naive_reranker_rerank_empty_result(
112+
naive_reranker_conf, empty_query_result
113+
):
114+
reranker = NaiveReranker(naive_reranker_conf)
115+
result = await reranker.rerank(empty_query_result)
116+
assert len(result) == 0
117+
118+
100119
@patch("sentence_transformers.CrossEncoder")
101120
def test_cross_encoder_reranker_initialization(mock_cross_encoder: MagicMock, config):
102121
model_name = config.reranker_params["model_name_or_path"]

0 commit comments

Comments
 (0)