vectordb-bench 0.0.9__tar.gz → 0.0.11__tar.gz

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 (132) hide show
  1. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/.env.example +1 -1
  2. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/PKG-INFO +193 -2
  3. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/README.md +187 -0
  4. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/pyproject.toml +6 -3
  5. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/__init__.py +22 -9
  6. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/cases.py +32 -12
  7. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/__init__.py +1 -0
  8. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/api.py +1 -1
  9. vectordb_bench-0.0.11/vectordb_bench/backend/clients/milvus/cli.py +291 -0
  10. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/milvus/config.py +6 -2
  11. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/milvus/milvus.py +16 -5
  12. vectordb_bench-0.0.11/vectordb_bench/backend/clients/pgvector/cli.py +116 -0
  13. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/pgvector/config.py +1 -1
  14. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/pgvector/pgvector.py +7 -4
  15. vectordb_bench-0.0.11/vectordb_bench/backend/clients/redis/cli.py +74 -0
  16. vectordb_bench-0.0.11/vectordb_bench/backend/clients/test/cli.py +25 -0
  17. vectordb_bench-0.0.11/vectordb_bench/backend/clients/test/config.py +18 -0
  18. vectordb_bench-0.0.11/vectordb_bench/backend/clients/test/test.py +62 -0
  19. vectordb_bench-0.0.11/vectordb_bench/backend/clients/weaviate_cloud/cli.py +41 -0
  20. vectordb_bench-0.0.11/vectordb_bench/backend/clients/zilliz_cloud/cli.py +55 -0
  21. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/runner/mp_runner.py +14 -3
  22. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/runner/serial_runner.py +7 -3
  23. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/task_runner.py +76 -26
  24. vectordb_bench-0.0.11/vectordb_bench/cli/__init__.py +0 -0
  25. vectordb_bench-0.0.11/vectordb_bench/cli/cli.py +362 -0
  26. vectordb_bench-0.0.11/vectordb_bench/cli/vectordbbench.py +20 -0
  27. vectordb_bench-0.0.11/vectordb_bench/config-files/sample_config.yml +17 -0
  28. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/components/check_results/data.py +11 -8
  29. vectordb_bench-0.0.11/vectordb_bench/frontend/components/concurrent/charts.py +82 -0
  30. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/components/run_test/dbSelector.py +7 -1
  31. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/components/run_test/submitTask.py +12 -4
  32. vectordb_bench-0.0.11/vectordb_bench/frontend/components/tables/data.py +44 -0
  33. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/const/dbCaseConfigs.py +2 -1
  34. vectordb_bench-0.0.11/vectordb_bench/frontend/pages/concurrent.py +72 -0
  35. vectordb_bench-0.0.11/vectordb_bench/frontend/pages/tables.py +24 -0
  36. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/interface.py +21 -25
  37. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/metric.py +23 -1
  38. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/models.py +45 -5
  39. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench.egg-info/PKG-INFO +193 -2
  40. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench.egg-info/SOURCES.txt +16 -0
  41. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench.egg-info/entry_points.txt +1 -0
  42. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench.egg-info/requires.txt +6 -1
  43. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/.devcontainer/Dockerfile +0 -0
  44. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/.devcontainer/devcontainer.json +0 -0
  45. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/.github/workflows/publish_package_on_release.yml +0 -0
  46. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/.github/workflows/pull_request.yml +0 -0
  47. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/.gitignore +0 -0
  48. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/.ruff.toml +0 -0
  49. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/Dockerfile +0 -0
  50. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/LICENSE +0 -0
  51. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/Makefile +0 -0
  52. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/OWNERS +0 -0
  53. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/install/requirements_py3.11.txt +0 -0
  54. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/install.py +0 -0
  55. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/setup.cfg +0 -0
  56. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/tests/conftest.py +0 -0
  57. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/tests/pytest.ini +0 -0
  58. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/tests/test_bench_runner.py +0 -0
  59. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/tests/test_chroma.py +0 -0
  60. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/tests/test_data_source.py +0 -0
  61. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/tests/test_dataset.py +0 -0
  62. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/tests/test_elasticsearch_cloud.py +0 -0
  63. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/tests/test_models.py +0 -0
  64. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/tests/test_redis.py +0 -0
  65. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/tests/test_utils.py +0 -0
  66. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/tests/ut_cases.py +0 -0
  67. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/__main__.py +0 -0
  68. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/__init__.py +0 -0
  69. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/assembler.py +0 -0
  70. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/chroma/chroma.py +0 -0
  71. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/chroma/config.py +0 -0
  72. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/elastic_cloud/config.py +0 -0
  73. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/elastic_cloud/elastic_cloud.py +0 -0
  74. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/pgvecto_rs/config.py +0 -0
  75. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/pgvecto_rs/pgvecto_rs.py +0 -0
  76. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/pinecone/config.py +0 -0
  77. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/pinecone/pinecone.py +0 -0
  78. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/qdrant_cloud/config.py +0 -0
  79. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/qdrant_cloud/qdrant_cloud.py +0 -0
  80. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/redis/config.py +0 -0
  81. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/redis/redis.py +0 -0
  82. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/weaviate_cloud/config.py +0 -0
  83. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/weaviate_cloud/weaviate_cloud.py +0 -0
  84. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/zilliz_cloud/config.py +0 -0
  85. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/clients/zilliz_cloud/zilliz_cloud.py +0 -0
  86. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/data_source.py +0 -0
  87. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/dataset.py +0 -0
  88. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/result_collector.py +0 -0
  89. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/runner/__init__.py +0 -0
  90. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/backend/utils.py +0 -0
  91. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/base.py +0 -0
  92. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/components/check_results/charts.py +0 -0
  93. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/components/check_results/expanderStyle.py +0 -0
  94. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/components/check_results/filters.py +0 -0
  95. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/components/check_results/footer.py +0 -0
  96. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/components/check_results/headerIcon.py +0 -0
  97. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/components/check_results/nav.py +0 -0
  98. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/components/check_results/priceTable.py +0 -0
  99. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/components/check_results/stPageConfig.py +0 -0
  100. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/components/get_results/saveAsImage.py +0 -0
  101. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/components/run_test/autoRefresh.py +0 -0
  102. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/components/run_test/caseSelector.py +0 -0
  103. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/components/run_test/dbConfigSetting.py +0 -0
  104. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/components/run_test/generateTasks.py +0 -0
  105. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/components/run_test/hideSidebar.py +0 -0
  106. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/const/dbPrices.py +0 -0
  107. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/const/styles.py +0 -0
  108. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/pages/quries_per_dollar.py +0 -0
  109. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/pages/run_test.py +0 -0
  110. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/utils.py +0 -0
  111. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/frontend/vdb_benchmark.py +0 -0
  112. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/log_util.py +0 -0
  113. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/results/ElasticCloud/result_20230727_standard_elasticcloud.json +0 -0
  114. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/results/ElasticCloud/result_20230808_standard_elasticcloud.json +0 -0
  115. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/results/Milvus/result_20230727_standard_milvus.json +0 -0
  116. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/results/Milvus/result_20230808_standard_milvus.json +0 -0
  117. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/results/PgVector/result_20230727_standard_pgvector.json +0 -0
  118. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/results/PgVector/result_20230808_standard_pgvector.json +0 -0
  119. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/results/Pinecone/result_20230727_standard_pinecone.json +0 -0
  120. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/results/Pinecone/result_20230808_standard_pinecone.json +0 -0
  121. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/results/QdrantCloud/result_20230727_standard_qdrantcloud.json +0 -0
  122. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/results/QdrantCloud/result_20230808_standard_qdrantcloud.json +0 -0
  123. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/results/WeaviateCloud/result_20230727_standard_weaviatecloud.json +0 -0
  124. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/results/WeaviateCloud/result_20230808_standard_weaviatecloud.json +0 -0
  125. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/results/ZillizCloud/result_20230727_standard_zillizcloud.json +0 -0
  126. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/results/ZillizCloud/result_20230808_standard_zillizcloud.json +0 -0
  127. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/results/ZillizCloud/result_20240105_standard_202401_zillizcloud.json +0 -0
  128. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/results/dbPrices.json +0 -0
  129. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/results/getLeaderboardData.py +0 -0
  130. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench/results/leaderboard.json +0 -0
  131. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench.egg-info/dependency_links.txt +0 -0
  132. {vectordb_bench-0.0.9 → vectordb_bench-0.0.11}/vectordb_bench.egg-info/top_level.txt +0 -0
@@ -6,6 +6,6 @@
6
6
  # NUM_PER_BATCH=
7
7
  # DEFAULT_DATASET_URL=
8
8
 
9
- DATASET_LOCAL_DIR="/tmp/vector_db_bench/dataset"
9
+ DATASET_LOCAL_DIR="/tmp/vectordb_bench/dataset"
10
10
 
11
11
  # DROP_OLD = True
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vectordb-bench
3
- Version: 0.0.9
3
+ Version: 0.0.11
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
@@ -10,6 +10,7 @@ Classifier: Operating System :: OS Independent
10
10
  Requires-Python: >=3.11
11
11
  Description-Content-Type: text/markdown
12
12
  License-File: LICENSE
13
+ Requires-Dist: click
13
14
  Requires-Dist: pytz
14
15
  Requires-Dist: streamlit-autorefresh
15
16
  Requires-Dist: streamlit!=1.34.0
@@ -40,6 +41,7 @@ Requires-Dist: redis; extra == "all"
40
41
  Requires-Dist: chromadb; extra == "all"
41
42
  Requires-Dist: psycopg2; extra == "all"
42
43
  Requires-Dist: psycopg; extra == "all"
44
+ Requires-Dist: psycopg-binary; extra == "all"
43
45
  Provides-Extra: qdrant
44
46
  Requires-Dist: qdrant-client; extra == "qdrant"
45
47
  Provides-Extra: pinecone
@@ -49,14 +51,16 @@ Requires-Dist: weaviate-client; extra == "weaviate"
49
51
  Provides-Extra: elastic
50
52
  Requires-Dist: elasticsearch; extra == "elastic"
51
53
  Provides-Extra: pgvector
52
- Requires-Dist: pgvector; extra == "pgvector"
53
54
  Requires-Dist: psycopg; extra == "pgvector"
55
+ Requires-Dist: psycopg-binary; extra == "pgvector"
56
+ Requires-Dist: pgvector; extra == "pgvector"
54
57
  Provides-Extra: pgvecto-rs
55
58
  Requires-Dist: psycopg2; extra == "pgvecto-rs"
56
59
  Provides-Extra: redis
57
60
  Requires-Dist: redis; extra == "redis"
58
61
  Provides-Extra: chromadb
59
62
  Requires-Dist: chromadb; extra == "chromadb"
63
+ Provides-Extra: zilliz-cloud
60
64
 
61
65
  # VectorDBBench: A Benchmark Tool for VectorDB
62
66
 
@@ -105,6 +109,115 @@ All the database client supported
105
109
  ``` shell
106
110
  init_bench
107
111
  ```
112
+
113
+ OR:
114
+
115
+ ### Run from the command line.
116
+
117
+ ``` shell
118
+ vectordbbench [OPTIONS] COMMAND [ARGS]...
119
+ ```
120
+ To list the clients that are runnable via the commandline option, execute: `vectordbbench --help`
121
+ ``` text
122
+ $ vectordbbench --help
123
+ Usage: vectordbbench [OPTIONS] COMMAND [ARGS]...
124
+
125
+ Options:
126
+ --help Show this message and exit.
127
+
128
+ Commands:
129
+ pgvectorhnsw
130
+ pgvectorivfflat
131
+ test
132
+ weaviate
133
+ ```
134
+ To list the options for each command, execute `vectordbbench [command] --help`
135
+
136
+ ```text
137
+ $ vectordbbench pgvectorhnsw --help
138
+ Usage: vectordbbench pgvectorhnsw [OPTIONS]
139
+
140
+ Options:
141
+ --config-file PATH Read configuration from yaml file
142
+ --drop-old / --skip-drop-old Drop old or skip [default: drop-old]
143
+ --load / --skip-load Load or skip [default: load]
144
+ --search-serial / --skip-search-serial
145
+ Search serial or skip [default: search-
146
+ serial]
147
+ --search-concurrent / --skip-search-concurrent
148
+ Search concurrent or skip [default: search-
149
+ concurrent]
150
+ --case-type [CapacityDim128|CapacityDim960|Performance768D100M|Performance768D10M|Performance768D1M|Performance768D10M1P|Performance768D1M1P|Performance768D10M99P|Performance768D1M99P|Performance1536D500K|Performance1536D5M|Performance1536D500K1P|Performance1536D5M1P|Performance1536D500K99P|Performance1536D5M99P|Performance1536D50K]
151
+ Case type
152
+ --db-label TEXT Db label, default: date in ISO format
153
+ [default: 2024-05-20T20:26:31.113290]
154
+ --dry-run Print just the configuration and exit
155
+ without running the tasks
156
+ --k INTEGER K value for number of nearest neighbors to
157
+ search [default: 100]
158
+ --concurrency-duration INTEGER Adjusts the duration in seconds of each
159
+ concurrency search [default: 30]
160
+ --num-concurrency TEXT Comma-separated list of concurrency values
161
+ to test during concurrent search [default:
162
+ 1,10,20]
163
+ --user-name TEXT Db username [required]
164
+ --password TEXT Db password [required]
165
+ --host TEXT Db host [required]
166
+ --db-name TEXT Db name [required]
167
+ --maintenance-work-mem TEXT Sets the maximum memory to be used for
168
+ maintenance operations (index creation). Can
169
+ be entered as string with unit like '64GB'
170
+ or as an integer number of KB.This will set
171
+ the parameters:
172
+ max_parallel_maintenance_workers,
173
+ max_parallel_workers &
174
+ table(parallel_workers)
175
+ --max-parallel-workers INTEGER Sets the maximum number of parallel
176
+ processes per maintenance operation (index
177
+ creation)
178
+ --m INTEGER hnsw m
179
+ --ef-construction INTEGER hnsw ef-construction
180
+ --ef-search INTEGER hnsw ef-search
181
+ --help Show this message and exit.
182
+ ```
183
+ #### Using a configuration file.
184
+
185
+ The vectordbbench command can optionally read some or all the options from a yaml formatted configuration file.
186
+
187
+ By default, configuration files are expected to be in vectordb_bench/config-files/, this can be overridden by setting
188
+ the environment variable CONFIG_LOCAL_DIR or by passing the full path to the file.
189
+
190
+ The required format is:
191
+ ```yaml
192
+ commandname:
193
+ parameter_name: parameter_value
194
+ parameter_name: parameter_value
195
+ ```
196
+ Example:
197
+ ```yaml
198
+ pgvectorhnsw:
199
+ db_label: pgConfigTest
200
+ user_name: vectordbbench
201
+ password: vectordbbench
202
+ db_name: vectordbbench
203
+ host: localhost
204
+ m: 16
205
+ ef_construction: 128
206
+ ef_search: 128
207
+ milvushnsw:
208
+ skip_search_serial: True
209
+ case_type: Performance1536D50K
210
+ uri: http://localhost:19530
211
+ m: 16
212
+ ef_construction: 128
213
+ ef_search: 128
214
+ drop_old: False
215
+ load: False
216
+ ```
217
+ > Notes:
218
+ > - Options passed on the command line will override the configuration file*
219
+ > - Parameter names use an _ not -
220
+
108
221
  ## What is VectorDBBench
109
222
  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.
110
223
 
@@ -280,6 +393,7 @@ class NewDBCaseConfig(DBCaseConfig):
280
393
  # Implement optional case-specific configuration fields
281
394
  # ...
282
395
  ```
396
+
283
397
  **Step 3: Importing the DB Client and Updating Initialization**
284
398
 
285
399
  In this final step, you will import your DB client into clients/__init__.py and update the initialization process.
@@ -318,6 +432,83 @@ class DB(Enum):
318
432
  return NewClientCaseConfig
319
433
 
320
434
  ```
435
+ **Step 4: Implement new_client/cli.py and vectordb_bench/cli/vectordbbench.py**
436
+
437
+ In this (optional, but encouraged) step you will enable the test to be run from the command line.
438
+ 1. Navigate to the vectordb_bench/backend/clients/"client" directory.
439
+ 2. Inside the "client" folder, create a cli.py file.
440
+ Using zilliz as an example cli.py:
441
+ ```python
442
+ from typing import Annotated, Unpack
443
+
444
+ import click
445
+ import os
446
+ from pydantic import SecretStr
447
+
448
+ from vectordb_bench.cli.cli import (
449
+ CommonTypedDict,
450
+ cli,
451
+ click_parameter_decorators_from_typed_dict,
452
+ run,
453
+ )
454
+ from vectordb_bench.backend.clients import DB
455
+
456
+
457
+ class ZillizTypedDict(CommonTypedDict):
458
+ uri: Annotated[
459
+ str, click.option("--uri", type=str, help="uri connection string", required=True)
460
+ ]
461
+ user_name: Annotated[
462
+ str, click.option("--user-name", type=str, help="Db username", required=True)
463
+ ]
464
+ password: Annotated[
465
+ str,
466
+ click.option("--password",
467
+ type=str,
468
+ help="Zilliz password",
469
+ default=lambda: os.environ.get("ZILLIZ_PASSWORD", ""),
470
+ show_default="$ZILLIZ_PASSWORD",
471
+ ),
472
+ ]
473
+ level: Annotated[
474
+ str,
475
+ click.option("--level", type=str, help="Zilliz index level", required=False),
476
+ ]
477
+
478
+
479
+ @cli.command()
480
+ @click_parameter_decorators_from_typed_dict(ZillizTypedDict)
481
+ def ZillizAutoIndex(**parameters: Unpack[ZillizTypedDict]):
482
+ from .config import ZillizCloudConfig, AutoIndexConfig
483
+
484
+ run(
485
+ db=DB.ZillizCloud,
486
+ db_config=ZillizCloudConfig(
487
+ db_label=parameters["db_label"],
488
+ uri=SecretStr(parameters["uri"]),
489
+ user=parameters["user_name"],
490
+ password=SecretStr(parameters["password"]),
491
+ ),
492
+ db_case_config=AutoIndexConfig(
493
+ params={parameters["level"]},
494
+ ),
495
+ **parameters,
496
+ )
497
+ ```
498
+ 3. Update cli by adding:
499
+ 1. Add database specific options as an Annotated TypedDict, see ZillizTypedDict above.
500
+ 2. Add index configuration specific options as an Annotated TypedDict. (example: vectordb_bench/backend/clients/pgvector/cli.py)
501
+ 1. May not be needed if there is only one index config.
502
+ 2. Repeat for each index configuration, nesting them if possible.
503
+ 2. Add a index config specific function for each index type, see Zilliz above. The function name, in lowercase, will be the command name passed to the vectordbbench command.
504
+ 3. Update db_config and db_case_config to match client requirements
505
+ 4. Continue to add new functions for each index config.
506
+ 5. Import the client cli module and command to vectordb_bench/cli/vectordbbench.py (for databases with multiple commands (index configs), this only needs to be done for one command)
507
+
508
+ > cli modules with multiple index configs:
509
+ > - pgvector: vectordb_bench/backend/clients/pgvector/cli.py
510
+ > - milvus: vectordb_bench/backend/clients/milvus/cli.py
511
+
321
512
  That's it! You have successfully added a new DB client to the vectordb_bench project.
322
513
 
323
514
  ## Rules
@@ -45,6 +45,115 @@ All the database client supported
45
45
  ``` shell
46
46
  init_bench
47
47
  ```
48
+
49
+ OR:
50
+
51
+ ### Run from the command line.
52
+
53
+ ``` shell
54
+ vectordbbench [OPTIONS] COMMAND [ARGS]...
55
+ ```
56
+ To list the clients that are runnable via the commandline option, execute: `vectordbbench --help`
57
+ ``` text
58
+ $ vectordbbench --help
59
+ Usage: vectordbbench [OPTIONS] COMMAND [ARGS]...
60
+
61
+ Options:
62
+ --help Show this message and exit.
63
+
64
+ Commands:
65
+ pgvectorhnsw
66
+ pgvectorivfflat
67
+ test
68
+ weaviate
69
+ ```
70
+ To list the options for each command, execute `vectordbbench [command] --help`
71
+
72
+ ```text
73
+ $ vectordbbench pgvectorhnsw --help
74
+ Usage: vectordbbench pgvectorhnsw [OPTIONS]
75
+
76
+ Options:
77
+ --config-file PATH Read configuration from yaml file
78
+ --drop-old / --skip-drop-old Drop old or skip [default: drop-old]
79
+ --load / --skip-load Load or skip [default: load]
80
+ --search-serial / --skip-search-serial
81
+ Search serial or skip [default: search-
82
+ serial]
83
+ --search-concurrent / --skip-search-concurrent
84
+ Search concurrent or skip [default: search-
85
+ concurrent]
86
+ --case-type [CapacityDim128|CapacityDim960|Performance768D100M|Performance768D10M|Performance768D1M|Performance768D10M1P|Performance768D1M1P|Performance768D10M99P|Performance768D1M99P|Performance1536D500K|Performance1536D5M|Performance1536D500K1P|Performance1536D5M1P|Performance1536D500K99P|Performance1536D5M99P|Performance1536D50K]
87
+ Case type
88
+ --db-label TEXT Db label, default: date in ISO format
89
+ [default: 2024-05-20T20:26:31.113290]
90
+ --dry-run Print just the configuration and exit
91
+ without running the tasks
92
+ --k INTEGER K value for number of nearest neighbors to
93
+ search [default: 100]
94
+ --concurrency-duration INTEGER Adjusts the duration in seconds of each
95
+ concurrency search [default: 30]
96
+ --num-concurrency TEXT Comma-separated list of concurrency values
97
+ to test during concurrent search [default:
98
+ 1,10,20]
99
+ --user-name TEXT Db username [required]
100
+ --password TEXT Db password [required]
101
+ --host TEXT Db host [required]
102
+ --db-name TEXT Db name [required]
103
+ --maintenance-work-mem TEXT Sets the maximum memory to be used for
104
+ maintenance operations (index creation). Can
105
+ be entered as string with unit like '64GB'
106
+ or as an integer number of KB.This will set
107
+ the parameters:
108
+ max_parallel_maintenance_workers,
109
+ max_parallel_workers &
110
+ table(parallel_workers)
111
+ --max-parallel-workers INTEGER Sets the maximum number of parallel
112
+ processes per maintenance operation (index
113
+ creation)
114
+ --m INTEGER hnsw m
115
+ --ef-construction INTEGER hnsw ef-construction
116
+ --ef-search INTEGER hnsw ef-search
117
+ --help Show this message and exit.
118
+ ```
119
+ #### Using a configuration file.
120
+
121
+ The vectordbbench command can optionally read some or all the options from a yaml formatted configuration file.
122
+
123
+ By default, configuration files are expected to be in vectordb_bench/config-files/, this can be overridden by setting
124
+ the environment variable CONFIG_LOCAL_DIR or by passing the full path to the file.
125
+
126
+ The required format is:
127
+ ```yaml
128
+ commandname:
129
+ parameter_name: parameter_value
130
+ parameter_name: parameter_value
131
+ ```
132
+ Example:
133
+ ```yaml
134
+ pgvectorhnsw:
135
+ db_label: pgConfigTest
136
+ user_name: vectordbbench
137
+ password: vectordbbench
138
+ db_name: vectordbbench
139
+ host: localhost
140
+ m: 16
141
+ ef_construction: 128
142
+ ef_search: 128
143
+ milvushnsw:
144
+ skip_search_serial: True
145
+ case_type: Performance1536D50K
146
+ uri: http://localhost:19530
147
+ m: 16
148
+ ef_construction: 128
149
+ ef_search: 128
150
+ drop_old: False
151
+ load: False
152
+ ```
153
+ > Notes:
154
+ > - Options passed on the command line will override the configuration file*
155
+ > - Parameter names use an _ not -
156
+
48
157
  ## What is VectorDBBench
49
158
  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.
50
159
 
@@ -220,6 +329,7 @@ class NewDBCaseConfig(DBCaseConfig):
220
329
  # Implement optional case-specific configuration fields
221
330
  # ...
222
331
  ```
332
+
223
333
  **Step 3: Importing the DB Client and Updating Initialization**
224
334
 
225
335
  In this final step, you will import your DB client into clients/__init__.py and update the initialization process.
@@ -258,6 +368,83 @@ class DB(Enum):
258
368
  return NewClientCaseConfig
259
369
 
260
370
  ```
371
+ **Step 4: Implement new_client/cli.py and vectordb_bench/cli/vectordbbench.py**
372
+
373
+ In this (optional, but encouraged) step you will enable the test to be run from the command line.
374
+ 1. Navigate to the vectordb_bench/backend/clients/"client" directory.
375
+ 2. Inside the "client" folder, create a cli.py file.
376
+ Using zilliz as an example cli.py:
377
+ ```python
378
+ from typing import Annotated, Unpack
379
+
380
+ import click
381
+ import os
382
+ from pydantic import SecretStr
383
+
384
+ from vectordb_bench.cli.cli import (
385
+ CommonTypedDict,
386
+ cli,
387
+ click_parameter_decorators_from_typed_dict,
388
+ run,
389
+ )
390
+ from vectordb_bench.backend.clients import DB
391
+
392
+
393
+ class ZillizTypedDict(CommonTypedDict):
394
+ uri: Annotated[
395
+ str, click.option("--uri", type=str, help="uri connection string", required=True)
396
+ ]
397
+ user_name: Annotated[
398
+ str, click.option("--user-name", type=str, help="Db username", required=True)
399
+ ]
400
+ password: Annotated[
401
+ str,
402
+ click.option("--password",
403
+ type=str,
404
+ help="Zilliz password",
405
+ default=lambda: os.environ.get("ZILLIZ_PASSWORD", ""),
406
+ show_default="$ZILLIZ_PASSWORD",
407
+ ),
408
+ ]
409
+ level: Annotated[
410
+ str,
411
+ click.option("--level", type=str, help="Zilliz index level", required=False),
412
+ ]
413
+
414
+
415
+ @cli.command()
416
+ @click_parameter_decorators_from_typed_dict(ZillizTypedDict)
417
+ def ZillizAutoIndex(**parameters: Unpack[ZillizTypedDict]):
418
+ from .config import ZillizCloudConfig, AutoIndexConfig
419
+
420
+ run(
421
+ db=DB.ZillizCloud,
422
+ db_config=ZillizCloudConfig(
423
+ db_label=parameters["db_label"],
424
+ uri=SecretStr(parameters["uri"]),
425
+ user=parameters["user_name"],
426
+ password=SecretStr(parameters["password"]),
427
+ ),
428
+ db_case_config=AutoIndexConfig(
429
+ params={parameters["level"]},
430
+ ),
431
+ **parameters,
432
+ )
433
+ ```
434
+ 3. Update cli by adding:
435
+ 1. Add database specific options as an Annotated TypedDict, see ZillizTypedDict above.
436
+ 2. Add index configuration specific options as an Annotated TypedDict. (example: vectordb_bench/backend/clients/pgvector/cli.py)
437
+ 1. May not be needed if there is only one index config.
438
+ 2. Repeat for each index configuration, nesting them if possible.
439
+ 2. Add a index config specific function for each index type, see Zilliz above. The function name, in lowercase, will be the command name passed to the vectordbbench command.
440
+ 3. Update db_config and db_case_config to match client requirements
441
+ 4. Continue to add new functions for each index config.
442
+ 5. Import the client cli module and command to vectordb_bench/cli/vectordbbench.py (for databases with multiple commands (index configs), this only needs to be done for one command)
443
+
444
+ > cli modules with multiple index configs:
445
+ > - pgvector: vectordb_bench/backend/clients/pgvector/cli.py
446
+ > - milvus: vectordb_bench/backend/clients/milvus/cli.py
447
+
261
448
  That's it! You have successfully added a new DB client to the vectordb_bench project.
262
449
 
263
450
  ## Rules
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
7
7
 
8
8
  [tool.setuptools.packages.find]
9
9
  where = ["."]
10
- include = ["vectordb_bench"]
10
+ include = ["vectordb_bench", "vectordb_bench.cli"]
11
11
 
12
12
  [project]
13
13
  name = "vectordb-bench"
@@ -24,6 +24,7 @@ classifiers = [
24
24
  "Operating System :: OS Independent",
25
25
  ]
26
26
  dependencies = [
27
+ "click",
27
28
  "pytz",
28
29
  "streamlit-autorefresh",
29
30
  "streamlit!=1.34.0",
@@ -60,21 +61,23 @@ all = [
60
61
  "chromadb",
61
62
  "psycopg2",
62
63
  "psycopg",
64
+ "psycopg-binary",
63
65
  ]
64
66
 
65
67
  qdrant = [ "qdrant-client" ]
66
68
  pinecone = [ "pinecone-client" ]
67
69
  weaviate = [ "weaviate-client" ]
68
70
  elastic = [ "elasticsearch" ]
69
- pgvector = [ "pgvector", "psycopg" ]
71
+ pgvector = [ "psycopg", "psycopg-binary", "pgvector" ]
70
72
  pgvecto_rs = [ "psycopg2" ]
71
73
  redis = [ "redis" ]
72
74
  chromadb = [ "chromadb" ]
75
+ zilliz_cloud = []
73
76
 
74
77
  [project.urls]
75
78
  "repository" = "https://github.com/zilliztech/VectorDBBench"
76
79
 
77
80
  [project.scripts]
78
81
  init_bench = "vectordb_bench.__main__:main"
79
-
82
+ vectordbbench = "vectordb_bench.cli.vectordbbench:cli"
80
83
  [tool.setuptools_scm]
@@ -1,11 +1,13 @@
1
- import environs
2
1
  import inspect
3
2
  import pathlib
4
- from . import log_util
5
3
 
4
+ import environs
5
+
6
+ from . import log_util
6
7
 
7
8
  env = environs.Env()
8
- env.read_env(".env")
9
+ env.read_env(".env", False)
10
+
9
11
 
10
12
  class config:
11
13
  ALIYUN_OSS_URL = "assets.zilliz.com.cn/benchmark/"
@@ -19,9 +21,20 @@ class config:
19
21
 
20
22
  DROP_OLD = env.bool("DROP_OLD", True)
21
23
  USE_SHUFFLED_DATA = env.bool("USE_SHUFFLED_DATA", True)
22
- NUM_CONCURRENCY = [1, 5, 10, 15, 20, 25, 30, 35]
23
24
 
24
- RESULTS_LOCAL_DIR = pathlib.Path(__file__).parent.joinpath("results")
25
+ NUM_CONCURRENCY = env.list("NUM_CONCURRENCY", [1, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100], subcast=int )
26
+
27
+ CONCURRENCY_DURATION = 30
28
+
29
+ RESULTS_LOCAL_DIR = env.path(
30
+ "RESULTS_LOCAL_DIR", pathlib.Path(__file__).parent.joinpath("results")
31
+ )
32
+ CONFIG_LOCAL_DIR = env.path(
33
+ "CONFIG_LOCAL_DIR", pathlib.Path(__file__).parent.joinpath("config-files")
34
+ )
35
+
36
+
37
+ K_DEFAULT = 100 # default return top k nearest neighbors during search
25
38
 
26
39
  CAPACITY_TIMEOUT_IN_SECONDS = 24 * 3600 # 24h
27
40
  LOAD_TIMEOUT_DEFAULT = 2.5 * 3600 # 2.5h
@@ -32,10 +45,10 @@ class config:
32
45
  LOAD_TIMEOUT_1536D_500K = 2.5 * 3600 # 2.5h
33
46
  LOAD_TIMEOUT_1536D_5M = 25 * 3600 # 25h
34
47
 
35
- OPTIMIZE_TIMEOUT_DEFAULT = 15 * 60 # 15min
36
- OPTIMIZE_TIMEOUT_768D_1M = 15 * 60 # 15min
37
- OPTIMIZE_TIMEOUT_768D_10M = 2.5 * 3600 # 2.5h
38
- OPTIMIZE_TIMEOUT_768D_100M = 25 * 3600 # 1.04d
48
+ OPTIMIZE_TIMEOUT_DEFAULT = 30 * 60 # 30min
49
+ OPTIMIZE_TIMEOUT_768D_1M = 30 * 60 # 30min
50
+ OPTIMIZE_TIMEOUT_768D_10M = 5 * 3600 # 5h
51
+ OPTIMIZE_TIMEOUT_768D_100M = 50 * 3600 # 50h
39
52
 
40
53
 
41
54
  OPTIMIZE_TIMEOUT_1536D_500K = 15 * 60 # 15min
@@ -1,6 +1,7 @@
1
1
  import typing
2
2
  import logging
3
3
  from enum import Enum, auto
4
+ from typing import Type
4
5
 
5
6
  from vectordb_bench import config
6
7
  from vectordb_bench.base import BaseModel
@@ -10,8 +11,6 @@ from .dataset import Dataset, DatasetManager
10
11
 
11
12
  log = logging.getLogger(__name__)
12
13
 
13
- Case = typing.TypeVar("Case")
14
-
15
14
 
16
15
  class CaseType(Enum):
17
16
  """
@@ -42,11 +41,15 @@ class CaseType(Enum):
42
41
  Performance1536D500K99P = 14
43
42
  Performance1536D5M99P = 15
44
43
 
44
+ Performance1536D50K = 50
45
+
45
46
  Custom = 100
46
47
 
47
48
  @property
48
- def case_cls(self, custom_configs: dict | None = None) -> Case:
49
- return type2case.get(self)
49
+ def case_cls(self, custom_configs: dict | None = None) -> Type["Case"]:
50
+ if self not in type2case:
51
+ raise NotImplementedError(f"Case {self} has not implemented. You can add it manually to vectordb_bench.backend.cases.type2case or define a custom_configs['custom_cls']")
52
+ return type2case[self]
50
53
 
51
54
  @property
52
55
  def case_name(self) -> str:
@@ -69,7 +72,7 @@ class CaseLabel(Enum):
69
72
 
70
73
 
71
74
  class Case(BaseModel):
72
- """Undifined case
75
+ """Undefined case
73
76
 
74
77
  Fields:
75
78
  case_id(CaseType): default 9 case type plus one custom cases.
@@ -86,9 +89,9 @@ class Case(BaseModel):
86
89
  dataset: DatasetManager
87
90
 
88
91
  load_timeout: float | int
89
- optimize_timeout: float | int | None
92
+ optimize_timeout: float | int | None = None
90
93
 
91
- filter_rate: float | None
94
+ filter_rate: float | None = None
92
95
 
93
96
  @property
94
97
  def filters(self) -> dict | None:
@@ -115,20 +118,23 @@ class PerformanceCase(Case, BaseModel):
115
118
  load_timeout: float | int = config.LOAD_TIMEOUT_DEFAULT
116
119
  optimize_timeout: float | int | None = config.OPTIMIZE_TIMEOUT_DEFAULT
117
120
 
121
+
118
122
  class CapacityDim960(CapacityCase):
119
123
  case_id: CaseType = CaseType.CapacityDim960
120
124
  dataset: DatasetManager = Dataset.GIST.manager(100_000)
121
125
  name: str = "Capacity Test (960 Dim Repeated)"
122
- description: str = """This case tests the vector database's loading capacity by repeatedly inserting large-dimension vectors (GIST 100K vectors, <b>960 dimensions</b>) until it is fully loaded.
123
- Number of inserted vectors will be reported."""
126
+ description: str = """This case tests the vector database's loading capacity by repeatedly inserting large-dimension
127
+ vectors (GIST 100K vectors, <b>960 dimensions</b>) until it is fully loaded. Number of inserted vectors will be
128
+ reported."""
124
129
 
125
130
 
126
131
  class CapacityDim128(CapacityCase):
127
132
  case_id: CaseType = CaseType.CapacityDim128
128
133
  dataset: DatasetManager = Dataset.SIFT.manager(500_000)
129
134
  name: str = "Capacity Test (128 Dim Repeated)"
130
- description: str = """This case tests the vector database's loading capacity by repeatedly inserting small-dimension vectors (SIFT 100K vectors, <b>128 dimensions</b>) until it is fully loaded.
131
- Number of inserted vectors will be reported."""
135
+ description: str = """This case tests the vector database's loading capacity by repeatedly inserting small-dimension
136
+ vectors (SIFT 100K vectors, <b>128 dimensions</b>) until it is fully loaded. Number of inserted vectors will be
137
+ reported."""
132
138
 
133
139
 
134
140
  class Performance768D10M(PerformanceCase):
@@ -238,6 +244,7 @@ Results will show index building time, recall, and maximum QPS."""
238
244
  load_timeout: float | int = config.LOAD_TIMEOUT_1536D_500K
239
245
  optimize_timeout: float | int | None = config.OPTIMIZE_TIMEOUT_1536D_500K
240
246
 
247
+
241
248
  class Performance1536D5M1P(PerformanceCase):
242
249
  case_id: CaseType = CaseType.Performance1536D5M1P
243
250
  filter_rate: float | int | None = 0.01
@@ -248,6 +255,7 @@ Results will show index building time, recall, and maximum QPS."""
248
255
  load_timeout: float | int = config.LOAD_TIMEOUT_1536D_5M
249
256
  optimize_timeout: float | int | None = config.OPTIMIZE_TIMEOUT_1536D_5M
250
257
 
258
+
251
259
  class Performance1536D500K99P(PerformanceCase):
252
260
  case_id: CaseType = CaseType.Performance1536D500K99P
253
261
  filter_rate: float | int | None = 0.99
@@ -258,6 +266,7 @@ Results will show index building time, recall, and maximum QPS."""
258
266
  load_timeout: float | int = config.LOAD_TIMEOUT_1536D_500K
259
267
  optimize_timeout: float | int | None = config.OPTIMIZE_TIMEOUT_1536D_500K
260
268
 
269
+
261
270
  class Performance1536D5M99P(PerformanceCase):
262
271
  case_id: CaseType = CaseType.Performance1536D5M99P
263
272
  filter_rate: float | int | None = 0.99
@@ -269,6 +278,17 @@ Results will show index building time, recall, and maximum QPS."""
269
278
  optimize_timeout: float | int | None = config.OPTIMIZE_TIMEOUT_1536D_5M
270
279
 
271
280
 
281
+ class Performance1536D50K(PerformanceCase):
282
+ case_id: CaseType = CaseType.Performance1536D50K
283
+ filter_rate: float | int | None = None
284
+ dataset: DatasetManager = Dataset.OPENAI.manager(50_000)
285
+ name: str = "Search Performance Test (50K Dataset, 1536 Dim)"
286
+ description: str = """This case tests the search performance of a vector database with a medium 50K dataset (<b>OpenAI 50K vectors</b>, 1536 dimensions), at varying parallel levels.
287
+ Results will show index building time, recall, and maximum QPS."""
288
+ load_timeout: float | int = 3600
289
+ optimize_timeout: float | int | None = 15 * 60
290
+
291
+
272
292
  type2case = {
273
293
  CaseType.CapacityDim960: CapacityDim960,
274
294
  CaseType.CapacityDim128: CapacityDim128,
@@ -290,5 +310,5 @@ type2case = {
290
310
 
291
311
  CaseType.Performance1536D500K99P: Performance1536D500K99P,
292
312
  CaseType.Performance1536D5M99P: Performance1536D5M99P,
293
-
313
+ CaseType.Performance1536D50K: Performance1536D50K,
294
314
  }