import pytest from .helpers.collection_setup import basic_collection_setup, drop_collection from .helpers.helpers import request_with_validation @pytest.fixture(autouse=True) def setup(on_disk_vectors, collection_name): basic_collection_setup(collection_name=collection_name, on_disk_vectors=on_disk_vectors) yield drop_collection(collection_name=collection_name) def test_search_with_threshold(collection_name): response = request_with_validation( api='/collections/{collection_name}/points/search', method="POST", path_params={'collection_name': collection_name}, body={ "vector": [0.2, 0.1, 0.9, 0.7], "limit": 3 } ) assert response.ok assert len(response.json()['result']) == 3 more_than_second_score = response.json()['result'][1]['score'] + 0.0001 less_than_second_score = response.json()['result'][1]['score'] - 0.0001 response = request_with_validation( api='/collections/{collection_name}/points/search', method="POST", path_params={'collection_name': collection_name}, body={ "vector": [0.2, 0.1, 0.9, 0.7], "limit": 3, "score_threshold": more_than_second_score } ) assert response.ok assert len(response.json()['result']) == 1 response = request_with_validation( api='/collections/{collection_name}/points/search', method="POST", path_params={'collection_name': collection_name}, body={ "vector": [0.2, 0.1, 0.9, 0.7], "limit": 3, "score_threshold": less_than_second_score } ) assert response.ok assert len(response.json()['result']) == 2