From 28fc1e5010962dcb5e192d8d77f78d5eb351e358 Mon Sep 17 00:00:00 2001 From: George Panchuk Date: Fri, 13 Sep 2024 16:34:05 +0200 Subject: [PATCH 1/3] fix: fix nested prefetch --- qdrant_client/local/local_collection.py | 6 ++---- qdrant_client/local/tests/test_vectors.py | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 qdrant_client/local/tests/test_vectors.py diff --git a/qdrant_client/local/local_collection.py b/qdrant_client/local/local_collection.py index 87c1e2ccf..11201f5f6 100644 --- a/qdrant_client/local/local_collection.py +++ b/qdrant_client/local/local_collection.py @@ -456,7 +456,7 @@ def _get_payload( def _get_vectors( self, idx: int, with_vectors: Union[bool, Sequence[str]] = False ) -> Optional[models.VectorStruct]: - if not with_vectors: + if not with_vectors and with_vectors != DEFAULT_VECTOR_NAME: return None dense_vectors = { @@ -478,9 +478,7 @@ def _get_vectors( } # merge vectors - all_vectors = dense_vectors.copy() - all_vectors.update(sparse_vectors) - all_vectors.update(multivectors) + all_vectors = {**dense_vectors, **sparse_vectors, **multivectors} if isinstance(with_vectors, list): all_vectors = {name: all_vectors[name] for name in with_vectors if name in all_vectors} diff --git a/qdrant_client/local/tests/test_vectors.py b/qdrant_client/local/tests/test_vectors.py new file mode 100644 index 000000000..361564517 --- /dev/null +++ b/qdrant_client/local/tests/test_vectors.py @@ -0,0 +1,21 @@ +import random + +from qdrant_client import models +from qdrant_client.local.local_collection import LocalCollection, DEFAULT_VECTOR_NAME + + +def test_get_vectors(): + collection = LocalCollection( + models.CreateCollection( + vectors=models.VectorParams(size=2, distance=models.Distance.MANHATTAN) + ) + ) + collection.upsert( + points=[ + models.PointStruct(id=i, vector=[random.random(), random.random()]) for i in range(10) + ] + ) + + assert collection._get_vectors(idx=1, with_vectors=DEFAULT_VECTOR_NAME) + assert collection._get_vectors(idx=2, with_vectors=True) + assert collection._get_vectors(idx=3, with_vectors=False) is None From ad4d0d0f839638348a157c4476c6ba7be096e356 Mon Sep 17 00:00:00 2001 From: George Panchuk Date: Fri, 13 Sep 2024 17:14:55 +0200 Subject: [PATCH 2/3] refactoring: simplify condition --- qdrant_client/local/local_collection.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qdrant_client/local/local_collection.py b/qdrant_client/local/local_collection.py index 11201f5f6..c5bb13087 100644 --- a/qdrant_client/local/local_collection.py +++ b/qdrant_client/local/local_collection.py @@ -456,7 +456,7 @@ def _get_payload( def _get_vectors( self, idx: int, with_vectors: Union[bool, Sequence[str]] = False ) -> Optional[models.VectorStruct]: - if not with_vectors and with_vectors != DEFAULT_VECTOR_NAME: + if with_vectors is False: return None dense_vectors = { From 074664816f6a91f305f2178cc08b34f28a424af1 Mon Sep 17 00:00:00 2001 From: George Panchuk Date: Fri, 13 Sep 2024 17:36:17 +0200 Subject: [PATCH 3/3] fix: fix condition in get vectors --- qdrant_client/local/local_collection.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qdrant_client/local/local_collection.py b/qdrant_client/local/local_collection.py index c5bb13087..77a19d8a2 100644 --- a/qdrant_client/local/local_collection.py +++ b/qdrant_client/local/local_collection.py @@ -454,9 +454,9 @@ def _get_payload( return deepcopy(processed_payload) if return_copy else processed_payload def _get_vectors( - self, idx: int, with_vectors: Union[bool, Sequence[str]] = False + self, idx: int, with_vectors: Union[bool, Sequence[str], None] = False ) -> Optional[models.VectorStruct]: - if with_vectors is False: + if with_vectors is False or with_vectors is None: return None dense_vectors = {