vectordb-bench 0.0.28__py3-none-any.whl → 0.0.29__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,7 @@ import environs
6
6
  from . import log_util
7
7
 
8
8
  env = environs.Env()
9
- env.read_env(".env", False)
9
+ env.read_env(path=".env", recurse=False)
10
10
 
11
11
 
12
12
  class config:
@@ -52,6 +52,8 @@ class config:
52
52
 
53
53
  CONCURRENCY_DURATION = 30
54
54
 
55
+ CONCURRENCY_TIMEOUT = 3600
56
+
55
57
  RESULTS_LOCAL_DIR = env.path(
56
58
  "RESULTS_LOCAL_DIR",
57
59
  pathlib.Path(__file__).parent.joinpath("results"),
@@ -51,6 +51,7 @@ def Clickhouse(**parameters: Unpack[ClickhouseHNSWTypedDict]):
51
51
  db=DB.Clickhouse,
52
52
  db_config=ClickhouseConfig(
53
53
  db_label=parameters["db_label"],
54
+ user=parameters["user"],
54
55
  password=SecretStr(parameters["password"]) if parameters["password"] else None,
55
56
  host=parameters["host"],
56
57
  port=parameters["port"],
@@ -106,7 +106,7 @@ class Clickhouse(VectorDB):
106
106
  query = f"""
107
107
  ALTER TABLE {self.db_config["database"]}.{self.table_name}
108
108
  ADD INDEX {self._index_name} {self._vector_field}
109
- TYPE vector_similarity('hnsw', '{self.index_param["metric_type"]}',
109
+ TYPE vector_similarity('hnsw', '{self.index_param["metric_type"]}',{self.dim},
110
110
  '{self.index_param["quantization"]}',
111
111
  {self.index_param["params"]["M"]}, {self.index_param["params"]["efConstruction"]})
112
112
  GRANULARITY {self.index_param["granularity"]}
@@ -115,7 +115,7 @@ class Clickhouse(VectorDB):
115
115
  query = f"""
116
116
  ALTER TABLE {self.db_config["database"]}.{self.table_name}
117
117
  ADD INDEX {self._index_name} {self._vector_field}
118
- TYPE vector_similarity('hnsw', '{self.index_param["metric_type"]}')
118
+ TYPE vector_similarity('hnsw', '{self.index_param["metric_type"]}', {self.dim})
119
119
  GRANULARITY {self.index_param["granularity"]}
120
120
  """
121
121
  self.conn.command(cmd=query)
@@ -186,7 +186,7 @@ class Clickhouse(VectorDB):
186
186
  "vector_field": self._vector_field,
187
187
  "schema": self.db_config["database"],
188
188
  "table": self.table_name,
189
- "gt": filters.get("id"),
189
+ "gt": 0 if filters is None else filters.get("id", 0),
190
190
  "k": k,
191
191
  "metric_type": self.search_param["metric_type"],
192
192
  "query": query,
@@ -16,7 +16,7 @@ class ClickhouseConfigDict(TypedDict):
16
16
 
17
17
 
18
18
  class ClickhouseConfig(DBConfig):
19
- user_name: str = "clickhouse"
19
+ user: str = "clickhouse"
20
20
  password: SecretStr
21
21
  host: str = "localhost"
22
22
  port: int = 8123
@@ -29,7 +29,7 @@ class ClickhouseConfig(DBConfig):
29
29
  "host": self.host,
30
30
  "port": self.port,
31
31
  "database": self.db_name,
32
- "user": self.user_name,
32
+ "user": self.user,
33
33
  "password": pwd_str,
34
34
  "secure": self.secure,
35
35
  }
@@ -77,9 +77,15 @@ class LanceDB(VectorDB):
77
77
  filters: dict | None = None,
78
78
  ) -> list[int]:
79
79
  if filters:
80
- results = self.table.search(query).where(f"id >= {filters['id']}", prefilter=True).limit(k).to_list()
80
+ results = (
81
+ self.table.search(query)
82
+ .select(["id"])
83
+ .where(f"id >= {filters['id']}", prefilter=True)
84
+ .limit(k)
85
+ .to_list()
86
+ )
81
87
  else:
82
- results = self.table.search(query).limit(k).to_list()
88
+ results = self.table.search(query).select(["id"]).limit(k).to_list()
83
89
  return [int(result["id"]) for result in results]
84
90
 
85
91
  def optimize(self, data_size: int | None = None):
@@ -0,0 +1,43 @@
1
+ from typing import Annotated, Unpack
2
+
3
+ import click
4
+ from pydantic import SecretStr
5
+
6
+ from ....cli.cli import (
7
+ CommonTypedDict,
8
+ cli,
9
+ click_parameter_decorators_from_typed_dict,
10
+ run,
11
+ )
12
+ from .. import DB
13
+
14
+
15
+ class QdrantTypedDict(CommonTypedDict):
16
+ url: Annotated[
17
+ str,
18
+ click.option("--url", type=str, help="URL connection string", required=True),
19
+ ]
20
+ api_key: Annotated[
21
+ str | None,
22
+ click.option("--api-key", type=str, help="API key for authentication", required=False),
23
+ ]
24
+
25
+
26
+ @cli.command()
27
+ @click_parameter_decorators_from_typed_dict(QdrantTypedDict)
28
+ def QdrantCloud(**parameters: Unpack[QdrantTypedDict]):
29
+ from .config import QdrantConfig, QdrantIndexConfig
30
+
31
+ config_params = {
32
+ "db_label": parameters["db_label"],
33
+ "url": SecretStr(parameters["url"]),
34
+ }
35
+
36
+ config_params["api_key"] = SecretStr(parameters["api_key"]) if parameters["api_key"] else None
37
+
38
+ run(
39
+ db=DB.QdrantCloud,
40
+ db_config=QdrantConfig(**config_params),
41
+ db_case_config=QdrantIndexConfig(),
42
+ **parameters,
43
+ )
@@ -6,14 +6,14 @@ from ..api import DBCaseConfig, DBConfig, MetricType
6
6
  # Allowing `api_key` to be left empty, to ensure compatibility with the open-source Qdrant.
7
7
  class QdrantConfig(DBConfig):
8
8
  url: SecretStr
9
- api_key: SecretStr
9
+ api_key: SecretStr | None = None
10
10
 
11
11
  def to_dict(self) -> dict:
12
- api_key = self.api_key.get_secret_value()
13
- if len(api_key) > 0:
12
+ api_key_value = self.api_key.get_secret_value() if self.api_key else None
13
+ if api_key_value:
14
14
  return {
15
15
  "url": self.url.get_secret_value(),
16
- "api_key": self.api_key.get_secret_value(),
16
+ "api_key": api_key_value,
17
17
  "prefer_grpc": True,
18
18
  }
19
19
  return {
@@ -5,10 +5,12 @@ import random
5
5
  import time
6
6
  import traceback
7
7
  from collections.abc import Iterable
8
+ from multiprocessing.queues import Queue
8
9
 
9
10
  import numpy as np
10
11
 
11
12
  from ... import config
13
+ from ...models import ConcurrencySlotTimeoutError
12
14
  from ..clients import api
13
15
 
14
16
  NUM_PER_BATCH = config.NUM_PER_BATCH
@@ -28,16 +30,18 @@ class MultiProcessingSearchRunner:
28
30
  self,
29
31
  db: api.VectorDB,
30
32
  test_data: list[list[float]],
31
- k: int = 100,
33
+ k: int = config.K_DEFAULT,
32
34
  filters: dict | None = None,
33
35
  concurrencies: Iterable[int] = config.NUM_CONCURRENCY,
34
- duration: int = 30,
36
+ duration: int = config.CONCURRENCY_DURATION,
37
+ concurrency_timeout: int = config.CONCURRENCY_TIMEOUT,
35
38
  ):
36
39
  self.db = db
37
40
  self.k = k
38
41
  self.filters = filters
39
42
  self.concurrencies = concurrencies
40
43
  self.duration = duration
44
+ self.concurrency_timeout = concurrency_timeout
41
45
 
42
46
  self.test_data = test_data
43
47
  log.debug(f"test dataset columns: {len(test_data)}")
@@ -114,9 +118,7 @@ class MultiProcessingSearchRunner:
114
118
  log.info(f"Start search {self.duration}s in concurrency {conc}, filters: {self.filters}")
115
119
  future_iter = [executor.submit(self.search, self.test_data, q, cond) for i in range(conc)]
116
120
  # Sync all processes
117
- while q.qsize() < conc:
118
- sleep_t = conc if conc < 10 else 10
119
- time.sleep(sleep_t)
121
+ self._wait_for_queue_fill(q, size=conc)
120
122
 
121
123
  with cond:
122
124
  cond.notify_all()
@@ -160,6 +162,15 @@ class MultiProcessingSearchRunner:
160
162
  conc_latency_avg_list,
161
163
  )
162
164
 
165
+ def _wait_for_queue_fill(self, q: Queue, size: int):
166
+ wait_t = 0
167
+ while q.qsize() < size:
168
+ sleep_t = size if size < 10 else 10
169
+ wait_t += sleep_t
170
+ if wait_t > self.concurrency_timeout > 0:
171
+ raise ConcurrencySlotTimeoutError
172
+ time.sleep(sleep_t)
173
+
163
174
  def run(self) -> float:
164
175
  """
165
176
  Returns:
@@ -275,6 +275,7 @@ class CaseRunner(BaseModel):
275
275
  filters=self.ca.filters,
276
276
  concurrencies=self.config.case_config.concurrency_search_config.num_concurrency,
277
277
  duration=self.config.case_config.concurrency_search_config.concurrency_duration,
278
+ concurrency_timeout=self.config.case_config.concurrency_search_config.concurrency_timeout,
278
279
  k=self.config.case_config.k,
279
280
  )
280
281
 
vectordb_bench/cli/cli.py CHANGED
@@ -17,10 +17,9 @@ from typing import (
17
17
  import click
18
18
  from yaml import load
19
19
 
20
- from vectordb_bench.backend.clients.api import MetricType
21
-
22
20
  from .. import config
23
21
  from ..backend.clients import DB
22
+ from ..backend.clients.api import MetricType
24
23
  from ..interface import benchmark_runner, global_result_future
25
24
  from ..models import (
26
25
  CaseConfig,
@@ -303,6 +302,17 @@ class CommonTypedDict(TypedDict):
303
302
  callback=lambda *args: list(map(int, click_arg_split(*args))),
304
303
  ),
305
304
  ]
305
+ concurrency_timeout: Annotated[
306
+ int,
307
+ click.option(
308
+ "--concurrency-timeout",
309
+ type=int,
310
+ default=config.CONCURRENCY_TIMEOUT,
311
+ show_default=True,
312
+ help="Timeout (in seconds) to wait for a concurrency slot before failing. "
313
+ "Set to a negative value to wait indefinitely.",
314
+ ),
315
+ ]
306
316
  custom_case_name: Annotated[
307
317
  str,
308
318
  click.option(
@@ -490,6 +500,7 @@ def run(
490
500
  concurrency_search_config=ConcurrencySearchConfig(
491
501
  concurrency_duration=parameters["concurrency_duration"],
492
502
  num_concurrency=[int(s) for s in parameters["num_concurrency"]],
503
+ concurrency_timeout=parameters["concurrency_timeout"],
493
504
  ),
494
505
  custom_case=get_custom_case_config(parameters),
495
506
  ),
@@ -9,6 +9,7 @@ from ..backend.clients.pgdiskann.cli import PgDiskAnn
9
9
  from ..backend.clients.pgvecto_rs.cli import PgVectoRSHNSW, PgVectoRSIVFFlat
10
10
  from ..backend.clients.pgvector.cli import PgVectorHNSW
11
11
  from ..backend.clients.pgvectorscale.cli import PgVectorScaleDiskAnn
12
+ from ..backend.clients.qdrant_cloud.cli import QdrantCloud
12
13
  from ..backend.clients.redis.cli import Redis
13
14
  from ..backend.clients.test.cli import Test
14
15
  from ..backend.clients.tidb.cli import TiDB
@@ -35,6 +36,7 @@ cli.add_command(TiDB)
35
36
  cli.add_command(Clickhouse)
36
37
  cli.add_command(Vespa)
37
38
  cli.add_command(LanceDB)
39
+ cli.add_command(QdrantCloud)
38
40
 
39
41
 
40
42
  if __name__ == "__main__":
@@ -36,21 +36,27 @@ def dbConfigSettingItem(st, activeDb: DB):
36
36
  columns = st.columns(DB_CONFIG_SETTING_COLUMNS)
37
37
 
38
38
  dbConfigClass = activeDb.config_cls
39
- properties = dbConfigClass.schema().get("properties")
39
+ schema = dbConfigClass.schema()
40
+ property_items = schema.get("properties").items()
41
+ required_fields = set(schema.get("required", []))
40
42
  dbConfig = {}
41
43
  idx = 0
42
44
 
43
45
  # db config (unique)
44
- for key, property in properties.items():
46
+ for key, property in property_items:
45
47
  if key not in dbConfigClass.common_short_configs() and key not in dbConfigClass.common_long_configs():
46
48
  column = columns[idx % DB_CONFIG_SETTING_COLUMNS]
47
49
  idx += 1
48
- dbConfig[key] = column.text_input(
50
+ input_value = column.text_input(
49
51
  key,
50
- key="%s-%s" % (activeDb.name, key),
52
+ key=f"{activeDb.name}-{key}",
51
53
  value=property.get("default", ""),
52
54
  type="password" if inputIsPassword(key) else "default",
55
+ placeholder="optional" if key not in required_fields else None,
53
56
  )
57
+ if key in required_fields or input_value:
58
+ dbConfig[key] = input_value
59
+
54
60
  # db config (common short labels)
55
61
  for key in dbConfigClass.common_short_configs():
56
62
  column = columns[idx % DB_CONFIG_SETTING_COLUMNS]
vectordb_bench/models.py CHANGED
@@ -30,6 +30,11 @@ class PerformanceTimeoutError(TimeoutError):
30
30
  super().__init__("Performance case optimize timeout")
31
31
 
32
32
 
33
+ class ConcurrencySlotTimeoutError(TimeoutError):
34
+ def __init__(self):
35
+ super().__init__("Timeout while waiting for a concurrency slot to become available")
36
+
37
+
33
38
  class CaseConfigParamType(Enum):
34
39
  """
35
40
  Value will be the key of CaseConfig.params and displayed in UI
@@ -113,6 +118,7 @@ class CustomizedCase(BaseModel):
113
118
  class ConcurrencySearchConfig(BaseModel):
114
119
  num_concurrency: list[int] = config.NUM_CONCURRENCY
115
120
  concurrency_duration: int = config.CONCURRENCY_DURATION
121
+ concurrency_timeout: int = config.CONCURRENCY_TIMEOUT
116
122
 
117
123
 
118
124
  class CaseConfig(BaseModel):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vectordb-bench
3
- Version: 0.0.28
3
+ Version: 0.0.29
4
4
  Summary: VectorDBBench is not just an offering of benchmark results for mainstream vector databases and cloud services, it's your go-to tool for the ultimate performance and cost-effectiveness comparison. Designed with ease-of-use in mind, VectorDBBench is devised to help users, even non-professionals, reproduce results or test new systems, making the hunt for the optimal choice amongst a plethora of cloud services and open-source vector databases a breeze.
5
5
  Author-email: XuanYang-cn <xuan.yang@zilliz.com>
6
6
  Project-URL: repository, https://github.com/zilliztech/VectorDBBench
@@ -92,13 +92,13 @@ Provides-Extra: lancedb
92
92
  Requires-Dist: lancedb; extra == "lancedb"
93
93
  Dynamic: license-file
94
94
 
95
- # VectorDBBench: A Benchmark Tool for VectorDB
95
+ # VectorDBBench(VDBBench): A Benchmark Tool for VectorDB
96
96
 
97
97
  [![version](https://img.shields.io/pypi/v/vectordb-bench.svg?color=blue)](https://pypi.org/project/vectordb-bench/)
98
98
  [![Downloads](https://pepy.tech/badge/vectordb-bench)](https://pepy.tech/project/vectordb-bench)
99
99
 
100
100
  ## What is VectorDBBench
101
- VectorDBBench is not just an offering of benchmark results for mainstream vector databases and cloud services, it's your go-to tool for the ultimate performance and cost-effectiveness comparison. Designed with ease-of-use in mind, VectorDBBench is devised to help users, even non-professionals, reproduce results or test new systems, making the hunt for the optimal choice amongst a plethora of cloud services and open-source vector databases a breeze.
101
+ VectorDBBench(VDBBench) is not just an offering of benchmark results for mainstream vector databases and cloud services, it's your go-to tool for the ultimate performance and cost-effectiveness comparison. Designed with ease-of-use in mind, VectorDBBench is devised to help users, even non-professionals, reproduce results or test new systems, making the hunt for the optimal choice amongst a plethora of cloud services and open-source vector databases a breeze.
102
102
 
103
103
  Understanding the importance of user experience, we provide an intuitive visual interface. This not only empowers users to initiate benchmarks at ease, but also to view comparative result reports, thereby reproducing benchmark results effortlessly.
104
104
  To add more relevance and practicality, we provide cost-effectiveness reports particularly for cloud services. This allows for a more realistic and applicable benchmarking process.
@@ -208,6 +208,10 @@ Options:
208
208
  --num-concurrency TEXT Comma-separated list of concurrency values
209
209
  to test during concurrent search [default:
210
210
  1,10,20]
211
+ --concurrency-timeout INTEGER Timeout (in seconds) to wait for a
212
+ concurrency slot before failing. Set to a
213
+ negative value to wait indefinitely.
214
+ [default: 3600]
211
215
  --user-name TEXT Db username [required]
212
216
  --password TEXT Db password [required]
213
217
  --host TEXT Db host [required]
@@ -294,7 +298,8 @@ Options:
294
298
  # Memory Management
295
299
  --cb-threshold TEXT k-NN Memory circuit breaker threshold
296
300
 
297
- --help Show this message and exit.```
301
+ --help Show this message and exit.
302
+ ```
298
303
 
299
304
  #### Using a configuration file.
300
305
 
@@ -1,17 +1,17 @@
1
- vectordb_bench/__init__.py,sha256=d5psAfISw9F6PFL2xPlSYUKKFDw7ifQm7g3LWC8_yUA,2375
1
+ vectordb_bench/__init__.py,sha256=PBGSIdgzof6UMeWbgjFUjTRgUcbu0Tg5njbGo0oU88g,2420
2
2
  vectordb_bench/__main__.py,sha256=cyYbVSU-zA1AgzneGKcRRuzR4ftRDr9sIi9Ei9NZnhI,858
3
3
  vectordb_bench/base.py,sha256=AgavIF0P9ku_RmCRk1KKziba-wI4ZpA2aJvjJzNhRSs,129
4
4
  vectordb_bench/interface.py,sha256=XaCjTgUeI17uVjsgOauPeVlkvnkuCyQOWyOaWhrgCt8,9811
5
5
  vectordb_bench/log_util.py,sha256=wDNaU_JBBOfKi_Z4vq7LDa0kOlLjoNNzDX3VZQn_Dxo,3239
6
6
  vectordb_bench/metric.py,sha256=pj-AxQHyIRHTaJY-wTIkTbC6TqEqMzt3kcEmMWEv71w,2063
7
- vectordb_bench/models.py,sha256=aQPO6sLFtNL0CU0JySZqrZIQ5SdckCj5SOI7EfyaLNM,11995
7
+ vectordb_bench/models.py,sha256=b-DaUopaf6qwuuEbl9wAHKZjuosmOi6gpebYz6iWvBU,12221
8
8
  vectordb_bench/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  vectordb_bench/backend/assembler.py,sha256=6GInRT7yBgfTaIPmo-XMkYX4pA8PJQmjMQInynwaunE,2047
10
10
  vectordb_bench/backend/cases.py,sha256=obDdY6g3p9Z2fog7qDwLLDuRMwo3LGQKMHsP66QZd2M,16296
11
11
  vectordb_bench/backend/data_source.py,sha256=bfa_Zg4O9fRP2ENmVZ_2-NISKozoFN-TocyxOlw1JtE,5524
12
12
  vectordb_bench/backend/dataset.py,sha256=lH2Q01AEJxA-sYfZHzH2BM019mwuy9mB_i0VLhIgDJ8,9020
13
13
  vectordb_bench/backend/result_collector.py,sha256=mpROVdZ-HChKBVyMV5TZ5v7YGRb69bvfT7Gezn5F5sY,819
14
- vectordb_bench/backend/task_runner.py,sha256=vlaXB0_25-G9w1Lj-F0SrvJzhXT7ceDWGIb2aKRXukU,11488
14
+ vectordb_bench/backend/task_runner.py,sha256=HYZ5B9-qOKAKmrsk-nwVhmXEddf451o4P3xQuSiCTt8,11595
15
15
  vectordb_bench/backend/utils.py,sha256=R6THuJdZhiQYSSJTqv0Uegl2B20taV_QjwvFrun2yxE,1949
16
16
  vectordb_bench/backend/clients/__init__.py,sha256=4P4Y7qOIYBJqJENsfMNzD5L0C651ypcPr05M1-ph0LU,10549
17
17
  vectordb_bench/backend/clients/api.py,sha256=3AfO-EPNzosaIBfYX3U9HeOMO7Uw0muOZ0x4cqqSH34,6534
@@ -28,14 +28,14 @@ vectordb_bench/backend/clients/aws_opensearch/config.py,sha256=9meXQUOVFlk3UOAhv
28
28
  vectordb_bench/backend/clients/aws_opensearch/run.py,sha256=Ry5aAlielWjq0hx7LnbdShfOwzZhz3Gq9WYu5U43x9s,5001
29
29
  vectordb_bench/backend/clients/chroma/chroma.py,sha256=Aqo6AlSWd0TG0SR4cr9AEoLzXtOJ5VNhbIucHnm8NxY,3619
30
30
  vectordb_bench/backend/clients/chroma/config.py,sha256=8nXpPdecQ5HrNqcsQwAVgacSz6uLgI-BI7v4tB8CeDk,347
31
- vectordb_bench/backend/clients/clickhouse/cli.py,sha256=9tnDE9e1I-Mul40FAzFG8lViYyeXXgjV3dNDpikhEwg,2017
32
- vectordb_bench/backend/clients/clickhouse/clickhouse.py,sha256=nRTFE5KQn-_juKrtI546rbbqn1INqPNDNKrpeuHpdlI,8904
33
- vectordb_bench/backend/clients/clickhouse/config.py,sha256=Bd2fqpaJU5YcPKTNOL0mzEFWpaoVyxVt_21-Jb_tHKk,2659
31
+ vectordb_bench/backend/clients/clickhouse/cli.py,sha256=6I0AwUOrqfjQbN_3aSTJHUYE-PAAMAQ4AIZC_8GqoEw,2054
32
+ vectordb_bench/backend/clients/clickhouse/clickhouse.py,sha256=1i-64mzluloJ3fXT7J3_HXzkUtJ4re7HwuRwiqtGOck,8956
33
+ vectordb_bench/backend/clients/clickhouse/config.py,sha256=-waHUHrT9WwuSNjHYE7T5j8s8RTsHNTDFuzmqT4nQWI,2649
34
34
  vectordb_bench/backend/clients/elastic_cloud/config.py,sha256=_5Cz3__CbMU7zCizkhK1pGhH3TLJacn8efVueUZ0lnQ,1573
35
35
  vectordb_bench/backend/clients/elastic_cloud/elastic_cloud.py,sha256=FSslLDH2Yi9ZdUwaCbKC_IXxFbMvW-L1xB3YMU08MVI,5448
36
36
  vectordb_bench/backend/clients/lancedb/cli.py,sha256=j5eqb-_CSWF1rdxAj2Byut6albHEj0JF51wCruaJsu8,2688
37
37
  vectordb_bench/backend/clients/lancedb/config.py,sha256=Udd39FrYmIa9ZztmfAC0BLj0rBaPv3yd9XaF5VkCziU,2950
38
- vectordb_bench/backend/clients/lancedb/lancedb.py,sha256=nylYVn7I2kLmKZACQoPf9CvGU-3g9vFNOkiLXZMBdjg,3018
38
+ vectordb_bench/backend/clients/lancedb/lancedb.py,sha256=9hFHtj_Ry44nVY1vX9FSnB_WAL6ih86Rx2qFiZgEkX0,3148
39
39
  vectordb_bench/backend/clients/mariadb/cli.py,sha256=nqV9V-gOSKGQ1y6VmxOMxGz0a3jz860Va55x7JBcuPk,2727
40
40
  vectordb_bench/backend/clients/mariadb/config.py,sha256=DNxo0i1c0wIfii78Luv9GeOFq-74yvkkg3Np9sNUyFI,1870
41
41
  vectordb_bench/backend/clients/mariadb/mariadb.py,sha256=O2PY7pP3dYdp-aTOQLDVckdNabCZscw5Xup7Z8LnWIg,7137
@@ -61,7 +61,8 @@ vectordb_bench/backend/clients/pgvectorscale/config.py,sha256=ZMcRQPyCMzMJLXw56z
61
61
  vectordb_bench/backend/clients/pgvectorscale/pgvectorscale.py,sha256=NONFdcE-b-mt6GsRTru6UbMMu8iqX8PfRF43fY_AODw,10136
62
62
  vectordb_bench/backend/clients/pinecone/config.py,sha256=hzPX1lxDpYI9IdpNs7RYB1vAn2uMlCw9NH4FonQEmfQ,294
63
63
  vectordb_bench/backend/clients/pinecone/pinecone.py,sha256=SeJ-XnuIZxFDYhgO8FlRNYN65lPXDW2HEQuu5s5Na5Q,3591
64
- vectordb_bench/backend/clients/qdrant_cloud/config.py,sha256=b6VTClgvF-mvD8TZ9rOHyBZPKz9C0HykvzB_cz-kZqk,1073
64
+ vectordb_bench/backend/clients/qdrant_cloud/cli.py,sha256=QoJ8t76mJmXrj-VJYn6-Atc1EryFhAApvtWUxei0wuo,1095
65
+ vectordb_bench/backend/clients/qdrant_cloud/config.py,sha256=UWFctRQ03suEyASlbSg76dEi0s58tp5ERE-d5A9LuLg,1098
65
66
  vectordb_bench/backend/clients/qdrant_cloud/qdrant_cloud.py,sha256=VvE96WlEqbXCytwUGxLGt8AbuRvu1psF1weydb8MW_4,5431
66
67
  vectordb_bench/backend/clients/redis/cli.py,sha256=tFLXzNyvh_GYUZihqMvj65C5vBKPVVAYIXtbzGaVCcU,2167
67
68
  vectordb_bench/backend/clients/redis/config.py,sha256=xVSVC6xjjAKsiwJuJoLguCGhiiUT9w13Db_Up5ZqljY,1241
@@ -83,14 +84,14 @@ vectordb_bench/backend/clients/zilliz_cloud/cli.py,sha256=3_eD3ZG-FeTw1cenhbBFni
83
84
  vectordb_bench/backend/clients/zilliz_cloud/config.py,sha256=-Qb50m-Hcz86OcMURU21n61Rz-RpFqKfUsmjna85OR8,909
84
85
  vectordb_bench/backend/clients/zilliz_cloud/zilliz_cloud.py,sha256=B9EUDmK11oQ2GIslVkbRVAitHT-NbRGxQD_Weia-vhY,681
85
86
  vectordb_bench/backend/runner/__init__.py,sha256=mF8YnErTa7MVG37zZb0KFXBSrmMw_afttuiqWcwrVls,228
86
- vectordb_bench/backend/runner/mp_runner.py,sha256=AJHrQmUADDWDQZ0eZ4aaAH9HOQtZHiafXJYGU5PNq3Y,9645
87
+ vectordb_bench/backend/runner/mp_runner.py,sha256=n8IiRs7JUJGQVXwGlVMdvcpotikF9VsjXGFHMMylsS0,10119
87
88
  vectordb_bench/backend/runner/rate_runner.py,sha256=2coO7qalEh6ZbVKUkyFvip4JWjs1yJM-iiExSrjEp9c,4306
88
89
  vectordb_bench/backend/runner/read_write_runner.py,sha256=CXYBXEEkS1S7-NurdzN5Wh6N0Vx-rprM9Qehk1WKwl8,7822
89
90
  vectordb_bench/backend/runner/serial_runner.py,sha256=Y4Y2mSK8nU3hml7gliiF6BXUaW49sD-Ueci0xn62IL0,10290
90
91
  vectordb_bench/backend/runner/util.py,sha256=tjTFUxth6hNnVrlU82TqkHhfeZo4ymj7WlyK4zFyPTg,522
91
92
  vectordb_bench/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
- vectordb_bench/cli/cli.py,sha256=Ik6n-4cIq_huHLucP6ug48Lc2uHlzaRmWQrsD9CRbPE,15568
93
- vectordb_bench/cli/vectordbbench.py,sha256=5Ic2cVxn4aKx53N0pN7W9eguaJlC05jHd_SVRndfzHI,1516
93
+ vectordb_bench/cli/cli.py,sha256=1bZzK7uCwAi9ILtvlZiFAAMwJfwQec1HF3RRSpbqxKY,16000
94
+ vectordb_bench/cli/vectordbbench.py,sha256=EA0x0vKDGIszAKstbnDtJz26U6_Wnl11W07PDukLNzo,1604
94
95
  vectordb_bench/config-files/sample_config.yml,sha256=yw9ZgHczNi9PedNuTVxZKiOTI6AVoQS1h8INNgoDjPk,340
95
96
  vectordb_bench/custom/custom_case.json,sha256=uKo7NJgXDPPLtf_V6y1uc5w1aIcjLp-GCJEYOCty1As,475
96
97
  vectordb_bench/frontend/utils.py,sha256=8eb4I9F0cQdnPQiFX0gMEk1e2fdgultgTKzzY5zS0Q0,489
@@ -112,7 +113,7 @@ vectordb_bench/frontend/components/custom/initStyle.py,sha256=ortsoUNqH-vVq9ECiw
112
113
  vectordb_bench/frontend/components/get_results/saveAsImage.py,sha256=POaFiwKoCGqrY-zhanWC7-tubE64bV_JjqI4lgIuMts,1459
113
114
  vectordb_bench/frontend/components/run_test/autoRefresh.py,sha256=mjIa43VQQmNjYPkEbOtKNlJ1UfGPcqRKvc2Jh4kx8U0,289
114
115
  vectordb_bench/frontend/components/run_test/caseSelector.py,sha256=ea3u-NDtCX32Au9YkfqGA8mhF6K_Av9HZvp0Mem3C0o,5328
115
- vectordb_bench/frontend/components/run_test/dbConfigSetting.py,sha256=C3icY6THcWjl7SgdrKa-Gz-LU4I_YEf-1kAeVMkqu3s,2642
116
+ vectordb_bench/frontend/components/run_test/dbConfigSetting.py,sha256=k0tGoJokTVvI3zofArNxH9NYUu9Hzo1uyobbZ_h9HfM,2895
116
117
  vectordb_bench/frontend/components/run_test/dbSelector.py,sha256=hzMEIL1DzvpP8xkL6JhELTdcml0ysC70Gw-WLr8vW9A,1123
117
118
  vectordb_bench/frontend/components/run_test/generateTasks.py,sha256=3y8NHtWJMNqoP2SvoWuR7kj84g0OEg68IULebimzz7E,741
118
119
  vectordb_bench/frontend/components/run_test/hideSidebar.py,sha256=vb5kzIMmbMqWX67qFEHek21X4sGO_tPyn_uPqUEtp3Q,234
@@ -145,9 +146,9 @@ vectordb_bench/results/WeaviateCloud/result_20230808_standard_weaviatecloud.json
145
146
  vectordb_bench/results/ZillizCloud/result_20230727_standard_zillizcloud.json,sha256=-Mdm4By65XDRCrmVOCF8yQXjcZtH4Xo4shcjoDoBUKU,18293
146
147
  vectordb_bench/results/ZillizCloud/result_20230808_standard_zillizcloud.json,sha256=77XlHT5zM_K7mG5HfDQKwXZnSCuR37VUbt6-P3J_amI,15737
147
148
  vectordb_bench/results/ZillizCloud/result_20240105_standard_202401_zillizcloud.json,sha256=TualfJ0664Hs-vdIW68bdkqAEYyzotXmu2P0yIN-GHk,42526
148
- vectordb_bench-0.0.28.dist-info/licenses/LICENSE,sha256=HXbxhrb5u5SegVzeLNF_voVgRsJMavcLaOmD1N0lZkM,1067
149
- vectordb_bench-0.0.28.dist-info/METADATA,sha256=wz_jhR3BceHrcdbARNJeXnWXN8YNevrINi5GsZ2G_f8,38159
150
- vectordb_bench-0.0.28.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
151
- vectordb_bench-0.0.28.dist-info/entry_points.txt,sha256=Qzw6gVx96ui8esG21H6yHsI6nboEohRmV424TYhQNrA,113
152
- vectordb_bench-0.0.28.dist-info/top_level.txt,sha256=jnhZFZAuKX1J60yt-XOeBZ__ctiZMvoC_s0RFq29lpM,15
153
- vectordb_bench-0.0.28.dist-info/RECORD,,
149
+ vectordb_bench-0.0.29.dist-info/licenses/LICENSE,sha256=HXbxhrb5u5SegVzeLNF_voVgRsJMavcLaOmD1N0lZkM,1067
150
+ vectordb_bench-0.0.29.dist-info/METADATA,sha256=8ekrKUsItuE-dEvCBGOk1ktXNF19qSw8Qat9FRGG-o8,38448
151
+ vectordb_bench-0.0.29.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
152
+ vectordb_bench-0.0.29.dist-info/entry_points.txt,sha256=Qzw6gVx96ui8esG21H6yHsI6nboEohRmV424TYhQNrA,113
153
+ vectordb_bench-0.0.29.dist-info/top_level.txt,sha256=jnhZFZAuKX1J60yt-XOeBZ__ctiZMvoC_s0RFq29lpM,15
154
+ vectordb_bench-0.0.29.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.3.1)
2
+ Generator: setuptools (80.7.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5