From eb8191e8783f291a9954c9b4175a77d4ae9a0be0 Mon Sep 17 00:00:00 2001 From: contributor Date: Wed, 11 Mar 2026 01:28:04 +0800 Subject: [PATCH] fix: always fetch scores in retrieve endpoint to prevent unpack error When return_scores is set to false in the request, batch_search returns a single list instead of a tuple, causing the destructuring results, scores = ... to raise a ValueError and the endpoint to return 500 Internal Server Error. Fix by always calling batch_search with return_score=True and filtering scores out at the response formatting stage based on the client's return_scores flag. --- search_r1/search/retrieval_server.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/search_r1/search/retrieval_server.py b/search_r1/search/retrieval_server.py index f3969898..8c93f86a 100644 --- a/search_r1/search/retrieval_server.py +++ b/search_r1/search/retrieval_server.py @@ -337,11 +337,11 @@ def retrieve_endpoint(request: QueryRequest): if not request.topk: request.topk = config.retrieval_topk # fallback to default - # Perform batch retrieval + # Perform batch retrieval (always fetch scores internally, filter at response stage) results, scores = retriever.batch_search( query_list=request.queries, num=request.topk, - return_score=request.return_scores + return_score=True ) # Format response