import pytest from .helpers.collection_setup import drop_collection from .helpers.helpers import request_with_validation @pytest.fixture(autouse=True) def setup(collection_name): sparse_collection_setup(collection_name=collection_name) yield drop_collection(collection_name=collection_name) def sparse_collection_setup( collection_name='test_collection', ): response = request_with_validation( api='/collections/{collection_name}', method="DELETE", path_params={'collection_name': collection_name}, ) assert response.ok response = request_with_validation( api='/collections/{collection_name}', method="PUT", path_params={'collection_name': collection_name}, body={ "sparse_vectors": { "text": {} }, } ) assert response.ok def test_sparse_dense_updates(collection_name): response = request_with_validation( api='/collections/{collection_name}/points', method="PUT", path_params={'collection_name': collection_name}, query_params={'wait': 'true'}, body={ "points": [ { "id": 1, "vector": { "text": { "indices": [100, 500, 10], "values": [0.9, 0.8, 0.5] } } } ] } ) assert response.ok response = request_with_validation( api='/collections/{collection_name}/points/search', method="POST", path_params={'collection_name': collection_name}, body={ "limit": 10, "vector": { "name": "text", "vector": { "indices": [100], "values": [0.9] } } } ) assert response.ok assert len(response.json()['result']) == 1 # Overwrite existing vector with new indices response = request_with_validation( api='/collections/{collection_name}/points', method="PUT", path_params={'collection_name': collection_name}, query_params={'wait': 'true'}, body={ "points": [ { "id": 1, "vector": { "text": { "indices": [600, 700, 10], "values": [0.9, 0.8, 0.5] } } } ] } ) assert response.ok response = request_with_validation( api='/collections/{collection_name}/points/search', method="POST", path_params={'collection_name': collection_name}, body={ "limit": 10, "vector": { "name": "text", "vector": { "indices": [100], "values": [0.9] } } } ) assert response.ok assert len(response.json()['result']) == 0 response = request_with_validation( api='/collections/{collection_name}/points/search', method="POST", path_params={'collection_name': collection_name}, body={ "limit": 10, "vector": { "name": "text", "vector": { "indices": [700], "values": [0.9] } } } ) 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={ "limit": 10, "vector": { "name": "text", "vector": { "indices": [10], "values": [0.9] } } } ) assert response.ok assert len(response.json()['result']) == 1