vectordb-bench 0.0.30__py3-none-any.whl → 1.0.1__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.
Files changed (80) hide show
  1. vectordb_bench/__init__.py +14 -27
  2. vectordb_bench/__main__.py +1 -1
  3. vectordb_bench/backend/assembler.py +19 -6
  4. vectordb_bench/backend/cases.py +186 -23
  5. vectordb_bench/backend/clients/__init__.py +16 -0
  6. vectordb_bench/backend/clients/api.py +22 -1
  7. vectordb_bench/backend/clients/aws_opensearch/aws_opensearch.py +82 -41
  8. vectordb_bench/backend/clients/aws_opensearch/config.py +37 -4
  9. vectordb_bench/backend/clients/chroma/chroma.py +6 -2
  10. vectordb_bench/backend/clients/elastic_cloud/config.py +31 -1
  11. vectordb_bench/backend/clients/elastic_cloud/elastic_cloud.py +133 -45
  12. vectordb_bench/backend/clients/milvus/config.py +1 -0
  13. vectordb_bench/backend/clients/milvus/milvus.py +75 -23
  14. vectordb_bench/backend/clients/oceanbase/cli.py +100 -0
  15. vectordb_bench/backend/clients/oceanbase/config.py +125 -0
  16. vectordb_bench/backend/clients/oceanbase/oceanbase.py +215 -0
  17. vectordb_bench/backend/clients/pinecone/pinecone.py +39 -25
  18. vectordb_bench/backend/clients/qdrant_cloud/config.py +73 -3
  19. vectordb_bench/backend/clients/qdrant_cloud/qdrant_cloud.py +100 -33
  20. vectordb_bench/backend/clients/zilliz_cloud/zilliz_cloud.py +1 -1
  21. vectordb_bench/backend/dataset.py +146 -27
  22. vectordb_bench/backend/filter.py +76 -0
  23. vectordb_bench/backend/runner/__init__.py +3 -3
  24. vectordb_bench/backend/runner/mp_runner.py +52 -39
  25. vectordb_bench/backend/runner/rate_runner.py +68 -52
  26. vectordb_bench/backend/runner/read_write_runner.py +125 -68
  27. vectordb_bench/backend/runner/serial_runner.py +56 -23
  28. vectordb_bench/backend/task_runner.py +59 -20
  29. vectordb_bench/cli/cli.py +59 -1
  30. vectordb_bench/cli/vectordbbench.py +3 -0
  31. vectordb_bench/frontend/components/check_results/data.py +16 -11
  32. vectordb_bench/frontend/components/check_results/filters.py +53 -25
  33. vectordb_bench/frontend/components/check_results/headerIcon.py +18 -13
  34. vectordb_bench/frontend/components/check_results/nav.py +20 -0
  35. vectordb_bench/frontend/components/custom/displayCustomCase.py +43 -8
  36. vectordb_bench/frontend/components/custom/displaypPrams.py +10 -5
  37. vectordb_bench/frontend/components/custom/getCustomConfig.py +10 -0
  38. vectordb_bench/frontend/components/label_filter/charts.py +60 -0
  39. vectordb_bench/frontend/components/run_test/caseSelector.py +48 -52
  40. vectordb_bench/frontend/components/run_test/dbSelector.py +9 -5
  41. vectordb_bench/frontend/components/run_test/inputWidget.py +48 -0
  42. vectordb_bench/frontend/components/run_test/submitTask.py +3 -1
  43. vectordb_bench/frontend/components/streaming/charts.py +253 -0
  44. vectordb_bench/frontend/components/streaming/data.py +62 -0
  45. vectordb_bench/frontend/components/tables/data.py +1 -1
  46. vectordb_bench/frontend/components/welcome/explainPrams.py +66 -0
  47. vectordb_bench/frontend/components/welcome/pagestyle.py +106 -0
  48. vectordb_bench/frontend/components/welcome/welcomePrams.py +147 -0
  49. vectordb_bench/frontend/config/dbCaseConfigs.py +309 -42
  50. vectordb_bench/frontend/config/styles.py +34 -4
  51. vectordb_bench/frontend/pages/concurrent.py +5 -1
  52. vectordb_bench/frontend/pages/custom.py +4 -0
  53. vectordb_bench/frontend/pages/label_filter.py +56 -0
  54. vectordb_bench/frontend/pages/quries_per_dollar.py +5 -1
  55. vectordb_bench/frontend/{vdb_benchmark.py → pages/results.py} +10 -4
  56. vectordb_bench/frontend/pages/run_test.py +3 -3
  57. vectordb_bench/frontend/pages/streaming.py +135 -0
  58. vectordb_bench/frontend/pages/tables.py +4 -0
  59. vectordb_bench/frontend/vdbbench.py +31 -0
  60. vectordb_bench/interface.py +8 -3
  61. vectordb_bench/metric.py +15 -1
  62. vectordb_bench/models.py +31 -11
  63. vectordb_bench/results/ElasticCloud/result_20250318_standard_elasticcloud.json +5890 -0
  64. vectordb_bench/results/Milvus/result_20250509_standard_milvus.json +6138 -0
  65. vectordb_bench/results/OpenSearch/result_20250224_standard_opensearch.json +7319 -0
  66. vectordb_bench/results/Pinecone/result_20250124_standard_pinecone.json +2365 -0
  67. vectordb_bench/results/QdrantCloud/result_20250602_standard_qdrantcloud.json +3556 -0
  68. vectordb_bench/results/ZillizCloud/result_20250613_standard_zillizcloud.json +6290 -0
  69. vectordb_bench/results/dbPrices.json +12 -4
  70. vectordb_bench/results/getLeaderboardDataV2.py +59 -0
  71. vectordb_bench/results/leaderboard_v2.json +2662 -0
  72. {vectordb_bench-0.0.30.dist-info → vectordb_bench-1.0.1.dist-info}/METADATA +93 -40
  73. {vectordb_bench-0.0.30.dist-info → vectordb_bench-1.0.1.dist-info}/RECORD +77 -58
  74. vectordb_bench/results/ZillizCloud/result_20230727_standard_zillizcloud.json +0 -791
  75. vectordb_bench/results/ZillizCloud/result_20230808_standard_zillizcloud.json +0 -679
  76. vectordb_bench/results/ZillizCloud/result_20240105_standard_202401_zillizcloud.json +0 -1352
  77. {vectordb_bench-0.0.30.dist-info → vectordb_bench-1.0.1.dist-info}/WHEEL +0 -0
  78. {vectordb_bench-0.0.30.dist-info → vectordb_bench-1.0.1.dist-info}/entry_points.txt +0 -0
  79. {vectordb_bench-0.0.30.dist-info → vectordb_bench-1.0.1.dist-info}/licenses/LICENSE +0 -0
  80. {vectordb_bench-0.0.30.dist-info → vectordb_bench-1.0.1.dist-info}/top_level.txt +0 -0
vectordb_bench/models.py CHANGED
@@ -1,13 +1,13 @@
1
1
  import logging
2
2
  import pathlib
3
3
  from datetime import date, datetime
4
- from enum import Enum, StrEnum, auto
4
+ from enum import Enum, StrEnum
5
5
  from typing import Self
6
6
 
7
7
  import ujson
8
8
 
9
9
  from . import config
10
- from .backend.cases import CaseType
10
+ from .backend.cases import Case, CaseType
11
11
  from .backend.clients import (
12
12
  DB,
13
13
  DBCaseConfig,
@@ -112,10 +112,20 @@ class CaseConfigParamType(Enum):
112
112
  index_thread_qty = "index_thread_qty"
113
113
  engine_name = "engine_name"
114
114
  metric_type_name = "metric_type_name"
115
-
116
- # mongodb params
117
115
  mongodb_quantization_type = "quantization"
118
116
  mongodb_num_candidates_ratio = "num_candidates_ratio"
117
+ use_partition_key = "use_partition_key"
118
+ refresh_interval = "refresh_interval"
119
+ use_rescore = "use_rescore"
120
+ oversample_ratio = "oversample_ratio"
121
+ use_routing = "use_routing"
122
+
123
+ dataset_with_size_type = "dataset_with_size_type"
124
+ insert_rate = "insert_rate"
125
+ search_stages = "search_stages"
126
+ concurrencies = "concurrencies"
127
+ optimize_after_write = "optimize_after_write"
128
+ read_dur_after_write = "read_dur_after_write"
119
129
 
120
130
 
121
131
  class CustomizedCase(BaseModel):
@@ -151,14 +161,22 @@ class CaseConfig(BaseModel):
151
161
  def __hash__(self) -> int:
152
162
  return hash(self.json())
153
163
 
164
+ @property
165
+ def case(self) -> Case:
166
+ return self.case_id.case_cls(self.custom_case)
167
+
168
+ @property
169
+ def case_name(self) -> str:
170
+ return self.case.name
171
+
154
172
 
155
173
  class TaskStage(StrEnum):
156
174
  """Enumerations of various stages of the task"""
157
175
 
158
- DROP_OLD = auto()
159
- LOAD = auto()
160
- SEARCH_SERIAL = auto()
161
- SEARCH_CONCURRENT = auto()
176
+ DROP_OLD = "drop_old"
177
+ LOAD = "load"
178
+ SEARCH_SERIAL = "search_serial"
179
+ SEARCH_CONCURRENT = "search_concurrent"
162
180
 
163
181
  def __repr__(self) -> str:
164
182
  return str.__repr__(self.value)
@@ -299,12 +317,14 @@ class TestResult(BaseModel):
299
317
  key=lambda x: (
300
318
  x.task_config.db.name,
301
319
  x.task_config.db_config.db_label,
302
- x.task_config.case_config.case_id.name,
320
+ x.task_config.case_config.case_name,
303
321
  ),
304
322
  reverse=True,
305
323
  )
306
324
 
307
325
  filtered_results = [r for r in sorted_results if not filter_list or r.task_config.db not in filter_list]
326
+ if len(filtered_results) == 0:
327
+ return
308
328
 
309
329
  def append_return(x: any, y: any):
310
330
  x.append(y)
@@ -312,7 +332,7 @@ class TestResult(BaseModel):
312
332
 
313
333
  max_db = max(map(len, [f.task_config.db.name for f in filtered_results]))
314
334
  max_db_labels = max(map(len, [f.task_config.db_config.db_label for f in filtered_results])) + 3
315
- max_case = max(map(len, [f.task_config.case_config.case_id.name for f in filtered_results]))
335
+ max_case = max(map(len, [f.task_config.case_config.case_name for f in filtered_results]))
316
336
  max_load_dur = max(map(len, [str(f.metrics.load_duration) for f in filtered_results])) + 3
317
337
  max_qps = max(map(len, [str(f.metrics.qps) for f in filtered_results])) + 3
318
338
  max_recall = max(map(len, [str(f.metrics.recall) for f in filtered_results])) + 3
@@ -366,7 +386,7 @@ class TestResult(BaseModel):
366
386
  % (
367
387
  f.task_config.db.name,
368
388
  f.task_config.db_config.db_label,
369
- f.task_config.case_config.case_id.name,
389
+ f.task_config.case_config.case_name,
370
390
  self.task_label,
371
391
  f.metrics.load_duration,
372
392
  f.metrics.qps,