vectordb-bench 1.0.0__tar.gz → 1.0.2__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-1.0.0 → vectordb_bench-1.0.2}/PKG-INFO +10 -10
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/README.md +9 -9
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/pyproject.toml +6 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/__main__.py +1 -1
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/api.py +1 -1
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/aws_opensearch/config.py +14 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/elastic_cloud/config.py +12 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/milvus/milvus.py +2 -2
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/qdrant_cloud/config.py +14 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/zilliz_cloud/zilliz_cloud.py +1 -1
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/dataset.py +3 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/task_runner.py +11 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/check_results/headerIcon.py +4 -2
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/welcome/explainPrams.py +8 -8
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/welcome/welcomePrams.py +1 -1
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/config/dbCaseConfigs.py +3 -3
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/config/styles.py +2 -2
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/pages/results.py +5 -3
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/interface.py +2 -1
- vectordb_bench-1.0.2/vectordb_bench/results/getLeaderboardDataV2.py +59 -0
- vectordb_bench-1.0.2/vectordb_bench/results/leaderboard_v2.json +2662 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench.egg-info/PKG-INFO +10 -10
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench.egg-info/SOURCES.txt +3 -1
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/.devcontainer/Dockerfile +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/.devcontainer/devcontainer.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/.env.example +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/.github/workflows/publish_package_on_release.yml +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/.github/workflows/pull_request.yml +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/.gitignore +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/Dockerfile +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/LICENSE +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/Makefile +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/OWNERS +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/fig/custom_case_run_test.png +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/fig/custom_dataset.png +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/fig/homepage/bar-chart.png +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/fig/homepage/concurrent.png +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/fig/homepage/custom.png +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/fig/homepage/label_filter.png +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/fig/homepage/qp$.png +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/fig/homepage/run_test.png +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/fig/homepage/streaming.png +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/fig/homepage/table.png +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/fig/run_test_select_case.png +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/fig/run_test_select_db.png +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/fig/run_test_submit.png +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/install/requirements_py3.11.txt +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/install.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/setup.cfg +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/tests/conftest.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/tests/pytest.ini +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/tests/test_bench_runner.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/tests/test_chroma.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/tests/test_data_source.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/tests/test_dataset.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/tests/test_elasticsearch_cloud.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/tests/test_models.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/tests/test_rate_runner.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/tests/test_redis.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/tests/test_utils.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/tests/ut_cases.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/__init__.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/__init__.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/assembler.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/cases.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/__init__.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/aliyun_elasticsearch/aliyun_elasticsearch.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/aliyun_elasticsearch/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/aliyun_opensearch/aliyun_opensearch.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/aliyun_opensearch/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/alloydb/alloydb.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/alloydb/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/alloydb/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/aws_opensearch/aws_opensearch.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/aws_opensearch/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/aws_opensearch/run.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/chroma/chroma.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/chroma/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/clickhouse/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/clickhouse/clickhouse.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/clickhouse/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/elastic_cloud/elastic_cloud.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/lancedb/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/lancedb/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/lancedb/lancedb.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/mariadb/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/mariadb/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/mariadb/mariadb.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/memorydb/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/memorydb/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/memorydb/memorydb.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/milvus/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/milvus/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/mongodb/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/mongodb/mongodb.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/oceanbase/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/oceanbase/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/oceanbase/oceanbase.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/pgdiskann/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/pgdiskann/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/pgdiskann/pgdiskann.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/pgvecto_rs/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/pgvecto_rs/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/pgvecto_rs/pgvecto_rs.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/pgvector/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/pgvector/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/pgvector/pgvector.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/pgvectorscale/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/pgvectorscale/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/pgvectorscale/pgvectorscale.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/pinecone/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/pinecone/pinecone.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/qdrant_cloud/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/qdrant_cloud/qdrant_cloud.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/qdrant_local/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/qdrant_local/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/qdrant_local/qdrant_local.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/redis/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/redis/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/redis/redis.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/test/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/test/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/test/test.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/tidb/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/tidb/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/tidb/tidb.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/vespa/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/vespa/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/vespa/util.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/vespa/vespa.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/weaviate_cloud/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/weaviate_cloud/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/weaviate_cloud/weaviate_cloud.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/zilliz_cloud/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/zilliz_cloud/config.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/data_source.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/filter.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/result_collector.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/runner/__init__.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/runner/mp_runner.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/runner/rate_runner.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/runner/read_write_runner.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/runner/serial_runner.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/runner/util.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/utils.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/base.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/cli/__init__.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/cli/batch_cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/cli/cli.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/cli/vectordbbench.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/config-files/batch_sample_config.yml +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/config-files/sample_config.yml +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/custom/custom_case.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/check_results/charts.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/check_results/data.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/check_results/expanderStyle.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/check_results/filters.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/check_results/footer.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/check_results/nav.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/check_results/priceTable.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/check_results/stPageConfig.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/concurrent/charts.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/custom/displayCustomCase.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/custom/displaypPrams.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/custom/getCustomConfig.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/custom/initStyle.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/get_results/saveAsImage.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/label_filter/charts.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/run_test/autoRefresh.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/run_test/caseSelector.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/run_test/dbConfigSetting.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/run_test/dbSelector.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/run_test/generateTasks.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/run_test/hideSidebar.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/run_test/initStyle.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/run_test/inputWidget.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/run_test/submitTask.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/streaming/charts.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/streaming/data.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/tables/data.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/components/welcome/pagestyle.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/config/dbPrices.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/pages/concurrent.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/pages/custom.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/pages/label_filter.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/pages/quries_per_dollar.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/pages/run_test.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/pages/streaming.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/pages/tables.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/utils.py +0 -0
- /vectordb_bench-1.0.0/vectordb_bench/frontend/vdb_benchmark.py → /vectordb_bench-1.0.2/vectordb_bench/frontend/vdbbench.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/log_util.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/metric.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/models.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/ElasticCloud/result_20230727_standard_elasticcloud.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/ElasticCloud/result_20230808_standard_elasticcloud.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/ElasticCloud/result_20250318_standard_elasticcloud.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/Milvus/result_20230727_standard_milvus.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/Milvus/result_20230808_standard_milvus.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/Milvus/result_20250509_standard_milvus.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/OpenSearch/result_20250224_standard_opensearch.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/PgVector/result_20230727_standard_pgvector.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/PgVector/result_20230808_standard_pgvector.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/Pinecone/result_20230727_standard_pinecone.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/Pinecone/result_20230808_standard_pinecone.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/Pinecone/result_20250124_standard_pinecone.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/QdrantCloud/result_20230727_standard_qdrantcloud.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/QdrantCloud/result_20230808_standard_qdrantcloud.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/QdrantCloud/result_20250602_standard_qdrantcloud.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/WeaviateCloud/result_20230727_standard_weaviatecloud.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/WeaviateCloud/result_20230808_standard_weaviatecloud.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/ZillizCloud/result_20250613_standard_zillizcloud.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/dbPrices.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/getLeaderboardData.py +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/results/leaderboard.json +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench.egg-info/dependency_links.txt +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench.egg-info/entry_points.txt +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench.egg-info/requires.txt +0 -0
- {vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: vectordb-bench
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.2
|
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
|
@@ -100,17 +100,17 @@ Dynamic: license-file
|
|
100
100
|
[](https://pypi.org/project/vectordb-bench/)
|
101
101
|
[](https://pepy.tech/project/vectordb-bench)
|
102
102
|
|
103
|
-
## What is
|
104
|
-
|
103
|
+
## What is VDBBench
|
104
|
+
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, VDBBench 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.
|
105
105
|
|
106
106
|
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.
|
107
107
|
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.
|
108
108
|
|
109
109
|
Closely mimicking real-world production environments, we've set up diverse testing scenarios including insertion, searching, and filtered searching. To provide you with credible and reliable data, we've included public datasets from actual production scenarios, such as [SIFT](http://corpus-texmex.irisa.fr/), [GIST](http://corpus-texmex.irisa.fr/), [Cohere](https://huggingface.co/datasets/Cohere/wikipedia-22-12/tree/main/en), and a dataset generated by OpenAI from an opensource [raw dataset](https://huggingface.co/datasets/allenai/c4). It's fascinating to discover how a relatively unknown open-source database might excel in certain circumstances!
|
110
110
|
|
111
|
-
Prepare to delve into the world of
|
111
|
+
Prepare to delve into the world of VDBBench, and let it guide you in uncovering your perfect vector database match.
|
112
112
|
|
113
|
-
|
113
|
+
VDBBench is sponsered by Zilliz,the leading opensource vectorDB company behind Milvus. Choose smarter with VDBBench - start your free test on [zilliz cloud](https://zilliz.com/) today!
|
114
114
|
|
115
115
|
**Leaderboard:** https://zilliz.com/benchmark
|
116
116
|
## Quick Start
|
@@ -517,7 +517,7 @@ make format
|
|
517
517
|
## How does it work?
|
518
518
|
### Result Page
|
519
519
|

|
520
|
-
This is the main page of
|
520
|
+
This is the main page of VDBBench, which displays the standard benchmark results we provide. Additionally, results of all tests performed by users themselves will also be shown here. We also offer the ability to select and compare results from multiple tests simultaneously.
|
521
521
|
|
522
522
|
The standard benchmark results displayed here include all 15 cases that we currently support for 6 of our clients (Milvus, Zilliz Cloud, Elastic Search, Qdrant Cloud, Weaviate Cloud and PgVector). However, as some systems may not be able to complete all the tests successfully due to issues like Out of Memory (OOM) or timeouts, not all clients are included in every case.
|
523
523
|
|
@@ -551,7 +551,7 @@ We've developed lots of comprehensive benchmark cases to test vector databases'
|
|
551
551
|
- **Int-Filter Cases:** Evaluates search performance with int-based filter expression (e.g. "id >= 2,000").
|
552
552
|
- **Label-Filter Cases:** Evaluates search performance with label-based filter expressions (e.g., "color == 'red'"). The test includes randomly generated labels to simulate real-world filtering scenarios.
|
553
553
|
#### Streaming Cases
|
554
|
-
- **Insertion-Under-Load Case:** Evaluates search performance while maintaining a constant insertion workload.
|
554
|
+
- **Insertion-Under-Load Case:** Evaluates search performance while maintaining a constant insertion workload. VDBBench applies a steady stream of insert requests at a fixed rate to simulate real-world scenarios where search operations must perform reliably under continuous data ingestion.
|
555
555
|
|
556
556
|
Each case provides an in-depth examination of a vector database's abilities, providing you a comprehensive view of the database's performance.
|
557
557
|
|
@@ -577,15 +577,15 @@ We have strict requirements for the data set format, please follow them.
|
|
577
577
|
|
578
578
|
- `Train File Count` - If the vector file is too large, you can consider splitting it into multiple files. The naming format for the split files should be `train-[index]-of-[file_count].parquet`. For example, `train-01-of-10.parquet` represents the second file (0-indexed) among 10 split files.
|
579
579
|
|
580
|
-
- `Use Shuffled Data` - If you check this option, the vector data files need to be modified.
|
580
|
+
- `Use Shuffled Data` - If you check this option, the vector data files need to be modified. VDBBench will load the data labeled with `shuffle`. For example, use `shuffle_train.parquet` instead of `train.parquet` and `shuffle_train-04-of-10.parquet` instead of `train-04-of-10.parquet`. The `id` column in the shuffled data can be in any order.
|
581
581
|
|
582
582
|
|
583
583
|
## Goals
|
584
584
|
Our goals of this benchmark are:
|
585
585
|
### Reproducibility & Usability
|
586
|
-
One of the primary goals of
|
586
|
+
One of the primary goals of VDBBench is to enable users to reproduce benchmark results swiftly and easily, or to test their customized scenarios. We believe that lowering the barriers to entry for conducting these tests will enhance the community's understanding and improvement of vector databases. We aim to create an environment where any user, regardless of their technical expertise, can quickly set up and run benchmarks, and view and analyze results in an intuitive manner.
|
587
587
|
### Representability & Realism
|
588
|
-
|
588
|
+
VDBBench aims to provide a more comprehensive, multi-faceted testing environment that accurately represents the complexity of vector databases. By moving beyond a simple speed test for algorithms, we hope to contribute to a better understanding of vector databases in real-world scenarios. By incorporating as many complex scenarios as possible, including a variety of test cases and datasets, we aim to reflect realistic conditions and offer tangible significance to our community. Our goal is to deliver benchmarking results that can drive tangible improvements in the development and usage of vector databases.
|
589
589
|
|
590
590
|
## Contribution
|
591
591
|
### General Guidelines
|
@@ -3,17 +3,17 @@
|
|
3
3
|
[](https://pypi.org/project/vectordb-bench/)
|
4
4
|
[](https://pepy.tech/project/vectordb-bench)
|
5
5
|
|
6
|
-
## What is
|
7
|
-
|
6
|
+
## What is VDBBench
|
7
|
+
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, VDBBench 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.
|
8
8
|
|
9
9
|
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.
|
10
10
|
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.
|
11
11
|
|
12
12
|
Closely mimicking real-world production environments, we've set up diverse testing scenarios including insertion, searching, and filtered searching. To provide you with credible and reliable data, we've included public datasets from actual production scenarios, such as [SIFT](http://corpus-texmex.irisa.fr/), [GIST](http://corpus-texmex.irisa.fr/), [Cohere](https://huggingface.co/datasets/Cohere/wikipedia-22-12/tree/main/en), and a dataset generated by OpenAI from an opensource [raw dataset](https://huggingface.co/datasets/allenai/c4). It's fascinating to discover how a relatively unknown open-source database might excel in certain circumstances!
|
13
13
|
|
14
|
-
Prepare to delve into the world of
|
14
|
+
Prepare to delve into the world of VDBBench, and let it guide you in uncovering your perfect vector database match.
|
15
15
|
|
16
|
-
|
16
|
+
VDBBench is sponsered by Zilliz,the leading opensource vectorDB company behind Milvus. Choose smarter with VDBBench - start your free test on [zilliz cloud](https://zilliz.com/) today!
|
17
17
|
|
18
18
|
**Leaderboard:** https://zilliz.com/benchmark
|
19
19
|
## Quick Start
|
@@ -420,7 +420,7 @@ make format
|
|
420
420
|
## How does it work?
|
421
421
|
### Result Page
|
422
422
|

|
423
|
-
This is the main page of
|
423
|
+
This is the main page of VDBBench, which displays the standard benchmark results we provide. Additionally, results of all tests performed by users themselves will also be shown here. We also offer the ability to select and compare results from multiple tests simultaneously.
|
424
424
|
|
425
425
|
The standard benchmark results displayed here include all 15 cases that we currently support for 6 of our clients (Milvus, Zilliz Cloud, Elastic Search, Qdrant Cloud, Weaviate Cloud and PgVector). However, as some systems may not be able to complete all the tests successfully due to issues like Out of Memory (OOM) or timeouts, not all clients are included in every case.
|
426
426
|
|
@@ -454,7 +454,7 @@ We've developed lots of comprehensive benchmark cases to test vector databases'
|
|
454
454
|
- **Int-Filter Cases:** Evaluates search performance with int-based filter expression (e.g. "id >= 2,000").
|
455
455
|
- **Label-Filter Cases:** Evaluates search performance with label-based filter expressions (e.g., "color == 'red'"). The test includes randomly generated labels to simulate real-world filtering scenarios.
|
456
456
|
#### Streaming Cases
|
457
|
-
- **Insertion-Under-Load Case:** Evaluates search performance while maintaining a constant insertion workload.
|
457
|
+
- **Insertion-Under-Load Case:** Evaluates search performance while maintaining a constant insertion workload. VDBBench applies a steady stream of insert requests at a fixed rate to simulate real-world scenarios where search operations must perform reliably under continuous data ingestion.
|
458
458
|
|
459
459
|
Each case provides an in-depth examination of a vector database's abilities, providing you a comprehensive view of the database's performance.
|
460
460
|
|
@@ -480,15 +480,15 @@ We have strict requirements for the data set format, please follow them.
|
|
480
480
|
|
481
481
|
- `Train File Count` - If the vector file is too large, you can consider splitting it into multiple files. The naming format for the split files should be `train-[index]-of-[file_count].parquet`. For example, `train-01-of-10.parquet` represents the second file (0-indexed) among 10 split files.
|
482
482
|
|
483
|
-
- `Use Shuffled Data` - If you check this option, the vector data files need to be modified.
|
483
|
+
- `Use Shuffled Data` - If you check this option, the vector data files need to be modified. VDBBench will load the data labeled with `shuffle`. For example, use `shuffle_train.parquet` instead of `train.parquet` and `shuffle_train-04-of-10.parquet` instead of `train-04-of-10.parquet`. The `id` column in the shuffled data can be in any order.
|
484
484
|
|
485
485
|
|
486
486
|
## Goals
|
487
487
|
Our goals of this benchmark are:
|
488
488
|
### Reproducibility & Usability
|
489
|
-
One of the primary goals of
|
489
|
+
One of the primary goals of VDBBench is to enable users to reproduce benchmark results swiftly and easily, or to test their customized scenarios. We believe that lowering the barriers to entry for conducting these tests will enhance the community's understanding and improvement of vector databases. We aim to create an environment where any user, regardless of their technical expertise, can quickly set up and run benchmarks, and view and analyze results in an intuitive manner.
|
490
490
|
### Representability & Realism
|
491
|
-
|
491
|
+
VDBBench aims to provide a more comprehensive, multi-faceted testing environment that accurately represents the complexity of vector databases. By moving beyond a simple speed test for algorithms, we hope to contribute to a better understanding of vector databases in real-world scenarios. By incorporating as many complex scenarios as possible, including a variety of test cases and datasets, we aim to reflect realistic conditions and offer tangible significance to our community. Our goal is to deliver benchmarking results that can drive tangible improvements in the development and usage of vector databases.
|
492
492
|
|
493
493
|
## Contribution
|
494
494
|
### General Guidelines
|
@@ -220,3 +220,9 @@ builtins-ignorelist = [
|
|
220
220
|
# "dict", # TODO
|
221
221
|
# "filter",
|
222
222
|
]
|
223
|
+
|
224
|
+
[tool.ruff.lint.per-file-ignores]
|
225
|
+
"vectordb_bench/backend/clients/*" = ["PLC0415"]
|
226
|
+
"vectordb_bench/cli/batch_cli.py" = ["PLC0415"]
|
227
|
+
"vectordb_bench/backend/data_source.py" = ["PLC0415"]
|
228
|
+
|
@@ -132,7 +132,7 @@ class VectorDB(ABC):
|
|
132
132
|
"""
|
133
133
|
|
134
134
|
"The filtering types supported by the VectorDB Client, default only non-filter"
|
135
|
-
supported_filter_types: list[FilterOp] = [FilterOp.NonFilter
|
135
|
+
supported_filter_types: list[FilterOp] = [FilterOp.NonFilter]
|
136
136
|
|
137
137
|
@classmethod
|
138
138
|
def filter_supported(cls, filters: Filter) -> bool:
|
@@ -75,6 +75,20 @@ class AWSOpenSearchIndexConfig(BaseModel, DBCaseConfig):
|
|
75
75
|
and self.quantization_type == obj.quantization_type
|
76
76
|
)
|
77
77
|
|
78
|
+
def __hash__(self) -> int:
|
79
|
+
return hash(
|
80
|
+
(
|
81
|
+
self.engine,
|
82
|
+
self.M,
|
83
|
+
self.efConstruction,
|
84
|
+
self.number_of_shards,
|
85
|
+
self.number_of_replicas,
|
86
|
+
self.number_of_segments,
|
87
|
+
self.use_routing,
|
88
|
+
self.quantization_type,
|
89
|
+
)
|
90
|
+
)
|
91
|
+
|
78
92
|
def parse_metric(self) -> str:
|
79
93
|
log.info(f"User specified metric_type: {self.metric_type_name}")
|
80
94
|
self.metric_type = MetricType[self.metric_type_name.upper()]
|
{vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/elastic_cloud/config.py
RENAMED
@@ -48,6 +48,18 @@ class ElasticCloudIndexConfig(BaseModel, DBCaseConfig):
|
|
48
48
|
and self.M == obj.M
|
49
49
|
)
|
50
50
|
|
51
|
+
def __hash__(self) -> int:
|
52
|
+
return hash(
|
53
|
+
(
|
54
|
+
self.index,
|
55
|
+
self.number_of_shards,
|
56
|
+
self.number_of_replicas,
|
57
|
+
self.use_routing,
|
58
|
+
self.efConstruction,
|
59
|
+
self.M,
|
60
|
+
)
|
61
|
+
)
|
62
|
+
|
51
63
|
def parse_metric(self) -> str:
|
52
64
|
if self.metric_type == MetricType.L2:
|
53
65
|
return "l2_norm"
|
{vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/milvus/milvus.py
RENAMED
@@ -29,7 +29,7 @@ class Milvus(VectorDB):
|
|
29
29
|
dim: int,
|
30
30
|
db_config: dict,
|
31
31
|
db_case_config: MilvusIndexConfig,
|
32
|
-
collection_name: str = "
|
32
|
+
collection_name: str = "VDBBench",
|
33
33
|
drop_old: bool = False,
|
34
34
|
name: str = "Milvus",
|
35
35
|
with_scalar_labels: bool = False,
|
@@ -88,7 +88,7 @@ class Milvus(VectorDB):
|
|
88
88
|
name=self.collection_name,
|
89
89
|
schema=CollectionSchema(fields),
|
90
90
|
consistency_level="Session",
|
91
|
-
num_shards=self.db_config.get("num_shards"),
|
91
|
+
num_shards=self.db_config.get("num_shards", 1),
|
92
92
|
)
|
93
93
|
|
94
94
|
self.create_index()
|
{vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/backend/clients/qdrant_cloud/config.py
RENAMED
@@ -63,6 +63,20 @@ class QdrantIndexConfig(BaseModel, DBCaseConfig):
|
|
63
63
|
and self.default_segment_number == obj.default_segment_number
|
64
64
|
)
|
65
65
|
|
66
|
+
def __hash__(self) -> int:
|
67
|
+
return hash(
|
68
|
+
(
|
69
|
+
self.m,
|
70
|
+
self.payload_m,
|
71
|
+
self.create_payload_int_index,
|
72
|
+
self.create_payload_keyword_index,
|
73
|
+
self.is_tenant,
|
74
|
+
self.use_scalar_quant,
|
75
|
+
self.sq_quantile,
|
76
|
+
self.default_segment_number,
|
77
|
+
)
|
78
|
+
)
|
79
|
+
|
66
80
|
def parse_metric(self) -> str:
|
67
81
|
if self.metric_type == MetricType.L2:
|
68
82
|
return "Euclid"
|
@@ -10,7 +10,7 @@ class ZillizCloud(Milvus):
|
|
10
10
|
dim: int,
|
11
11
|
db_config: dict,
|
12
12
|
db_case_config: DBCaseConfig,
|
13
|
-
collection_name: str = "
|
13
|
+
collection_name: str = "ZillizCloudVDBBench",
|
14
14
|
drop_old: bool = False,
|
15
15
|
name: str = "ZillizCloud",
|
16
16
|
**kwargs,
|
@@ -242,6 +242,9 @@ class DatasetManager(BaseModel):
|
|
242
242
|
return self.data.name == obj.data.name and self.data.label == obj.data.label
|
243
243
|
return False
|
244
244
|
|
245
|
+
def __hash__(self) -> int:
|
246
|
+
return hash((self.data.name, self.data.label))
|
247
|
+
|
245
248
|
def set_reader(self, reader: DatasetReader):
|
246
249
|
self.reader = reader
|
247
250
|
|
@@ -59,6 +59,17 @@ class CaseRunner(BaseModel):
|
|
59
59
|
)
|
60
60
|
return False
|
61
61
|
|
62
|
+
def __hash__(self) -> int:
|
63
|
+
"""Hash method to maintain consistency with __eq__ method."""
|
64
|
+
return hash(
|
65
|
+
(
|
66
|
+
self.ca.label,
|
67
|
+
self.config.db,
|
68
|
+
self.config.db_case_config,
|
69
|
+
self.ca.dataset,
|
70
|
+
)
|
71
|
+
)
|
72
|
+
|
62
73
|
def display(self) -> dict:
|
63
74
|
c_dict = self.ca.dict(
|
64
75
|
include={
|
@@ -4,7 +4,7 @@ from vectordb_bench.frontend.config.styles import HEADER_ICON
|
|
4
4
|
def drawHeaderIcon(st):
|
5
5
|
st.markdown(
|
6
6
|
f"""
|
7
|
-
<a href="/
|
7
|
+
<a href="/vdbbench" target="_self">
|
8
8
|
<div class="headerIconContainer"></div>
|
9
9
|
</a>
|
10
10
|
|
@@ -16,8 +16,10 @@ def drawHeaderIcon(st):
|
|
16
16
|
width: 100%;
|
17
17
|
border-bottom: 2px solid #E8EAEE;
|
18
18
|
background-image: url({HEADER_ICON});
|
19
|
+
background-size: contain;
|
20
|
+
background-position: left top;
|
19
21
|
background-repeat: no-repeat;
|
20
|
-
cursor: pointer;
|
22
|
+
cursor: pointer;
|
21
23
|
}}
|
22
24
|
</style>
|
23
25
|
""",
|
@@ -1,16 +1,16 @@
|
|
1
1
|
def explainPrams(st):
|
2
2
|
st.markdown("## descriptions")
|
3
|
-
st.markdown("### 1.Overview")
|
3
|
+
st.markdown("### 1. Overview")
|
4
4
|
st.markdown(
|
5
5
|
"""
|
6
|
-
- **VectorDBBench** is an open-source benchmarking tool designed specifically for vector databases. Its main features include:
|
6
|
+
- **VectorDBBench(VDBBench)** is an open-source benchmarking tool designed specifically for vector databases. Its main features include:
|
7
7
|
- (1) An easy-to-use **web UI** for configuration of tests and visual analysis of results.
|
8
8
|
- (2) A comprehensive set of **standards for testing and metric collection**.
|
9
9
|
- (3) Support for **various scenarios**, including additional support for **Filter** and **Streaming** based on standard tests.
|
10
|
-
-
|
10
|
+
- VDBBench embraces open-source and welcome contributions of code and test result submissions. The testing process and extended scenarios of VDBBench, as well as the intention behind our design will be introduced as follows.
|
11
11
|
"""
|
12
12
|
)
|
13
|
-
st.markdown("### 2.Dataset")
|
13
|
+
st.markdown("### 2. Dataset")
|
14
14
|
st.markdown(
|
15
15
|
"""
|
16
16
|
- We provide two embedding datasets:
|
@@ -19,7 +19,7 @@ def explainPrams(st):
|
|
19
19
|
- (3)*OpenAI 1536dim*, generated using the **OpenAI** model based on the [C4 corpus](https://huggingface.co/datasets/legacy-datasets/c4).
|
20
20
|
"""
|
21
21
|
)
|
22
|
-
st.markdown("### 3.Standard Test")
|
22
|
+
st.markdown("### 3. Standard Test")
|
23
23
|
st.markdown(
|
24
24
|
"""
|
25
25
|
The test is actually divided into 3 sub-processes
|
@@ -42,19 +42,19 @@ The test is actually divided into 3 sub-processes
|
|
42
42
|
""",
|
43
43
|
unsafe_allow_html=True,
|
44
44
|
)
|
45
|
-
st.markdown("### 4.Filter Search Test")
|
45
|
+
st.markdown("### 4. Filter Search Test")
|
46
46
|
st.markdown(
|
47
47
|
"""
|
48
48
|
- Compared to the Standard Test, the **Filter Search** introduces additional scalar constraints (e.g. **color == red**) during the Search Test. Different **filter_ratios** present varying levels of challenge to the VectorDB's search performance.
|
49
49
|
- We provide an additional **string column** containing 10 labels with different distribution ratios (50%,20%,10%,5%,2%,1%,0.5%,0.2%,0.1%). For each label, we conduct both a **Serial Test** and a **Concurrency Test** to observe the VectorDB's performance in terms of **QPS, latency, and recall** under different filtering conditions.
|
50
50
|
"""
|
51
51
|
)
|
52
|
-
st.markdown("### 5.Streaming Search Test")
|
52
|
+
st.markdown("### 5. Streaming Search Test")
|
53
53
|
st.markdown(
|
54
54
|
"""
|
55
55
|
Different from Standard's load and search separation, Streaming Search Test primarily focuses on **search performance during the insertion process**.
|
56
56
|
Different **base dataset sizes** and varying **insertion rates** set distinct challenges to the VectorDB's search capabilities.
|
57
|
-
|
57
|
+
VDBBench will send insert requests at a **fixed rate**, maintaining consistent insertion pressure. The search test consists of three steps as follows:
|
58
58
|
- 1.**Streaming Search**
|
59
59
|
- Users can configure **multiple search stages**. When the inserted data volume reaches a specified stage, a **Serial Test** and a **Concurrent Test** will be conducted, recording qps, latency, and recall performance.
|
60
60
|
- 2.**Streaming Final Search**
|
{vectordb_bench-1.0.0 → vectordb_bench-1.0.2}/vectordb_bench/frontend/config/dbCaseConfigs.py
RENAMED
@@ -520,7 +520,7 @@ CaseConfigParamInput_M = CaseConfigInput(
|
|
520
520
|
inputConfig={
|
521
521
|
"min": 4,
|
522
522
|
"max": 64,
|
523
|
-
"value":
|
523
|
+
"value": 16,
|
524
524
|
},
|
525
525
|
isDisplayed=lambda config: config.get(CaseConfigParamType.IndexType, None)
|
526
526
|
in [
|
@@ -550,7 +550,7 @@ CaseConfigParamInput_EFConstruction_Milvus = CaseConfigInput(
|
|
550
550
|
inputConfig={
|
551
551
|
"min": 8,
|
552
552
|
"max": 512,
|
553
|
-
"value":
|
553
|
+
"value": 256,
|
554
554
|
},
|
555
555
|
isDisplayed=lambda config: config[CaseConfigParamType.IndexType]
|
556
556
|
in [
|
@@ -1441,7 +1441,7 @@ CaseConfigParamInput_Milvus_use_partition_key = CaseConfigInput(
|
|
1441
1441
|
label=CaseConfigParamType.use_partition_key,
|
1442
1442
|
inputType=InputType.Option,
|
1443
1443
|
inputHelp="whether to use partition_key for label-filter cases. only works in label-filter cases",
|
1444
|
-
inputConfig={"options": [
|
1444
|
+
inputConfig={"options": [False, True]},
|
1445
1445
|
)
|
1446
1446
|
|
1447
1447
|
|
@@ -33,8 +33,8 @@ MAX_AUTO_REFRESH_COUNT = 999999
|
|
33
33
|
MAX_AUTO_REFRESH_INTERVAL = 5000 # 5s
|
34
34
|
|
35
35
|
PAGE_TITLE = "VectorDB Benchmark"
|
36
|
-
FAVICON = "https://assets.zilliz.com/
|
37
|
-
HEADER_ICON = "https://assets.zilliz.com/
|
36
|
+
FAVICON = "https://assets.zilliz.com/VDB_Bench_icon_d3276bedc4.png"
|
37
|
+
HEADER_ICON = "https://assets.zilliz.com/VDB_Bench_text_icon_6c5f52a458.png"
|
38
38
|
|
39
39
|
# RedisCloud icon: https://assets.zilliz.com/Redis_Cloud_74b8bfef39.png
|
40
40
|
# Elasticsearch icon: https://assets.zilliz.com/elasticsearch_beffeadc29.png
|
@@ -30,10 +30,12 @@ def main():
|
|
30
30
|
|
31
31
|
st.title("Vector Database Benchmark")
|
32
32
|
st.caption(
|
33
|
-
"
|
33
|
+
"Choose your desired test results to display from the sidebar. "
|
34
|
+
"For your reference, we've included two standard benchmarks tested by our team. "
|
35
|
+
"Note that `standard_2025` was tested in 2025; the others in 2023. "
|
36
|
+
"Unless explicitly labeled as distributed multi-node, test with single-node mode by default."
|
34
37
|
)
|
35
|
-
st.caption("
|
36
|
-
|
38
|
+
st.caption("We welcome community contributions for better results, parameter configurations, and optimizations.")
|
37
39
|
# results selector and filter
|
38
40
|
resultSelectorContainer = st.sidebar.container()
|
39
41
|
shownData, failedTasks, showCaseNames = getshownData(resultSelectorContainer, allResults)
|
@@ -95,7 +95,8 @@ class BenchMarkRunner:
|
|
95
95
|
|
96
96
|
return self._run_async(send_conn)
|
97
97
|
|
98
|
-
|
98
|
+
@staticmethod
|
99
|
+
def get_results(result_dir: pathlib.Path | None = None) -> list[TestResult]:
|
99
100
|
"""results of all runs, each TestResult represents one run."""
|
100
101
|
target_dir = result_dir if result_dir else config.RESULTS_LOCAL_DIR
|
101
102
|
return ResultCollector.collect(target_dir)
|
@@ -0,0 +1,59 @@
|
|
1
|
+
import json
|
2
|
+
import logging
|
3
|
+
|
4
|
+
|
5
|
+
from vectordb_bench.backend.cases import CaseType
|
6
|
+
from vectordb_bench.backend.clients import DB
|
7
|
+
from vectordb_bench.models import CaseResult
|
8
|
+
from vectordb_bench import config
|
9
|
+
|
10
|
+
logging.basicConfig(level=logging.DEBUG, format="%(asctime)s - %(levelname)s - %(message)s")
|
11
|
+
|
12
|
+
from vectordb_bench.interface import BenchMarkRunner
|
13
|
+
|
14
|
+
|
15
|
+
def get_standard_2025_results() -> list[CaseResult]:
|
16
|
+
all_results = BenchMarkRunner.get_results()
|
17
|
+
standard_2025_case_results = []
|
18
|
+
for result in all_results:
|
19
|
+
if result.task_label == "standard_2025":
|
20
|
+
standard_2025_case_results += result.results
|
21
|
+
return standard_2025_case_results
|
22
|
+
|
23
|
+
|
24
|
+
def save_to_json(data: list[dict], file_name: str):
|
25
|
+
with open(file_name, "w") as f:
|
26
|
+
json.dump(data, f, indent=4)
|
27
|
+
|
28
|
+
|
29
|
+
def main():
|
30
|
+
standard_2025_case_results = get_standard_2025_results()
|
31
|
+
data = []
|
32
|
+
for case_result in standard_2025_case_results:
|
33
|
+
db = case_result.task_config.db
|
34
|
+
label = case_result.task_config.db_config.db_label
|
35
|
+
metrics = case_result.metrics
|
36
|
+
qps = metrics.qps
|
37
|
+
latency = metrics.serial_latency_p99
|
38
|
+
recall = metrics.recall
|
39
|
+
case = case_result.task_config.case_config.case
|
40
|
+
filter_ratio = case.filters.filter_rate
|
41
|
+
dataset = case.dataset.data.full_name
|
42
|
+
if case.case_id != CaseType.StreamingPerformanceCase:
|
43
|
+
data.append(
|
44
|
+
{
|
45
|
+
"dataset": dataset,
|
46
|
+
"db": db.value,
|
47
|
+
"label": label,
|
48
|
+
"db_name": f"{db.value}-{label}",
|
49
|
+
"qps": round(qps, 4),
|
50
|
+
"latency": round(latency, 4),
|
51
|
+
"recall": round(recall, 4),
|
52
|
+
"filter_ratio": round(filter_ratio, 2),
|
53
|
+
}
|
54
|
+
)
|
55
|
+
save_to_json(data, config.RESULTS_LOCAL_DIR / "leaderboard_v2.json")
|
56
|
+
|
57
|
+
|
58
|
+
if __name__ == "__main__":
|
59
|
+
main()
|