mirror of
https://github.com/qdrant/qdrant.git
synced 2026-09-27 00:17:34 -05:00
* Add field to REST collection update to change HNSW config * Add field to gRPC collection update to change HNSW config * Update OpenAPI specification * Update gRPC docs * Improve optimizer filtering for excluded segment IDs * Add config mismatch optimizer detecting basic HNSW mismatches * Trigger optimizers when changing collection HNSW config * Make config mismatch optimizer aware of vector specific HNSW configs * Extract triggering optimizers after collection update into function * Add config mismatch optimizer test for changing HNSW config * Simplify config mismatch optimizer test * Add config mismatch optimizer test for vector specific HNSW change * Reformat * Update collection HNSW params in integration test * Validate HNSW config in collection update gRPC endpoint * Improve description of update collection request * Do not require to rebuild HNSW when on_disk flag changes Ref: https://github.com/qdrant/qdrant/pull/2083#discussion_r1231002072 * Do rebuild segment with on_disk change * Trigger optimizers in parallel * Recreate optimizers only once on collection update * Reformat * Fix incorrect usage of self * Fix deadlock in collection state config update * Also rebuild index on full scan threshold change * decompose worst_segment condition check * review refactor * Update lib/storage/src/content_manager/collection_meta_ops.rs Co-authored-by: Luis Cossío <luis.cossio@qdrant.com> * Update lib/api/src/grpc/proto/collections.proto Co-authored-by: Luis Cossío <luis.cossio@qdrant.com> * upd grpc docs * upd grpc docs * update openapi --------- Co-authored-by: generall <andrey@vasnetsov.com> Co-authored-by: Luis Cossío <luis.cossio@qdrant.com>
57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
import pytest
|
|
|
|
from .helpers.helpers import request_with_validation
|
|
from .helpers.collection_setup import basic_collection_setup, drop_collection
|
|
|
|
collection_name = 'test_collection_uuid'
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def setup():
|
|
basic_collection_setup(collection_name=collection_name)
|
|
yield
|
|
drop_collection(collection_name=collection_name)
|
|
|
|
|
|
def test_collection_update():
|
|
response = request_with_validation(
|
|
api='/collections/{collection_name}',
|
|
method="PATCH",
|
|
path_params={'collection_name': collection_name},
|
|
body={
|
|
"optimizers_config": {
|
|
"default_segment_number": 6,
|
|
"indexing_threshold": 10000,
|
|
},
|
|
"hnsw": {
|
|
"m": 42,
|
|
"ef_construct": 123,
|
|
},
|
|
}
|
|
)
|
|
assert response.ok
|
|
|
|
response = request_with_validation(
|
|
api='/collections/{collection_name}/points',
|
|
method="PUT",
|
|
path_params={'collection_name': collection_name},
|
|
query_params={'wait': 'true'},
|
|
body={
|
|
"points": [
|
|
{
|
|
"id": 7,
|
|
"vector": [0.15, 0.31, 0.76, 0.74],
|
|
"payload": {"city": "Rome"}
|
|
}
|
|
]
|
|
}
|
|
)
|
|
assert response.ok
|
|
|
|
response = request_with_validation(
|
|
api='/collections/{collection_name}/points/{id}',
|
|
method="GET",
|
|
path_params={'collection_name': collection_name, 'id': 7},
|
|
)
|
|
assert response.ok
|