redisbench-admin 0.11.64__py3-none-any.whl → 0.11.66__py3-none-any.whl

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 (134) hide show
  1. redisbench_admin/run/ann/pkg/.dockerignore +2 -0
  2. redisbench_admin/run/ann/pkg/.git +1 -0
  3. redisbench_admin/run/ann/pkg/.github/workflows/benchmarks.yml +100 -0
  4. redisbench_admin/run/ann/pkg/.gitignore +21 -0
  5. redisbench_admin/run/ann/pkg/LICENSE +21 -0
  6. redisbench_admin/run/ann/pkg/README.md +157 -0
  7. redisbench_admin/run/ann/pkg/algos.yaml +1294 -0
  8. redisbench_admin/run/ann/pkg/algosP.yaml +67 -0
  9. redisbench_admin/run/ann/pkg/ann_benchmarks/__init__.py +2 -0
  10. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/__init__.py +0 -0
  11. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/annoy.py +26 -0
  12. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/balltree.py +22 -0
  13. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/base.py +36 -0
  14. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/bruteforce.py +110 -0
  15. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/ckdtree.py +17 -0
  16. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/datasketch.py +29 -0
  17. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/definitions.py +187 -0
  18. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/diskann.py +190 -0
  19. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/dolphinnpy.py +31 -0
  20. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/dummy_algo.py +25 -0
  21. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/elasticsearch.py +107 -0
  22. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/elastiknn.py +124 -0
  23. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/faiss.py +124 -0
  24. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/faiss_gpu.py +61 -0
  25. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/faiss_hnsw.py +39 -0
  26. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/flann.py +27 -0
  27. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/hnswlib.py +36 -0
  28. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/kdtree.py +22 -0
  29. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/kgraph.py +39 -0
  30. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/lshf.py +25 -0
  31. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/milvus.py +99 -0
  32. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/mrpt.py +41 -0
  33. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/n2.py +28 -0
  34. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/nearpy.py +48 -0
  35. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/nmslib.py +74 -0
  36. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/onng_ngt.py +100 -0
  37. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/opensearchknn.py +107 -0
  38. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/panng_ngt.py +79 -0
  39. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/pinecone.py +39 -0
  40. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/puffinn.py +45 -0
  41. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/pynndescent.py +115 -0
  42. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/qg_ngt.py +102 -0
  43. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/redisearch.py +90 -0
  44. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/rpforest.py +20 -0
  45. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/scann.py +34 -0
  46. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/sptag.py +28 -0
  47. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/subprocess.py +246 -0
  48. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/vald.py +149 -0
  49. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/vecsim-hnsw.py +43 -0
  50. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/vespa.py +47 -0
  51. redisbench_admin/run/ann/pkg/ann_benchmarks/constants.py +1 -0
  52. redisbench_admin/run/ann/pkg/ann_benchmarks/data.py +48 -0
  53. redisbench_admin/run/ann/pkg/ann_benchmarks/datasets.py +620 -0
  54. redisbench_admin/run/ann/pkg/ann_benchmarks/distance.py +53 -0
  55. redisbench_admin/run/ann/pkg/ann_benchmarks/main.py +325 -0
  56. redisbench_admin/run/ann/pkg/ann_benchmarks/plotting/__init__.py +2 -0
  57. redisbench_admin/run/ann/pkg/ann_benchmarks/plotting/metrics.py +183 -0
  58. redisbench_admin/run/ann/pkg/ann_benchmarks/plotting/plot_variants.py +17 -0
  59. redisbench_admin/run/ann/pkg/ann_benchmarks/plotting/utils.py +165 -0
  60. redisbench_admin/run/ann/pkg/ann_benchmarks/results.py +71 -0
  61. redisbench_admin/run/ann/pkg/ann_benchmarks/runner.py +333 -0
  62. redisbench_admin/run/ann/pkg/create_dataset.py +12 -0
  63. redisbench_admin/run/ann/pkg/create_hybrid_dataset.py +147 -0
  64. redisbench_admin/run/ann/pkg/create_text_to_image_ds.py +117 -0
  65. redisbench_admin/run/ann/pkg/create_website.py +272 -0
  66. redisbench_admin/run/ann/pkg/install/Dockerfile +11 -0
  67. redisbench_admin/run/ann/pkg/install/Dockerfile.annoy +5 -0
  68. redisbench_admin/run/ann/pkg/install/Dockerfile.datasketch +4 -0
  69. redisbench_admin/run/ann/pkg/install/Dockerfile.diskann +29 -0
  70. redisbench_admin/run/ann/pkg/install/Dockerfile.diskann_pq +31 -0
  71. redisbench_admin/run/ann/pkg/install/Dockerfile.dolphinn +5 -0
  72. redisbench_admin/run/ann/pkg/install/Dockerfile.elasticsearch +45 -0
  73. redisbench_admin/run/ann/pkg/install/Dockerfile.elastiknn +61 -0
  74. redisbench_admin/run/ann/pkg/install/Dockerfile.faiss +18 -0
  75. redisbench_admin/run/ann/pkg/install/Dockerfile.flann +10 -0
  76. redisbench_admin/run/ann/pkg/install/Dockerfile.hnswlib +10 -0
  77. redisbench_admin/run/ann/pkg/install/Dockerfile.kgraph +6 -0
  78. redisbench_admin/run/ann/pkg/install/Dockerfile.mih +4 -0
  79. redisbench_admin/run/ann/pkg/install/Dockerfile.milvus +27 -0
  80. redisbench_admin/run/ann/pkg/install/Dockerfile.mrpt +4 -0
  81. redisbench_admin/run/ann/pkg/install/Dockerfile.n2 +5 -0
  82. redisbench_admin/run/ann/pkg/install/Dockerfile.nearpy +5 -0
  83. redisbench_admin/run/ann/pkg/install/Dockerfile.ngt +13 -0
  84. redisbench_admin/run/ann/pkg/install/Dockerfile.nmslib +10 -0
  85. redisbench_admin/run/ann/pkg/install/Dockerfile.opensearchknn +43 -0
  86. redisbench_admin/run/ann/pkg/install/Dockerfile.puffinn +6 -0
  87. redisbench_admin/run/ann/pkg/install/Dockerfile.pynndescent +4 -0
  88. redisbench_admin/run/ann/pkg/install/Dockerfile.redisearch +18 -0
  89. redisbench_admin/run/ann/pkg/install/Dockerfile.rpforest +5 -0
  90. redisbench_admin/run/ann/pkg/install/Dockerfile.scann +5 -0
  91. redisbench_admin/run/ann/pkg/install/Dockerfile.scipy +4 -0
  92. redisbench_admin/run/ann/pkg/install/Dockerfile.sklearn +4 -0
  93. redisbench_admin/run/ann/pkg/install/Dockerfile.sptag +30 -0
  94. redisbench_admin/run/ann/pkg/install/Dockerfile.vald +8 -0
  95. redisbench_admin/run/ann/pkg/install/Dockerfile.vespa +17 -0
  96. redisbench_admin/run/ann/pkg/install.py +70 -0
  97. redisbench_admin/run/ann/pkg/logging.conf +34 -0
  98. redisbench_admin/run/ann/pkg/multirun.py +298 -0
  99. redisbench_admin/run/ann/pkg/plot.py +159 -0
  100. redisbench_admin/run/ann/pkg/protocol/bf-runner +10 -0
  101. redisbench_admin/run/ann/pkg/protocol/bf-runner.py +204 -0
  102. redisbench_admin/run/ann/pkg/protocol/ext-add-query-metric.md +51 -0
  103. redisbench_admin/run/ann/pkg/protocol/ext-batch-queries.md +77 -0
  104. redisbench_admin/run/ann/pkg/protocol/ext-prepared-queries.md +77 -0
  105. redisbench_admin/run/ann/pkg/protocol/ext-query-parameters.md +47 -0
  106. redisbench_admin/run/ann/pkg/protocol/specification.md +194 -0
  107. redisbench_admin/run/ann/pkg/requirements.txt +14 -0
  108. redisbench_admin/run/ann/pkg/requirements_py38.txt +11 -0
  109. redisbench_admin/run/ann/pkg/results/fashion-mnist-784-euclidean.png +0 -0
  110. redisbench_admin/run/ann/pkg/results/gist-960-euclidean.png +0 -0
  111. redisbench_admin/run/ann/pkg/results/glove-100-angular.png +0 -0
  112. redisbench_admin/run/ann/pkg/results/glove-25-angular.png +0 -0
  113. redisbench_admin/run/ann/pkg/results/lastfm-64-dot.png +0 -0
  114. redisbench_admin/run/ann/pkg/results/mnist-784-euclidean.png +0 -0
  115. redisbench_admin/run/ann/pkg/results/nytimes-256-angular.png +0 -0
  116. redisbench_admin/run/ann/pkg/results/sift-128-euclidean.png +0 -0
  117. redisbench_admin/run/ann/pkg/run.py +12 -0
  118. redisbench_admin/run/ann/pkg/run_algorithm.py +3 -0
  119. redisbench_admin/run/ann/pkg/templates/chartjs.template +102 -0
  120. redisbench_admin/run/ann/pkg/templates/detail_page.html +23 -0
  121. redisbench_admin/run/ann/pkg/templates/general.html +58 -0
  122. redisbench_admin/run/ann/pkg/templates/latex.template +30 -0
  123. redisbench_admin/run/ann/pkg/templates/summary.html +60 -0
  124. redisbench_admin/run/ann/pkg/test/__init__.py +0 -0
  125. redisbench_admin/run/ann/pkg/test/test-jaccard.py +19 -0
  126. redisbench_admin/run/ann/pkg/test/test-metrics.py +99 -0
  127. redisbench_admin/run/args.py +2 -1
  128. redisbench_admin/run_remote/run_remote.py +1 -1
  129. {redisbench_admin-0.11.64.dist-info → redisbench_admin-0.11.66.dist-info}/METADATA +2 -5
  130. redisbench_admin-0.11.66.dist-info/RECORD +243 -0
  131. {redisbench_admin-0.11.64.dist-info → redisbench_admin-0.11.66.dist-info}/WHEEL +1 -1
  132. redisbench_admin-0.11.64.dist-info/RECORD +0 -117
  133. {redisbench_admin-0.11.64.dist-info/licenses → redisbench_admin-0.11.66.dist-info}/LICENSE +0 -0
  134. {redisbench_admin-0.11.64.dist-info → redisbench_admin-0.11.66.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,1294 @@
1
+ float:
2
+ any:
3
+ redisearch-hnsw:
4
+ docker-tag: ann-benchmarks-redisearch
5
+ module: ann_benchmarks.algorithms.redisearch
6
+ constructor: RediSearch
7
+ base-args: ["HNSW", "@metric", "@connection"]
8
+ run-groups:
9
+ M-4:
10
+ arg-groups:
11
+ - {"M": 4, "efConstruction": 500}
12
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
13
+ M-8:
14
+ arg-groups:
15
+ - {"M": 8, "efConstruction": 500}
16
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
17
+ M-12:
18
+ arg-groups:
19
+ - {"M": 12, "efConstruction": 500}
20
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
21
+ M-16:
22
+ arg-groups:
23
+ - {"M": 16, "efConstruction": 500}
24
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
25
+ M-24:
26
+ arg-groups:
27
+ - {"M": 24, "efConstruction": 500}
28
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
29
+ M-36:
30
+ arg-groups:
31
+ - {"M": 36, "efConstruction": 500}
32
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
33
+ M-48:
34
+ arg-groups:
35
+ - {"M": 48, "efConstruction": 500}
36
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
37
+ M-64:
38
+ arg-groups:
39
+ - {"M": 64, "efConstruction": 500}
40
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
41
+ M-96:
42
+ arg-groups:
43
+ - {"M": 96, "efConstruction": 500}
44
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
45
+ redisearch-flat:
46
+ docker-tag: ann-benchmarks-redisearch
47
+ module: ann_benchmarks.algorithms.redisearch
48
+ constructor: RediSearch
49
+ base-args: ["FLAT", "@metric", "@connection"]
50
+ run-groups:
51
+ BS-2^10:
52
+ arg-groups:
53
+ - {"BLOCK_SIZE": 1024}
54
+
55
+ vecsim-hnsw:
56
+ docker-tag: ann-benchmarks-vecsim
57
+ module: ann_benchmarks.algorithms.vecsim-hnsw
58
+ constructor: VecSimHnsw
59
+ base-args: ["@metric"]
60
+ run-groups:
61
+ M-4:
62
+ arg-groups:
63
+ - {"M": 4, "efConstruction": 500}
64
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
65
+ M-8:
66
+ arg-groups:
67
+ - {"M": 8, "efConstruction": 500}
68
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
69
+ M-12:
70
+ arg-groups:
71
+ - {"M": 12, "efConstruction": 500}
72
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
73
+ M-16:
74
+ arg-groups:
75
+ - {"M": 16, "efConstruction": 500}
76
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
77
+ M-24:
78
+ arg-groups:
79
+ - {"M": 24, "efConstruction": 500}
80
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
81
+ M-36:
82
+ arg-groups:
83
+ - {"M": 36, "efConstruction": 500}
84
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
85
+ M-48:
86
+ arg-groups:
87
+ - {"M": 48, "efConstruction": 500}
88
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
89
+ M-64:
90
+ arg-groups:
91
+ - {"M": 64, "efConstruction": 500}
92
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
93
+ M-96:
94
+ arg-groups:
95
+ - {"M": 96, "efConstruction": 500}
96
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
97
+ pinecone:
98
+ docker-tag: ann-benchmarks-pinecone
99
+ module: ann_benchmarks.algorithms.pinecone
100
+ constructor: Pinecone
101
+ base-args: ["@metric", "@dimension", "@connection"]
102
+ run-groups:
103
+ approximated:
104
+ args: [['approximated']]
105
+ exact:
106
+ args: [['exact']]
107
+ sptag:
108
+ docker-tag: ann-benchmarks-sptag
109
+ module: ann_benchmarks.algorithms.sptag
110
+ constructor: Sptag
111
+ base-args: ["@metric"]
112
+ run-groups:
113
+ sptag:
114
+ args: [['BKT', 'KDT']]
115
+ query-args: [[100, 200, 400, 1000, 2000, 4000]]
116
+ DolphinnPy:
117
+ disabled: true
118
+ docker-tag: ann-benchmarks-dolphinn # Docker tag
119
+ module: ann_benchmarks.algorithms.dolphinnpy # Python class
120
+ constructor: DolphinnPy # Python class name
121
+ run-groups:
122
+ base:
123
+ args: [[10, 50, 100, 200, 1000, 2000]]
124
+ faiss-lsh:
125
+ disabled: true
126
+ docker-tag: ann-benchmarks-faiss
127
+ module: ann_benchmarks.algorithms.faiss
128
+ constructor: FaissLSH
129
+ base-args: ["@metric"]
130
+ run-groups:
131
+ base:
132
+ # When @args is a list, the result is the Cartesian product of all of
133
+ # the things it contains; entries that aren't a list will be treated
134
+ # as lists of length one.
135
+ args: [[32, 64, 128, 256, 512, 1024, 2048, 4096]]
136
+ # This run group will produce eight algorithm instances:
137
+ # FaissLSH(32), FaissLSH(64), and so on up to FaissLSH(4096).
138
+ faiss-ivf:
139
+ docker-tag: ann-benchmarks-faiss
140
+ module: ann_benchmarks.algorithms.faiss
141
+ constructor: FaissIVF
142
+ base-args: ["@metric"]
143
+ run-groups:
144
+ base:
145
+ args: [[32,64,128,256,512,1024,2048,4096,8192]]
146
+ query-args: [[1, 5, 10, 50, 100, 200]]
147
+ faiss-ivfpqfs:
148
+ docker-tag: ann-benchmarks-faiss
149
+ module: ann_benchmarks.algorithms.faiss
150
+ constructor: FaissIVFPQfs
151
+ base-args: ["@metric"]
152
+ run-groups:
153
+ base:
154
+ args: [[512, 1204, 2048, 4096]]
155
+ query-args: [[1, 5, 10, 50, 100, 200], [0, 10, 100, 1000]]
156
+ faiss-gpu:
157
+ disabled: true
158
+ docker-tag: ann-benchmarks-faiss
159
+ module: ann_benchmarks.algorithms.faiss_gpu
160
+ constructor: FaissGPU
161
+ run-groups:
162
+ base:
163
+ args: [[400, 1024, 4096, 8192, 16384],
164
+ [1, 10, 40, 100, 200]]
165
+ vecsim-hnsw-blocks:
166
+ docker-tag: ann-benchmarks-hnswlib
167
+ module: ann_benchmarks.algorithms.vecsim-hnsw
168
+ constructor: VecSimHnsw
169
+ base-args: ["@metric"]
170
+ run-groups:
171
+ M-4:
172
+ arg-groups:
173
+ - {"M": 4, "efConstruction": 500}
174
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
175
+ M-8:
176
+ arg-groups:
177
+ - {"M": 8, "efConstruction": 500}
178
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
179
+ M-12:
180
+ arg-groups:
181
+ - {"M": 12, "efConstruction": 500}
182
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
183
+ M-16:
184
+ arg-groups:
185
+ - {"M": 16, "efConstruction": 500}
186
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
187
+ M-24:
188
+ arg-groups:
189
+ - {"M": 24, "efConstruction": 500}
190
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
191
+ M-36:
192
+ arg-groups:
193
+ - {"M": 36, "efConstruction": 500}
194
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
195
+ M-48:
196
+ arg-groups:
197
+ - {"M": 48, "efConstruction": 500}
198
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
199
+ M-64:
200
+ arg-groups:
201
+ - {"M": 64, "efConstruction": 500}
202
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
203
+ M-96:
204
+ arg-groups:
205
+ - {"M": 96, "efConstruction": 500}
206
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
207
+
208
+ hnsw(faiss):
209
+ docker-tag: ann-benchmarks-faiss
210
+ module: ann_benchmarks.algorithms.faiss_hnsw
211
+ constructor: FaissHNSW
212
+ base-args: ["@metric"]
213
+ run-groups:
214
+ M-4:
215
+ arg-groups:
216
+ - {"M": 4, "efConstruction": 500}
217
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
218
+ M-8:
219
+ arg-groups:
220
+ - {"M": 8, "efConstruction": 500}
221
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
222
+ M-12:
223
+ arg-groups:
224
+ - {"M": 12, "efConstruction": 500}
225
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
226
+ M-16:
227
+ arg-groups:
228
+ - {"M": 16, "efConstruction": 500}
229
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
230
+ M-24:
231
+ arg-groups:
232
+ - {"M": 24, "efConstruction": 500}
233
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
234
+ M-36:
235
+ arg-groups:
236
+ - {"M": 36, "efConstruction": 500}
237
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
238
+ M-48:
239
+ arg-groups:
240
+ - {"M": 48, "efConstruction": 500}
241
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
242
+ M-64:
243
+ arg-groups:
244
+ - {"M": 64, "efConstruction": 500}
245
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
246
+ M-96:
247
+ arg-groups:
248
+ - {"M": 96, "efConstruction": 500}
249
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
250
+
251
+ flann:
252
+ docker-tag: ann-benchmarks-flann
253
+ module: ann_benchmarks.algorithms.flann
254
+ constructor: FLANN
255
+ base-args: ["@metric"]
256
+ run-groups:
257
+ flann:
258
+ args: [[0.2, 0.5, 0.7, 0.8, 0.9, 0.95, 0.97]]
259
+ annoy:
260
+ docker-tag: ann-benchmarks-annoy
261
+ module: ann_benchmarks.algorithms.annoy
262
+ constructor: Annoy
263
+ base-args: ["@metric"]
264
+ run-groups:
265
+ annoy:
266
+ args: [[100, 200, 400]]
267
+ query-args: [[100, 200, 400, 1000, 2000, 4000, 10000, 20000, 40000,
268
+ 100000, 200000, 400000]]
269
+ # This run group produces 3 algorithm instances -- Annoy("angular",
270
+ # 100), Annoy("angular", 200), and Annoy("angular", 400) -- each of
271
+ # which will be used to run 12 different queries.
272
+ milvus-hnsw:
273
+ docker-tag: ann-benchmarks-milvus
274
+ module: ann_benchmarks.algorithms.milvus
275
+ constructor: Milvus
276
+ base-args: ["@metric", "@dimension", "@connection", "HNSW"]
277
+ run-groups:
278
+ M-4:
279
+ arg-groups:
280
+ - {"M": 4, "efConstruction": 500}
281
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
282
+ M-8:
283
+ arg-groups:
284
+ - {"M": 8, "efConstruction": 500}
285
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
286
+ M-12:
287
+ arg-groups:
288
+ - {"M": 12, "efConstruction": 500}
289
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
290
+ M-16:
291
+ arg-groups:
292
+ - {"M": 16, "efConstruction": 500}
293
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
294
+ M-24:
295
+ arg-groups:
296
+ - {"M": 24, "efConstruction": 500}
297
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
298
+ M-36:
299
+ arg-groups:
300
+ - {"M": 36, "efConstruction": 500}
301
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
302
+ M-48:
303
+ arg-groups:
304
+ - {"M": 48, "efConstruction": 500}
305
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
306
+ M-64:
307
+ arg-groups:
308
+ - {"M": 64, "efConstruction": 500}
309
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
310
+ milvus-ivf:
311
+ docker-tag: ann-benchmarks-milvus
312
+ module: ann_benchmarks.algorithms.milvus
313
+ constructor: Milvus
314
+ base-args: ["@metric", "@dimension", "@connection"]
315
+ run-groups:
316
+ milvus:
317
+ args: [['IVF_FLAT', 'IVF_SQ8'], [{"nlist": 100}, {"nlist": 300}, {"nlist": 1000}, {"nlist": 3000}, {"nlist": 10000}, {"nlist": 30000}]] # nlist
318
+ query-args: [[1, 3, 10, 30, 100, 300]] # nprobe (should be <= nlist)
319
+ nearpy:
320
+ disabled: true
321
+ docker-tag: ann-benchmarks-nearpy
322
+ module: ann_benchmarks.algorithms.nearpy
323
+ constructor: NearPy
324
+ base-args: ["@metric"]
325
+ run-groups:
326
+ nearpy:
327
+ args: [[10, 12, 14, 16], [5, 10, 20, 40]]
328
+ extra:
329
+ args: [16, [5, 10, 15, 20, 25, 30, 40]]
330
+ n2:
331
+ docker-tag: ann-benchmarks-n2
332
+ module: ann_benchmarks.algorithms.n2
333
+ constructor: N2
334
+ base-args: ["@metric"]
335
+ run-groups:
336
+ M-4:
337
+ arg-groups:
338
+ - {"M": 4, "efConstruction": 500}
339
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
340
+ M-8:
341
+ arg-groups:
342
+ - {"M": 8, "efConstruction": 500}
343
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
344
+ M-12:
345
+ arg-groups:
346
+ - {"M": 12, "efConstruction": 500}
347
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
348
+ M-16:
349
+ arg-groups:
350
+ - {"M": 16, "efConstruction": 500}
351
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
352
+ M-24:
353
+ arg-groups:
354
+ - {"M": 24, "efConstruction": 500}
355
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
356
+ M-36:
357
+ arg-groups:
358
+ - {"M": 36, "efConstruction": 500}
359
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
360
+ M-48:
361
+ arg-groups:
362
+ - {"M": 48, "efConstruction": 500}
363
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
364
+ M-64:
365
+ arg-groups:
366
+ - {"M": 64, "efConstruction": 500}
367
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
368
+ M-96:
369
+ arg-groups:
370
+ - {"M": 96, "efConstruction": 500}
371
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
372
+
373
+ bruteforce:
374
+ disabled: true
375
+ docker-tag: ann-benchmarks-sklearn
376
+ module: ann_benchmarks.algorithms.bruteforce
377
+ constructor: BruteForce
378
+ base-args: ["@metric"]
379
+ run-groups:
380
+ empty:
381
+ args: []
382
+ bruteforce-blas:
383
+ docker-tag: ann-benchmarks-sklearn
384
+ module: ann_benchmarks.algorithms.bruteforce
385
+ constructor: BruteForceBLAS
386
+ base-args: ["@metric"]
387
+ run-groups:
388
+ empty:
389
+ args: []
390
+ dummy-algo-st:
391
+ disabled: true
392
+ docker-tag: ann-benchmarks-sklearn
393
+ module: ann_benchmarks.algorithms.dummy_algo
394
+ constructor: DummyAlgoSt
395
+ base-args: ["@metric"]
396
+ run-groups:
397
+ empty:
398
+ args: []
399
+ dummy-algo-mt:
400
+ disabled: true
401
+ docker-tag: ann-benchmarks-sklearn
402
+ module: ann_benchmarks.algorithms.dummy_algo
403
+ constructor: DummyAlgoMt
404
+ base-args: ["@metric"]
405
+ run-groups:
406
+ empty:
407
+ args: []
408
+ ball:
409
+ disabled: true
410
+ docker-tag: ann-benchmarks-sklearn
411
+ module: ann_benchmarks.algorithms.balltree
412
+ constructor: BallTree
413
+ base-args: ["@metric"]
414
+ run-groups:
415
+ ball:
416
+ args: &treeargs [[10, 20, 40, 100, 200, 400, 1000]]
417
+ kd:
418
+ docker-tag: ann-benchmarks-sklearn
419
+ module: ann_benchmarks.algorithms.kdtree
420
+ constructor: KDTree
421
+ base-args: ["@metric"]
422
+ run-groups:
423
+ ball:
424
+ args: *treeargs
425
+ ckdtree:
426
+ docker-tag: ann-benchmarks-scipy
427
+ module: ann_benchmarks.algorithms.ckdtree
428
+ constructor: CKDTree
429
+ base-args: ["@metric"]
430
+ run-groups:
431
+ ball:
432
+ args: *treeargs
433
+ BallTree(nmslib):
434
+ docker-tag: ann-benchmarks-nmslib
435
+ module: ann_benchmarks.algorithms.nmslib
436
+ constructor: NmslibReuseIndex
437
+ base-args: ["@metric", "vptree"]
438
+ run-groups:
439
+ base:
440
+ # When @args is a dictionary, algorithm instances will be generated
441
+ # by taking the Cartesian product of all of its values.
442
+ arg-groups:
443
+ - {"tuneK": 10, "desiredRecall": [0.99, 0.97, 0.95, 0.9, 0.85, 0.8,
444
+ 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1]}
445
+ - False
446
+ # This run group produces thirteen algorithm instances:
447
+ # NmslibNewIndex("angular", "vptree", {"tuneK": 10,
448
+ # "desiredRecall": 0.99}), NmslibNewIndex("angular", "vptree",
449
+ # {"tuneK": 10, "desiredRecall": 0.97}), and so on up to
450
+ # NmslibNewIndex("angular", "vptree", {"tuneK": 10, "desiredRecall":
451
+ # 0.1}).
452
+ pynndescent:
453
+ docker-tag: ann-benchmarks-pynndescent
454
+ module: ann_benchmarks.algorithms.pynndescent
455
+ constructor: PyNNDescent
456
+ base-args: ["@metric"]
457
+ run-groups:
458
+ NN-10-20:
459
+ arg-groups:
460
+ - {"n_neighbors": [10, 20], "diversify_prob": [1.0],
461
+ "pruning_degree_multiplier":[1.5, 2.0], "leaf_size": 32}
462
+ query-args: [[0.0, 0.02, 0.04, 0.06, 0.08, 0.10, 0.12, 0.14, 0.16]]
463
+ NN-40-80:
464
+ arg-groups:
465
+ - {"n_neighbors": [40, 80], "diversify_prob": [0.0, 1.0],
466
+ "pruning_degree_multiplier":[2.0, 2.5], "leaf_size": 64}
467
+ query-args: [[0.0, 0.04, 0.08, 0.12, 0.16, 0.20, 0.24, 0.28, 0.32]]
468
+ NGT-panng:
469
+ docker-tag: ann-benchmarks-ngt
470
+ module: ann_benchmarks.algorithms.panng_ngt
471
+ constructor : PANNG
472
+ base-args : ["@metric", "Float"]
473
+ run-groups :
474
+ panng:
475
+ args : [{'edge': 20, 'pathadj': 40, 'searchedge': 60}]
476
+ query-args : [[0.6, 0.8, 0.9, 1.0, 1.02, 1.05, 1.1, 1.2]]
477
+ NGT-onng:
478
+ docker-tag: ann-benchmarks-ngt
479
+ module: ann_benchmarks.algorithms.onng_ngt
480
+ constructor : ONNG
481
+ base-args : ["@metric", "Float", 0.1]
482
+ run-groups :
483
+ onng:
484
+ args : [{'edge': 100, 'outdegree': 10, 'indegree': 120}]
485
+ query-args : [[[0.60, -2], [0.90, -2], [1.00, -2], [1.02, -2], [1.03, -2],
486
+ [1.04, -2], [1.05, -2], [1.07, -2], [1.10, -2], [1.20, -2]]]
487
+ onng-with-refinement:
488
+ args : [{'edge': 100, 'outdegree': 10, 'indegree': 120, 'tree': False, 'refine': True}]
489
+ query-args : [[[0.995, 40], [0.998, 40], [1.00, 40], [1.005, 40], [1.010, 40],
490
+ [1.015, 40], [1.020, 40]]]
491
+ NGT-qg:
492
+ docker-tag: ann-benchmarks-ngt
493
+ module: ann_benchmarks.algorithms.qg_ngt
494
+ constructor : QG
495
+ base-args : ["@metric", "Float", 0.1]
496
+ run-groups :
497
+ me-96:
498
+ args : [{'edge': 100, 'outdegree': 64, 'indegree': 120, 'max_edge': 96}]
499
+ query-args : [[[1.2, 0.90], [1.2, 0.95], [1.2, 0.98], [1.2, 1.00], [1.2, 1.02],
500
+ [1.5, 0.90], [1.5, 0.95], [1.5, 0.98], [1.5, 1.00], [1.5, 1.02],
501
+ [2.0, 0.90], [2.0, 0.95], [2.0, 0.98], [2.0, 1.00], [2.0, 1.02],
502
+ [3.0, 0.90], [3.0, 0.95], [3.0, 0.98], [3.0, 1.00], [3.0, 1.02],
503
+ [ 5, 1.00], [ 10, 1.00], [ 20, 1.00],
504
+ [ 2, 1.04], [ 3, 1.04], [ 5, 1.04], [ 8, 1.04]]]
505
+ mrpt:
506
+ docker-tag: ann-benchmarks-mrpt
507
+ module: ann_benchmarks.algorithms.mrpt
508
+ constructor: MRPT
509
+ base-args: ["@metric"]
510
+ run-groups:
511
+ mrpt:
512
+ args: ["@count"]
513
+ query-args: [[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.85, 0.9,
514
+ 0.925, 0.95, 0.97, 0.98, 0.99, 0.995]]
515
+ elastiknn-exact:
516
+ # Disabled because they are < 10 q/s, which will timeout on default settings.
517
+ disabled: true
518
+ docker-tag: ann-benchmarks-elastiknn
519
+ module: ann_benchmarks.algorithms.elastiknn
520
+ constructor: Exact
521
+ base-args: [ "@metric", "@dimension" ]
522
+ run-groups:
523
+ exact:
524
+ args: []
525
+ vald(NGT-panng):
526
+ docker-tag: ann-benchmarks-vald
527
+ module: ann_benchmarks.algorithms.vald
528
+ constructor: Vald
529
+ base-args: ["@metric", "Float"]
530
+ run-groups:
531
+ vald:
532
+ args: [{'edge': 20, 'searchedge': 60, 'bulk': 100}]
533
+ query-args: [[0.6, 0.8, 0.9, 1.0, 1.02, 1.05, 1.1, 1.2]]
534
+
535
+ euclidean:
536
+ vamana(diskann):
537
+ docker-tag: ann-benchmarks-diskann
538
+ module: ann_benchmarks.algorithms.diskann
539
+ constructor: Vamana
540
+ base-args : ["@metric"]
541
+ run-groups :
542
+ vamana_100_64_1-2:
543
+ args : [{'l_build': 100, 'max_outdegree': 64, 'alpha': 1.2}]
544
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
545
+ vamana_100_64_1-1:
546
+ args : [{'l_build': 100, 'max_outdegree': 64, 'alpha': 1.1}]
547
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
548
+ vamana_100_64_1:
549
+ args : [{'l_build': 100, 'max_outdegree': 64, 'alpha': 1}]
550
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
551
+ vamana_125_32_1-2:
552
+ args : [{'l_build': 125, 'max_outdegree': 32, 'alpha': 1.2}]
553
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
554
+ vamana_125_32_1-1:
555
+ args : [{'l_build': 125, 'max_outdegree': 32, 'alpha': 1.1}]
556
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
557
+ vamana_125_32_1:
558
+ args : [{'l_build': 125, 'max_outdegree': 32, 'alpha': 1}]
559
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
560
+ vamana-pq(diskann):
561
+ docker-tag: ann-benchmarks-diskann_pq
562
+ module: ann_benchmarks.algorithms.diskann
563
+ constructor: VamanaPQ
564
+ base-args : ["@metric"]
565
+ run-groups :
566
+ vamana_pq_100_64_1-2_32:
567
+ args : [{'l_build': 100, 'max_outdegree': 64, 'alpha': 1.2, 'chunks': 32}]
568
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
569
+ vamana_pq_100_64_1_32:
570
+ args : [{'l_build': 100, 'max_outdegree': 64, 'alpha': 1, 'chunks': 32}]
571
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
572
+ vamana_pq_80_64_1-2_96:
573
+ args : [{'l_build': 80, 'max_outdegree': 64, 'alpha': 1.2, 'chunks': 96}]
574
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
575
+ vamana_pq_80_64_1_96:
576
+ args : [{'l_build': 80, 'max_outdegree': 64, 'alpha': 1, 'chunks': 96}]
577
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
578
+ vamana_pq_80_64_1-2_112:
579
+ args : [{'l_build': 80, 'max_outdegree': 64, 'alpha': 1.2, 'chunks': 112}]
580
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
581
+ vamana_pq_80_64_1_112:
582
+ args : [{'l_build': 80, 'max_outdegree': 64, 'alpha': 1, 'chunks': 112}]
583
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
584
+ vamana_pq_125_32_1-2_32:
585
+ args : [{'l_build': 125, 'max_outdegree': 32, 'alpha': 1.2, 'chunks': 32}]
586
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
587
+ vamana_pq_125_32_1_32:
588
+ args : [{'l_build': 125, 'max_outdegree': 32, 'alpha': 1, 'chunks': 32}]
589
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
590
+ vamana_pq_125_32_1-2_96:
591
+ args : [{'l_build': 125, 'max_outdegree': 32, 'alpha': 1.2, 'chunks': 96}]
592
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
593
+ vamana_pq_125_32_1_96:
594
+ args : [{'l_build': 125, 'max_outdegree': 32, 'alpha': 1, 'chunks': 96}]
595
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
596
+ vamana_pq_125_32_1-2_112:
597
+ args : [{'l_build': 125, 'max_outdegree': 32, 'alpha': 1.2, 'chunks': 112}]
598
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
599
+ vamana_pq_125_32_1_112:
600
+ args : [{'l_build': 125, 'max_outdegree': 32, 'alpha': 1, 'chunks': 112}]
601
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
602
+ scann:
603
+ docker-tag: ann-benchmarks-scann
604
+ module: ann_benchmarks.algorithms.scann
605
+ constructor: Scann
606
+ run-groups:
607
+ scann1:
608
+ args: [[600], [.nan], [2], ["squared_l2"]]
609
+ query-args: [[[4, 40], [3, 30], [6, 60], [8, 74], [9, 78], [10, 82], [11, 85], [13, 100], [16, 120], [20, 140], [30, 180], [35, 240], [50, 360]]]
610
+ scann2:
611
+ args: [[2000], [.nan], [4], ["squared_l2"]]
612
+ query-args: [[[10, 100], [15, 140], [25, 160], [35, 190], [40, 200], [45, 220], [50, 240], [60, 250], [70, 300], [80, 400], [100, 500], [120, 600], [150, 800], [200, 900]]]
613
+ scann3:
614
+ args: [[100], [.nan], [4], ["squared_l2"]]
615
+ query-args: [[[2, 20], [3, 20], [3, 30], [4, 30], [5, 40], [8, 80]]]
616
+ kgraph:
617
+ docker-tag: ann-benchmarks-kgraph
618
+ module: ann_benchmarks.algorithms.kgraph
619
+ constructor: KGraph
620
+ base-args: ["@metric"]
621
+ run-groups:
622
+ kgraph:
623
+ args: [ {'reverse': -1}, True] # XXX: hard-codes save_index as True
624
+ query-args: [[1, 2, 3, 4, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]]
625
+ hnsw(nmslib):
626
+ docker-tag: ann-benchmarks-nmslib
627
+ module: ann_benchmarks.algorithms.nmslib
628
+ constructor: NmslibReuseIndex
629
+ base-args: ["@metric", "hnsw"]
630
+ run-groups:
631
+ M-32:
632
+ # If a run group has an array called @arg-groups instead of one
633
+ # called @args, then every element in that array will be separately
634
+ # expanded before then taking the Cartesian product of all of those
635
+ # expansions.
636
+ #
637
+ # Yes, this is a bit of a hack, but some constructors are weird.
638
+ # (This one used to require that dictionaries be encoded as lists
639
+ # of environment variable-style strings -- ["M=32", "post=2",
640
+ # "efConstruction=400"] -- which didn't work with this at all...)
641
+ arg-groups:
642
+ - {"M": 32, "post": 2, "efConstruction": 400}
643
+ - False
644
+ query-args: [[20, 30, 40, 50, 60, 70, 80, 90, 100, 120, 140, 160, 200,
645
+ 300, 400]]
646
+ M-20:
647
+ arg-groups:
648
+ - {"M": 20, "post": 2, "efConstruction": 400}
649
+ - False
650
+ query-args: [[2, 5, 10, 15, 20, 30, 40, 50, 70, 80, 120, 200, 400]]
651
+ M-12:
652
+ arg-groups:
653
+ - {"M": 12, "post": 0, "efConstruction": 400}
654
+ - False
655
+ query-args: [[1, 2, 5, 10, 15, 20, 30, 40, 50, 70, 80, 120]]
656
+ M-4:
657
+ arg-groups:
658
+ - {"M": 4, "post": 0, "efConstruction": 400}
659
+ - False
660
+ query-args: [[1, 2, 5, 10, 20, 30, 50, 70, 90, 120]]
661
+ M-8:
662
+ arg-groups:
663
+ - {"M": 8, "post": 0, "efConstruction": 400}
664
+ - False
665
+ query-args: [[1, 2, 5, 10, 20, 30, 50, 70, 90, 120, 160]]
666
+ SW-graph(nmslib):
667
+ docker-tag: ann-benchmarks-nmslib
668
+ module: ann_benchmarks.algorithms.nmslib
669
+ constructor: NmslibReuseIndex
670
+ base-args: ["@metric", "sw-graph"]
671
+ run-groups:
672
+ NN-24:
673
+ arg-groups:
674
+ - {"NN": 24}
675
+ - False
676
+ query-args: [[800, 400, 200, 100, 50, 30, 20, 15, 10, 5, 1]]
677
+ NN-16:
678
+ arg-groups:
679
+ - {"NN": 16}
680
+ - False
681
+ query-args: [[800, 400, 200, 100, 50, 30, 20, 15, 10, 5, 1]]
682
+ NN-10:
683
+ arg-groups:
684
+ - {"NN": 10}
685
+ - False
686
+ query-args: [[800, 400, 200, 100, 50, 30, 20, 15, 10, 5, 1]]
687
+ NN-5:
688
+ arg-groups:
689
+ - {"NN": 5}
690
+ - False
691
+ query-args: [[30, 25, 20, 15, 10, 5, 4, 3, 2, 1]]
692
+ pynndescent:
693
+ docker-tag: ann-benchmarks-pynndescent
694
+ module: ann_benchmarks.algorithms.pynndescent
695
+ constructor: PyNNDescent
696
+ base-args: ["@metric"]
697
+ run-groups:
698
+ NN-10:
699
+ arg-groups:
700
+ - {"n_neighbors": 10, "diversify_prob": 1.0,
701
+ "pruning_degree_multiplier":[0.5, 1.0], "leaf_size": 24}
702
+ query-args: [[0.0, 0.01, 0.02, 0.03, 0.04, 0.06, 0.08, 0.10, 0.12]]
703
+ NN-20:
704
+ arg-groups:
705
+ - {"n_neighbors": 20, "diversify_prob": 1.0,
706
+ "pruning_degree_multiplier":[0.75, 1.5], "leaf_size": 24}
707
+ query-args: [[0.0, 0.02, 0.04, 0.06, 0.08, 0.10, 0.12, 0.14, 0.16, 0.20]]
708
+ NN-40:
709
+ arg-groups:
710
+ - {"n_neighbors": 40, "diversify_prob": [0.0, 1.0],
711
+ "pruning_degree_multiplier":[1.0, 2.0], "leaf_size": 36}
712
+ query-args: [[0.0, 0.02, 0.04, 0.08, 0.12, 0.16, 0.20, 0.24, 0.28, 0.32]]
713
+ NN-60:
714
+ arg-groups:
715
+ - {"n_neighbors": 60, "diversify_prob": 0.0,
716
+ "pruning_degree_multiplier":[2.0, 3.0], "leaf_size": 48}
717
+ query-args: [[0.0, 0.04, 0.08, 0.12, 0.16, 0.20, 0.24, 0.28, 0.32, 0.36]]
718
+ elastiknn-l2lsh:
719
+ docker-tag: ann-benchmarks-elastiknn
720
+ module: ann_benchmarks.algorithms.elastiknn
721
+ constructor: L2Lsh
722
+ base-args: []
723
+ run-groups:
724
+ elastiknn-lsh:
725
+ args:
726
+ - [50, 75, 100]
727
+ - [3, 4]
728
+ - [1, 3, 7]
729
+ query-args:
730
+ - [1000, 10000]
731
+ - [0, 6]
732
+ opensearchknn:
733
+ docker-tag: ann-benchmarks-opensearchknn
734
+ module: ann_benchmarks.algorithms.opensearchknn
735
+ constructor: OpenSearchKNN
736
+ base-args: ["@metric", "@dimension"]
737
+ run-groups:
738
+ M-4:
739
+ arg-groups:
740
+ - {"M": 4, "efConstruction": 500}
741
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
742
+ M-8:
743
+ arg-groups:
744
+ - {"M": 8, "efConstruction": 500}
745
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
746
+ M-12:
747
+ arg-groups:
748
+ - {"M": 12, "efConstruction": 500}
749
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
750
+ M-16:
751
+ arg-groups:
752
+ - {"M": 16, "efConstruction": 500}
753
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
754
+ M-24:
755
+ arg-groups:
756
+ - {"M": 24, "efConstruction": 500}
757
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
758
+ M-36:
759
+ arg-groups:
760
+ - {"M": 36, "efConstruction": 500}
761
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
762
+ M-48:
763
+ arg-groups:
764
+ - {"M": 48, "efConstruction": 500}
765
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
766
+ hnsw(vespa):
767
+ docker-tag: ann-benchmarks-vespa
768
+ module: ann_benchmarks.algorithms.vespa
769
+ constructor: VespaHnsw
770
+ base-args: ["@metric", "@dimension"]
771
+ run-groups:
772
+ M-4:
773
+ arg-groups:
774
+ - {"M": 4, "efConstruction": 500}
775
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
776
+ M-8:
777
+ arg-groups:
778
+ - {"M": 8, "efConstruction": 500}
779
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
780
+ M-12:
781
+ arg-groups:
782
+ - {"M": 12, "efConstruction": 500}
783
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
784
+ M-16:
785
+ arg-groups:
786
+ - {"M": 16, "efConstruction": 500}
787
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
788
+ M-24:
789
+ arg-groups:
790
+ - {"M": 24, "efConstruction": 500}
791
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
792
+ M-36:
793
+ arg-groups:
794
+ - {"M": 36, "efConstruction": 500}
795
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
796
+ M-48:
797
+ arg-groups:
798
+ - {"M": 48, "efConstruction": 500}
799
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
800
+ M-64:
801
+ arg-groups:
802
+ - {"M": 64, "efConstruction": 500}
803
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
804
+ M-96:
805
+ arg-groups:
806
+ - {"M": 96, "efConstruction": 500}
807
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
808
+
809
+ angular:
810
+ vamana(diskann):
811
+ docker-tag: ann-benchmarks-diskann
812
+ module: ann_benchmarks.algorithms.diskann
813
+ constructor: Vamana
814
+ base-args : ["@metric"]
815
+ run-groups :
816
+ vamana_125_64_1-2:
817
+ args : [{'l_build': 125, 'max_outdegree': 64, 'alpha': 1.2}]
818
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
819
+ vamana_125_64_1-1:
820
+ args : [{'l_build': 125, 'max_outdegree': 64, 'alpha': 1.1}]
821
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
822
+ vamana_125_64_1:
823
+ args : [{'l_build': 125, 'max_outdegree': 64, 'alpha': 1}]
824
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
825
+ vamana_125_32_1-2:
826
+ args : [{'l_build': 125, 'max_outdegree': 32, 'alpha': 1.2}]
827
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
828
+ vamana_125_32_1-1:
829
+ args : [{'l_build': 125, 'max_outdegree': 32, 'alpha': 1.1}]
830
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
831
+ vamana_125_32_1:
832
+ args : [{'l_build': 125, 'max_outdegree': 32, 'alpha': 1}]
833
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
834
+ vamana-pq(diskann):
835
+ docker-tag: ann-benchmarks-diskann_pq
836
+ module: ann_benchmarks.algorithms.diskann
837
+ constructor: VamanaPQ
838
+ base-args : ["@metric"]
839
+ run-groups :
840
+ vamana_pq_125_64_1-2_14:
841
+ args : [{'l_build': 125, 'max_outdegree': 64, 'alpha': 1.2, 'chunks': 14}]
842
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
843
+ vamana_pq_125_64_1_14:
844
+ args : [{'l_build': 125, 'max_outdegree': 64, 'alpha': 1, 'chunks': 14}]
845
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
846
+ vamana_pq_125_64_1-2_28:
847
+ args : [{'l_build': 125, 'max_outdegree': 64, 'alpha': 1.2, 'chunks': 28}]
848
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
849
+ vamana_pq_125_64_1_28:
850
+ args : [{'l_build': 125, 'max_outdegree': 64, 'alpha': 1, 'chunks': 28}]
851
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
852
+ vamana_pq_125_64_1-2_42:
853
+ args : [{'l_build': 125, 'max_outdegree': 64, 'alpha': 1.2, 'chunks': 42}]
854
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
855
+ vamana_pq_125_64_1_42:
856
+ args : [{'l_build': 125, 'max_outdegree': 64, 'alpha': 1, 'chunks': 42}]
857
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
858
+ vamana_pq_125_32_1-2_14:
859
+ args : [{'l_build': 125, 'max_outdegree': 32, 'alpha': 1.2, 'chunks': 14}]
860
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
861
+ vamana_pq_125_32_1_14:
862
+ args : [{'l_build': 125, 'max_outdegree': 32, 'alpha': 1, 'chunks': 14}]
863
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
864
+ vamana_pq_125_32_1-2_28:
865
+ args : [{'l_build': 125, 'max_outdegree': 32, 'alpha': 1.2, 'chunks': 28}]
866
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
867
+ vamana_pq_125_32_1_28:
868
+ args : [{'l_build': 125, 'max_outdegree': 32, 'alpha': 1, 'chunks': 28}]
869
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
870
+ vamana_pq_125_32_1-2_42:
871
+ args : [{'l_build': 125, 'max_outdegree': 32, 'alpha': 1.2, 'chunks': 42}]
872
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
873
+ vamana_pq_125_32_1_42:
874
+ args : [{'l_build': 125, 'max_outdegree': 32, 'alpha': 1, 'chunks': 42}]
875
+ query-args : [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]]
876
+ puffinn:
877
+ docker-tag: ann-benchmarks-puffinn
878
+ module: ann_benchmarks.algorithms.puffinn
879
+ constructor: Puffinn
880
+ base-args: ["@metric"]
881
+ run-groups:
882
+ base:
883
+ args: [
884
+ [ 268435456, 536870912, 1073741824, 2147483648, 4294967296],
885
+ ['fht_crosspolytope'],
886
+ ]
887
+ query-args: [[0.1, 0.2, 0.5, 0.7, 0.9, 0.95, 0.99]]
888
+ kgraph:
889
+ docker-tag: ann-benchmarks-kgraph
890
+ module: ann_benchmarks.algorithms.kgraph
891
+ constructor: KGraph
892
+ base-args: ["@metric"]
893
+ run-groups:
894
+ kgraph:
895
+ args: [{'reverse': -1, "K": 200, "L": 300, "S": 20}, False]
896
+ query-args: [[1, 2, 3, 4, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]]
897
+ hnsw(nmslib):
898
+ docker-tag: ann-benchmarks-nmslib
899
+ module: ann_benchmarks.algorithms.nmslib
900
+ constructor: NmslibReuseIndex
901
+ base-args: ["@metric", "hnsw"]
902
+ run-groups:
903
+ M-48:
904
+ arg-groups:
905
+ - {"M": 48, "post": 2, "efConstruction": 800}
906
+ - False
907
+ query-args: [[50, 70, 90, 120, 160, 200, 400, 600, 700, 800, 1000,
908
+ 1400, 1600, 2000]]
909
+ M-32:
910
+ arg-groups:
911
+ - {"M": 32, "post": 2, "efConstruction": 800}
912
+ - False
913
+ query-args: [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 120, 140, 160,
914
+ 200, 300, 400, 600, 700, 800, 1000, 1200, 1400, 1600, 2000]]
915
+ M-20:
916
+ arg-groups:
917
+ - {"M": 20, "post": 0, "efConstruction": 800}
918
+ - False
919
+ query-args: [[2, 5, 10, 15, 20, 30, 40, 50, 70, 80]]
920
+ M-12:
921
+ arg-groups:
922
+ - {"M": 12, "post": 0, "efConstruction": 800}
923
+ - False
924
+ query-args: [[1, 2, 5, 10, 15, 20, 30, 40, 50, 70, 80]]
925
+ SW-graph(nmslib):
926
+ docker-tag: ann-benchmarks-nmslib
927
+ module: ann_benchmarks.algorithms.nmslib
928
+ constructor: NmslibReuseIndex
929
+ base-args: ["@metric", "sw-graph"]
930
+ run-groups:
931
+ NN-30:
932
+ arg-groups:
933
+ - {"NN": 30}
934
+ - False
935
+ query-args: [[700, 650, 550, 450, 350, 275, 200, 150, 120, 80,
936
+ 50, 30]]
937
+ NN-15:
938
+ arg-groups:
939
+ - {"NN": 15}
940
+ - False
941
+ query-args: [[80, 50, 30, 20]]
942
+ NN-3:
943
+ arg-groups:
944
+ - {"NN": 3}
945
+ - False
946
+ query-args: [[120, 80, 60, 40, 20, 10, 8, 4, 2]]
947
+ rpforest:
948
+ docker-tag: ann-benchmarks-rpforest
949
+ module: ann_benchmarks.algorithms.rpforest
950
+ constructor: RPForest
951
+ run-groups:
952
+ base:
953
+ args: [[3, 10, 40, 100, 400],
954
+ [3, 10, 40, 100, 400]]
955
+ pynndescent:
956
+ docker-tag: ann-benchmarks-pynndescent
957
+ module: ann_benchmarks.algorithms.pynndescent
958
+ constructor: PyNNDescent
959
+ base-args: ["@metric"]
960
+ run-groups:
961
+ NN-20:
962
+ arg-groups:
963
+ - {"n_neighbors": [20], "diversify_prob": [1.0],
964
+ "pruning_degree_multiplier":[0.5, 1.0], leaf_size: 20}
965
+ query-args: [[0.0, 0.02, 0.04, 0.06, 0.08, 0.10, 0.12]]
966
+ NN-40:
967
+ arg-groups:
968
+ - {"n_neighbors": [40], "diversify_prob": [0.5, 1.0],
969
+ "pruning_degree_multiplier":[1.5], leaf_size: 25}
970
+ query-args: [[0.0, 0.02, 0.04, 0.06, 0.08, 0.10, 0.12, 0.14, 0.16]]
971
+ NN-80-fast:
972
+ arg-groups:
973
+ - {"n_neighbors": 80, diversify_prob: 1.0,
974
+ "pruning_degree_multiplier": 2.0, leaf_size: 20}
975
+ query-args: [[0.0, 0.02, 0.04, 0.08, 0.12, 0.16, 0.20, 0.24]]
976
+ NN-80-accurate:
977
+ arg-groups:
978
+ - {"n_neighbors": 80, diversify_prob: 0.25,
979
+ "pruning_degree_multiplier": 2.0, leaf_size: 30}
980
+ query-args: [[0.08, 0.12, 0.16, 0.20, 0.24, 0.28, 0.32, 0.36]]
981
+ NN-120-fast:
982
+ arg-groups:
983
+ - {"n_neighbors": 120, "diversify_prob": 1.0,
984
+ "pruning_degree_multiplier":2.5, leaf_size: 20}
985
+ query-args: [[0.0, 0.04, 0.08, 0.16, 0.20, 0.24, 0.28, 0.32]]
986
+ NN-120-accurate:
987
+ arg-groups:
988
+ - {"n_neighbors": 120, "diversify_prob": 0.125,
989
+ "pruning_degree_multiplier":2.5, leaf_size: 35}
990
+ query-args: [[0.16, 0.20, 0.24, 0.28, 0.32, 0.36]]
991
+ scann:
992
+ docker-tag: ann-benchmarks-scann
993
+ module: ann_benchmarks.algorithms.scann
994
+ constructor: Scann
995
+ run-groups:
996
+ scann1:
997
+ args: [[2000], [0.2], [2], ["dot_product"]]
998
+ query-args: [[[1, 30], [2, 30], [4, 30], [8, 30], [30, 120], [35, 100], [40, 80], [45, 80], [50, 80], [55, 95], [60, 110], [65, 110], [75, 110], [90, 110], [110, 120], [130, 150], [150, 200], [170, 200], [200, 300], [220, 500], [250, 500], [310, 300], [400, 300], [500, 500], [800, 1000]]]
999
+ scann2:
1000
+ args: [[1500], [0.55], [1], ["dot_product"]]
1001
+ query-args: [[[1, 30], [2, 30], [4, 30], [8, 30], [8, 25], [10, 25], [12, 25], [13, 25], [14, 27], [15, 30], [17, 30], [18, 40], [20, 40], [22, 40], [25, 50], [30, 50], [35, 55], [50, 60], [60, 60], [80, 80], [100, 100]]]
1002
+ scann3:
1003
+ args: [[1000], [.2], [1], ["dot_product"]]
1004
+ query-args: [[[1, 30], [2, 30], [4, 30], [8, 30], [9, 25], [11, 35], [12, 35], [13, 35], [14, 40], [15, 40], [16, 40], [17, 45], [20, 45], [20, 55], [25, 55], [25, 70], [30, 70], [40, 90], [50, 100], [60, 120], [70, 140]]]
1005
+ scann4:
1006
+ args: [[1400], [0.15], [3], ["dot_product"]]
1007
+ query-args: [[[1, 30], [4, 30], [9, 30], [16, 32], [25, 50], [36, 72], [49, 98], [70, 150], [90, 200], [120, 210], [180, 270], [210, 330], [260, 400], [320, 500], [400, 600], [500, 700], [800, 900]]]
1008
+ elasticsearch:
1009
+ docker-tag: ann-benchmarks-elasticsearch
1010
+ module: ann_benchmarks.algorithms.elasticsearch
1011
+ constructor: ElasticsearchScriptScoreQuery
1012
+ base-args: [ "@metric", "@dimension", "@connection" ]
1013
+ run-groups:
1014
+ M-4:
1015
+ arg-groups:
1016
+ - {"m": 4, "ef_construction": 500, "type": "hnsw"}
1017
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1018
+ M-8:
1019
+ arg-groups:
1020
+ - {"m": 8, "ef_construction": 500, "type": "hnsw"}
1021
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1022
+ M-12:
1023
+ arg-groups:
1024
+ - {"m": 12, "ef_construction": 500, "type": "hnsw"}
1025
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1026
+ M-16:
1027
+ arg-groups:
1028
+ - {"m": 16, "ef_construction": 500, "type": "hnsw"}
1029
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1030
+ M-24:
1031
+ arg-groups:
1032
+ - {"m": 24, "ef_construction": 500, "type": "hnsw"}
1033
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1034
+ M-36:
1035
+ arg-groups:
1036
+ - {"m": 36, "ef_construction": 500, "type": "hnsw"}
1037
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1038
+ M-48:
1039
+ arg-groups:
1040
+ - {"m": 48, "ef_construction": 500, "type": "hnsw"}
1041
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1042
+ M-64:
1043
+ arg-groups:
1044
+ - {"m": 64, "ef_construction": 500, "type": "hnsw"}
1045
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1046
+ M-96:
1047
+ arg-groups:
1048
+ - {"m": 96, "ef_construction": 500, "type": "hnsw"}
1049
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1050
+ opensearchknn:
1051
+ docker-tag: ann-benchmarks-opensearchknn
1052
+ module: ann_benchmarks.algorithms.opensearchknn
1053
+ constructor: OpenSearchKNN
1054
+ base-args: ["@metric", "@dimension"]
1055
+ run-groups:
1056
+ M-4:
1057
+ arg-groups:
1058
+ - {"M": 4, "efConstruction": 500}
1059
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1060
+ M-8:
1061
+ arg-groups:
1062
+ - {"M": 8, "efConstruction": 500}
1063
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1064
+ M-12:
1065
+ arg-groups:
1066
+ - {"M": 12, "efConstruction": 500}
1067
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1068
+ M-16:
1069
+ arg-groups:
1070
+ - {"M": 16, "efConstruction": 500}
1071
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1072
+ M-24:
1073
+ arg-groups:
1074
+ - {"M": 24, "efConstruction": 500}
1075
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1076
+ M-36:
1077
+ arg-groups:
1078
+ - {"M": 36, "efConstruction": 500}
1079
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1080
+ M-48:
1081
+ arg-groups:
1082
+ - {"M": 48, "efConstruction": 500}
1083
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1084
+ hnsw(vespa):
1085
+ docker-tag: ann-benchmarks-vespa
1086
+ module: ann_benchmarks.algorithms.vespa
1087
+ constructor: VespaHnsw
1088
+ base-args: ["@metric", "@dimension"]
1089
+ run-groups:
1090
+ M-4:
1091
+ arg-groups:
1092
+ - {"M": 4, "efConstruction": 500}
1093
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1094
+ M-8:
1095
+ arg-groups:
1096
+ - {"M": 8, "efConstruction": 500}
1097
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1098
+ M-12:
1099
+ arg-groups:
1100
+ - {"M": 12, "efConstruction": 500}
1101
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1102
+ M-16:
1103
+ arg-groups:
1104
+ - {"M": 16, "efConstruction": 500}
1105
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1106
+ M-24:
1107
+ arg-groups:
1108
+ - {"M": 24, "efConstruction": 500}
1109
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1110
+ M-36:
1111
+ arg-groups:
1112
+ - {"M": 36, "efConstruction": 500}
1113
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1114
+ M-48:
1115
+ arg-groups:
1116
+ - {"M": 48, "efConstruction": 500}
1117
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1118
+ M-64:
1119
+ arg-groups:
1120
+ - {"M": 64, "efConstruction": 500}
1121
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1122
+ M-96:
1123
+ arg-groups:
1124
+ - {"M": 96, "efConstruction": 500}
1125
+ query-args: [[10, 20, 40, 80, 120, 200, 400, 600, 800]]
1126
+
1127
+ bit:
1128
+ hamming:
1129
+ mih:
1130
+ docker-tag: ann-benchmarks-mih
1131
+ module: ann_benchmarks.algorithms.subprocess
1132
+ constructor: BitSubprocessPrepared
1133
+ base-args: [["mih/bin/mihwrapper"]]
1134
+ run-groups:
1135
+ base:
1136
+ # Note that MIH assumes that 5 <= dimension / chunks <= 37 and segfaults otherwise.
1137
+ # This parameter space is explored below using the `chunk-factor`.
1138
+ # A factor of 0 means that dimension / chunks = 5 which proceeds linearly to
1139
+ # dimension / chunks = 37 for a factor of 1.
1140
+ # The r parameter denotes a reordering with n / r steps. If r is 0, no reordering
1141
+ # takes places. Otherwise, n / r points from the dataset are used for a
1142
+ # re-ording process. MIH requires either r = 0 or r >= 2.
1143
+ args: { "d" : "@dimension", "r" : [0, 2, 3],
1144
+ "chunk-factor" : [0.2, 0.5, 0.8] }
1145
+ kgraph:
1146
+ docker-tag: ann-benchmarks-kgraph
1147
+ module: ann_benchmarks.algorithms.kgraph
1148
+ constructor: KGraph
1149
+ base-args: ["euclidean"]
1150
+ run-groups:
1151
+ kgraph:
1152
+ args: [[1, 2, 3, 4, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
1153
+ {'reverse': -1, "K": 200, "L": 300, "S": 20}, False]
1154
+ hnsw(nmslib):
1155
+ docker-tag: ann-benchmarks-nmslib
1156
+ module: ann_benchmarks.algorithms.nmslib
1157
+ constructor: NmslibReuseIndex
1158
+ base-args: ["euclidean", "hnsw"]
1159
+ run-groups:
1160
+ M-48:
1161
+ arg-groups:
1162
+ - {"M": 48, "post": 2, "efConstruction": 800}
1163
+ - False
1164
+ query-args: [[50, 70, 90, 120, 160, 200, 400, 600, 700, 800, 1000,
1165
+ 1400, 1600, 2000]]
1166
+ M-32:
1167
+ arg-groups:
1168
+ - {"M": 32, "post": 2, "efConstruction": 800}
1169
+ - False
1170
+ query-args: [[10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 120, 140, 160,
1171
+ 200, 300, 400, 600, 700, 800, 1000, 1200, 1400, 1600, 2000]]
1172
+ M-20:
1173
+ arg-groups:
1174
+ - {"M": 20, "post": 0, "efConstruction": 800}
1175
+ - False
1176
+ query-args: [[2, 5, 10, 15, 20, 30, 40, 50, 70, 80]]
1177
+ M-12:
1178
+ arg-groups:
1179
+ - {"M": 12, "post": 0, "efConstruction": 800}
1180
+ - False
1181
+ query-args: [[1, 2, 5, 10, 15, 20, 30, 40, 50, 70, 80]]
1182
+ pynndescent:
1183
+ docker-tag: ann-benchmarks-pynndescent
1184
+ module: ann_benchmarks.algorithms.pynndescent
1185
+ constructor: PyNNDescent
1186
+ base-args: ["@metric"]
1187
+ run-groups:
1188
+ NN-20:
1189
+ arg-groups:
1190
+ - {"n_neighbors": [20], "diversify_prob": [0.75, 1.0],
1191
+ "pruning_degree_multiplier":[1.0, 1.5], leaf_size: 32}
1192
+ query-args: [[0.0, 0.01, 0.02, 0.04, 0.08, 0.12, 0.16]]
1193
+ NN-40:
1194
+ arg-groups:
1195
+ - {"n_neighbors": [40], "diversify_prob": [0.5, 1.0],
1196
+ "pruning_degree_multiplier":[1.5, 2.0], leaf_size: 48}
1197
+ query-args: [[0.0, 0.04, 0.08, 0.12, 0.16, 0.20, 0.24]]
1198
+ NN-80:
1199
+ arg-groups:
1200
+ - {"n_neighbors": [80], "diversify_prob": [0.25, 1.0],
1201
+ "pruning_degree_multiplier":[1.75, 2.25], leaf_size: 64}
1202
+ query-args: [[0.0, 0.08, 0.12, 0.16, 0.20, 0.24, 0.28, 0.32]]
1203
+ NN-120:
1204
+ arg-groups:
1205
+ - {"n_neighbors": [120], "diversify_prob": [0.0, 1.0],
1206
+ "pruning_degree_multiplier":[2.0, 2.5], leaf_size: 80}
1207
+ query-args: [[0.08, 0.16, 0.20, 0.24, 0.28, 0.32, 0.36]]
1208
+ annoy:
1209
+ docker-tag: ann-benchmarks-annoy
1210
+ module: ann_benchmarks.algorithms.annoy
1211
+ constructor: Annoy
1212
+ base-args: ["@metric"]
1213
+ run-groups:
1214
+ annoy:
1215
+ args: [[100, 200, 400]]
1216
+ query-args: [[100, 200, 400, 1000, 2000, 4000, 10000, 20000, 40000,
1217
+ 100000, 200000, 400000]]
1218
+ # This run group produces 3 algorithm instances -- Annoy("angular",
1219
+ # 100), Annoy("angular", 200), and Annoy("angular", 400) -- each of
1220
+ # which will be used to run 12 different queries.
1221
+ faiss-ivf:
1222
+ docker-tag: ann-benchmarks-faiss
1223
+ module: ann_benchmarks.algorithms.faiss
1224
+ constructor: FaissIVF
1225
+ base-args: ["euclidean"]
1226
+ run-groups:
1227
+ base:
1228
+ args: [[32,64,128,256,512,1024,2048,4096,8192]]
1229
+ query-args: [[1, 5, 10, 50, 100, 200]]
1230
+ jaccard:
1231
+ bf:
1232
+ docker-tag: ann-benchmarks-sklearn
1233
+ module: ann_benchmarks.algorithms.bruteforce
1234
+ constructor: BruteForceBLAS
1235
+ base-args: ["@metric"]
1236
+ run-groups:
1237
+ base:
1238
+ args: {}
1239
+ datasketch:
1240
+ docker-tag: ann-benchmarks-datasketch
1241
+ module: ann_benchmarks.algorithms.datasketch
1242
+ constructor: DataSketch
1243
+ base-args: ["@metric"]
1244
+ run-groups:
1245
+ base:
1246
+ args: [[128, 256, 512],[8, 16, 32, 64, 128]]
1247
+ puffinn:
1248
+ docker-tag: ann-benchmarks-puffinn
1249
+ module: ann_benchmarks.algorithms.puffinn
1250
+ constructor: Puffinn
1251
+ base-args: ["@metric"]
1252
+ run-groups:
1253
+ base:
1254
+ args: [
1255
+ [ 16000000, 512000000],
1256
+ ['1bit_minhash'],
1257
+ ]
1258
+ query-args: [[0.1, 0.2, 0.5, 0.7, 0.9, 0.95, 0.99]]
1259
+ pynndescent:
1260
+ docker-tag: ann-benchmarks-pynndescent
1261
+ module: ann_benchmarks.algorithms.pynndescent
1262
+ constructor: PyNNDescent
1263
+ base-args: ["@metric"]
1264
+ run-groups:
1265
+ NN-20:
1266
+ arg-groups:
1267
+ - {"n_neighbors": [20], "diversify_prob": [1.0],
1268
+ "pruning_degree_multiplier":[0.5, 1.0], leaf_size: 20}
1269
+ query-args: [[0.0, 0.02, 0.04, 0.06, 0.08, 0.10, 0.12]]
1270
+ NN-40:
1271
+ arg-groups:
1272
+ - {"n_neighbors": [40], "diversify_prob": [0.5, 1.0],
1273
+ "pruning_degree_multiplier":[1.5], leaf_size: 25}
1274
+ query-args: [[0.0, 0.02, 0.04, 0.06, 0.08, 0.10, 0.12, 0.14, 0.16]]
1275
+ NN-80-fast:
1276
+ arg-groups:
1277
+ - {"n_neighbors": 80, diversify_prob: 1.0,
1278
+ "pruning_degree_multiplier": 2.0, leaf_size: 20}
1279
+ query-args: [[0.0, 0.02, 0.04, 0.08, 0.12, 0.16, 0.20, 0.24]]
1280
+ NN-80-accurate:
1281
+ arg-groups:
1282
+ - {"n_neighbors": 80, diversify_prob: 0.25,
1283
+ "pruning_degree_multiplier": 2.0, leaf_size: 30}
1284
+ query-args: [[0.08, 0.12, 0.16, 0.20, 0.24, 0.28, 0.32, 0.36]]
1285
+ NN-120-fast:
1286
+ arg-groups:
1287
+ - {"n_neighbors": 120, "diversify_prob": 1.0,
1288
+ "pruning_degree_multiplier":2.5, leaf_size: 20}
1289
+ query-args: [[0.0, 0.04, 0.08, 0.16, 0.20, 0.24, 0.28, 0.32]]
1290
+ NN-120-accurate:
1291
+ arg-groups:
1292
+ - {"n_neighbors": 120, "diversify_prob": 0.125,
1293
+ "pruning_degree_multiplier":2.5, leaf_size: 35}
1294
+ query-args: [[0.16, 0.20, 0.24, 0.28, 0.32, 0.36]]