zilliztech / VectorDBBench

A Benchmark Tool for VectorDB
MIT License
455 stars 109 forks source link

A TypeError has occurred when I run qdrant bench "Client.__init__() got an unexpected keyword argument 'dim' " #297

Closed Dovahkiin8625 closed 2 months ago

Dovahkiin8625 commented 3 months ago

A TypeError has occurred when I run qdrant bench "Client.init() got an unexpected keyword argument 'dim' ". The following is the complete error message:

2024-03-26 16:25:35,697 | WARNING: pre run case error: Client.__init__() got an unexpected keyword argument 'dim' (task_runner.py:92) (26472)
2024-03-26 16:25:35,697 | WARNING: [1/1] case {'label': <CaseLabel.Performance: 2>, 'dataset': {'data': {'name': 'OpenAI', 'size': 500000, 'dim': 1536, 'metric_type': <MetricType.COSINE: 'COSINE'>}}, 'db': 'QdrantCloud'} failed to run, reason=Client.__init__() got an unexpected keyword argument 'dim' (interface.py:187) (26472)
Traceback (most recent call last):
  File "D:\ProgramData\envs\vec_bench\Lib\site-packages\vectordb_bench\interface.py", line 168, in _async_task_v2
    case_res.metrics = runner.run(drop_old)
                       ^^^^^^^^^^^^^^^^^^^^
  File "D:\ProgramData\envs\vec_bench\Lib\site-packages\vectordb_bench\backend\task_runner.py", line 96, in run
    self._pre_run(drop_old)
  File "D:\ProgramData\envs\vec_bench\Lib\site-packages\vectordb_bench\backend\task_runner.py", line 93, in _pre_run
    raise e from None
  File "D:\ProgramData\envs\vec_bench\Lib\site-packages\vectordb_bench\backend\task_runner.py", line 86, in _pre_run
    self.init_db(drop_old)
  File "D:\ProgramData\envs\vec_bench\Lib\site-packages\vectordb_bench\backend\task_runner.py", line 77, in init_db
    self.db = db_cls(
              ^^^^^^^
  File "D:\ProgramData\envs\vec_bench\Lib\site-packages\qdrant_client\qdrant_client.py", line 108, in __init__
    self._client = QdrantRemote(
                   ^^^^^^^^^^^^^
  File "D:\ProgramData\envs\vec_bench\Lib\site-packages\qdrant_client\qdrant_remote.py", line 154, in __init__
    self.openapi_client: SyncApis[ApiClient] = SyncApis(host=self.rest_uri, **self._rest_args)
                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\ProgramData\envs\vec_bench\Lib\site-packages\qdrant_client\http\api_client.py", line 34, in __init__
    self.client = ApiClient(host, **kwargs)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\ProgramData\envs\vec_bench\Lib\site-packages\qdrant_client\http\api_client.py", line 57, in __init__
    self._client = Client(**kwargs)
                   ^^^^^^^^^^^^^^^^
TypeError: Client.__init__() got an unexpected keyword argument 'dim'

It seems to be line 57 of vectordb_bench\backend\clients\__init__.py. It should be from qdrant_cloud.qdrant_cloud import QdrantCloud instead of from .qdrant_cloud.qdrant_cloud import QdrantClient.

Furthermore, I have a suggestion. Could we possibly make the API keys or passwords for vector databases like Redis and Qdrant optional? This is because sometimes in our self-deployed environments, we don’t have security validation in place. However, if these API keys or passwords are required, it might cause errors on the server.

image

alwayslove2013 commented 2 months ago

Fixed, thanks~

It should be from qdrant_cloud.qdrant_cloud import QdrantCloud instead of from .qdrant_cloud.qdrant_cloud import QdrantClient.

Nice suggestion~ We will add Redis Local and Qdrant Local in milestone 1.0.0.

Furthermore, I have a suggestion. Could we possibly make the API keys or passwords for vector databases like Redis and Qdrant optional? This is because sometimes in our self-deployed environments, we don’t have security validation in place. However, if these API keys or passwords are required, it might cause errors on the server.