Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions docarray/index/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from docarray.index.backends.elasticv7 import ElasticV7DocIndex # noqa: F401
from docarray.index.backends.hnswlib import HnswDocumentIndex # noqa: F401
from docarray.index.backends.qdrant import QdrantDocumentIndex # noqa: F401
from docarray.index.backends.weaviate import WeaviateDocumentIndex # noqa: F401

__all__ = []

Expand All @@ -29,6 +30,9 @@ def __getattr__(name: str):
elif name == 'QdrantDocumentIndex':
import_library('qdrant_client', raise_error=True)
import docarray.index.backends.qdrant as lib
elif name == 'WeaviateDocumentIndex':
import_library('weaviate', raise_error=True)
import docarray.index.backends.weaviate as lib
else:
raise ImportError(
f'cannot import name \'{name}\' from \'{_get_path_from_docarray_root_level(__file__)}\''
Expand Down
18 changes: 13 additions & 5 deletions docarray/index/backends/qdrant.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import uuid
from dataclasses import dataclass, field
from typing import (
TYPE_CHECKING,
Any,
Dict,
Generator,
Expand All @@ -16,11 +17,7 @@
)

import numpy as np
import qdrant_client
from grpc import RpcError # type: ignore[import]
from qdrant_client.conversions import common_types as types
from qdrant_client.http import models as rest
from qdrant_client.http.exceptions import UnexpectedResponse

import docarray.typing.id
from docarray import BaseDoc, DocList
Expand All @@ -32,9 +29,20 @@
)
from docarray.typing import NdArray
from docarray.typing.tensor.abstract_tensor import AbstractTensor
from docarray.utils._internal.misc import torch_imported
from docarray.utils._internal.misc import import_library, torch_imported
from docarray.utils.find import _FindResult

if TYPE_CHECKING:
import qdrant_client
from qdrant_client.conversions import common_types as types
from qdrant_client.http import models as rest
from qdrant_client.http.exceptions import UnexpectedResponse
else:
qdrant_client = import_library('qdrant_client')
from qdrant_client.conversions import common_types as types
from qdrant_client.http import models as rest
from qdrant_client.http.exceptions import UnexpectedResponse

TSchema = TypeVar('TSchema', bound=BaseDoc)


Expand Down
8 changes: 7 additions & 1 deletion docarray/index/backends/weaviate.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from dataclasses import dataclass, field
from pathlib import Path
from typing import (
TYPE_CHECKING,
Any,
Dict,
Generator,
Expand All @@ -20,7 +21,6 @@
)

import numpy as np
import weaviate
from pydantic import parse_obj_as
from typing_extensions import Literal

Expand All @@ -30,8 +30,14 @@
from docarray.typing import AnyTensor
from docarray.typing.tensor.abstract_tensor import AbstractTensor
from docarray.typing.tensor.ndarray import NdArray
from docarray.utils._internal.misc import import_library
from docarray.utils.find import FindResult, _FindResult

if TYPE_CHECKING:
import weaviate
else:
weaviate = import_library('weaviate')

TSchema = TypeVar('TSchema', bound=BaseDoc)
T = TypeVar('T', bound='WeaviateDocumentIndex')

Expand Down
2 changes: 2 additions & 0 deletions docarray/utils/_internal/misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@
'trimesh': '"docarray[mesh]"',
'hnswlib': '"docarray[hnswlib]"',
'elasticsearch': '"docarray[elasticsearch]"',
'weaviate': '"docarray[weaviate]"',
'qdrant_client': '"docarray[qdrant]"',
'fastapi': '"docarray[web]"',
'torch': '"docarray[torch]"',
'tensorflow': 'protobuf==3.19.0 tensorflow',
Expand Down