From ad813f9566b328e0c287ea316fe40efe9692c6bf Mon Sep 17 00:00:00 2001 From: Mikhail Khludnev Date: Sat, 8 Nov 2025 21:29:26 +0300 Subject: [PATCH 1/3] fix(reranker): support omitting top_n Signed-off-by: Mikhail Khludnev --- backend/python/rerankers/backend.py | 3 ++- backend/python/rerankers/test.py | 36 +++++++++++++++++++++++++---- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/backend/python/rerankers/backend.py b/backend/python/rerankers/backend.py index aadb5b9afcae..252e768714e4 100755 --- a/backend/python/rerankers/backend.py +++ b/backend/python/rerankers/backend.py @@ -75,12 +75,13 @@ def Rerank(self, request, context): documents.append(doc) ranked_results=self.model.rank(query=request.query, docs=documents, doc_ids=list(range(len(request.documents)))) # Prepare results to return + print("top_n",request.top_n) results = [ backend_pb2.DocumentResult( index=res.doc_id, text=res.text, relevance_score=res.score - ) for res in ranked_results.top_k(request.top_n) + ) for res in (ranked_results.top_k(request.top_n) if request.top_n>0 else ranked_results) ] # Calculate the usage and total tokens diff --git a/backend/python/rerankers/test.py b/backend/python/rerankers/test.py index 3f2ddf0b7700..9260acfe1547 100755 --- a/backend/python/rerankers/test.py +++ b/backend/python/rerankers/test.py @@ -76,7 +76,35 @@ def test_rerank(self): ) response = stub.LoadModel(backend_pb2.ModelOptions(Model="cross-encoder")) self.assertTrue(response.success) - + + rerank_response = stub.Rerank(request) + print(rerank_response.results[0]) + self.assertIsNotNone(rerank_response.results) + self.assertEqual(len(rerank_response.results), 2) + self.assertEqual(rerank_response.results[0].text, "I really like you") + self.assertEqual(rerank_response.results[1].text, "I hate you") + except Exception as err: + print(err) + self.fail("Reranker service failed") + finally: + self.tearDown() + + def test_rerank_omit_top_n(self): + """ + This method tests if the embeddings are generated successfully even top_n is omitted + """ + try: + self.setUp() + with grpc.insecure_channel("localhost:50051") as channel: + stub = backend_pb2_grpc.BackendStub(channel) + request = backend_pb2.RerankRequest( + query="I love you", + documents=["I hate you", "I really like you"], + # top_n=2 + ) + response = stub.LoadModel(backend_pb2.ModelOptions(Model="cross-encoder")) + self.assertTrue(response.success) + rerank_response = stub.Rerank(request) print(rerank_response.results[0]) self.assertIsNotNone(rerank_response.results) @@ -91,7 +119,7 @@ def test_rerank(self): def test_rerank_crop(self): """ - This method tests if the embeddings are generated successfully + This method tests top_n cropping """ try: self.setUp() @@ -104,7 +132,7 @@ def test_rerank_crop(self): ) response = stub.LoadModel(backend_pb2.ModelOptions(Model="cross-encoder")) self.assertTrue(response.success) - + rerank_response = stub.Rerank(request) print(rerank_response.results[0]) self.assertIsNotNone(rerank_response.results) @@ -115,4 +143,4 @@ def test_rerank_crop(self): print(err) self.fail("Reranker service failed") finally: - self.tearDown() \ No newline at end of file + self.tearDown() From 54290b8bae0a76086b3f493d3518ec431cbb41a4 Mon Sep 17 00:00:00 2001 From: Mikhail Khludnev Date: Sat, 8 Nov 2025 21:41:30 +0300 Subject: [PATCH 2/3] fix(reranker): support omitting top_n Signed-off-by: Mikhail Khludnev --- backend/python/rerankers/backend.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/python/rerankers/backend.py b/backend/python/rerankers/backend.py index 252e768714e4..8ce2636d7a13 100755 --- a/backend/python/rerankers/backend.py +++ b/backend/python/rerankers/backend.py @@ -75,13 +75,13 @@ def Rerank(self, request, context): documents.append(doc) ranked_results=self.model.rank(query=request.query, docs=documents, doc_ids=list(range(len(request.documents)))) # Prepare results to return - print("top_n",request.top_n) + cropped_results = ranked_results.top_k(request.top_n) if request.top_n > 0 else ranked_results results = [ backend_pb2.DocumentResult( index=res.doc_id, text=res.text, relevance_score=res.score - ) for res in (ranked_results.top_k(request.top_n) if request.top_n>0 else ranked_results) + ) for res in (cropped_results) ] # Calculate the usage and total tokens From eec1f59ce759eee2913824d98176a6f69b212ded Mon Sep 17 00:00:00 2001 From: Mikhail Khludnev Date: Sun, 9 Nov 2025 18:16:40 +0300 Subject: [PATCH 3/3] pass 0 explicitly Signed-off-by: Mikhail Khludnev --- backend/python/rerankers/test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/python/rerankers/test.py b/backend/python/rerankers/test.py index 9260acfe1547..f5890fc25d24 100755 --- a/backend/python/rerankers/test.py +++ b/backend/python/rerankers/test.py @@ -100,7 +100,7 @@ def test_rerank_omit_top_n(self): request = backend_pb2.RerankRequest( query="I love you", documents=["I hate you", "I really like you"], - # top_n=2 + top_n=0 # ) response = stub.LoadModel(backend_pb2.ModelOptions(Model="cross-encoder")) self.assertTrue(response.success)