vectordb-bench 1.0.4__tar.gz → 1.0.7__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.4 → vectordb_bench-1.0.7}/PKG-INFO +40 -8
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/README.md +39 -7
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/pyproject.toml +1 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/__init__.py +1 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/cases.py +45 -1
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/__init__.py +47 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/api.py +2 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/aws_opensearch/aws_opensearch.py +104 -40
- vectordb_bench-1.0.7/vectordb_bench/backend/clients/aws_opensearch/cli.py +192 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/aws_opensearch/config.py +27 -7
- vectordb_bench-1.0.7/vectordb_bench/backend/clients/hologres/cli.py +50 -0
- vectordb_bench-1.0.7/vectordb_bench/backend/clients/hologres/config.py +121 -0
- vectordb_bench-1.0.7/vectordb_bench/backend/clients/hologres/hologres.py +365 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/lancedb/lancedb.py +1 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/milvus/cli.py +29 -9
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/milvus/config.py +2 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/milvus/milvus.py +1 -1
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/oceanbase/cli.py +1 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/oceanbase/config.py +3 -1
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/oceanbase/oceanbase.py +20 -4
- {vectordb_bench-1.0.4/vectordb_bench/backend/clients/aws_opensearch → vectordb_bench-1.0.7/vectordb_bench/backend/clients/oss_opensearch}/cli.py +11 -11
- vectordb_bench-1.0.7/vectordb_bench/backend/clients/oss_opensearch/config.py +157 -0
- vectordb_bench-1.0.7/vectordb_bench/backend/clients/oss_opensearch/oss_opensearch.py +582 -0
- vectordb_bench-1.0.7/vectordb_bench/backend/clients/oss_opensearch/run.py +166 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/pgdiskann/cli.py +45 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/pgdiskann/config.py +16 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/pgdiskann/pgdiskann.py +94 -26
- vectordb_bench-1.0.7/vectordb_bench/backend/clients/s3_vectors/config.py +41 -0
- vectordb_bench-1.0.7/vectordb_bench/backend/clients/s3_vectors/s3_vectors.py +171 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/tidb/cli.py +0 -4
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/tidb/config.py +22 -2
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/zilliz_cloud/cli.py +14 -1
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/zilliz_cloud/config.py +4 -1
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/dataset.py +70 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/filter.py +17 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/runner/mp_runner.py +4 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/runner/rate_runner.py +23 -11
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/runner/read_write_runner.py +10 -9
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/runner/serial_runner.py +23 -7
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/task_runner.py +5 -4
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/cli/cli.py +36 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/cli/vectordbbench.py +4 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/check_results/filters.py +1 -4
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/check_results/nav.py +2 -1
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/concurrent/charts.py +5 -0
- vectordb_bench-1.0.7/vectordb_bench/frontend/components/label_filter/charts.py +60 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/streaming/data.py +7 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/welcome/welcomePrams.py +42 -4
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/config/dbCaseConfigs.py +142 -16
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/config/styles.py +4 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/pages/concurrent.py +1 -1
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/pages/custom.py +1 -1
- vectordb_bench-1.0.7/vectordb_bench/frontend/pages/int_filter.py +56 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/pages/streaming.py +16 -3
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/interface.py +5 -1
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/metric.py +7 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/models.py +39 -4
- vectordb_bench-1.0.7/vectordb_bench/results/S3Vectors/result_20250722_standard_s3vectors.json +2509 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/getLeaderboardDataV2.py +23 -2
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/leaderboard_v2.json +200 -0
- vectordb_bench-1.0.7/vectordb_bench/results/leaderboard_v2_streaming.json +128 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench.egg-info/PKG-INFO +40 -8
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench.egg-info/SOURCES.txt +26 -13
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/.devcontainer/Dockerfile +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/.devcontainer/devcontainer.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/.env.example +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/.github/workflows/publish_package_on_release.yml +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/.github/workflows/pull_request.yml +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/.gitignore +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/Dockerfile +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/LICENSE +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/Makefile +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/OWNERS +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/install/requirements_py3.11.txt +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/install.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/setup.cfg +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/tests/conftest.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/tests/pytest.ini +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/tests/test_bench_runner.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/tests/test_chroma.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/tests/test_data_source.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/tests/test_dataset.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/tests/test_elasticsearch_cloud.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/tests/test_models.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/tests/test_rate_runner.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/tests/test_redis.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/tests/test_utils.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/tests/ut_cases.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/__main__.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/__init__.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/assembler.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/aliyun_elasticsearch/aliyun_elasticsearch.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/aliyun_elasticsearch/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/aliyun_opensearch/aliyun_opensearch.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/aliyun_opensearch/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/alloydb/alloydb.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/alloydb/cli.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/alloydb/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/aws_opensearch/run.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/chroma/chroma.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/chroma/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/clickhouse/cli.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/clickhouse/clickhouse.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/clickhouse/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/elastic_cloud/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/elastic_cloud/elastic_cloud.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/lancedb/cli.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/lancedb/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/mariadb/cli.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/mariadb/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/mariadb/mariadb.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/memorydb/cli.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/memorydb/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/memorydb/memorydb.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/mongodb/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/mongodb/mongodb.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/pgvecto_rs/cli.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/pgvecto_rs/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/pgvecto_rs/pgvecto_rs.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/pgvector/cli.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/pgvector/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/pgvector/pgvector.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/pgvectorscale/cli.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/pgvectorscale/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/pgvectorscale/pgvectorscale.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/pinecone/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/pinecone/pinecone.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/qdrant_cloud/cli.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/qdrant_cloud/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/qdrant_cloud/qdrant_cloud.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/qdrant_local/cli.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/qdrant_local/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/qdrant_local/qdrant_local.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/redis/cli.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/redis/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/redis/redis.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/test/cli.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/test/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/test/test.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/tidb/tidb.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/vespa/cli.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/vespa/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/vespa/util.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/vespa/vespa.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/weaviate_cloud/cli.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/weaviate_cloud/config.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/weaviate_cloud/weaviate_cloud.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/clients/zilliz_cloud/zilliz_cloud.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/data_source.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/result_collector.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/runner/__init__.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/runner/util.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/backend/utils.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/base.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/cli/__init__.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/cli/batch_cli.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/config-files/batch_sample_config.yml +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/config-files/sample_config.yml +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/custom/custom_case.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7/vectordb_bench}/fig/custom_case_run_test.png +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7/vectordb_bench}/fig/custom_dataset.png +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7/vectordb_bench}/fig/homepage/bar-chart.png +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7/vectordb_bench}/fig/homepage/concurrent.png +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7/vectordb_bench}/fig/homepage/custom.png +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7/vectordb_bench}/fig/homepage/label_filter.png +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7/vectordb_bench}/fig/homepage/qp$.png +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7/vectordb_bench}/fig/homepage/run_test.png +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7/vectordb_bench}/fig/homepage/streaming.png +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7/vectordb_bench}/fig/homepage/table.png +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7/vectordb_bench}/fig/run_test_select_case.png +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7/vectordb_bench}/fig/run_test_select_db.png +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7/vectordb_bench}/fig/run_test_submit.png +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/check_results/charts.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/check_results/data.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/check_results/expanderStyle.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/check_results/footer.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/check_results/headerIcon.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/check_results/priceTable.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/check_results/stPageConfig.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/custom/displayCustomCase.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/custom/displaypPrams.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/custom/getCustomConfig.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/custom/initStyle.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/get_results/saveAsImage.py +0 -0
- {vectordb_bench-1.0.4/vectordb_bench/frontend/components/label_filter → vectordb_bench-1.0.7/vectordb_bench/frontend/components/int_filter}/charts.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/run_test/autoRefresh.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/run_test/caseSelector.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/run_test/dbConfigSetting.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/run_test/dbSelector.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/run_test/generateTasks.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/run_test/hideSidebar.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/run_test/initStyle.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/run_test/inputWidget.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/run_test/submitTask.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/streaming/charts.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/tables/data.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/welcome/explainPrams.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/components/welcome/pagestyle.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/config/dbPrices.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/pages/label_filter.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/pages/quries_per_dollar.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/pages/results.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/pages/run_test.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/pages/tables.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/utils.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/frontend/vdbbench.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/log_util.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/ElasticCloud/result_20230727_standard_elasticcloud.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/ElasticCloud/result_20230808_standard_elasticcloud.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/ElasticCloud/result_20250318_standard_elasticcloud.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/Milvus/result_20230727_standard_milvus.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/Milvus/result_20230808_standard_milvus.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/Milvus/result_20250509_standard_milvus.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/OpenSearch/result_20250224_standard_opensearch.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/PgVector/result_20230727_standard_pgvector.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/PgVector/result_20230808_standard_pgvector.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/Pinecone/result_20230727_standard_pinecone.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/Pinecone/result_20230808_standard_pinecone.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/Pinecone/result_20250124_standard_pinecone.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/QdrantCloud/result_20230727_standard_qdrantcloud.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/QdrantCloud/result_20230808_standard_qdrantcloud.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/QdrantCloud/result_20250602_standard_qdrantcloud.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/WeaviateCloud/result_20230727_standard_weaviatecloud.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/WeaviateCloud/result_20230808_standard_weaviatecloud.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/ZillizCloud/result_20250613_standard_zillizcloud.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/dbPrices.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/getLeaderboardData.py +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench/results/leaderboard.json +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench.egg-info/dependency_links.txt +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench.egg-info/entry_points.txt +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/vectordb_bench.egg-info/requires.txt +0 -0
- {vectordb_bench-1.0.4 → vectordb_bench-1.0.7}/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.7
|
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
|
@@ -153,6 +153,7 @@ All the database client supported
|
|
153
153
|
| tidb | `pip install vectordb-bench[tidb]` |
|
154
154
|
| vespa | `pip install vectordb-bench[vespa]` |
|
155
155
|
| oceanbase | `pip install vectordb-bench[oceanbase]` |
|
156
|
+
| hologres | `pip install vectordb-bench[hologres]` |
|
156
157
|
|
157
158
|
### Run
|
158
159
|
|
@@ -269,7 +270,7 @@ vectordbbench awsopensearch --db-label awsopensearch \
|
|
269
270
|
--m 16 --ef-construction 256 \
|
270
271
|
--host search-vector-db-prod-h4f6m4of6x7yp2rz7gdmots7w4.us-west-2.es.amazonaws.com --port 443 \
|
271
272
|
--user vector --password '<password>' \
|
272
|
-
--case-type Performance1536D5M --
|
273
|
+
--case-type Performance1536D5M --number-of-indexing-clients 10 \
|
273
274
|
--skip-load --num-concurrency 75
|
274
275
|
```
|
275
276
|
|
@@ -297,7 +298,7 @@ Options:
|
|
297
298
|
--force-merge-enabled BOOLEAN Whether to perform force merge operation
|
298
299
|
--flush-threshold-size TEXT Size threshold for flushing the transaction
|
299
300
|
log
|
300
|
-
--engine TEXT type of engine to use valid values [faiss, lucene]
|
301
|
+
--engine TEXT type of engine to use valid values [faiss, lucene, s3vector]
|
301
302
|
# Memory Management
|
302
303
|
--cb-threshold TEXT k-NN Memory circuit breaker threshold
|
303
304
|
|
@@ -372,6 +373,37 @@ Options:
|
|
372
373
|
--help Show this message and exit. Show this message and exit.
|
373
374
|
```
|
374
375
|
|
376
|
+
### Run Hologres from command line
|
377
|
+
|
378
|
+
Execute tests for the index types: HGraph.
|
379
|
+
|
380
|
+
```shell
|
381
|
+
vectordbbench hologreshgraph --host xxx --port xxx --user ACCESS_ID --password ACCESS_KEY --database test \
|
382
|
+
--m 64 --ef-construction 400 --case-type Performance768D1M \
|
383
|
+
--index-type HGraph --ef-search 51 --k 10
|
384
|
+
```
|
385
|
+
|
386
|
+
To list the options for Hologres, execute `vectordbbench hologreshgraph --help`, The following are some Hologres-specific command-line options.
|
387
|
+
|
388
|
+
```text
|
389
|
+
$ vectordbbench hologreshgraph --help
|
390
|
+
Usage: vectordbbench hologreshgraph [OPTIONS]
|
391
|
+
|
392
|
+
Options:
|
393
|
+
[...]
|
394
|
+
--host TEXT Hologres host
|
395
|
+
--user TEXT Hologres username [required]
|
396
|
+
--password TEXT Hologres database password
|
397
|
+
--database TEXT Hologres database name [required]
|
398
|
+
--port INTEGER Hologres port [required]
|
399
|
+
--m INTEGER hnsw m [required]
|
400
|
+
--ef-construction INTEGER hnsw ef-construction [required]
|
401
|
+
--ef-search INTEGER hnsw ef-search [required]
|
402
|
+
--index-type [HGraph] Type of index to use. Supported values:
|
403
|
+
HGraph [required]
|
404
|
+
--help Show this message and exit.
|
405
|
+
```
|
406
|
+
|
375
407
|
#### Using a configuration file.
|
376
408
|
|
377
409
|
The vectordbbench command can optionally read some or all the options from a yaml formatted configuration file.
|
@@ -525,9 +557,9 @@ All standard benchmark results are generated by a client running on an 8 core, 3
|
|
525
557
|
2. The next step is to select the test cases you want to perform. You can select multiple cases at once, and a form to collect corresponding parameters will appear.
|
526
558
|
3. Finally, you'll need to provide a task label to distinguish different test results. Using the same label for different tests will result in the previous results being overwritten.
|
527
559
|
Now we can only run one task at the same time.
|
528
|
-

|
529
|
-

|
530
|
-

|
560
|
+

|
561
|
+

|
562
|
+

|
531
563
|
|
532
564
|
|
533
565
|
## Module
|
@@ -557,8 +589,8 @@ Each case provides an in-depth examination of a vector database's abilities, pro
|
|
557
589
|
|
558
590
|
Through the `/custom` page, users can customize their own performance case using local datasets. After saving, the corresponding case can be selected from the `/run_test` page to perform the test.
|
559
591
|
|
560
|
-

|
561
|
-

|
592
|
+

|
593
|
+

|
562
594
|
|
563
595
|
We have strict requirements for the data set format, please follow them.
|
564
596
|
- `Folder Path` - The path to the folder containing all the files. Please ensure that all files in the folder are in the `Parquet` format.
|
@@ -58,6 +58,7 @@ All the database client supported
|
|
58
58
|
| tidb | `pip install vectordb-bench[tidb]` |
|
59
59
|
| vespa | `pip install vectordb-bench[vespa]` |
|
60
60
|
| oceanbase | `pip install vectordb-bench[oceanbase]` |
|
61
|
+
| hologres | `pip install vectordb-bench[hologres]` |
|
61
62
|
|
62
63
|
### Run
|
63
64
|
|
@@ -174,7 +175,7 @@ vectordbbench awsopensearch --db-label awsopensearch \
|
|
174
175
|
--m 16 --ef-construction 256 \
|
175
176
|
--host search-vector-db-prod-h4f6m4of6x7yp2rz7gdmots7w4.us-west-2.es.amazonaws.com --port 443 \
|
176
177
|
--user vector --password '<password>' \
|
177
|
-
--case-type Performance1536D5M --
|
178
|
+
--case-type Performance1536D5M --number-of-indexing-clients 10 \
|
178
179
|
--skip-load --num-concurrency 75
|
179
180
|
```
|
180
181
|
|
@@ -202,7 +203,7 @@ Options:
|
|
202
203
|
--force-merge-enabled BOOLEAN Whether to perform force merge operation
|
203
204
|
--flush-threshold-size TEXT Size threshold for flushing the transaction
|
204
205
|
log
|
205
|
-
--engine TEXT type of engine to use valid values [faiss, lucene]
|
206
|
+
--engine TEXT type of engine to use valid values [faiss, lucene, s3vector]
|
206
207
|
# Memory Management
|
207
208
|
--cb-threshold TEXT k-NN Memory circuit breaker threshold
|
208
209
|
|
@@ -277,6 +278,37 @@ Options:
|
|
277
278
|
--help Show this message and exit. Show this message and exit.
|
278
279
|
```
|
279
280
|
|
281
|
+
### Run Hologres from command line
|
282
|
+
|
283
|
+
Execute tests for the index types: HGraph.
|
284
|
+
|
285
|
+
```shell
|
286
|
+
vectordbbench hologreshgraph --host xxx --port xxx --user ACCESS_ID --password ACCESS_KEY --database test \
|
287
|
+
--m 64 --ef-construction 400 --case-type Performance768D1M \
|
288
|
+
--index-type HGraph --ef-search 51 --k 10
|
289
|
+
```
|
290
|
+
|
291
|
+
To list the options for Hologres, execute `vectordbbench hologreshgraph --help`, The following are some Hologres-specific command-line options.
|
292
|
+
|
293
|
+
```text
|
294
|
+
$ vectordbbench hologreshgraph --help
|
295
|
+
Usage: vectordbbench hologreshgraph [OPTIONS]
|
296
|
+
|
297
|
+
Options:
|
298
|
+
[...]
|
299
|
+
--host TEXT Hologres host
|
300
|
+
--user TEXT Hologres username [required]
|
301
|
+
--password TEXT Hologres database password
|
302
|
+
--database TEXT Hologres database name [required]
|
303
|
+
--port INTEGER Hologres port [required]
|
304
|
+
--m INTEGER hnsw m [required]
|
305
|
+
--ef-construction INTEGER hnsw ef-construction [required]
|
306
|
+
--ef-search INTEGER hnsw ef-search [required]
|
307
|
+
--index-type [HGraph] Type of index to use. Supported values:
|
308
|
+
HGraph [required]
|
309
|
+
--help Show this message and exit.
|
310
|
+
```
|
311
|
+
|
280
312
|
#### Using a configuration file.
|
281
313
|
|
282
314
|
The vectordbbench command can optionally read some or all the options from a yaml formatted configuration file.
|
@@ -430,9 +462,9 @@ All standard benchmark results are generated by a client running on an 8 core, 3
|
|
430
462
|
2. The next step is to select the test cases you want to perform. You can select multiple cases at once, and a form to collect corresponding parameters will appear.
|
431
463
|
3. Finally, you'll need to provide a task label to distinguish different test results. Using the same label for different tests will result in the previous results being overwritten.
|
432
464
|
Now we can only run one task at the same time.
|
433
|
-

|
434
|
-

|
435
|
-

|
465
|
+

|
466
|
+

|
467
|
+

|
436
468
|
|
437
469
|
|
438
470
|
## Module
|
@@ -462,8 +494,8 @@ Each case provides an in-depth examination of a vector database's abilities, pro
|
|
462
494
|
|
463
495
|
Through the `/custom` page, users can customize their own performance case using local datasets. After saving, the corresponding case can be selected from the `/run_test` page to perform the test.
|
464
496
|
|
465
|
-

|
466
|
-

|
497
|
+

|
498
|
+

|
467
499
|
|
468
500
|
We have strict requirements for the data set format, please follow them.
|
469
501
|
- `Folder Path` - The path to the folder containing all the files. Please ensure that all files in the folder are in the `Parquet` format.
|
@@ -16,6 +16,7 @@ class config:
|
|
16
16
|
LOG_LEVEL = env.str("LOG_LEVEL", "INFO")
|
17
17
|
|
18
18
|
DEFAULT_DATASET_URL = env.str("DEFAULT_DATASET_URL", AWS_S3_URL)
|
19
|
+
DATASET_SOURCE = env.str("DATASET_SOURCE", "S3") # Options "S3" or "AliyunOSS"
|
19
20
|
DATASET_LOCAL_DIR = env.path("DATASET_LOCAL_DIR", "/tmp/vectordb_bench/dataset")
|
20
21
|
NUM_PER_BATCH = env.int("NUM_PER_BATCH", 100)
|
21
22
|
TIME_PER_BATCH = 1 # 1s. for streaming insertion.
|
@@ -4,7 +4,7 @@ from enum import Enum, auto
|
|
4
4
|
|
5
5
|
from vectordb_bench import config
|
6
6
|
from vectordb_bench.backend.clients.api import MetricType
|
7
|
-
from vectordb_bench.backend.filter import Filter, FilterOp, IntFilter, LabelFilter, NonFilter, non_filter
|
7
|
+
from vectordb_bench.backend.filter import Filter, FilterOp, IntFilter, LabelFilter, NewIntFilter, NonFilter, non_filter
|
8
8
|
from vectordb_bench.base import BaseModel
|
9
9
|
from vectordb_bench.frontend.components.custom.getCustomConfig import CustomDatasetConfig
|
10
10
|
|
@@ -54,6 +54,8 @@ class CaseType(Enum):
|
|
54
54
|
|
55
55
|
LabelFilterPerformanceCase = 300
|
56
56
|
|
57
|
+
NewIntFilterPerformanceCase = 400
|
58
|
+
|
57
59
|
def case_cls(self, custom_configs: dict | None = None) -> type["Case"]:
|
58
60
|
if custom_configs is None:
|
59
61
|
return type2case.get(self)()
|
@@ -130,6 +132,7 @@ class PerformanceCase(Case):
|
|
130
132
|
filter_rate: float | None = None
|
131
133
|
load_timeout: float | int = config.LOAD_TIMEOUT_DEFAULT
|
132
134
|
optimize_timeout: float | int | None = config.OPTIMIZE_TIMEOUT_DEFAULT
|
135
|
+
int_value: float | None = None
|
133
136
|
|
134
137
|
|
135
138
|
class CapacityDim960(CapacityCase):
|
@@ -471,6 +474,46 @@ class StreamingPerformanceCase(Case):
|
|
471
474
|
)
|
472
475
|
|
473
476
|
|
477
|
+
class NewIntFilterPerformanceCase(PerformanceCase):
|
478
|
+
case_id: CaseType = CaseType.NewIntFilterPerformanceCase
|
479
|
+
dataset_with_size_type: DatasetWithSizeType
|
480
|
+
filter_rate: float
|
481
|
+
|
482
|
+
def __init__(
|
483
|
+
self,
|
484
|
+
dataset_with_size_type: DatasetWithSizeType | str,
|
485
|
+
filter_rate: float,
|
486
|
+
int_value: float | None = 0,
|
487
|
+
**kwargs,
|
488
|
+
):
|
489
|
+
if not isinstance(dataset_with_size_type, DatasetWithSizeType):
|
490
|
+
dataset_with_size_type = DatasetWithSizeType(dataset_with_size_type)
|
491
|
+
name = f"Int-Filter-{filter_rate*100:.1f}% - {dataset_with_size_type.value}"
|
492
|
+
description = f"Int-Filter-{filter_rate*100:.1f}% Performance Test ({dataset_with_size_type.value})"
|
493
|
+
dataset = dataset_with_size_type.get_manager()
|
494
|
+
load_timeout = dataset_with_size_type.get_load_timeout()
|
495
|
+
optimize_timeout = dataset_with_size_type.get_optimize_timeout()
|
496
|
+
filters = IntFilter(filter_rate=filter_rate, int_value=int_value)
|
497
|
+
filter_rate = filters.filter_rate
|
498
|
+
super().__init__(
|
499
|
+
name=name,
|
500
|
+
description=description,
|
501
|
+
dataset=dataset,
|
502
|
+
load_timeout=load_timeout,
|
503
|
+
optimize_timeout=optimize_timeout,
|
504
|
+
filter_rate=filter_rate,
|
505
|
+
int_value=int_value,
|
506
|
+
dataset_with_size_type=dataset_with_size_type,
|
507
|
+
**kwargs,
|
508
|
+
)
|
509
|
+
|
510
|
+
@property
|
511
|
+
def filters(self) -> Filter:
|
512
|
+
int_field = self.dataset.data.train_id_field
|
513
|
+
int_value = int(self.dataset.data.size * self.filter_rate)
|
514
|
+
return NewIntFilter(filter_rate=self.filter_rate, int_field=int_field, int_value=int_value)
|
515
|
+
|
516
|
+
|
474
517
|
class LabelFilterPerformanceCase(PerformanceCase):
|
475
518
|
case_id: CaseType = CaseType.LabelFilterPerformanceCase
|
476
519
|
dataset_with_size_type: DatasetWithSizeType
|
@@ -529,5 +572,6 @@ type2case = {
|
|
529
572
|
CaseType.Performance1536D50K: Performance1536D50K,
|
530
573
|
CaseType.PerformanceCustomDataset: PerformanceCustomDataset,
|
531
574
|
CaseType.StreamingPerformanceCase: StreamingPerformanceCase,
|
575
|
+
CaseType.NewIntFilterPerformanceCase: NewIntFilterPerformanceCase,
|
532
576
|
CaseType.LabelFilterPerformanceCase: LabelFilterPerformanceCase,
|
533
577
|
}
|
@@ -38,6 +38,7 @@ class DB(Enum):
|
|
38
38
|
MemoryDB = "MemoryDB"
|
39
39
|
Chroma = "Chroma"
|
40
40
|
AWSOpenSearch = "OpenSearch"
|
41
|
+
OSSOpenSearch = "OSSOpenSearch"
|
41
42
|
AliyunElasticsearch = "AliyunElasticsearch"
|
42
43
|
MariaDB = "MariaDB"
|
43
44
|
Test = "test"
|
@@ -48,6 +49,8 @@ class DB(Enum):
|
|
48
49
|
Vespa = "Vespa"
|
49
50
|
LanceDB = "LanceDB"
|
50
51
|
OceanBase = "OceanBase"
|
52
|
+
S3Vectors = "S3Vectors"
|
53
|
+
Hologres = "Alibaba Cloud Hologres"
|
51
54
|
|
52
55
|
@property
|
53
56
|
def init_cls(self) -> type[VectorDB]: # noqa: PLR0911, PLR0912, C901, PLR0915
|
@@ -127,6 +130,11 @@ class DB(Enum):
|
|
127
130
|
|
128
131
|
return AWSOpenSearch
|
129
132
|
|
133
|
+
if self == DB.OSSOpenSearch:
|
134
|
+
from .oss_opensearch.oss_opensearch import OSSOpenSearch
|
135
|
+
|
136
|
+
return OSSOpenSearch
|
137
|
+
|
130
138
|
if self == DB.Clickhouse:
|
131
139
|
from .clickhouse.clickhouse import Clickhouse
|
132
140
|
|
@@ -182,6 +190,16 @@ class DB(Enum):
|
|
182
190
|
|
183
191
|
return LanceDB
|
184
192
|
|
193
|
+
if self == DB.S3Vectors:
|
194
|
+
from .s3_vectors.s3_vectors import S3Vectors
|
195
|
+
|
196
|
+
return S3Vectors
|
197
|
+
|
198
|
+
if self == DB.Hologres:
|
199
|
+
from .hologres.hologres import Hologres
|
200
|
+
|
201
|
+
return Hologres
|
202
|
+
|
185
203
|
msg = f"Unknown DB: {self.name}"
|
186
204
|
raise ValueError(msg)
|
187
205
|
|
@@ -263,6 +281,11 @@ class DB(Enum):
|
|
263
281
|
|
264
282
|
return AWSOpenSearchConfig
|
265
283
|
|
284
|
+
if self == DB.OSSOpenSearch:
|
285
|
+
from .oss_opensearch.config import OSSOpenSearchConfig
|
286
|
+
|
287
|
+
return OSSOpenSearchConfig
|
288
|
+
|
266
289
|
if self == DB.Clickhouse:
|
267
290
|
from .clickhouse.config import ClickhouseConfig
|
268
291
|
|
@@ -318,6 +341,16 @@ class DB(Enum):
|
|
318
341
|
|
319
342
|
return LanceDBConfig
|
320
343
|
|
344
|
+
if self == DB.S3Vectors:
|
345
|
+
from .s3_vectors.config import S3VectorsConfig
|
346
|
+
|
347
|
+
return S3VectorsConfig
|
348
|
+
|
349
|
+
if self == DB.Hologres:
|
350
|
+
from .hologres.config import HologresConfig
|
351
|
+
|
352
|
+
return HologresConfig
|
353
|
+
|
321
354
|
msg = f"Unknown DB: {self.name}"
|
322
355
|
raise ValueError(msg)
|
323
356
|
|
@@ -370,6 +403,11 @@ class DB(Enum):
|
|
370
403
|
|
371
404
|
return AWSOpenSearchIndexConfig
|
372
405
|
|
406
|
+
if self == DB.OSSOpenSearch:
|
407
|
+
from .oss_opensearch.config import OSSOpenSearchIndexConfig
|
408
|
+
|
409
|
+
return OSSOpenSearchIndexConfig
|
410
|
+
|
373
411
|
if self == DB.Clickhouse:
|
374
412
|
from .clickhouse.config import ClickhouseHNSWConfig
|
375
413
|
|
@@ -430,6 +468,15 @@ class DB(Enum):
|
|
430
468
|
|
431
469
|
return _lancedb_case_config.get(index_type)
|
432
470
|
|
471
|
+
if self == DB.S3Vectors:
|
472
|
+
from .s3_vectors.config import S3VectorsIndexConfig
|
473
|
+
|
474
|
+
return S3VectorsIndexConfig
|
475
|
+
if self == DB.Hologres:
|
476
|
+
from .hologres.config import HologresIndexConfig
|
477
|
+
|
478
|
+
return HologresIndexConfig
|
479
|
+
|
433
480
|
# DB.Pinecone, DB.Chroma, DB.Redis
|
434
481
|
return EmptyDBCaseConfig
|
435
482
|
|
@@ -65,9 +65,7 @@ class AWSOpenSearch(VectorDB):
|
|
65
65
|
self._load_graphs_to_memory(client)
|
66
66
|
|
67
67
|
def _create_index(self, client: OpenSearch) -> None:
|
68
|
-
ef_search_value =
|
69
|
-
self.case_config.ef_search if self.case_config.ef_search is not None else self.case_config.efSearch
|
70
|
-
)
|
68
|
+
ef_search_value = self.case_config.ef_search
|
71
69
|
log.info(f"Creating index with ef_search: {ef_search_value}")
|
72
70
|
log.info(f"Creating index with number_of_replicas: {self.case_config.number_of_replicas}")
|
73
71
|
|
@@ -81,7 +79,7 @@ class AWSOpenSearch(VectorDB):
|
|
81
79
|
"knn.memory.circuit_breaker.limit": self.case_config.cb_threshold,
|
82
80
|
}
|
83
81
|
}
|
84
|
-
client.cluster.put_settings(cluster_settings_body)
|
82
|
+
client.cluster.put_settings(body=cluster_settings_body)
|
85
83
|
settings = {
|
86
84
|
"index": {
|
87
85
|
"knn": True,
|
@@ -93,25 +91,83 @@ class AWSOpenSearch(VectorDB):
|
|
93
91
|
"refresh_interval": self.case_config.refresh_interval,
|
94
92
|
}
|
95
93
|
settings["index"]["knn.algo_param.ef_search"] = ef_search_value
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
94
|
+
|
95
|
+
# Get method configuration and log it for debugging
|
96
|
+
method_config = self.case_config.index_param()
|
97
|
+
log.info(f"Raw method config from index_param(): {method_config}")
|
98
|
+
|
99
|
+
# For s3vector engine, ensure method only contains engine field
|
100
|
+
if self.case_config.engine == AWSOS_Engine.s3vector:
|
101
|
+
method_config = {"engine": "s3vector"}
|
102
|
+
log.info(f"Cleaned method config for s3vector: {method_config}")
|
103
|
+
|
104
|
+
# Prepare vector field configuration
|
105
|
+
vector_field_config = {
|
106
|
+
"type": "knn_vector",
|
107
|
+
"store": True,
|
108
|
+
"dimension": self.dim,
|
109
|
+
"method": method_config,
|
107
110
|
}
|
111
|
+
|
112
|
+
# For s3vector engine, space_type should be set at the vector field level
|
113
|
+
if self.case_config.engine == AWSOS_Engine.s3vector:
|
114
|
+
space_type = self.case_config.parse_metric()
|
115
|
+
vector_field_config["space_type"] = space_type
|
116
|
+
|
117
|
+
# Ensure method config is absolutely clean for s3vector - remove any potential extra fields
|
118
|
+
vector_field_config["method"] = {"engine": "s3vector"}
|
119
|
+
|
120
|
+
log.info(f"Setting space_type '{space_type}' at vector field level for s3vector engine")
|
121
|
+
log.info(f"Final vector field config for s3vector: {vector_field_config}")
|
122
|
+
|
123
|
+
# Configure mappings based on engine type
|
124
|
+
if self.case_config.engine == AWSOS_Engine.s3vector:
|
125
|
+
# For s3vector engine, use simplified mappings without _source configuration
|
126
|
+
mappings = {
|
127
|
+
"properties": {
|
128
|
+
# self.id_col_name: {"type": "integer", "store": True},
|
129
|
+
self.label_col_name: {"type": "keyword"},
|
130
|
+
self.vector_col_name: vector_field_config,
|
131
|
+
},
|
132
|
+
}
|
133
|
+
log.info("Using simplified mappings for s3vector engine (no _source configuration)")
|
134
|
+
else:
|
135
|
+
# For other engines (faiss, lucene), use standard mappings with _source configuration
|
136
|
+
mappings = {
|
137
|
+
"_source": {"excludes": [self.vector_col_name], "recovery_source_excludes": [self.vector_col_name]},
|
138
|
+
"properties": {
|
139
|
+
# self.id_col_name: {"type": "integer", "store": True},
|
140
|
+
self.label_col_name: {"type": "keyword"},
|
141
|
+
self.vector_col_name: vector_field_config,
|
142
|
+
},
|
143
|
+
}
|
144
|
+
log.info("Using standard mappings with _source configuration for non-s3vector engines")
|
108
145
|
try:
|
109
146
|
log.info(f"Creating index with settings: {settings}")
|
110
147
|
log.info(f"Creating index with mappings: {mappings}")
|
148
|
+
|
149
|
+
# Additional logging for s3vector to confirm method config before sending
|
150
|
+
if self.case_config.engine == AWSOS_Engine.s3vector:
|
151
|
+
method_in_mappings = mappings["properties"][self.vector_col_name]["method"]
|
152
|
+
log.info(f"Final method config being sent to OpenSearch: {method_in_mappings}")
|
153
|
+
|
111
154
|
client.indices.create(
|
112
155
|
index=self.index_name,
|
113
156
|
body={"settings": settings, "mappings": mappings},
|
114
157
|
)
|
158
|
+
|
159
|
+
# For s3vector, verify the actual index configuration after creation
|
160
|
+
if self.case_config.engine == AWSOS_Engine.s3vector:
|
161
|
+
try:
|
162
|
+
actual_mapping = client.indices.get_mapping(index=self.index_name)
|
163
|
+
actual_method = actual_mapping[self.index_name]["mappings"]["properties"][self.vector_col_name][
|
164
|
+
"method"
|
165
|
+
]
|
166
|
+
log.info(f"Actual method config in created index: {actual_method}")
|
167
|
+
|
168
|
+
except Exception as e:
|
169
|
+
log.warning(f"Failed to verify index configuration: {e}")
|
170
|
+
|
115
171
|
except Exception as e:
|
116
172
|
log.warning(f"Failed to create index: {self.index_name} error: {e!s}")
|
117
173
|
raise e from None
|
@@ -153,12 +209,12 @@ class AWSOpenSearch(VectorDB):
|
|
153
209
|
insert_data = []
|
154
210
|
for i in range(len(embeddings)):
|
155
211
|
index_data = {"index": {"_index": self.index_name, self.id_col_name: metadata[i]}}
|
156
|
-
if self.with_scalar_labels and self.case_config.use_routing:
|
212
|
+
if self.with_scalar_labels and self.case_config.use_routing and labels_data is not None:
|
157
213
|
index_data["routing"] = labels_data[i]
|
158
214
|
insert_data.append(index_data)
|
159
215
|
|
160
216
|
other_data = {self.vector_col_name: embeddings[i]}
|
161
|
-
if self.with_scalar_labels:
|
217
|
+
if self.with_scalar_labels and labels_data is not None:
|
162
218
|
other_data[self.label_col_name] = labels_data[i]
|
163
219
|
insert_data.append(other_data)
|
164
220
|
|
@@ -168,7 +224,7 @@ class AWSOpenSearch(VectorDB):
|
|
168
224
|
except Exception as e:
|
169
225
|
log.warning(f"Failed to insert data: {self.index_name} error: {e!s}")
|
170
226
|
time.sleep(10)
|
171
|
-
return self._insert_with_single_client(embeddings, metadata)
|
227
|
+
return self._insert_with_single_client(embeddings, metadata, labels_data)
|
172
228
|
|
173
229
|
def _insert_with_multiple_clients(
|
174
230
|
self,
|
@@ -186,7 +242,8 @@ class AWSOpenSearch(VectorDB):
|
|
186
242
|
|
187
243
|
for i in range(0, len(embeddings_list), chunk_size):
|
188
244
|
end = min(i + chunk_size, len(embeddings_list))
|
189
|
-
|
245
|
+
chunk_labels = labels_data[i:end] if labels_data is not None else None
|
246
|
+
chunks.append((embeddings_list[i:end], metadata[i:end], chunk_labels))
|
190
247
|
|
191
248
|
clients = []
|
192
249
|
for _ in range(min(num_clients, len(chunks))):
|
@@ -202,12 +259,12 @@ class AWSOpenSearch(VectorDB):
|
|
202
259
|
insert_data = []
|
203
260
|
for i in range(len(chunk_embeddings)):
|
204
261
|
index_data = {"index": {"_index": self.index_name, self.id_col_name: chunk_metadata[i]}}
|
205
|
-
if self.with_scalar_labels and self.case_config.use_routing:
|
262
|
+
if self.with_scalar_labels and self.case_config.use_routing and chunk_labels_data is not None:
|
206
263
|
index_data["routing"] = chunk_labels_data[i]
|
207
264
|
insert_data.append(index_data)
|
208
265
|
|
209
266
|
other_data = {self.vector_col_name: chunk_embeddings[i]}
|
210
|
-
if self.with_scalar_labels:
|
267
|
+
if self.with_scalar_labels and chunk_labels_data is not None:
|
211
268
|
other_data[self.label_col_name] = chunk_labels_data[i]
|
212
269
|
insert_data.append(other_data)
|
213
270
|
|
@@ -254,10 +311,7 @@ class AWSOpenSearch(VectorDB):
|
|
254
311
|
return (total_count, None)
|
255
312
|
|
256
313
|
def _update_ef_search_before_search(self, client: OpenSearch):
|
257
|
-
ef_search_value =
|
258
|
-
self.case_config.ef_search if self.case_config.ef_search is not None else self.case_config.efSearch
|
259
|
-
)
|
260
|
-
|
314
|
+
ef_search_value = self.case_config.ef_search
|
261
315
|
try:
|
262
316
|
index_settings = client.indices.get_settings(index=self.index_name)
|
263
317
|
current_ef_search = (
|
@@ -297,23 +351,33 @@ class AWSOpenSearch(VectorDB):
|
|
297
351
|
"""
|
298
352
|
assert self.client is not None, "should self.init() first"
|
299
353
|
|
354
|
+
# Configure query based on engine type
|
355
|
+
if self.case_config.engine == AWSOS_Engine.s3vector:
|
356
|
+
# For s3vector engine, use simplified query without method_parameters
|
357
|
+
knn_query = {
|
358
|
+
"vector": query,
|
359
|
+
"k": k,
|
360
|
+
**({"filter": self.filter} if self.filter else {}),
|
361
|
+
}
|
362
|
+
log.debug("Using simplified knn query for s3vector engine (no method_parameters)")
|
363
|
+
else:
|
364
|
+
# For other engines (faiss, lucene), use standard query with method_parameters
|
365
|
+
knn_query = {
|
366
|
+
"vector": query,
|
367
|
+
"k": k,
|
368
|
+
"method_parameters": self.case_config.search_param(),
|
369
|
+
**({"filter": self.filter} if self.filter else {}),
|
370
|
+
**(
|
371
|
+
{"rescore": {"oversample_factor": self.case_config.oversample_factor}}
|
372
|
+
if self.case_config.use_quant
|
373
|
+
else {}
|
374
|
+
),
|
375
|
+
}
|
376
|
+
log.debug("Using standard knn query with method_parameters for non-s3vector engines")
|
377
|
+
|
300
378
|
body = {
|
301
379
|
"size": k,
|
302
|
-
"query": {
|
303
|
-
"knn": {
|
304
|
-
self.vector_col_name: {
|
305
|
-
"vector": query,
|
306
|
-
"k": k,
|
307
|
-
"method_parameters": self.case_config.search_param(),
|
308
|
-
**({"filter": self.filter} if self.filter else {}),
|
309
|
-
**(
|
310
|
-
{"rescore": {"oversample_factor": self.case_config.oversample_factor}}
|
311
|
-
if self.case_config.use_quant
|
312
|
-
else {}
|
313
|
-
),
|
314
|
-
}
|
315
|
-
}
|
316
|
-
},
|
380
|
+
"query": {"knn": {self.vector_col_name: knn_query}},
|
317
381
|
}
|
318
382
|
|
319
383
|
try:
|