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.
Files changed (183) hide show
  1. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/PKG-INFO +8 -5
  2. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/README.md +4 -4
  3. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/pyproject.toml +2 -0
  4. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/__init__.py +18 -2
  5. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/api.py +1 -0
  6. vectordb_bench-0.0.28/vectordb_bench/backend/clients/lancedb/cli.py +92 -0
  7. vectordb_bench-0.0.28/vectordb_bench/backend/clients/lancedb/config.py +103 -0
  8. vectordb_bench-0.0.28/vectordb_bench/backend/clients/lancedb/lancedb.py +91 -0
  9. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/dataset.py +8 -4
  10. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/runner/serial_runner.py +9 -4
  11. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/cli/cli.py +3 -1
  12. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/cli/vectordbbench.py +2 -0
  13. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/config/dbCaseConfigs.py +125 -0
  14. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/config/styles.py +1 -0
  15. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/models.py +15 -5
  16. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench.egg-info/PKG-INFO +8 -5
  17. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench.egg-info/SOURCES.txt +3 -0
  18. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench.egg-info/requires.txt +4 -0
  19. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/.devcontainer/Dockerfile +0 -0
  20. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/.devcontainer/devcontainer.json +0 -0
  21. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/.env.example +0 -0
  22. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/.github/workflows/publish_package_on_release.yml +0 -0
  23. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/.github/workflows/pull_request.yml +0 -0
  24. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/.gitignore +0 -0
  25. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/Dockerfile +0 -0
  26. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/LICENSE +0 -0
  27. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/Makefile +0 -0
  28. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/OWNERS +0 -0
  29. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/fig/custom_case_run_test.png +0 -0
  30. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/fig/custom_dataset.png +0 -0
  31. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/install/requirements_py3.11.txt +0 -0
  32. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/install.py +0 -0
  33. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/setup.cfg +0 -0
  34. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/conftest.py +0 -0
  35. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/pytest.ini +0 -0
  36. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/test_bench_runner.py +0 -0
  37. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/test_chroma.py +0 -0
  38. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/test_data_source.py +0 -0
  39. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/test_dataset.py +0 -0
  40. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/test_elasticsearch_cloud.py +0 -0
  41. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/test_models.py +0 -0
  42. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/test_rate_runner.py +0 -0
  43. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/test_redis.py +0 -0
  44. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/test_utils.py +0 -0
  45. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/tests/ut_cases.py +0 -0
  46. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/__init__.py +0 -0
  47. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/__main__.py +0 -0
  48. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/__init__.py +0 -0
  49. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/assembler.py +0 -0
  50. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/cases.py +0 -0
  51. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/aliyun_elasticsearch/aliyun_elasticsearch.py +0 -0
  52. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/aliyun_elasticsearch/config.py +0 -0
  53. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/aliyun_opensearch/aliyun_opensearch.py +0 -0
  54. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/aliyun_opensearch/config.py +0 -0
  55. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/alloydb/alloydb.py +0 -0
  56. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/alloydb/cli.py +0 -0
  57. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/alloydb/config.py +0 -0
  58. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/aws_opensearch/aws_opensearch.py +0 -0
  59. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/aws_opensearch/cli.py +0 -0
  60. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/aws_opensearch/config.py +0 -0
  61. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/aws_opensearch/run.py +0 -0
  62. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/chroma/chroma.py +0 -0
  63. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/chroma/config.py +0 -0
  64. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/clickhouse/cli.py +0 -0
  65. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/clickhouse/clickhouse.py +0 -0
  66. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/clickhouse/config.py +0 -0
  67. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/elastic_cloud/config.py +0 -0
  68. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/elastic_cloud/elastic_cloud.py +0 -0
  69. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/mariadb/cli.py +0 -0
  70. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/mariadb/config.py +0 -0
  71. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/mariadb/mariadb.py +0 -0
  72. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/memorydb/cli.py +0 -0
  73. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/memorydb/config.py +0 -0
  74. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/memorydb/memorydb.py +0 -0
  75. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/milvus/cli.py +0 -0
  76. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/milvus/config.py +0 -0
  77. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/milvus/milvus.py +0 -0
  78. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/mongodb/config.py +0 -0
  79. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/mongodb/mongodb.py +0 -0
  80. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgdiskann/cli.py +0 -0
  81. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgdiskann/config.py +0 -0
  82. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgdiskann/pgdiskann.py +0 -0
  83. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgvecto_rs/cli.py +0 -0
  84. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgvecto_rs/config.py +0 -0
  85. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgvecto_rs/pgvecto_rs.py +0 -0
  86. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgvector/cli.py +0 -0
  87. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgvector/config.py +0 -0
  88. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgvector/pgvector.py +0 -0
  89. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgvectorscale/cli.py +0 -0
  90. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgvectorscale/config.py +0 -0
  91. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pgvectorscale/pgvectorscale.py +0 -0
  92. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pinecone/config.py +0 -0
  93. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/pinecone/pinecone.py +0 -0
  94. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/qdrant_cloud/config.py +0 -0
  95. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/qdrant_cloud/qdrant_cloud.py +0 -0
  96. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/redis/cli.py +0 -0
  97. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/redis/config.py +0 -0
  98. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/redis/redis.py +0 -0
  99. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/test/cli.py +0 -0
  100. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/test/config.py +0 -0
  101. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/test/test.py +0 -0
  102. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/tidb/cli.py +0 -0
  103. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/tidb/config.py +0 -0
  104. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/tidb/tidb.py +0 -0
  105. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/vespa/cli.py +0 -0
  106. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/vespa/config.py +0 -0
  107. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/vespa/util.py +0 -0
  108. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/vespa/vespa.py +0 -0
  109. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/weaviate_cloud/cli.py +0 -0
  110. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/weaviate_cloud/config.py +0 -0
  111. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/weaviate_cloud/weaviate_cloud.py +0 -0
  112. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/zilliz_cloud/cli.py +0 -0
  113. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/zilliz_cloud/config.py +0 -0
  114. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/clients/zilliz_cloud/zilliz_cloud.py +0 -0
  115. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/data_source.py +0 -0
  116. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/result_collector.py +0 -0
  117. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/runner/__init__.py +0 -0
  118. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/runner/mp_runner.py +0 -0
  119. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/runner/rate_runner.py +0 -0
  120. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/runner/read_write_runner.py +0 -0
  121. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/runner/util.py +0 -0
  122. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/task_runner.py +0 -0
  123. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/backend/utils.py +0 -0
  124. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/base.py +0 -0
  125. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/cli/__init__.py +0 -0
  126. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/config-files/sample_config.yml +0 -0
  127. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/custom/custom_case.json +0 -0
  128. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/check_results/charts.py +0 -0
  129. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/check_results/data.py +0 -0
  130. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/check_results/expanderStyle.py +0 -0
  131. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/check_results/filters.py +0 -0
  132. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/check_results/footer.py +0 -0
  133. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/check_results/headerIcon.py +0 -0
  134. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/check_results/nav.py +0 -0
  135. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/check_results/priceTable.py +0 -0
  136. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/check_results/stPageConfig.py +0 -0
  137. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/concurrent/charts.py +0 -0
  138. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/custom/displayCustomCase.py +0 -0
  139. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/custom/displaypPrams.py +0 -0
  140. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/custom/getCustomConfig.py +0 -0
  141. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/custom/initStyle.py +0 -0
  142. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/get_results/saveAsImage.py +0 -0
  143. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/run_test/autoRefresh.py +0 -0
  144. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/run_test/caseSelector.py +0 -0
  145. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/run_test/dbConfigSetting.py +0 -0
  146. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/run_test/dbSelector.py +0 -0
  147. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/run_test/generateTasks.py +0 -0
  148. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/run_test/hideSidebar.py +0 -0
  149. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/run_test/initStyle.py +0 -0
  150. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/run_test/submitTask.py +0 -0
  151. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/components/tables/data.py +0 -0
  152. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/config/dbPrices.py +0 -0
  153. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/pages/concurrent.py +0 -0
  154. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/pages/custom.py +0 -0
  155. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/pages/quries_per_dollar.py +0 -0
  156. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/pages/run_test.py +0 -0
  157. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/pages/tables.py +0 -0
  158. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/utils.py +0 -0
  159. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/frontend/vdb_benchmark.py +0 -0
  160. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/interface.py +0 -0
  161. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/log_util.py +0 -0
  162. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/metric.py +0 -0
  163. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/ElasticCloud/result_20230727_standard_elasticcloud.json +0 -0
  164. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/ElasticCloud/result_20230808_standard_elasticcloud.json +0 -0
  165. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/Milvus/result_20230727_standard_milvus.json +0 -0
  166. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/Milvus/result_20230808_standard_milvus.json +0 -0
  167. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/PgVector/result_20230727_standard_pgvector.json +0 -0
  168. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/PgVector/result_20230808_standard_pgvector.json +0 -0
  169. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/Pinecone/result_20230727_standard_pinecone.json +0 -0
  170. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/Pinecone/result_20230808_standard_pinecone.json +0 -0
  171. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/QdrantCloud/result_20230727_standard_qdrantcloud.json +0 -0
  172. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/QdrantCloud/result_20230808_standard_qdrantcloud.json +0 -0
  173. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/WeaviateCloud/result_20230727_standard_weaviatecloud.json +0 -0
  174. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/WeaviateCloud/result_20230808_standard_weaviatecloud.json +0 -0
  175. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/ZillizCloud/result_20230727_standard_zillizcloud.json +0 -0
  176. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/ZillizCloud/result_20230808_standard_zillizcloud.json +0 -0
  177. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/ZillizCloud/result_20240105_standard_202401_zillizcloud.json +0 -0
  178. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/dbPrices.json +0 -0
  179. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/getLeaderboardData.py +0 -0
  180. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench/results/leaderboard.json +0 -0
  181. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench.egg-info/dependency_links.txt +0 -0
  182. {vectordb_bench-0.0.26 → vectordb_bench-0.0.28}/vectordb_bench.egg-info/entry_points.txt +0 -0
  183. {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.26
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
- $ python -m vectordb_bench
364
+ python -m vectordb_bench
362
365
  ```
363
366
 
364
367
  OR:
365
368
 
366
369
  ```shell
367
- $ init_bench
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
- $ make lint
387
+ make lint
385
388
  ```
386
389
 
387
390
  To fix the coding styles automatically
388
391
 
389
392
  ```shell
390
- $ make format
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
- $ python -m vectordb_bench
270
+ python -m vectordb_bench
271
271
  ```
272
272
 
273
273
  OR:
274
274
 
275
275
  ```shell
276
- $ init_bench
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
- $ make lint
293
+ make lint
294
294
  ```
295
295
 
296
296
  To fix the coding styles automatically
297
297
 
298
298
  ```shell
299
- $ make format
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
 
@@ -34,6 +34,7 @@ class IndexType(str, Enum):
34
34
  GPU_IVF_PQ = "GPU_IVF_PQ"
35
35
  GPU_CAGRA = "GPU_CAGRA"
36
36
  SCANN = "scann"
37
+ NONE = "NONE"
37
38
 
38
39
 
39
40
  class SQType(str, Enum):
@@ -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
- gt_file, test_file = None, None
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, test_file = utils.compose_gt_file(filters), "test.parquet"
226
- all_files.extend([gt_file, test_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 gt_file is not None and test_file is not None:
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"
@@ -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
- log.debug(f"ground truth size: {ground_truth.columns}, shape: {ground_truth.shape}")
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
- gt = ground_truth["neighbors_id"][idx]
232
- recalls.append(calc_recall(self.k, gt[: self.k], results))
233
- ndcgs.append(calc_ndcg(gt[: self.k], results, ideal_dcg))
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__":
@@ -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
  }