vectordb-bench 0.0.14__tar.gz → 0.0.16__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.
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/PKG-INFO +7 -2
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/README.md +2 -1
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/pyproject.toml +1 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/__init__.py +14 -13
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/__init__.py +13 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/api.py +2 -0
- vectordb_bench-0.0.16/vectordb_bench/backend/clients/pgdiskann/cli.py +99 -0
- vectordb_bench-0.0.16/vectordb_bench/backend/clients/pgdiskann/config.py +145 -0
- vectordb_bench-0.0.16/vectordb_bench/backend/clients/pgdiskann/pgdiskann.py +350 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/pgvector/cli.py +51 -1
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/pgvector/config.py +34 -5
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/pgvector/pgvector.py +113 -64
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/weaviate_cloud/weaviate_cloud.py +1 -1
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/cli/cli.py +2 -2
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/cli/vectordbbench.py +2 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/run_test/caseSelector.py +6 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/config/dbCaseConfigs.py +109 -2
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/models.py +6 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/results/getLeaderboardData.py +3 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/results/leaderboard.json +1 -1
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench.egg-info/PKG-INFO +7 -2
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench.egg-info/SOURCES.txt +3 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench.egg-info/requires.txt +5 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/.devcontainer/Dockerfile +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/.devcontainer/devcontainer.json +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/.env.example +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/.github/workflows/publish_package_on_release.yml +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/.github/workflows/pull_request.yml +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/.gitignore +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/.ruff.toml +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/Dockerfile +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/LICENSE +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/Makefile +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/OWNERS +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/fig/custom_case_run_test.png +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/fig/custom_dataset.png +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/install/requirements_py3.11.txt +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/install.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/setup.cfg +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/tests/conftest.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/tests/pytest.ini +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/tests/test_bench_runner.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/tests/test_chroma.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/tests/test_data_source.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/tests/test_dataset.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/tests/test_elasticsearch_cloud.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/tests/test_models.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/tests/test_redis.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/tests/test_utils.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/tests/ut_cases.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/__main__.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/__init__.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/assembler.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/cases.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/aws_opensearch/aws_opensearch.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/aws_opensearch/cli.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/aws_opensearch/config.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/aws_opensearch/run.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/chroma/chroma.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/chroma/config.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/elastic_cloud/config.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/elastic_cloud/elastic_cloud.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/memorydb/cli.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/memorydb/config.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/memorydb/memorydb.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/milvus/cli.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/milvus/config.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/milvus/milvus.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/pgvecto_rs/cli.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/pgvecto_rs/config.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/pgvecto_rs/pgvecto_rs.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/pgvectorscale/cli.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/pgvectorscale/config.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/pgvectorscale/pgvectorscale.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/pinecone/config.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/pinecone/pinecone.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/qdrant_cloud/config.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/qdrant_cloud/qdrant_cloud.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/redis/cli.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/redis/config.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/redis/redis.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/test/cli.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/test/config.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/test/test.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/weaviate_cloud/cli.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/weaviate_cloud/config.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/zilliz_cloud/cli.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/zilliz_cloud/config.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/clients/zilliz_cloud/zilliz_cloud.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/data_source.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/dataset.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/result_collector.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/runner/__init__.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/runner/mp_runner.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/runner/serial_runner.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/task_runner.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/backend/utils.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/base.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/cli/__init__.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/config-files/sample_config.yml +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/custom/custom_case.json +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/check_results/charts.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/check_results/data.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/check_results/expanderStyle.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/check_results/filters.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/check_results/footer.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/check_results/headerIcon.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/check_results/nav.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/check_results/priceTable.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/check_results/stPageConfig.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/concurrent/charts.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/custom/displayCustomCase.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/custom/displaypPrams.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/custom/getCustomConfig.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/custom/initStyle.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/get_results/saveAsImage.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/run_test/autoRefresh.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/run_test/dbConfigSetting.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/run_test/dbSelector.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/run_test/generateTasks.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/run_test/hideSidebar.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/run_test/initStyle.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/run_test/submitTask.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/components/tables/data.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/config/dbPrices.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/config/styles.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/pages/concurrent.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/pages/custom.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/pages/quries_per_dollar.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/pages/run_test.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/pages/tables.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/utils.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/frontend/vdb_benchmark.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/interface.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/log_util.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/metric.py +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/results/ElasticCloud/result_20230727_standard_elasticcloud.json +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/results/ElasticCloud/result_20230808_standard_elasticcloud.json +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/results/Milvus/result_20230727_standard_milvus.json +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/results/Milvus/result_20230808_standard_milvus.json +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/results/PgVector/result_20230727_standard_pgvector.json +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/results/PgVector/result_20230808_standard_pgvector.json +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/results/Pinecone/result_20230727_standard_pinecone.json +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/results/Pinecone/result_20230808_standard_pinecone.json +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/results/QdrantCloud/result_20230727_standard_qdrantcloud.json +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/results/QdrantCloud/result_20230808_standard_qdrantcloud.json +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/results/WeaviateCloud/result_20230727_standard_weaviatecloud.json +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/results/WeaviateCloud/result_20230808_standard_weaviatecloud.json +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/results/ZillizCloud/result_20230727_standard_zillizcloud.json +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/results/ZillizCloud/result_20230808_standard_zillizcloud.json +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/results/ZillizCloud/result_20240105_standard_202401_zillizcloud.json +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench/results/dbPrices.json +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench.egg-info/dependency_links.txt +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench.egg-info/entry_points.txt +0 -0
- {vectordb_bench-0.0.14 → vectordb_bench-0.0.16}/vectordb_bench.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: vectordb-bench
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.16
|
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
|
@@ -60,6 +60,10 @@ Provides-Extra: pgvectorscale
|
|
60
60
|
Requires-Dist: psycopg; extra == "pgvectorscale"
|
61
61
|
Requires-Dist: psycopg-binary; extra == "pgvectorscale"
|
62
62
|
Requires-Dist: pgvector; extra == "pgvectorscale"
|
63
|
+
Provides-Extra: pgdiskann
|
64
|
+
Requires-Dist: psycopg; extra == "pgdiskann"
|
65
|
+
Requires-Dist: psycopg-binary; extra == "pgdiskann"
|
66
|
+
Requires-Dist: pgvector; extra == "pgdiskann"
|
63
67
|
Provides-Extra: pgvecto-rs
|
64
68
|
Requires-Dist: pgvecto_rs[psycopg3]>=0.2.2; extra == "pgvecto-rs"
|
65
69
|
Provides-Extra: redis
|
@@ -112,6 +116,7 @@ All the database client supported
|
|
112
116
|
| pgvector | `pip install vectordb-bench[pgvector]` |
|
113
117
|
| pgvecto.rs | `pip install vectordb-bench[pgvecto_rs]` |
|
114
118
|
| pgvectorscale | `pip install vectordb-bench[pgvectorscale]` |
|
119
|
+
| pgdiskann | `pip install vectordb-bench[pgdiskann]` |
|
115
120
|
| redis | `pip install vectordb-bench[redis]` |
|
116
121
|
| memorydb | `pip install vectordb-bench[memorydb]` |
|
117
122
|
| chromadb | `pip install vectordb-bench[chromadb]` |
|
@@ -191,7 +196,7 @@ Options:
|
|
191
196
|
--m INTEGER hnsw m
|
192
197
|
--ef-construction INTEGER hnsw ef-construction
|
193
198
|
--ef-search INTEGER hnsw ef-search
|
194
|
-
--quantization-type [none|halfvec]
|
199
|
+
--quantization-type [none|bit|halfvec]
|
195
200
|
quantization type for vectors
|
196
201
|
--custom-case-name TEXT Custom case name i.e. PerformanceCase1536D50K
|
197
202
|
--custom-case-description TEXT Custom name description
|
@@ -38,6 +38,7 @@ All the database client supported
|
|
38
38
|
| pgvector | `pip install vectordb-bench[pgvector]` |
|
39
39
|
| pgvecto.rs | `pip install vectordb-bench[pgvecto_rs]` |
|
40
40
|
| pgvectorscale | `pip install vectordb-bench[pgvectorscale]` |
|
41
|
+
| pgdiskann | `pip install vectordb-bench[pgdiskann]` |
|
41
42
|
| redis | `pip install vectordb-bench[redis]` |
|
42
43
|
| memorydb | `pip install vectordb-bench[memorydb]` |
|
43
44
|
| chromadb | `pip install vectordb-bench[chromadb]` |
|
@@ -117,7 +118,7 @@ Options:
|
|
117
118
|
--m INTEGER hnsw m
|
118
119
|
--ef-construction INTEGER hnsw ef-construction
|
119
120
|
--ef-search INTEGER hnsw ef-search
|
120
|
-
--quantization-type [none|halfvec]
|
121
|
+
--quantization-type [none|bit|halfvec]
|
121
122
|
quantization type for vectors
|
122
123
|
--custom-case-name TEXT Custom case name i.e. PerformanceCase1536D50K
|
123
124
|
--custom-case-description TEXT Custom name description
|
@@ -72,6 +72,7 @@ weaviate = [ "weaviate-client" ]
|
|
72
72
|
elastic = [ "elasticsearch" ]
|
73
73
|
pgvector = [ "psycopg", "psycopg-binary", "pgvector" ]
|
74
74
|
pgvectorscale = [ "psycopg", "psycopg-binary", "pgvector" ]
|
75
|
+
pgdiskann = [ "psycopg", "psycopg-binary", "pgvector" ]
|
75
76
|
pgvecto_rs = [ "pgvecto_rs[psycopg3]>=0.2.2" ]
|
76
77
|
redis = [ "redis" ]
|
77
78
|
memorydb = [ "memorydb" ]
|
@@ -37,23 +37,24 @@ class config:
|
|
37
37
|
K_DEFAULT = 100 # default return top k nearest neighbors during search
|
38
38
|
CUSTOM_CONFIG_DIR = pathlib.Path(__file__).parent.joinpath("custom/custom_case.json")
|
39
39
|
|
40
|
-
CAPACITY_TIMEOUT_IN_SECONDS = 24 * 3600
|
41
|
-
LOAD_TIMEOUT_DEFAULT =
|
42
|
-
LOAD_TIMEOUT_768D_1M =
|
43
|
-
LOAD_TIMEOUT_768D_10M =
|
44
|
-
LOAD_TIMEOUT_768D_100M =
|
40
|
+
CAPACITY_TIMEOUT_IN_SECONDS = 24 * 3600 # 24h
|
41
|
+
LOAD_TIMEOUT_DEFAULT = 24 * 3600 # 24h
|
42
|
+
LOAD_TIMEOUT_768D_1M = 24 * 3600 # 24h
|
43
|
+
LOAD_TIMEOUT_768D_10M = 240 * 3600 # 10d
|
44
|
+
LOAD_TIMEOUT_768D_100M = 2400 * 3600 # 100d
|
45
45
|
|
46
|
-
LOAD_TIMEOUT_1536D_500K =
|
47
|
-
LOAD_TIMEOUT_1536D_5M =
|
46
|
+
LOAD_TIMEOUT_1536D_500K = 24 * 3600 # 24h
|
47
|
+
LOAD_TIMEOUT_1536D_5M = 240 * 3600 # 10d
|
48
48
|
|
49
|
-
OPTIMIZE_TIMEOUT_DEFAULT =
|
50
|
-
OPTIMIZE_TIMEOUT_768D_1M =
|
51
|
-
OPTIMIZE_TIMEOUT_768D_10M =
|
52
|
-
OPTIMIZE_TIMEOUT_768D_100M =
|
49
|
+
OPTIMIZE_TIMEOUT_DEFAULT = 24 * 3600 # 24h
|
50
|
+
OPTIMIZE_TIMEOUT_768D_1M = 24 * 3600 # 24h
|
51
|
+
OPTIMIZE_TIMEOUT_768D_10M = 240 * 3600 # 10d
|
52
|
+
OPTIMIZE_TIMEOUT_768D_100M = 2400 * 3600 # 100d
|
53
53
|
|
54
54
|
|
55
|
-
OPTIMIZE_TIMEOUT_1536D_500K =
|
56
|
-
OPTIMIZE_TIMEOUT_1536D_5M =
|
55
|
+
OPTIMIZE_TIMEOUT_1536D_500K = 24 * 3600 # 24h
|
56
|
+
OPTIMIZE_TIMEOUT_1536D_5M = 240 * 3600 # 10d
|
57
|
+
|
57
58
|
def display(self) -> str:
|
58
59
|
tmp = [
|
59
60
|
i for i in inspect.getmembers(self)
|
@@ -31,6 +31,7 @@ class DB(Enum):
|
|
31
31
|
PgVector = "PgVector"
|
32
32
|
PgVectoRS = "PgVectoRS"
|
33
33
|
PgVectorScale = "PgVectorScale"
|
34
|
+
PgDiskANN = "PgDiskANN"
|
34
35
|
Redis = "Redis"
|
35
36
|
MemoryDB = "MemoryDB"
|
36
37
|
Chroma = "Chroma"
|
@@ -77,6 +78,10 @@ class DB(Enum):
|
|
77
78
|
from .pgvectorscale.pgvectorscale import PgVectorScale
|
78
79
|
return PgVectorScale
|
79
80
|
|
81
|
+
if self == DB.PgDiskANN:
|
82
|
+
from .pgdiskann.pgdiskann import PgDiskANN
|
83
|
+
return PgDiskANN
|
84
|
+
|
80
85
|
if self == DB.Redis:
|
81
86
|
from .redis.redis import Redis
|
82
87
|
return Redis
|
@@ -132,6 +137,10 @@ class DB(Enum):
|
|
132
137
|
from .pgvectorscale.config import PgVectorScaleConfig
|
133
138
|
return PgVectorScaleConfig
|
134
139
|
|
140
|
+
if self == DB.PgDiskANN:
|
141
|
+
from .pgdiskann.config import PgDiskANNConfig
|
142
|
+
return PgDiskANNConfig
|
143
|
+
|
135
144
|
if self == DB.Redis:
|
136
145
|
from .redis.config import RedisConfig
|
137
146
|
return RedisConfig
|
@@ -185,6 +194,10 @@ class DB(Enum):
|
|
185
194
|
from .pgvectorscale.config import _pgvectorscale_case_config
|
186
195
|
return _pgvectorscale_case_config.get(index_type)
|
187
196
|
|
197
|
+
if self == DB.PgDiskANN:
|
198
|
+
from .pgdiskann.config import _pgdiskann_case_config
|
199
|
+
return _pgdiskann_case_config.get(index_type)
|
200
|
+
|
188
201
|
# DB.Pinecone, DB.Chroma, DB.Redis
|
189
202
|
return EmptyDBCaseConfig
|
190
203
|
|
@@ -0,0 +1,99 @@
|
|
1
|
+
import click
|
2
|
+
import os
|
3
|
+
from pydantic import SecretStr
|
4
|
+
|
5
|
+
from ....cli.cli import (
|
6
|
+
CommonTypedDict,
|
7
|
+
cli,
|
8
|
+
click_parameter_decorators_from_typed_dict,
|
9
|
+
run,
|
10
|
+
)
|
11
|
+
from typing import Annotated, Optional, Unpack
|
12
|
+
from vectordb_bench.backend.clients import DB
|
13
|
+
|
14
|
+
|
15
|
+
class PgDiskAnnTypedDict(CommonTypedDict):
|
16
|
+
user_name: Annotated[
|
17
|
+
str, click.option("--user-name", type=str, help="Db username", required=True)
|
18
|
+
]
|
19
|
+
password: Annotated[
|
20
|
+
str,
|
21
|
+
click.option("--password",
|
22
|
+
type=str,
|
23
|
+
help="Postgres database password",
|
24
|
+
default=lambda: os.environ.get("POSTGRES_PASSWORD", ""),
|
25
|
+
show_default="$POSTGRES_PASSWORD",
|
26
|
+
),
|
27
|
+
]
|
28
|
+
|
29
|
+
host: Annotated[
|
30
|
+
str, click.option("--host", type=str, help="Db host", required=True)
|
31
|
+
]
|
32
|
+
db_name: Annotated[
|
33
|
+
str, click.option("--db-name", type=str, help="Db name", required=True)
|
34
|
+
]
|
35
|
+
max_neighbors: Annotated[
|
36
|
+
int,
|
37
|
+
click.option(
|
38
|
+
"--max-neighbors", type=int, help="PgDiskAnn max neighbors",
|
39
|
+
),
|
40
|
+
]
|
41
|
+
l_value_ib: Annotated[
|
42
|
+
int,
|
43
|
+
click.option(
|
44
|
+
"--l-value-ib", type=int, help="PgDiskAnn l_value_ib",
|
45
|
+
),
|
46
|
+
]
|
47
|
+
l_value_is: Annotated[
|
48
|
+
float,
|
49
|
+
click.option(
|
50
|
+
"--l-value-is", type=float, help="PgDiskAnn l_value_is",
|
51
|
+
),
|
52
|
+
]
|
53
|
+
maintenance_work_mem: Annotated[
|
54
|
+
Optional[str],
|
55
|
+
click.option(
|
56
|
+
"--maintenance-work-mem",
|
57
|
+
type=str,
|
58
|
+
help="Sets the maximum memory to be used for maintenance operations (index creation). "
|
59
|
+
"Can be entered as string with unit like '64GB' or as an integer number of KB."
|
60
|
+
"This will set the parameters: max_parallel_maintenance_workers,"
|
61
|
+
" max_parallel_workers & table(parallel_workers)",
|
62
|
+
required=False,
|
63
|
+
),
|
64
|
+
]
|
65
|
+
max_parallel_workers: Annotated[
|
66
|
+
Optional[int],
|
67
|
+
click.option(
|
68
|
+
"--max-parallel-workers",
|
69
|
+
type=int,
|
70
|
+
help="Sets the maximum number of parallel processes per maintenance operation (index creation)",
|
71
|
+
required=False,
|
72
|
+
),
|
73
|
+
]
|
74
|
+
|
75
|
+
@cli.command()
|
76
|
+
@click_parameter_decorators_from_typed_dict(PgDiskAnnTypedDict)
|
77
|
+
def PgDiskAnn(
|
78
|
+
**parameters: Unpack[PgDiskAnnTypedDict],
|
79
|
+
):
|
80
|
+
from .config import PgDiskANNConfig, PgDiskANNImplConfig
|
81
|
+
|
82
|
+
run(
|
83
|
+
db=DB.PgDiskANN,
|
84
|
+
db_config=PgDiskANNConfig(
|
85
|
+
db_label=parameters["db_label"],
|
86
|
+
user_name=SecretStr(parameters["user_name"]),
|
87
|
+
password=SecretStr(parameters["password"]),
|
88
|
+
host=parameters["host"],
|
89
|
+
db_name=parameters["db_name"],
|
90
|
+
),
|
91
|
+
db_case_config=PgDiskANNImplConfig(
|
92
|
+
max_neighbors=parameters["max_neighbors"],
|
93
|
+
l_value_ib=parameters["l_value_ib"],
|
94
|
+
l_value_is=parameters["l_value_is"],
|
95
|
+
max_parallel_workers=parameters["max_parallel_workers"],
|
96
|
+
maintenance_work_mem=parameters["maintenance_work_mem"],
|
97
|
+
),
|
98
|
+
**parameters,
|
99
|
+
)
|
@@ -0,0 +1,145 @@
|
|
1
|
+
from abc import abstractmethod
|
2
|
+
from typing import Any, Mapping, Optional, Sequence, TypedDict
|
3
|
+
from pydantic import BaseModel, SecretStr
|
4
|
+
from typing_extensions import LiteralString
|
5
|
+
from ..api import DBCaseConfig, DBConfig, IndexType, MetricType
|
6
|
+
|
7
|
+
POSTGRE_URL_PLACEHOLDER = "postgresql://%s:%s@%s/%s"
|
8
|
+
|
9
|
+
|
10
|
+
class PgDiskANNConfigDict(TypedDict):
|
11
|
+
"""These keys will be directly used as kwargs in psycopg connection string,
|
12
|
+
so the names must match exactly psycopg API"""
|
13
|
+
|
14
|
+
user: str
|
15
|
+
password: str
|
16
|
+
host: str
|
17
|
+
port: int
|
18
|
+
dbname: str
|
19
|
+
|
20
|
+
|
21
|
+
class PgDiskANNConfig(DBConfig):
|
22
|
+
user_name: SecretStr = SecretStr("postgres")
|
23
|
+
password: SecretStr
|
24
|
+
host: str = "localhost"
|
25
|
+
port: int = 5432
|
26
|
+
db_name: str
|
27
|
+
|
28
|
+
def to_dict(self) -> PgDiskANNConfigDict:
|
29
|
+
user_str = self.user_name.get_secret_value()
|
30
|
+
pwd_str = self.password.get_secret_value()
|
31
|
+
return {
|
32
|
+
"host": self.host,
|
33
|
+
"port": self.port,
|
34
|
+
"dbname": self.db_name,
|
35
|
+
"user": user_str,
|
36
|
+
"password": pwd_str,
|
37
|
+
}
|
38
|
+
|
39
|
+
|
40
|
+
class PgDiskANNIndexConfig(BaseModel, DBCaseConfig):
|
41
|
+
metric_type: MetricType | None = None
|
42
|
+
create_index_before_load: bool = False
|
43
|
+
create_index_after_load: bool = True
|
44
|
+
maintenance_work_mem: Optional[str]
|
45
|
+
max_parallel_workers: Optional[int]
|
46
|
+
|
47
|
+
def parse_metric(self) -> str:
|
48
|
+
if self.metric_type == MetricType.L2:
|
49
|
+
return "vector_l2_ops"
|
50
|
+
elif self.metric_type == MetricType.IP:
|
51
|
+
return "vector_ip_ops"
|
52
|
+
return "vector_cosine_ops"
|
53
|
+
|
54
|
+
def parse_metric_fun_op(self) -> LiteralString:
|
55
|
+
if self.metric_type == MetricType.L2:
|
56
|
+
return "<->"
|
57
|
+
elif self.metric_type == MetricType.IP:
|
58
|
+
return "<#>"
|
59
|
+
return "<=>"
|
60
|
+
|
61
|
+
def parse_metric_fun_str(self) -> str:
|
62
|
+
if self.metric_type == MetricType.L2:
|
63
|
+
return "l2_distance"
|
64
|
+
elif self.metric_type == MetricType.IP:
|
65
|
+
return "max_inner_product"
|
66
|
+
return "cosine_distance"
|
67
|
+
|
68
|
+
@abstractmethod
|
69
|
+
def index_param(self) -> dict:
|
70
|
+
...
|
71
|
+
|
72
|
+
@abstractmethod
|
73
|
+
def search_param(self) -> dict:
|
74
|
+
...
|
75
|
+
|
76
|
+
@abstractmethod
|
77
|
+
def session_param(self) -> dict:
|
78
|
+
...
|
79
|
+
|
80
|
+
@staticmethod
|
81
|
+
def _optionally_build_with_options(with_options: Mapping[str, Any]) -> Sequence[dict[str, Any]]:
|
82
|
+
"""Walk through mappings, creating a List of {key1 = value} pairs. That will be used to build a where clause"""
|
83
|
+
options = []
|
84
|
+
for option_name, value in with_options.items():
|
85
|
+
if value is not None:
|
86
|
+
options.append(
|
87
|
+
{
|
88
|
+
"option_name": option_name,
|
89
|
+
"val": str(value),
|
90
|
+
}
|
91
|
+
)
|
92
|
+
return options
|
93
|
+
|
94
|
+
@staticmethod
|
95
|
+
def _optionally_build_set_options(
|
96
|
+
set_mapping: Mapping[str, Any]
|
97
|
+
) -> Sequence[dict[str, Any]]:
|
98
|
+
"""Walk through options, creating 'SET 'key1 = "value1";' list"""
|
99
|
+
session_options = []
|
100
|
+
for setting_name, value in set_mapping.items():
|
101
|
+
if value:
|
102
|
+
session_options.append(
|
103
|
+
{"parameter": {
|
104
|
+
"setting_name": setting_name,
|
105
|
+
"val": str(value),
|
106
|
+
},
|
107
|
+
}
|
108
|
+
)
|
109
|
+
return session_options
|
110
|
+
|
111
|
+
|
112
|
+
class PgDiskANNImplConfig(PgDiskANNIndexConfig):
|
113
|
+
index: IndexType = IndexType.DISKANN
|
114
|
+
max_neighbors: int | None
|
115
|
+
l_value_ib: int | None
|
116
|
+
l_value_is: float | None
|
117
|
+
maintenance_work_mem: Optional[str] = None
|
118
|
+
max_parallel_workers: Optional[int] = None
|
119
|
+
|
120
|
+
def index_param(self) -> dict:
|
121
|
+
return {
|
122
|
+
"metric": self.parse_metric(),
|
123
|
+
"index_type": self.index.value,
|
124
|
+
"options": {
|
125
|
+
"max_neighbors": self.max_neighbors,
|
126
|
+
"l_value_ib": self.l_value_ib,
|
127
|
+
},
|
128
|
+
"maintenance_work_mem": self.maintenance_work_mem,
|
129
|
+
"max_parallel_workers": self.max_parallel_workers,
|
130
|
+
}
|
131
|
+
|
132
|
+
def search_param(self) -> dict:
|
133
|
+
return {
|
134
|
+
"metric": self.parse_metric(),
|
135
|
+
"metric_fun_op": self.parse_metric_fun_op(),
|
136
|
+
}
|
137
|
+
|
138
|
+
def session_param(self) -> dict:
|
139
|
+
return {
|
140
|
+
"diskann.l_value_is": self.l_value_is,
|
141
|
+
}
|
142
|
+
|
143
|
+
_pgdiskann_case_config = {
|
144
|
+
IndexType.DISKANN: PgDiskANNImplConfig,
|
145
|
+
}
|