From c10449c2b923715b10d23ab24cb5400086d5e436 Mon Sep 17 00:00:00 2001 From: dong xiang Date: Mon, 17 Oct 2022 17:06:25 +0800 Subject: [PATCH 1/2] fix: support qdrant v8.0 on docarray --- docarray/array/storage/qdrant/backend.py | 22 +++++++++++----------- docs/advanced/document-store/qdrant.md | 2 +- scripts/docker-compose.yml | 2 +- setup.py | 2 +- tests/unit/array/docker-compose.yml | 2 +- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docarray/array/storage/qdrant/backend.py b/docarray/array/storage/qdrant/backend.py index 5561def8801..75954c63bc7 100644 --- a/docarray/array/storage/qdrant/backend.py +++ b/docarray/array/storage/qdrant/backend.py @@ -81,6 +81,7 @@ def _init_storage( config.collection_name = self._tmp_collection_name() self._n_dim = config.n_dim + self._distance = config.distance self._serialize_config = config.serialize_config self._client = QdrantClient(host=config.host, port=config.port) @@ -134,17 +135,17 @@ def _initialize_qdrant_schema(self): m=self._config.m, ) self.client.http.collections_api.create_collection( - self.collection_name, - CreateCollection( - vector_size=self.n_dim, - distance=self.distance, + collection_name=self.collection_name, + create_collection=CreateCollection( + vector_size=self._n_dim, + distance=DISTANCES[self._distance], hnsw_config=hnsw_config, ), ) def _collection_exists(self, collection_name): - resp = self.client.http.collections_api.get_collections() - collections = [collection.name for collection in resp.result.collections] + resp = self.client.get_collections() + collections = [collection.name for collection in resp.collections] return collection_name in collections @staticmethod @@ -170,15 +171,14 @@ def __setstate__(self, state): def _get_offset2ids_meta(self) -> List[str]: if not self._collection_exists(self.collection_name_meta): return [] - return self.client.http.points_api.get_point( - self.collection_name_meta, id=1 - ).result.payload['offset2id'] + return self.client.retrieve(collection_name=self.collection_name_meta, ids=[1]) def _update_offset2ids_meta(self): if not self._collection_exists(self.collection_name_meta): - self.client.http.collections_api.create_collection( + self.client.recreate_collection( self.collection_name_meta, - CreateCollection(vector_size=1, distance=Distance.COSINE), + vector_size=1, + distance=Distance.COSINE, ) self.client.http.points_api.upsert_points( diff --git a/docs/advanced/document-store/qdrant.md b/docs/advanced/document-store/qdrant.md index d5a8b1b35c5..f22a1d5bdb6 100644 --- a/docs/advanced/document-store/qdrant.md +++ b/docs/advanced/document-store/qdrant.md @@ -19,7 +19,7 @@ server. Create `docker-compose.yml` as follows: version: '3.4' services: qdrant: - image: qdrant/qdrant:v0.7.0 + image: qdrant/qdrant:v0.8.0 ports: - "6333:6333" ulimits: # Only required for tests, as there are a lot of collections created diff --git a/scripts/docker-compose.yml b/scripts/docker-compose.yml index 4d917761b60..60944769bef 100644 --- a/scripts/docker-compose.yml +++ b/scripts/docker-compose.yml @@ -10,7 +10,7 @@ services: AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' PERSISTENCE_DATA_PATH: '/var/lib/weaviate' qdrant: - image: qdrant/qdrant:v0.7.0 + image: qdrant/qdrant:v0.8.0 ports: - "41233:41233" ulimits: # Only required for tests, as there are a lot of collections created diff --git a/setup.py b/setup.py index 3124418193d..fedfcc5a4d1 100644 --- a/setup.py +++ b/setup.py @@ -65,7 +65,7 @@ 'strawberry-graphql', ], 'qdrant': [ - 'qdrant-client~=0.7.3', + 'qdrant-client==0.8.0', ], 'annlite': [ 'annlite>=0.3.12', diff --git a/tests/unit/array/docker-compose.yml b/tests/unit/array/docker-compose.yml index 07de4842154..7fe783c699e 100644 --- a/tests/unit/array/docker-compose.yml +++ b/tests/unit/array/docker-compose.yml @@ -10,7 +10,7 @@ services: AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' PERSISTENCE_DATA_PATH: '/var/lib/weaviate' qdrant: - image: qdrant/qdrant:v0.7.0 + image: qdrant/qdrant:v0.8.0 ports: - "6333:6333" ulimits: # Only required for tests, as there are a lot of collections created From ae51a8700ad9d49e25bd6555317fae44bd296e63 Mon Sep 17 00:00:00 2001 From: Alaeddine Abdessalem Date: Wed, 19 Oct 2022 11:50:15 +0100 Subject: [PATCH 2/2] fix: fix load offset2id meta --- docarray/array/storage/qdrant/backend.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docarray/array/storage/qdrant/backend.py b/docarray/array/storage/qdrant/backend.py index 75954c63bc7..43c871a1b66 100644 --- a/docarray/array/storage/qdrant/backend.py +++ b/docarray/array/storage/qdrant/backend.py @@ -171,7 +171,13 @@ def __setstate__(self, state): def _get_offset2ids_meta(self) -> List[str]: if not self._collection_exists(self.collection_name_meta): return [] - return self.client.retrieve(collection_name=self.collection_name_meta, ids=[1]) + results = self.client.retrieve( + collection_name=self.collection_name_meta, ids=[1] + ) + if len(results) == 0: + return [] + else: + return results[0].payload.get('offset2id', []) def _update_offset2ids_meta(self): if not self._collection_exists(self.collection_name_meta):