vectordb-bench 0.0.26__tar.gz → 0.0.28__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.26 → vectordb_bench-0.0.28}/PKG-INFO +8 -5
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/README.md +4 -4
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/pyproject.toml +2 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/__init__.py +18 -2
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/api.py +1 -0
- vectordb_bench-0.0.28/vectordb_bench/backend/clients/lancedb/cli.py +92 -0
- vectordb_bench-0.0.28/vectordb_bench/backend/clients/lancedb/config.py +103 -0
- vectordb_bench-0.0.28/vectordb_bench/backend/clients/lancedb/lancedb.py +91 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/dataset.py +8 -4
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/runner/serial_runner.py +9 -4
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/cli/cli.py +3 -1
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/cli/vectordbbench.py +2 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/config/dbCaseConfigs.py +125 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/config/styles.py +1 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/models.py +15 -5
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench.egg-info/PKG-INFO +8 -5
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench.egg-info/SOURCES.txt +3 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench.egg-info/requires.txt +4 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/.devcontainer/Dockerfile +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/.devcontainer/devcontainer.json +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/.env.example +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/.github/workflows/publish_package_on_release.yml +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/.github/workflows/pull_request.yml +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/.gitignore +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/Dockerfile +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/LICENSE +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/Makefile +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/OWNERS +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/fig/custom_case_run_test.png +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/fig/custom_dataset.png +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/install/requirements_py3.11.txt +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/install.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/setup.cfg +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/conftest.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/pytest.ini +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/test_bench_runner.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/test_chroma.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/test_data_source.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/test_dataset.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/test_elasticsearch_cloud.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/test_models.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/test_rate_runner.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/test_redis.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/test_utils.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/ut_cases.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/__init__.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/__main__.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/__init__.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/assembler.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/cases.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/aliyun_elasticsearch/aliyun_elasticsearch.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/aliyun_elasticsearch/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/aliyun_opensearch/aliyun_opensearch.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/aliyun_opensearch/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/alloydb/alloydb.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/alloydb/cli.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/alloydb/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/aws_opensearch/aws_opensearch.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/aws_opensearch/cli.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/aws_opensearch/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/aws_opensearch/run.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/chroma/chroma.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/chroma/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/clickhouse/cli.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/clickhouse/clickhouse.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/clickhouse/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/elastic_cloud/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/elastic_cloud/elastic_cloud.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/mariadb/cli.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/mariadb/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/mariadb/mariadb.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/memorydb/cli.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/memorydb/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/memorydb/memorydb.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/milvus/cli.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/milvus/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/milvus/milvus.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/mongodb/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/mongodb/mongodb.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgdiskann/cli.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgdiskann/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgdiskann/pgdiskann.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgvecto_rs/cli.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgvecto_rs/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgvecto_rs/pgvecto_rs.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgvector/cli.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgvector/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgvector/pgvector.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgvectorscale/cli.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgvectorscale/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgvectorscale/pgvectorscale.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pinecone/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pinecone/pinecone.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/qdrant_cloud/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/qdrant_cloud/qdrant_cloud.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/redis/cli.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/redis/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/redis/redis.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/test/cli.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/test/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/test/test.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/tidb/cli.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/tidb/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/tidb/tidb.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/vespa/cli.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/vespa/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/vespa/util.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/vespa/vespa.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/weaviate_cloud/cli.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/weaviate_cloud/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/weaviate_cloud/weaviate_cloud.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/zilliz_cloud/cli.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/zilliz_cloud/config.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/zilliz_cloud/zilliz_cloud.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/data_source.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/result_collector.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/runner/__init__.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/runner/mp_runner.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/runner/rate_runner.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/runner/read_write_runner.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/runner/util.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/task_runner.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/utils.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/base.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/cli/__init__.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/config-files/sample_config.yml +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/custom/custom_case.json +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/check_results/charts.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/check_results/data.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/check_results/expanderStyle.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/check_results/filters.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/check_results/footer.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/check_results/headerIcon.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/check_results/nav.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/check_results/priceTable.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/check_results/stPageConfig.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/concurrent/charts.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/custom/displayCustomCase.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/custom/displaypPrams.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/custom/getCustomConfig.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/custom/initStyle.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/get_results/saveAsImage.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/run_test/autoRefresh.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/run_test/caseSelector.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/run_test/dbConfigSetting.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/run_test/dbSelector.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/run_test/generateTasks.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/run_test/hideSidebar.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/run_test/initStyle.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/run_test/submitTask.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/tables/data.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/config/dbPrices.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/pages/concurrent.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/pages/custom.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/pages/quries_per_dollar.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/pages/run_test.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/pages/tables.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/utils.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/vdb_benchmark.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/interface.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/log_util.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/metric.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/ElasticCloud/result_20230727_standard_elasticcloud.json +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/ElasticCloud/result_20230808_standard_elasticcloud.json +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/Milvus/result_20230727_standard_milvus.json +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/Milvus/result_20230808_standard_milvus.json +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/PgVector/result_20230727_standard_pgvector.json +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/PgVector/result_20230808_standard_pgvector.json +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/Pinecone/result_20230727_standard_pinecone.json +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/Pinecone/result_20230808_standard_pinecone.json +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/QdrantCloud/result_20230727_standard_qdrantcloud.json +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/QdrantCloud/result_20230808_standard_qdrantcloud.json +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/WeaviateCloud/result_20230727_standard_weaviatecloud.json +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/WeaviateCloud/result_20230808_standard_weaviatecloud.json +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/ZillizCloud/result_20230727_standard_zillizcloud.json +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/ZillizCloud/result_20230808_standard_zillizcloud.json +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/ZillizCloud/result_20240105_standard_202401_zillizcloud.json +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/dbPrices.json +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/getLeaderboardData.py +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/leaderboard.json +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench.egg-info/dependency_links.txt +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench.egg-info/entry_points.txt +0 -0
- {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/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: 0.0.
|
3
|
+
Version: 0.0.28
|
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
|
@@ -52,6 +52,7 @@ Requires-Dist: mariadb; extra == "all"
|
|
52
52
|
Requires-Dist: PyMySQL; extra == "all"
|
53
53
|
Requires-Dist: clickhouse-connect; extra == "all"
|
54
54
|
Requires-Dist: pyvespa; extra == "all"
|
55
|
+
Requires-Dist: lancedb; extra == "all"
|
55
56
|
Provides-Extra: qdrant
|
56
57
|
Requires-Dist: qdrant-client; extra == "qdrant"
|
57
58
|
Provides-Extra: pinecone
|
@@ -87,6 +88,8 @@ Provides-Extra: clickhouse
|
|
87
88
|
Requires-Dist: clickhouse-connect; extra == "clickhouse"
|
88
89
|
Provides-Extra: vespa
|
89
90
|
Requires-Dist: pyvespa; extra == "vespa"
|
91
|
+
Provides-Extra: lancedb
|
92
|
+
Requires-Dist: lancedb; extra == "lancedb"
|
90
93
|
Dynamic: license-file
|
91
94
|
|
92
95
|
# VectorDBBench: A Benchmark Tool for VectorDB
|
@@ -358,13 +361,13 @@ pip install -e '.[pinecone]'
|
|
358
361
|
```
|
359
362
|
### Run test server
|
360
363
|
```
|
361
|
-
|
364
|
+
python -m vectordb_bench
|
362
365
|
```
|
363
366
|
|
364
367
|
OR:
|
365
368
|
|
366
369
|
```shell
|
367
|
-
|
370
|
+
init_bench
|
368
371
|
```
|
369
372
|
|
370
373
|
OR:
|
@@ -381,13 +384,13 @@ After reopen the repository in container, run `python -m vectordb_bench` in the
|
|
381
384
|
|
382
385
|
### Check coding styles
|
383
386
|
```shell
|
384
|
-
|
387
|
+
make lint
|
385
388
|
```
|
386
389
|
|
387
390
|
To fix the coding styles automatically
|
388
391
|
|
389
392
|
```shell
|
390
|
-
|
393
|
+
make format
|
391
394
|
```
|
392
395
|
|
393
396
|
## How does it work?
|
@@ -267,13 +267,13 @@ pip install -e '.[pinecone]'
|
|
267
267
|
```
|
268
268
|
### Run test server
|
269
269
|
```
|
270
|
-
|
270
|
+
python -m vectordb_bench
|
271
271
|
```
|
272
272
|
|
273
273
|
OR:
|
274
274
|
|
275
275
|
```shell
|
276
|
-
|
276
|
+
init_bench
|
277
277
|
```
|
278
278
|
|
279
279
|
OR:
|
@@ -290,13 +290,13 @@ After reopen the repository in container, run `python -m vectordb_bench` in the
|
|
290
290
|
|
291
291
|
### Check coding styles
|
292
292
|
```shell
|
293
|
-
|
293
|
+
make lint
|
294
294
|
```
|
295
295
|
|
296
296
|
To fix the coding styles automatically
|
297
297
|
|
298
298
|
```shell
|
299
|
-
|
299
|
+
make format
|
300
300
|
```
|
301
301
|
|
302
302
|
## How does it work?
|
@@ -72,6 +72,7 @@ all = [
|
|
72
72
|
"PyMySQL",
|
73
73
|
"clickhouse-connect",
|
74
74
|
"pyvespa",
|
75
|
+
"lancedb",
|
75
76
|
]
|
76
77
|
|
77
78
|
qdrant = [ "qdrant-client" ]
|
@@ -94,6 +95,7 @@ mariadb = [ "mariadb" ]
|
|
94
95
|
tidb = [ "PyMySQL" ]
|
95
96
|
clickhouse = [ "clickhouse-connect" ]
|
96
97
|
vespa = [ "pyvespa" ]
|
98
|
+
lancedb = [ "lancedb" ]
|
97
99
|
|
98
100
|
[project.urls]
|
99
101
|
"repository" = "https://github.com/zilliztech/VectorDBBench"
|
@@ -45,9 +45,10 @@ class DB(Enum):
|
|
45
45
|
TiDB = "TiDB"
|
46
46
|
Clickhouse = "Clickhouse"
|
47
47
|
Vespa = "Vespa"
|
48
|
+
LanceDB = "LanceDB"
|
48
49
|
|
49
50
|
@property
|
50
|
-
def init_cls(self) -> type[VectorDB]: # noqa: PLR0911, PLR0912, C901
|
51
|
+
def init_cls(self) -> type[VectorDB]: # noqa: PLR0911, PLR0912, C901, PLR0915
|
51
52
|
"""Import while in use"""
|
52
53
|
if self == DB.Milvus:
|
53
54
|
from .milvus.milvus import Milvus
|
@@ -164,11 +165,16 @@ class DB(Enum):
|
|
164
165
|
|
165
166
|
return Vespa
|
166
167
|
|
168
|
+
if self == DB.LanceDB:
|
169
|
+
from .lancedb.lancedb import LanceDB
|
170
|
+
|
171
|
+
return LanceDB
|
172
|
+
|
167
173
|
msg = f"Unknown DB: {self.name}"
|
168
174
|
raise ValueError(msg)
|
169
175
|
|
170
176
|
@property
|
171
|
-
def config_cls(self) -> type[DBConfig]: # noqa: PLR0911, PLR0912, C901
|
177
|
+
def config_cls(self) -> type[DBConfig]: # noqa: PLR0911, PLR0912, C901, PLR0915
|
172
178
|
"""Import while in use"""
|
173
179
|
if self == DB.Milvus:
|
174
180
|
from .milvus.config import MilvusConfig
|
@@ -285,6 +291,11 @@ class DB(Enum):
|
|
285
291
|
|
286
292
|
return VespaConfig
|
287
293
|
|
294
|
+
if self == DB.LanceDB:
|
295
|
+
from .lancedb.config import LanceDBConfig
|
296
|
+
|
297
|
+
return LanceDBConfig
|
298
|
+
|
288
299
|
msg = f"Unknown DB: {self.name}"
|
289
300
|
raise ValueError(msg)
|
290
301
|
|
@@ -382,6 +393,11 @@ class DB(Enum):
|
|
382
393
|
|
383
394
|
return VespaHNSWConfig
|
384
395
|
|
396
|
+
if self == DB.LanceDB:
|
397
|
+
from .lancedb.config import _lancedb_case_config
|
398
|
+
|
399
|
+
return _lancedb_case_config.get(index_type)
|
400
|
+
|
385
401
|
# DB.Pinecone, DB.Chroma, DB.Redis
|
386
402
|
return EmptyDBCaseConfig
|
387
403
|
|
@@ -0,0 +1,92 @@
|
|
1
|
+
from typing import Annotated, Unpack
|
2
|
+
|
3
|
+
import click
|
4
|
+
from pydantic import SecretStr
|
5
|
+
|
6
|
+
from ....cli.cli import (
|
7
|
+
CommonTypedDict,
|
8
|
+
cli,
|
9
|
+
click_parameter_decorators_from_typed_dict,
|
10
|
+
run,
|
11
|
+
)
|
12
|
+
from .. import DB
|
13
|
+
from ..api import IndexType
|
14
|
+
|
15
|
+
|
16
|
+
class LanceDBTypedDict(CommonTypedDict):
|
17
|
+
uri: Annotated[
|
18
|
+
str,
|
19
|
+
click.option("--uri", type=str, help="URI connection string", required=True),
|
20
|
+
]
|
21
|
+
token: Annotated[
|
22
|
+
str | None,
|
23
|
+
click.option("--token", type=str, help="Authentication token", required=False),
|
24
|
+
]
|
25
|
+
|
26
|
+
|
27
|
+
@cli.command()
|
28
|
+
@click_parameter_decorators_from_typed_dict(LanceDBTypedDict)
|
29
|
+
def LanceDB(**parameters: Unpack[LanceDBTypedDict]):
|
30
|
+
from .config import LanceDBConfig, _lancedb_case_config
|
31
|
+
|
32
|
+
run(
|
33
|
+
db=DB.LanceDB,
|
34
|
+
db_config=LanceDBConfig(
|
35
|
+
db_label=parameters["db_label"],
|
36
|
+
uri=parameters["uri"],
|
37
|
+
token=SecretStr(parameters["token"]) if parameters.get("token") else None,
|
38
|
+
),
|
39
|
+
db_case_config=_lancedb_case_config.get("NONE")(),
|
40
|
+
**parameters,
|
41
|
+
)
|
42
|
+
|
43
|
+
|
44
|
+
@cli.command()
|
45
|
+
@click_parameter_decorators_from_typed_dict(LanceDBTypedDict)
|
46
|
+
def LanceDBAutoIndex(**parameters: Unpack[LanceDBTypedDict]):
|
47
|
+
from .config import LanceDBConfig, _lancedb_case_config
|
48
|
+
|
49
|
+
run(
|
50
|
+
db=DB.LanceDB,
|
51
|
+
db_config=LanceDBConfig(
|
52
|
+
db_label=parameters["db_label"],
|
53
|
+
uri=parameters["uri"],
|
54
|
+
token=SecretStr(parameters["token"]) if parameters.get("token") else None,
|
55
|
+
),
|
56
|
+
db_case_config=_lancedb_case_config.get(IndexType.AUTOINDEX)(),
|
57
|
+
**parameters,
|
58
|
+
)
|
59
|
+
|
60
|
+
|
61
|
+
@cli.command()
|
62
|
+
@click_parameter_decorators_from_typed_dict(LanceDBTypedDict)
|
63
|
+
def LanceDBIVFPQ(**parameters: Unpack[LanceDBTypedDict]):
|
64
|
+
from .config import LanceDBConfig, _lancedb_case_config
|
65
|
+
|
66
|
+
run(
|
67
|
+
db=DB.LanceDB,
|
68
|
+
db_config=LanceDBConfig(
|
69
|
+
db_label=parameters["db_label"],
|
70
|
+
uri=parameters["uri"],
|
71
|
+
token=SecretStr(parameters["token"]) if parameters.get("token") else None,
|
72
|
+
),
|
73
|
+
db_case_config=_lancedb_case_config.get(IndexType.IVFPQ)(),
|
74
|
+
**parameters,
|
75
|
+
)
|
76
|
+
|
77
|
+
|
78
|
+
@cli.command()
|
79
|
+
@click_parameter_decorators_from_typed_dict(LanceDBTypedDict)
|
80
|
+
def LanceDBHNSW(**parameters: Unpack[LanceDBTypedDict]):
|
81
|
+
from .config import LanceDBConfig, _lancedb_case_config
|
82
|
+
|
83
|
+
run(
|
84
|
+
db=DB.LanceDB,
|
85
|
+
db_config=LanceDBConfig(
|
86
|
+
db_label=parameters["db_label"],
|
87
|
+
uri=parameters["uri"],
|
88
|
+
token=SecretStr(parameters["token"]) if parameters.get("token") else None,
|
89
|
+
),
|
90
|
+
db_case_config=_lancedb_case_config.get(IndexType.HNSW)(),
|
91
|
+
**parameters,
|
92
|
+
)
|
@@ -0,0 +1,103 @@
|
|
1
|
+
from pydantic import BaseModel, SecretStr
|
2
|
+
|
3
|
+
from ..api import DBCaseConfig, DBConfig, IndexType, MetricType
|
4
|
+
|
5
|
+
|
6
|
+
class LanceDBConfig(DBConfig):
|
7
|
+
"""LanceDB connection configuration."""
|
8
|
+
|
9
|
+
db_label: str
|
10
|
+
uri: str
|
11
|
+
token: SecretStr | None = None
|
12
|
+
|
13
|
+
def to_dict(self) -> dict:
|
14
|
+
return {
|
15
|
+
"uri": self.uri,
|
16
|
+
"token": self.token.get_secret_value() if self.token else None,
|
17
|
+
}
|
18
|
+
|
19
|
+
|
20
|
+
class LanceDBIndexConfig(BaseModel, DBCaseConfig):
|
21
|
+
index: IndexType = IndexType.IVFPQ
|
22
|
+
metric_type: MetricType = MetricType.L2
|
23
|
+
num_partitions: int = 0
|
24
|
+
num_sub_vectors: int = 0
|
25
|
+
nbits: int = 8 # Must be 4 or 8
|
26
|
+
sample_rate: int = 256
|
27
|
+
max_iterations: int = 50
|
28
|
+
|
29
|
+
def index_param(self) -> dict:
|
30
|
+
if self.index not in [
|
31
|
+
IndexType.IVFPQ,
|
32
|
+
IndexType.HNSW,
|
33
|
+
IndexType.AUTOINDEX,
|
34
|
+
IndexType.NONE,
|
35
|
+
]:
|
36
|
+
msg = f"Index type {self.index} is not supported for LanceDB!"
|
37
|
+
raise ValueError(msg)
|
38
|
+
|
39
|
+
# See https://lancedb.github.io/lancedb/python/python/#lancedb.table.Table.create_index
|
40
|
+
params = {
|
41
|
+
"metric": self.parse_metric(),
|
42
|
+
"num_bits": self.nbits,
|
43
|
+
"sample_rate": self.sample_rate,
|
44
|
+
"max_iterations": self.max_iterations,
|
45
|
+
}
|
46
|
+
|
47
|
+
if self.num_partitions > 0:
|
48
|
+
params["num_partitions"] = self.num_partitions
|
49
|
+
if self.num_sub_vectors > 0:
|
50
|
+
params["num_sub_vectors"] = self.num_sub_vectors
|
51
|
+
|
52
|
+
return params
|
53
|
+
|
54
|
+
def search_param(self) -> dict:
|
55
|
+
pass
|
56
|
+
|
57
|
+
def parse_metric(self) -> str:
|
58
|
+
if self.metric_type in [MetricType.L2, MetricType.COSINE]:
|
59
|
+
return self.metric_type.value.lower()
|
60
|
+
if self.metric_type in [MetricType.IP, MetricType.DP]:
|
61
|
+
return "dot"
|
62
|
+
msg = f"Metric type {self.metric_type} is not supported for LanceDB!"
|
63
|
+
raise ValueError(msg)
|
64
|
+
|
65
|
+
|
66
|
+
class LanceDBNoIndexConfig(LanceDBIndexConfig):
|
67
|
+
index: IndexType = IndexType.NONE
|
68
|
+
|
69
|
+
def index_param(self) -> dict:
|
70
|
+
return {}
|
71
|
+
|
72
|
+
|
73
|
+
class LanceDBAutoIndexConfig(LanceDBIndexConfig):
|
74
|
+
index: IndexType = IndexType.AUTOINDEX
|
75
|
+
|
76
|
+
def index_param(self) -> dict:
|
77
|
+
return {}
|
78
|
+
|
79
|
+
|
80
|
+
class LanceDBHNSWIndexConfig(LanceDBIndexConfig):
|
81
|
+
index: IndexType = IndexType.HNSW
|
82
|
+
m: int = 0
|
83
|
+
ef_construction: int = 0
|
84
|
+
|
85
|
+
def index_param(self) -> dict:
|
86
|
+
params = LanceDBIndexConfig.index_param(self)
|
87
|
+
|
88
|
+
# See https://lancedb.github.io/lancedb/python/python/#lancedb.index.HnswSq
|
89
|
+
params["index_type"] = "IVF_HNSW_SQ"
|
90
|
+
if self.m > 0:
|
91
|
+
params["m"] = self.m
|
92
|
+
if self.ef_construction > 0:
|
93
|
+
params["ef_construction"] = self.ef_construction
|
94
|
+
|
95
|
+
return params
|
96
|
+
|
97
|
+
|
98
|
+
_lancedb_case_config = {
|
99
|
+
IndexType.IVFPQ: LanceDBIndexConfig,
|
100
|
+
IndexType.AUTOINDEX: LanceDBAutoIndexConfig,
|
101
|
+
IndexType.HNSW: LanceDBHNSWIndexConfig,
|
102
|
+
IndexType.NONE: LanceDBNoIndexConfig,
|
103
|
+
}
|
@@ -0,0 +1,91 @@
|
|
1
|
+
import logging
|
2
|
+
from contextlib import contextmanager
|
3
|
+
|
4
|
+
import lancedb
|
5
|
+
import pyarrow as pa
|
6
|
+
from lancedb.pydantic import LanceModel
|
7
|
+
|
8
|
+
from ..api import IndexType, VectorDB
|
9
|
+
from .config import LanceDBConfig, LanceDBIndexConfig
|
10
|
+
|
11
|
+
log = logging.getLogger(__name__)
|
12
|
+
|
13
|
+
|
14
|
+
class VectorModel(LanceModel):
|
15
|
+
id: int
|
16
|
+
vector: list[float]
|
17
|
+
|
18
|
+
|
19
|
+
class LanceDB(VectorDB):
|
20
|
+
def __init__(
|
21
|
+
self,
|
22
|
+
dim: int,
|
23
|
+
db_config: LanceDBConfig,
|
24
|
+
db_case_config: LanceDBIndexConfig,
|
25
|
+
collection_name: str = "vector_bench_test",
|
26
|
+
drop_old: bool = False,
|
27
|
+
**kwargs,
|
28
|
+
):
|
29
|
+
self.name = "LanceDB"
|
30
|
+
self.db_config = db_config
|
31
|
+
self.case_config = db_case_config
|
32
|
+
self.table_name = collection_name
|
33
|
+
self.dim = dim
|
34
|
+
self.uri = db_config["uri"]
|
35
|
+
|
36
|
+
db = lancedb.connect(self.uri)
|
37
|
+
|
38
|
+
if drop_old:
|
39
|
+
try:
|
40
|
+
db.drop_table(self.table_name)
|
41
|
+
except Exception as e:
|
42
|
+
log.warning(f"Failed to drop table {self.table_name}: {e}")
|
43
|
+
|
44
|
+
try:
|
45
|
+
db.open_table(self.table_name)
|
46
|
+
except Exception:
|
47
|
+
schema = pa.schema(
|
48
|
+
[pa.field("id", pa.int64()), pa.field("vector", pa.list_(pa.float64(), list_size=self.dim))]
|
49
|
+
)
|
50
|
+
db.create_table(self.table_name, schema=schema, mode="overwrite")
|
51
|
+
|
52
|
+
@contextmanager
|
53
|
+
def init(self):
|
54
|
+
self.db = lancedb.connect(self.uri)
|
55
|
+
self.table = self.db.open_table(self.table_name)
|
56
|
+
yield
|
57
|
+
self.db = None
|
58
|
+
self.table = None
|
59
|
+
|
60
|
+
def insert_embeddings(
|
61
|
+
self,
|
62
|
+
embeddings: list[list[float]],
|
63
|
+
metadata: list[int],
|
64
|
+
) -> tuple[int, Exception | None]:
|
65
|
+
try:
|
66
|
+
data = [{"id": meta, "vector": emb} for meta, emb in zip(metadata, embeddings, strict=False)]
|
67
|
+
self.table.add(data)
|
68
|
+
return len(metadata), None
|
69
|
+
except Exception as e:
|
70
|
+
log.warning(f"Failed to insert data into LanceDB table ({self.table_name}), error: {e}")
|
71
|
+
return 0, e
|
72
|
+
|
73
|
+
def search_embedding(
|
74
|
+
self,
|
75
|
+
query: list[float],
|
76
|
+
k: int = 100,
|
77
|
+
filters: dict | None = None,
|
78
|
+
) -> list[int]:
|
79
|
+
if filters:
|
80
|
+
results = self.table.search(query).where(f"id >= {filters['id']}", prefilter=True).limit(k).to_list()
|
81
|
+
else:
|
82
|
+
results = self.table.search(query).limit(k).to_list()
|
83
|
+
return [int(result["id"]) for result in results]
|
84
|
+
|
85
|
+
def optimize(self, data_size: int | None = None):
|
86
|
+
if self.table and hasattr(self, "case_config") and self.case_config.index != IndexType.NONE:
|
87
|
+
log.info(f"Creating index for LanceDB table ({self.table_name})")
|
88
|
+
self.table.create_index(**self.case_config.index_param())
|
89
|
+
# Better recall with IVF_PQ (though still bad) but breaks HNSW: https://github.com/lancedb/lancedb/issues/2369
|
90
|
+
if self.case_config.index in (IndexType.IVFPQ, IndexType.AUTOINDEX):
|
91
|
+
self.table.optimize()
|
@@ -220,10 +220,12 @@ class DatasetManager(BaseModel):
|
|
220
220
|
train_files = utils.compose_train_files(file_count, use_shuffled)
|
221
221
|
all_files = train_files
|
222
222
|
|
223
|
-
|
223
|
+
test_file = "test.parquet"
|
224
|
+
all_files.extend([test_file])
|
225
|
+
gt_file = None
|
224
226
|
if self.data.with_gt:
|
225
|
-
gt_file
|
226
|
-
all_files.extend([gt_file
|
227
|
+
gt_file = utils.compose_gt_file(filters)
|
228
|
+
all_files.extend([gt_file])
|
227
229
|
|
228
230
|
if not self.data.is_custom:
|
229
231
|
source.reader().read(
|
@@ -232,8 +234,10 @@ class DatasetManager(BaseModel):
|
|
232
234
|
local_ds_root=self.data_dir,
|
233
235
|
)
|
234
236
|
|
235
|
-
if
|
237
|
+
if test_file is not None:
|
236
238
|
self.test_data = self._read_file(test_file)
|
239
|
+
|
240
|
+
if gt_file is not None:
|
237
241
|
self.gt_data = self._read_file(gt_file)
|
238
242
|
|
239
243
|
prefix = "shuffle_train" if use_shuffled else "train"
|
{vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/runner/serial_runner.py
RENAMED
@@ -209,7 +209,8 @@ class SerialSearchRunner:
|
|
209
209
|
ideal_dcg = get_ideal_dcg(self.k)
|
210
210
|
|
211
211
|
log.debug(f"test dataset size: {len(test_data)}")
|
212
|
-
|
212
|
+
if ground_truth is not None:
|
213
|
+
log.debug(f"ground truth size: {ground_truth.columns}, shape: {ground_truth.shape}")
|
213
214
|
|
214
215
|
latencies, recalls, ndcgs = [], [], []
|
215
216
|
for idx, emb in enumerate(test_data):
|
@@ -228,9 +229,13 @@ class SerialSearchRunner:
|
|
228
229
|
|
229
230
|
latencies.append(time.perf_counter() - s)
|
230
231
|
|
231
|
-
|
232
|
-
|
233
|
-
|
232
|
+
if ground_truth is not None:
|
233
|
+
gt = ground_truth["neighbors_id"][idx]
|
234
|
+
recalls.append(calc_recall(self.k, gt[: self.k], results))
|
235
|
+
ndcgs.append(calc_ndcg(gt[: self.k], results, ideal_dcg))
|
236
|
+
else:
|
237
|
+
recalls.append(0)
|
238
|
+
ndcgs.append(0)
|
234
239
|
|
235
240
|
if len(latencies) % 100 == 0:
|
236
241
|
log.debug(
|
@@ -405,6 +405,7 @@ class CommonTypedDict(TypedDict):
|
|
405
405
|
show_default=True,
|
406
406
|
),
|
407
407
|
]
|
408
|
+
task_label: Annotated[str, click.option("--task-label", help="Task label")]
|
408
409
|
|
409
410
|
|
410
411
|
class HNSWBaseTypedDict(TypedDict):
|
@@ -499,10 +500,11 @@ def run(
|
|
499
500
|
parameters["search_concurrent"],
|
500
501
|
),
|
501
502
|
)
|
503
|
+
task_label = parameters["task_label"]
|
502
504
|
|
503
505
|
log.info(f"Task:\n{pformat(task)}\n")
|
504
506
|
if not parameters["dry_run"]:
|
505
|
-
benchmark_runner.run([task])
|
507
|
+
benchmark_runner.run([task], task_label)
|
506
508
|
time.sleep(5)
|
507
509
|
if global_result_future:
|
508
510
|
wait([global_result_future])
|
@@ -1,6 +1,7 @@
|
|
1
1
|
from ..backend.clients.alloydb.cli import AlloyDBScaNN
|
2
2
|
from ..backend.clients.aws_opensearch.cli import AWSOpenSearch
|
3
3
|
from ..backend.clients.clickhouse.cli import Clickhouse
|
4
|
+
from ..backend.clients.lancedb.cli import LanceDB
|
4
5
|
from ..backend.clients.mariadb.cli import MariaDBHNSW
|
5
6
|
from ..backend.clients.memorydb.cli import MemoryDB
|
6
7
|
from ..backend.clients.milvus.cli import MilvusAutoIndex
|
@@ -33,6 +34,7 @@ cli.add_command(MariaDBHNSW)
|
|
33
34
|
cli.add_command(TiDB)
|
34
35
|
cli.add_command(Clickhouse)
|
35
36
|
cli.add_command(Vespa)
|
37
|
+
cli.add_command(LanceDB)
|
36
38
|
|
37
39
|
|
38
40
|
if __name__ == "__main__":
|
{vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/config/dbCaseConfigs.py
RENAMED
@@ -1491,6 +1491,127 @@ VespaLoadingConfig = [
|
|
1491
1491
|
]
|
1492
1492
|
VespaPerformanceConfig = VespaLoadingConfig
|
1493
1493
|
|
1494
|
+
CaseConfigParamInput_IndexType_LanceDB = CaseConfigInput(
|
1495
|
+
label=CaseConfigParamType.IndexType,
|
1496
|
+
inputHelp="AUTOINDEX = IVFPQ with default parameters",
|
1497
|
+
inputType=InputType.Option,
|
1498
|
+
inputConfig={
|
1499
|
+
"options": [
|
1500
|
+
IndexType.NONE.value,
|
1501
|
+
IndexType.AUTOINDEX.value,
|
1502
|
+
IndexType.IVFPQ.value,
|
1503
|
+
IndexType.HNSW.value,
|
1504
|
+
],
|
1505
|
+
},
|
1506
|
+
)
|
1507
|
+
|
1508
|
+
CaseConfigParamInput_num_partitions_LanceDB = CaseConfigInput(
|
1509
|
+
label=CaseConfigParamType.num_partitions,
|
1510
|
+
displayLabel="Number of Partitions",
|
1511
|
+
inputHelp="Number of partitions (clusters) for IVF_PQ. Default (when 0): sqrt(num_rows)",
|
1512
|
+
inputType=InputType.Number,
|
1513
|
+
inputConfig={
|
1514
|
+
"min": 0,
|
1515
|
+
"max": 10000,
|
1516
|
+
"value": 0,
|
1517
|
+
},
|
1518
|
+
isDisplayed=lambda config: config.get(CaseConfigParamType.IndexType, None) == IndexType.IVFPQ.value
|
1519
|
+
or config.get(CaseConfigParamType.IndexType, None) == IndexType.HNSW.value,
|
1520
|
+
)
|
1521
|
+
|
1522
|
+
CaseConfigParamInput_num_sub_vectors_LanceDB = CaseConfigInput(
|
1523
|
+
label=CaseConfigParamType.num_sub_vectors,
|
1524
|
+
displayLabel="Number of Sub-vectors",
|
1525
|
+
inputHelp="Number of sub-vectors for PQ. Default (when 0): dim/16 or dim/8",
|
1526
|
+
inputType=InputType.Number,
|
1527
|
+
inputConfig={
|
1528
|
+
"min": 0,
|
1529
|
+
"max": 1000,
|
1530
|
+
"value": 0,
|
1531
|
+
},
|
1532
|
+
isDisplayed=lambda config: config.get(CaseConfigParamType.IndexType, None) == IndexType.IVFPQ.value
|
1533
|
+
or config.get(CaseConfigParamType.IndexType, None) == IndexType.HNSW.value,
|
1534
|
+
)
|
1535
|
+
|
1536
|
+
CaseConfigParamInput_num_bits_LanceDB = CaseConfigInput(
|
1537
|
+
label=CaseConfigParamType.nbits,
|
1538
|
+
displayLabel="Number of Bits",
|
1539
|
+
inputHelp="Number of bits per sub-vector.",
|
1540
|
+
inputType=InputType.Option,
|
1541
|
+
inputConfig={
|
1542
|
+
"options": [4, 8],
|
1543
|
+
},
|
1544
|
+
isDisplayed=lambda config: config.get(CaseConfigParamType.IndexType, None) == IndexType.IVFPQ.value
|
1545
|
+
or config.get(CaseConfigParamType.IndexType, None) == IndexType.HNSW.value,
|
1546
|
+
)
|
1547
|
+
|
1548
|
+
CaseConfigParamInput_sample_rate_LanceDB = CaseConfigInput(
|
1549
|
+
label=CaseConfigParamType.sample_rate,
|
1550
|
+
displayLabel="Sample Rate",
|
1551
|
+
inputHelp="Sample rate for training. Higher values are more accurate but slower",
|
1552
|
+
inputType=InputType.Number,
|
1553
|
+
inputConfig={
|
1554
|
+
"min": 16,
|
1555
|
+
"max": 1024,
|
1556
|
+
"value": 256,
|
1557
|
+
},
|
1558
|
+
isDisplayed=lambda config: config.get(CaseConfigParamType.IndexType, None) == IndexType.IVFPQ.value
|
1559
|
+
or config.get(CaseConfigParamType.IndexType, None) == IndexType.HNSW.value,
|
1560
|
+
)
|
1561
|
+
|
1562
|
+
CaseConfigParamInput_max_iterations_LanceDB = CaseConfigInput(
|
1563
|
+
label=CaseConfigParamType.max_iterations,
|
1564
|
+
displayLabel="Max Iterations",
|
1565
|
+
inputHelp="Maximum iterations for k-means clustering",
|
1566
|
+
inputType=InputType.Number,
|
1567
|
+
inputConfig={
|
1568
|
+
"min": 10,
|
1569
|
+
"max": 200,
|
1570
|
+
"value": 50,
|
1571
|
+
},
|
1572
|
+
isDisplayed=lambda config: config.get(CaseConfigParamType.IndexType, None) == IndexType.IVFPQ.value
|
1573
|
+
or config.get(CaseConfigParamType.IndexType, None) == IndexType.HNSW.value,
|
1574
|
+
)
|
1575
|
+
|
1576
|
+
CaseConfigParamInput_m_LanceDB = CaseConfigInput(
|
1577
|
+
label=CaseConfigParamType.m,
|
1578
|
+
displayLabel="m",
|
1579
|
+
inputHelp="m parameter in HNSW",
|
1580
|
+
inputType=InputType.Number,
|
1581
|
+
inputConfig={
|
1582
|
+
"min": 0,
|
1583
|
+
"max": 1000,
|
1584
|
+
"value": 0,
|
1585
|
+
},
|
1586
|
+
isDisplayed=lambda config: config.get(CaseConfigParamType.IndexType, None) == IndexType.HNSW.value,
|
1587
|
+
)
|
1588
|
+
|
1589
|
+
CaseConfigParamInput_ef_construction_LanceDB = CaseConfigInput(
|
1590
|
+
label=CaseConfigParamType.ef_construction,
|
1591
|
+
displayLabel="ef_construction",
|
1592
|
+
inputHelp="ef_construction parameter in HNSW",
|
1593
|
+
inputType=InputType.Number,
|
1594
|
+
inputConfig={
|
1595
|
+
"min": 0,
|
1596
|
+
"max": 1000,
|
1597
|
+
"value": 0,
|
1598
|
+
},
|
1599
|
+
isDisplayed=lambda config: config.get(CaseConfigParamType.IndexType, None) == IndexType.HNSW.value,
|
1600
|
+
)
|
1601
|
+
|
1602
|
+
LanceDBLoadConfig = [
|
1603
|
+
CaseConfigParamInput_IndexType_LanceDB,
|
1604
|
+
CaseConfigParamInput_num_partitions_LanceDB,
|
1605
|
+
CaseConfigParamInput_num_sub_vectors_LanceDB,
|
1606
|
+
CaseConfigParamInput_num_bits_LanceDB,
|
1607
|
+
CaseConfigParamInput_sample_rate_LanceDB,
|
1608
|
+
CaseConfigParamInput_max_iterations_LanceDB,
|
1609
|
+
CaseConfigParamInput_m_LanceDB,
|
1610
|
+
CaseConfigParamInput_ef_construction_LanceDB,
|
1611
|
+
]
|
1612
|
+
|
1613
|
+
LanceDBPerformanceConfig = LanceDBLoadConfig
|
1614
|
+
|
1494
1615
|
CASE_CONFIG_MAP = {
|
1495
1616
|
DB.Milvus: {
|
1496
1617
|
CaseLabel.Load: MilvusLoadConfig,
|
@@ -1551,4 +1672,8 @@ CASE_CONFIG_MAP = {
|
|
1551
1672
|
CaseLabel.Load: VespaLoadingConfig,
|
1552
1673
|
CaseLabel.Performance: VespaPerformanceConfig,
|
1553
1674
|
},
|
1675
|
+
DB.LanceDB: {
|
1676
|
+
CaseLabel.Load: LanceDBLoadConfig,
|
1677
|
+
CaseLabel.Performance: LanceDBPerformanceConfig,
|
1678
|
+
},
|
1554
1679
|
}
|