Skip to content

Commit fd9d548

Browse files
committed
new: add collection metadata and tests to local mode
1 parent 977fcf4 commit fd9d548

File tree

4 files changed

+68
-3
lines changed

4 files changed

+68
-3
lines changed

qdrant_client/local/local_collection.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2780,6 +2780,7 @@ def info(self) -> models.CollectionInfo:
27802780
max_optimization_threads=1,
27812781
),
27822782
quantization_config=None,
2783+
metadata=self.config.metadata,
27832784
),
27842785
)
27852786

qdrant_client/local/qdrant_local.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -951,16 +951,22 @@ def update_collection(
951951
self,
952952
collection_name: str,
953953
sparse_vectors_config: Optional[Mapping[str, types.SparseVectorParams]] = None,
954+
metadata: Optional[types.Payload] = None,
954955
**kwargs: Any,
955956
) -> bool:
956957
_collection = self._get_collection(collection_name)
957-
958+
updated = False
958959
if sparse_vectors_config is not None:
959960
for vector_name, vector_params in sparse_vectors_config.items():
960961
_collection.update_sparse_vectors_config(vector_name, vector_params)
962+
updated = True
961963

962-
return True
963-
return False
964+
if metadata is not None:
965+
_collection.config.metadata.update(metadata)
966+
updated = True
967+
968+
self._save()
969+
return updated
964970

965971
def _collection_path(self, collection_name: str) -> Optional[str]:
966972
if self.persistent:
@@ -993,6 +999,7 @@ def create_collection(
993999
] = None,
9941000
init_from: Optional[types.InitFrom] = None,
9951001
sparse_vectors_config: Optional[Mapping[str, types.SparseVectorParams]] = None,
1002+
metadata: Optional[types.Payload] = None,
9961003
**kwargs: Any,
9971004
) -> bool:
9981005
if self.closed:
@@ -1016,6 +1023,7 @@ def create_collection(
10161023
rest_models.CreateCollection(
10171024
vectors=vectors_config or {},
10181025
sparse_vectors=sparse_vectors_config,
1026+
metadata=metadata,
10191027
),
10201028
location=collection_path,
10211029
force_disable_check_same_thread=self.force_disable_check_same_thread,

tests/test_local_persistence.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,3 +150,54 @@ def test_local_sparse_persistence(add_dense_to_config):
150150
client = qdrant_client.QdrantClient(path=tmpdir)
151151
assert client.count(default_collection_name).count == 10
152152
assert client.count("example_2").count == 10
153+
154+
155+
def test_update_persisence():
156+
collection_name = "update_persisence"
157+
with tempfile.TemporaryDirectory() as tmpdir:
158+
client = qdrant_client.QdrantClient(path=tmpdir)
159+
160+
if client.collection_exists(collection_name):
161+
client.delete_collection(collection_name)
162+
163+
client.create_collection(
164+
collection_name,
165+
vectors_config={"dense": rest.VectorParams(size=20, distance=rest.Distance.COSINE)},
166+
sparse_vectors_config={
167+
"text": rest.SparseVectorParams(),
168+
},
169+
metadata={"important": "meta information"},
170+
)
171+
172+
original_collection_info = client.get_collection(collection_name)
173+
174+
assert original_collection_info.config.params.sparse_vectors["text"].modifier is None
175+
assert original_collection_info.config.metadata == {"important": "meta information"}
176+
177+
client.update_collection(
178+
collection_name,
179+
sparse_vectors_config={"text": rest.SparseVectorParams(modifier=rest.Modifier.IDF)},
180+
metadata={"not_important": "missing"},
181+
)
182+
updated_collection_info = client.get_collection(collection_name)
183+
assert (
184+
updated_collection_info.config.params.sparse_vectors["text"].modifier
185+
== rest.Modifier.IDF
186+
)
187+
assert updated_collection_info.config.metadata == {
188+
"important": "meta information",
189+
"not_important": "missing",
190+
}
191+
client.close()
192+
del client
193+
194+
client = qdrant_client.QdrantClient(path=tmpdir)
195+
persisted_collection_info = client.get_collection(collection_name)
196+
assert (
197+
persisted_collection_info.config.params.sparse_vectors["text"].modifier
198+
== rest.Modifier.IDF
199+
)
200+
assert persisted_collection_info.config.metadata == {
201+
"important": "meta information",
202+
"not_important": "missing",
203+
}

tests/test_qdrant_client.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1183,6 +1183,11 @@ def test_points_crud(prefer_grpc):
11831183
collection_info = client.get_collection(COLLECTION_NAME)
11841184
assert collection_info.config.metadata == collection_metadata
11851185

1186+
new_metadata = {"due_date": "12.12.2222"}
1187+
client.update_collection(COLLECTION_NAME, metadata=new_metadata)
1188+
updated_collection_info = client.get_collection(COLLECTION_NAME)
1189+
assert updated_collection_info.config.metadata == {**collection_metadata, **new_metadata}
1190+
11861191
# Create a single point
11871192
client.upsert(
11881193
collection_name=COLLECTION_NAME,

0 commit comments

Comments
 (0)