Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions qdrant_client/local/local_collection.py
Original file line number Diff line number Diff line change
Expand Up @@ -654,7 +654,10 @@ def search(

required_order = distance_to_order(distance)

if required_order == DistanceOrder.BIGGER_IS_BETTER or isinstance(
# Recommend/discovery/context queries score through a sigmoid, so bigger is
# always better for them, whatever the collection's distance is. Both the sort
# order and the score_threshold comparison below have to follow this flag.
bigger_is_better = required_order == DistanceOrder.BIGGER_IS_BETTER or isinstance(
query_vector,
(
DiscoveryQuery,
Expand All @@ -664,7 +667,9 @@ def search(
MultiContextQuery,
MultiRecoQuery,
), # sparse structures are not required, sparse always uses DOT
):
)

if bigger_is_better:
order = np.argsort(scores)[::-1]
else:
order = np.argsort(scores)
Expand All @@ -684,7 +689,7 @@ def search(
point_id = self.ids_inv[idx]

if score_threshold is not None:
if required_order == DistanceOrder.BIGGER_IS_BETTER:
if bigger_is_better:
if score < score_threshold:
break
else:
Expand Down