Spaces:
Build error
Build error
import pytest | |
from .helpers.helpers import request_with_validation | |
from .helpers.collection_setup import multivec_collection_setup, drop_collection | |
from operator import itemgetter | |
def setup(on_disk_vectors, collection_name): | |
multivec_collection_setup(collection_name=collection_name, on_disk_vectors=on_disk_vectors, distance="Dot") | |
yield | |
drop_collection(collection_name=collection_name) | |
def assert_points(collection_name, points, nonexisting_ids=None, with_vectors=False): | |
ids = [point['id'] for point in points] | |
ids.extend(nonexisting_ids or []) | |
if not with_vectors: | |
for point in points: | |
point['vector'] = None | |
response = request_with_validation( | |
api='/collections/{collection_name}/points', | |
method='POST', | |
path_params={'collection_name': collection_name}, | |
body={'ids': ids, 'with_vector': with_vectors, 'with_payload': True}, | |
) | |
assert response.ok | |
assert sorted(response.json()['result'], key=itemgetter('id')) == sorted( | |
points, key=itemgetter('id') | |
) | |
def test_batch_update(collection_name): | |
# Upsert and delete points | |
response = request_with_validation( | |
api="/collections/{collection_name}/points/batch", | |
method="POST", | |
path_params={"collection_name": collection_name}, | |
body={"operations": [ | |
{ | |
"upsert": { | |
"points": [ | |
{ | |
"id": 7, | |
"vector": { | |
"image": [1.0, 0.0, 9.0, 1.0], | |
}, | |
"payload": {}, | |
}, | |
] | |
} | |
}, | |
{ | |
"upsert": { | |
"points": [ | |
{ | |
"id": 8, | |
"vector": { | |
"image": [7.0, 1.0, 6.0, 9.0], | |
}, | |
"payload": {}, | |
}, | |
] | |
} | |
}, | |
{"delete": {"points": [8]}}, | |
{ | |
"upsert": { | |
"points": [ | |
{ | |
"id": 7, | |
"vector": { | |
"image": [9.0, 9.0, 3.0, 0.0], | |
"text": [8.0, 1.0, 2.0, 5.0, 2.0, 7.0, 1.0, 6.0], | |
}, | |
"payload": {}, | |
}, | |
] | |
} | |
}, | |
] | |
}, | |
query_params={"wait": "true"}, | |
) | |
assert response.ok | |
assert_points(collection_name, | |
[ | |
{ | |
"id": 7, | |
"vector": { | |
"image": [9.0, 9.0, 3.0, 0.0], | |
"text": [8.0, 1.0, 2.0, 5.0, 2.0, 7.0, 1.0, 6.0], | |
}, | |
"payload": {}, | |
} | |
], | |
nonexisting_ids=[8], | |
with_vectors=True, | |
) | |
# Update vector | |
response = request_with_validation( | |
api="/collections/{collection_name}/points/batch", | |
method="POST", | |
path_params={"collection_name": collection_name}, | |
body={ | |
"operations": [ | |
{ | |
"update_vectors": { | |
"points": [ | |
{ | |
"id": 7, | |
"vector": { | |
"image": [2.0, 6.0, 3.0, 2.0], | |
"text": [5.0, 7.0, 0.0, 8.0, 2.0, 7.0, 1.0, 6.0], | |
}, | |
}, | |
] | |
} | |
}, | |
{ | |
"update_vectors": { | |
"points": [ | |
{ | |
"id": 7, | |
"vector": { | |
"image": [0.0, 3.0, 1.0, 8.0], | |
}, | |
}, | |
] | |
} | |
}, | |
] | |
}, | |
query_params={"wait": "true"}, | |
) | |
assert response.ok | |
assert_points(collection_name, | |
[ | |
{ | |
"id": 7, | |
"vector": { | |
"image": [0.0, 3.0, 1.0, 8.0], | |
"text": [5.0, 7.0, 0.0, 8.0, 2.0, 7.0, 1.0, 6.0], | |
}, | |
"payload": {}, | |
} | |
], | |
nonexisting_ids=[8], | |
with_vectors=True, | |
) | |
# Upsert point and delete vector | |
response = request_with_validation( | |
api="/collections/{collection_name}/points/batch", | |
method="POST", | |
path_params={"collection_name": collection_name}, | |
body={ | |
"operations": [ | |
{ | |
"upsert": { | |
"points": [ | |
{ | |
"id": 9, | |
"vector": { | |
"image": [5.0, 5.0, 3.0, 6.0], | |
"text": [8.0, 4.0, 7.0, 3.0, 3.0, 8.0, 9.0, 0.0], | |
}, | |
"payload": {}, | |
}, | |
] | |
} | |
}, | |
{ | |
"upsert": { | |
"points": [ | |
{ | |
"id": 10, | |
"vector": { | |
"image": [2.0, 9.0, 1.0, 4.0], | |
"text": [1.0, 5.0, 5.0, 6.0, 9.0, 3.0, 3.0, 2.0], | |
}, | |
"payload": {}, | |
}, | |
] | |
} | |
}, | |
{ | |
"delete_vectors": { | |
"points": [7, 10], | |
"vector": ["text"], | |
} | |
}, | |
{ | |
"delete_vectors": { | |
"points": [9, 10], | |
"vector": ["image"], | |
} | |
}, | |
] | |
}, | |
query_params={"wait": "true"}, | |
) | |
assert response.ok | |
assert_points(collection_name, | |
[ | |
{ | |
"id": 7, | |
"vector": { | |
"image": [0.0, 3.0, 1.0, 8.0], | |
}, | |
"payload": {}, | |
}, | |
{ | |
"id": 9, | |
"vector": { | |
"text": [8.0, 4.0, 7.0, 3.0, 3.0, 8.0, 9.0, 0.0], | |
}, | |
"payload": {}, | |
}, | |
{ | |
"id": 10, | |
"vector": {}, | |
"payload": {}, | |
} | |
], | |
nonexisting_ids=[8], | |
with_vectors=True, | |
) | |