\begin{figure} \centering \begin{tikzpicture} \begin{axis}[ xlabel={ Recall }, ylabel={ Queries per second (1/s) }, ymode = log, yticklabel style={/pgf/number format/fixed, /pgf/number format/precision=3}, legend style = { anchor=west}, cycle list name = black white ] \addplot coordinates { (0.084543, 5584.3854113) (0.119391, 4446.88200639) (0.174152, 3247.82055985) (0.189256, 2266.7971737) (0.278427, 1939.72103986) (0.299902, 1481.26194653) (0.319946, 1255.66460079) (0.375522, 1240.63373154) (0.401737, 1022.7544419) (0.425452, 934.016037545) (0.483465, 765.689211275) (0.512056, 688.535908575) (0.536908, 649.434006022) (0.631789, 380.240612309) (0.659541, 375.267750327) (0.681717, 360.018396517) (0.762977, 231.717874622) (0.781039, 217.512564304) (0.849984, 130.316700287) (0.865492, 127.74095228) (0.943076, 58.7219372326) (0.976695, 32.1364902735) (0.992438, 17.6399500268) }; \addlegendentry{ annoy }; \addplot coordinates { (0.1079, 1455.39282331) (0.215855, 446.729613344) (0.314101, 252.152151095) (0.410406, 146.351017915) (0.495311, 102.150281964) (0.593046, 69.6570121256) (0.687743, 50.088150487) (0.795523, 35.0569393551) (0.83316, 27.4715037194) (0.889175, 24.5977195558) (0.943601, 22.104513078) (0.965166, 17.4163284087) (0.987217, 15.9540269096) }; \addlegendentry{ BallTree(nmslib) }; \addplot coordinates { (0.999605, 7.51910805742) }; \addlegendentry{ bruteforce-blas }; \addplot coordinates { (0.262003, 7353.33749653) (0.310045, 6588.5191515) (0.353912, 4547.40302368) (0.507244, 3872.47034714) (0.601447, 2544.20616937) (0.67979, 1454.92387005) (0.730314, 1011.42177509) (0.751507, 948.72098202) (0.781097, 727.990952044) (0.798461, 602.568762422) (0.816479, 583.135351866) (0.846245, 393.541847731) (0.859968, 341.375455197) (0.904183, 206.928185662) (0.927954, 102.361656863) (0.945224, 99.5596939172) (0.977353, 51.5348619831) (0.98231, 48.8830534787) (0.998784, 25.3121548836) (0.999582, 19.0369415227) }; \addlegendentry{ faiss-ivf }; \addplot coordinates { (0.082195, 4816.29143502) (0.219768, 2930.22387901) (0.408383, 1187.05508649) (0.542068, 527.401481685) (0.688995, 186.975780523) (0.79592, 76.9398473298) (0.852054, 73.1326676187) }; \addlegendentry{ flann }; \addplot coordinates { (0.208655, 7793.61100287) (0.318785, 6112.04486854) (0.342181, 4944.11632094) (0.444927, 4481.58814091) (0.471472, 3718.20891415) (0.511486, 3233.71703634) (0.55702, 3133.47813724) (0.560722, 2683.98215211) (0.605681, 2582.14014969) (0.608732, 2517.89170369) (0.644878, 2186.24634844) (0.670373, 1959.66457871) (0.677892, 1840.17561567) (0.692669, 1776.58086341) (0.723003, 1659.6727255) (0.729815, 1438.46593412) (0.760252, 1356.85980568) (0.775353, 1246.64049684) (0.782694, 1202.09832062) (0.802146, 1081.54277573) (0.811554, 1005.17045307) (0.832518, 883.043065019) (0.849911, 790.756667986) (0.873398, 631.284800081) (0.891078, 554.701954545) (0.904906, 498.360075749) (0.90617, 391.594514803) (0.917927, 354.373756951) (0.933874, 321.491194049) (0.946719, 283.288589498) (0.95603, 256.00078594) (0.958461, 209.113001606) (0.968318, 186.228615892) (0.974755, 169.476531242) (0.979307, 136.05808713) (0.98404, 124.588658504) (0.987259, 92.5785451162) }; \addlegendentry{ hnsw(faiss) }; \addplot coordinates { (0.025977, 46347.5393605) (0.075582, 17169.2939977) (0.112118, 14373.7866357) (0.155912, 11148.7066949) (0.212738, 10311.396857) (0.249201, 8725.37429122) (0.319766, 7983.69115215) (0.392282, 6767.3204386) (0.446315, 5950.64613176) (0.495813, 5080.30638544) (0.522203, 4897.49631605) (0.53637, 4527.85818144) (0.574643, 4183.27855105) (0.593896, 3744.63577843) (0.614048, 3670.7015494) (0.615785, 3466.93626466) (0.628316, 3074.32450757) (0.669022, 2987.52410894) (0.68965, 2736.73559165) (0.713268, 2227.87643735) (0.740954, 1964.02710067) (0.762956, 1756.05801337) (0.781288, 1589.24869716) (0.796751, 1447.86798251) (0.810056, 1330.79888565) (0.832068, 1144.81473633) (0.849485, 1011.50758499) (0.863864, 904.963457575) (0.886173, 750.936135899) (0.921282, 529.523939331) (0.94154, 411.370879324) (0.964443, 286.175046975) }; \addlegendentry{ hnsw(nmslib) }; \addplot coordinates { (0.3665, 6207.77457791) (0.400039, 5389.12883093) (0.572225, 4285.1115121) (0.601047, 3729.12311411) (0.648503, 3375.83594981) (0.675362, 2928.91124464) (0.692622, 2841.37984856) (0.718129, 2439.78348113) (0.742136, 2225.57325184) (0.742244, 1937.50041574) (0.765899, 1917.8806038) (0.783331, 1610.7789787) (0.80645, 1376.58742848) (0.80815, 1360.34032638) (0.825789, 1235.97240581) (0.828945, 1234.60043981) (0.830668, 1165.94841222) (0.85088, 1059.09118685) (0.864082, 894.559815481) (0.870052, 833.785099853) (0.886108, 754.88291416) (0.903295, 685.946650531) (0.918747, 539.081092728) (0.924118, 492.339002084) (0.941675, 413.10595846) (0.954358, 375.060861375) (0.963847, 294.199243493) (0.964136, 288.737269134) (0.964674, 267.551564945) (0.97351, 262.375277248) (0.976154, 223.529610456) (0.979802, 205.49556939) (0.983202, 203.537536565) (0.987473, 159.37659859) }; \addlegendentry{ hnswlib }; \addplot coordinates { (0.999671, 2.95079520454) }; \addlegendentry{ kd }; \addplot coordinates { (0.964074, 209.601358166) (0.964625, 207.702022187) (0.964849, 206.930777737) (0.965731, 206.665452386) (0.967571, 195.799358744) (0.970861, 183.558839928) (0.973594, 172.180184858) (0.976119, 162.090963787) (0.97815, 153.295959023) (0.980053, 146.075359552) (0.981593, 138.951985325) (0.983049, 132.840087029) (0.984238, 127.058042284) (0.985353, 122.18271921) }; \addlegendentry{ kgraph }; \addplot coordinates { (0.158647, 15190.1987222) (0.374353, 7272.1472328) (0.501234, 5277.68966188) (0.712712, 2737.40485287) (0.762282, 2137.55521363) (0.847298, 1261.74599934) (0.971457, 281.355345694) (0.999117, 49.1145165684) }; \addlegendentry{ NGT-onng }; \addplot coordinates { (0.069043, 8050.30673975) (0.209118, 4306.00477815) (0.38621, 2107.55520864) (0.514367, 1635.93370214) (0.709225, 835.745058846) (0.749095, 721.412903618) (0.805284, 424.258053605) (0.884641, 220.372185111) (0.977308, 57.3680458276) (0.997158, 16.8706857128) }; \addlegendentry{ NGT-panng }; \addplot coordinates { (0.393239, 1122.17769956) (0.57002, 823.816445315) (0.689904, 635.32932705) (0.778844, 417.743401756) (0.839509, 242.873419524) (0.839995, 233.542710301) (0.891035, 131.822493053) (0.891186, 131.285955902) (0.932505, 71.1932593336) (0.963326, 36.7264058833) (0.983164, 18.0286199838) (0.993724, 8.06273201751) (0.998089, 3.11358613307) }; \addlegendentry{ pynndescent }; \addplot coordinates { (0.001051, 28438.5428914) (0.002647, 27063.5527985) (0.006516, 14548.3202313) (0.00865, 10119.0775178) (0.009958, 8527.59067279) (0.020274, 4753.67028376) (0.031555, 3097.45196547) (0.032153, 2770.1190411) (0.074878, 1491.18105352) (0.108954, 756.800074859) (0.160395, 497.262987363) (0.231426, 294.836752133) (0.43199, 135.745726641) (0.436945, 92.7824888626) (0.565938, 81.4564980485) (0.836055, 23.2925906606) }; \addlegendentry{ rpforest }; \addplot coordinates { (0.032573, 3947.97893472) (0.040982, 3782.72532731) (0.052797, 3403.67242133) (0.057908, 3223.64090229) (0.077359, 2770.58088872) (0.10367, 2240.75528388) (0.123328, 1910.52564572) (0.139192, 1678.1735657) (0.456795, 1618.72996489) (0.517055, 1387.91785618) (0.590677, 1093.22112843) (0.650369, 969.913807875) (0.652614, 847.437186352) (0.715777, 758.65880509) (0.768564, 580.084027532) (0.808798, 453.805160704) (0.829111, 390.245191407) (0.853239, 322.230790348) (0.877705, 257.373089517) (0.894639, 215.7280188) (0.910986, 178.215040258) (0.922927, 152.383946346) (0.932504, 133.862085353) (0.936439, 124.579594022) }; \addlegendentry{ SW-graph(nmslib) }; \end{axis} \end{tikzpicture} \caption{ Recall-Queries per second (1/s) tradeoff - up and to the right is better } \label{} \end{figure}
\begin{figure} \centering \begin{tikzpicture} \begin{axis}[ xlabel={ Recall }, ylabel={ Index size (kB)/Queries per second (s) }, ymode = log, yticklabel style={/pgf/number format/fixed, /pgf/number format/precision=3}, legend style = { anchor=west}, cycle list name = black white ] \addplot coordinates { (0.084543, 492.756820551) (0.119391, 618.803016595) (0.174152, 847.258630609) (0.278427, 1418.6287324) (0.375522, 2218.01481779) (0.483465, 3593.81320708) (0.512056, 6589.7216739) (0.631789, 7236.84927627) (0.659541, 12090.7272102) (0.736857, 12743.8589121) (0.762977, 19580.9667571) (0.830641, 23227.1687464) (0.849984, 34817.1799162) (0.923987, 50034.6357874) (0.935092, 78057.3194031) (0.967376, 88722.126399) (0.972858, 144029.564045) (0.989406, 163696.514308) (0.991305, 264275.765038) (0.992438, 431173.557094) }; \addlegendentry{ annoy }; \addplot coordinates { (0.1079, 921.373239254) (0.215855, 3008.0656394) (0.314101, 5326.00651697) (0.410406, 9167.19281571) (0.495311, 13127.7953836) (0.593046, 19247.0500684) (0.687743, 26759.1433696) (0.795523, 38377.4517899) (0.83316, 48878.7222467) (0.889175, 54548.6339479) (0.943601, 60756.6425581) (0.965166, 77340.7556626) (0.987217, 84078.3338028) }; \addlegendentry{ BallTree(nmslib) }; \addplot coordinates { (0.999605, 6.91571388559) }; \addlegendentry{ bruteforce-blas }; \addplot coordinates { (0.262003, 88.1673118235) (0.310045, 96.2953867798) (0.353912, 142.965995451) (0.507244, 167.418712574) (0.601447, 254.82368835) (0.67979, 448.457828915) (0.730314, 646.887397636) (0.751507, 687.738557875) (0.781097, 890.566013464) (0.798461, 1085.81134769) (0.816479, 1118.90318073) (0.846245, 1647.40802976) (0.859968, 1916.58770436) (0.904183, 3133.08695925) (0.945224, 6372.49849852) (0.977353, 13186.335887) (0.98231, 13299.5783556) (0.998784, 26847.0228285) (0.999582, 33101.8321855) }; \addlegendentry{ faiss-ivf }; \addplot coordinates { (0.082195, 151.117931674) (0.219768, 267.276505939) (0.408383, 656.731106142) (0.542068, 1171.14574276) (0.688995, 3344.5615162) (0.79592, 8039.0073735) (0.852054, 10841.5572113) }; \addlegendentry{ flann }; \addplot coordinates { (0.088468, 69.7160885645) (0.208655, 74.2864892521) (0.318785, 94.7244355125) (0.444927, 129.186346848) (0.55702, 184.76592931) (0.608732, 229.938404083) (0.639457, 285.220936115) (0.677892, 354.442257819) (0.690963, 358.363919196) (0.723003, 437.524813684) (0.729815, 453.424710681) (0.76031, 553.70858457) (0.775353, 582.483885162) (0.797527, 697.952112695) (0.811554, 831.612188206) (0.840204, 927.32485829) (0.873398, 1324.14403118) (0.891078, 1702.37727173) (0.90617, 1854.3364949) (0.933874, 2600.10854255) (0.935133, 2888.98262889) (0.946719, 3333.39228973) (0.958461, 3997.41763344) (0.968318, 5070.71373256) (0.971609, 5525.92016058) (0.974755, 6468.95468042) (0.979307, 6940.50621996) (0.98404, 8799.64527404) (0.987259, 14995.3101797) }; \addlegendentry{ hnsw(faiss) }; \addplot coordinates { (0.025977, 35.5405275604) (0.075582, 95.9396466866) (0.112118, 129.806574098) (0.155912, 147.749514368) (0.212738, 180.946580359) (0.249201, 188.784566143) (0.31728, 218.128138158) (0.319766, 233.702928187) (0.367761, 245.813342301) (0.392282, 275.709125484) (0.441794, 281.545559861) (0.446315, 313.547799464) (0.495813, 324.235562785) (0.53637, 363.795846511) (0.593896, 439.886840127) (0.615785, 475.121511979) (0.669022, 624.534541635) (0.68965, 681.765533248) (0.713268, 1339.71164197) (0.740954, 1519.68982453) (0.762956, 1699.66594342) (0.781288, 1878.06477698) (0.796751, 2061.45314079) (0.810056, 2242.79718911) (0.832068, 2607.1572153) (0.849485, 2950.75592542) (0.863864, 3298.15748362) (0.886173, 3974.65491047) (0.921282, 5636.59502112) (0.94154, 7255.52573119) (0.964443, 10429.6724384) }; \addlegendentry{ hnsw(nmslib) }; \addplot coordinates { (0.3665, 97.24644354) (0.400039, 112.018847376) (0.572225, 149.135908878) (0.601047, 171.371118744) (0.648503, 199.407794102) (0.675362, 229.835574988) (0.692622, 250.454370035) (0.718129, 291.679981238) (0.742244, 347.441473834) (0.765899, 408.336159429) (0.780408, 443.201754589) (0.783331, 556.155755598) (0.81579, 631.031283184) (0.825789, 633.622560116) (0.85023, 805.884202845) (0.852397, 896.332616953) (0.864082, 1001.43554908) (0.891142, 1144.11611044) (0.905803, 1475.71110599) (0.921989, 1633.34099677) (0.924118, 1819.56740418) (0.940088, 2117.70102049) (0.941675, 2432.45099573) (0.950018, 2595.97526279) (0.954358, 3073.86912026) (0.964674, 3348.30409303) (0.97351, 4394.04204578) (0.976154, 4495.42231989) (0.983202, 5664.25249837) (0.987473, 9100.40754307) }; \addlegendentry{ hnswlib }; \addplot coordinates { (0.999671, 319168.202032) }; \addlegendentry{ kd }; \addplot coordinates { (0.964074, 63109.8964039) (0.964625, 63687.0063214) (0.964849, 63924.3719309) (0.965731, 64006.4405894) (0.967571, 67558.5460792) (0.970861, 72063.6500272) (0.973594, 76826.0297251) (0.976119, 81608.0038699) (0.97815, 86290.0762965) (0.980053, 90555.4505601) (0.981593, 95197.7761889) (0.983049, 99577.7727631) (0.984238, 104109.269766) (0.985353, 108263.427803) }; \addlegendentry{ kgraph }; \addplot coordinates { (0.158647, 162.552712124) (0.374353, 339.543180433) (0.501234, 467.857748029) (0.712712, 902.02514159) (0.762282, 1155.1551905) (0.847298, 1956.97707882) (0.971457, 8776.11901743) (0.999117, 50274.504821) }; \addlegendentry{ NGT-onng }; \addplot coordinates { (0.069043, 144.389529191) (0.209118, 269.935603857) (0.38621, 551.450322741) (0.514367, 710.388201235) (0.709225, 1390.36179479) (0.749095, 1611.47103714) (0.805284, 2740.99216295) (0.884641, 5273.82346105) (0.977308, 20272.0518578) (0.997158, 68895.599135) }; \addlegendentry{ NGT-panng }; \addplot coordinates { (0.393239, 1124.80581328) (0.57002, 1754.53161711) (0.654903, 2920.29648188) (0.689904, 3038.53752347) (0.763595, 5069.38840258) (0.778844, 6576.59220577) (0.826212, 9691.98077936) (0.839509, 11311.7689263) (0.878075, 20529.9383624) (0.891035, 20841.1169928) (0.932238, 41474.249998) (0.932505, 87765.1628607) (0.962531, 91288.6189853) (0.963326, 170130.668921) (0.982457, 228729.327118) (0.983164, 346576.055496) (0.993282, 666154.616277) (0.993724, 774959.156082) (0.998089, 2006781.80495) }; \addlegendentry{ pynndescent }; \addplot coordinates { (0.002647, 37.6515237148) (0.006516, 67.7315308113) (0.009958, 115.164064234) (0.020274, 221.704901074) (0.031555, 331.801755591) (0.032153, 668.085368369) (0.074878, 888.849812619) (0.108954, 1634.75670933) (0.160395, 3776.88275164) (0.226508, 5051.79076625) (0.231426, 5623.54587075) (0.436945, 16987.7745178) (0.565938, 45809.1384898) (0.836055, 145719.47146) }; \addlegendentry{ rpforest }; \addplot coordinates { (0.032573, 203.664713844) (0.040982, 212.562089612) (0.052797, 236.234249501) (0.057908, 249.427285598) (0.077359, 290.214952132) (0.10367, 358.836150375) (0.123328, 420.86009251) (0.139192, 479.130416801) (0.165684, 592.633997987) (0.456795, 692.602240223) (0.517055, 807.782676051) (0.590677, 1025.53451525) (0.652614, 1322.97239023) (0.715777, 2009.22468674) (0.768564, 2627.75033901) (0.808798, 3358.96576768) (0.829111, 3906.0468484) (0.853239, 4730.51007432) (0.877705, 5922.59277324) (0.894639, 7065.91572332) (0.910986, 8553.23993862) (0.922927, 10003.1272096) (0.932504, 11387.2124132) (0.936439, 12235.6796229) }; \addlegendentry{ SW-graph(nmslib) }; \end{axis} \end{tikzpicture} \caption{ Recall-Index size (kB)/Queries per second (s) tradeoff - down and to the right is better } \label{} \end{figure}
\begin{figure} \centering \begin{tikzpicture} \begin{axis}[ xlabel={ Recall }, ylabel={ Build time (s) }, ymode = log, yticklabel style={/pgf/number format/fixed, /pgf/number format/precision=3}, legend style = { anchor=west}, cycle list name = black white ] \addplot coordinates { (0.967376, 291.590550423) (0.989406, 291.590550423) (0.991305, 673.77855444) (0.992438, 1166.84624171) }; \addlegendentry{ annoy }; \addplot coordinates { (0.314101, 183.296724081) (0.410406, 248.201233864) (0.495311, 268.507893085) (0.687743, 319.419001818) (0.889175, 369.783482075) (0.943601, 371.056446075) (0.987217, 403.527091026) }; \addlegendentry{ BallTree(nmslib) }; \addplot coordinates { (0.999605, 0.287957906723) }; \addlegendentry{ bruteforce-blas }; \addplot coordinates { (0.562598, 1.75712418556) (0.999582, 1.75712418556) }; \addlegendentry{ faiss-ivf }; \addplot coordinates { (0.082195, 488.529290199) (0.219768, 637.47782135) (0.408383, 975.347343683) (0.542068, 1329.02515864) (0.688995, 3127.58393455) (0.852054, 4661.91295815) }; \addlegendentry{ flann }; \addplot coordinates { (0.585718, 932.309959888) (0.644362, 932.309959888) (0.67996, 932.309959888) (0.774029, 1386.31206989) (0.834883, 1386.31206989) (0.88924, 2142.73861003) (0.919292, 2775.9745729) (0.935133, 4034.59430909) (0.951668, 4034.59430909) (0.979307, 4802.58256006) (0.98404, 5805.64648199) (0.987259, 6634.84332585) }; \addlegendentry{ hnsw(faiss) }; \addplot coordinates { (0.31728, 4235.73589087) (0.495813, 4235.73589087) (0.593896, 4235.73589087) (0.615785, 4235.73589087) (0.669022, 5438.26300192) (0.68965, 5438.26300192) (0.886173, 17158.9926538) (0.921282, 17158.9926538) (0.964443, 17158.9926538) }; \addlegendentry{ hnsw(nmslib) }; \addplot coordinates { (0.597942, 842.791985035) (0.651165, 842.791985035) (0.684077, 842.791985035) (0.756362, 1106.15124846) (0.822178, 1106.15124846) (0.875336, 1424.40907335) (0.905803, 1712.881567) (0.921989, 2232.16507077) (0.940088, 2232.16507077) (0.950018, 3092.75346589) (0.964674, 3092.75346589) (0.976154, 3565.52533364) (0.983202, 3854.97793722) (0.987473, 4590.37983727) }; \addlegendentry{ hnswlib }; \addplot coordinates { (0.999671, 11.4433910847) }; \addlegendentry{ kd }; \addplot coordinates { (0.97815, 7700.138515) (0.983049, 7700.138515) (0.984238, 7700.138515) (0.985353, 7700.138515) }; \addlegendentry{ kgraph }; \addplot coordinates { (0.971457, 4056.20341682) (0.999117, 4056.20341682) }; \addlegendentry{ NGT-onng }; \addplot coordinates { (0.997158, 889.341522217) }; \addlegendentry{ NGT-panng }; \addplot coordinates { (0.719383, 184.452769756) (0.785977, 184.452769756) (0.845577, 184.452769756) (0.851935, 379.611212969) (0.937575, 379.611212969) (0.977291, 789.893992424) (0.993282, 2025.0387876) (0.998089, 5079.60852051) }; \addlegendentry{ pynndescent }; \addplot coordinates { (0.022082, 23.0682070255) (0.06746, 74.045173645) (0.226508, 265.396026611) (0.436945, 715.43530035) (0.565938, 3147.18274713) (0.836055, 3261.21967912) }; \addlegendentry{ rpforest }; \addplot coordinates { (0.165684, 268.504122019) (0.590677, 777.695152998) (0.652614, 777.695152998) (0.910986, 1645.50340319) (0.932504, 1645.50340319) (0.936439, 1645.50340319) }; \addlegendentry{ SW-graph(nmslib) }; \end{axis} \end{tikzpicture} \caption{ Recall-Build time (s) tradeoff - down and to the right is better } \label{} \end{figure}
\begin{figure} \centering \begin{tikzpicture} \begin{axis}[ xlabel={ Recall }, ylabel={ Index size (kB) }, ymode = log, yticklabel style={/pgf/number format/fixed, /pgf/number format/precision=3}, legend style = { anchor=west}, cycle list name = black white ] \addplot coordinates { (0.967376, 2751744.0) (0.989406, 2751744.0) (0.991305, 4537260.0) (0.992438, 7605880.0) }; \addlegendentry{ annoy }; \addplot coordinates { (0.687743, 1340316) (0.987217, 1341388) }; \addlegendentry{ BallTree(nmslib) }; \addplot coordinates { (0.999605, 52.0) }; \addlegendentry{ bruteforce-blas }; \addplot coordinates { (0.562598, 627528) (0.999582, 627528) }; \addlegendentry{ faiss-ivf }; \addplot coordinates { (0.542068, 617664.0) (0.79592, 618520.0) (0.852054, 792872.0) }; \addlegendentry{ flann }; \addplot coordinates { (0.585718, 539064) (0.644362, 539064) (0.67996, 539064) (0.774029, 578960) (0.834883, 578960) (0.88924, 614656) (0.919292, 652236) (0.935133, 726148) (0.951668, 726148) (0.958461, 835912) (0.971609, 835912) (0.979307, 944312) (0.98404, 1096336) (0.987259, 1388244) }; \addlegendentry{ hnsw(faiss) }; \addplot coordinates { (0.31728, 1647216) (0.495813, 1647216) (0.593896, 1647216) (0.615785, 1647216) (0.669022, 1865812) (0.68965, 1865812) (0.886173, 2984712) (0.921282, 2984712) (0.964443, 2984712) }; \addlegendentry{ hnsw(nmslib) }; \addplot coordinates { (0.597942, 603684.0) (0.651165, 603684.0) (0.684077, 603684.0) (0.756362, 639064.0) (0.822178, 639064.0) (0.875336, 673168.0) (0.905803, 711636.0) (0.921989, 783140.0) (0.940088, 783140.0) (0.950018, 895844.0) (0.964674, 895844.0) (0.976154, 1004860.0) (0.983202, 1152888.0) (0.987473, 1450392.0) }; \addlegendentry{ hnswlib }; \addplot coordinates { (0.999671, 937456.0) }; \addlegendentry{ kd }; \addplot coordinates { (0.97815, 13227920) (0.983049, 13227920) (0.984238, 13227920) (0.985353, 13227920) }; \addlegendentry{ kgraph }; \addplot coordinates { (0.971457, 2469208.0) (0.999117, 2469208.0) }; \addlegendentry{ NGT-onng }; \addplot coordinates { (0.709225, 1161988.0) (0.884641, 1162204.0) (0.997158, 1162316.0) }; \addlegendentry{ NGT-panng }; \addplot coordinates { (0.719383, 1262232.0) (0.785977, 1262232.0) (0.845577, 1262232.0) (0.851935, 1445412.0) (0.937575, 1445412.0) (0.977291, 1930472.0) (0.993282, 2747328.0) (0.998089, 6248288.0) }; \addlegendentry{ pynndescent }; \addplot coordinates { (0.009958, 982072.0) (0.022082, 984716.0) (0.06746, 1017540.0) (0.226508, 1206256.0) (0.436945, 1576168.0) (0.836055, 3394184.0) }; \addlegendentry{ rpforest }; \addplot coordinates { (0.165684, 804064) (0.590677, 1121136) (0.652614, 1121136) (0.910986, 1524316) (0.932504, 1524316) (0.936439, 1524316) }; \addlegendentry{ SW-graph(nmslib) }; \end{axis} \end{tikzpicture} \caption{ Recall-Index size (kB) tradeoff - down and to the right is better } \label{} \end{figure}
\begin{figure} \centering \begin{tikzpicture} \begin{axis}[ xlabel={ Epsilon 0.01 Recall }, ylabel={ Queries per second (1/s) }, ymode = log, yticklabel style={/pgf/number format/fixed, /pgf/number format/precision=3}, legend style = { anchor=west}, cycle list name = black white ] \addplot coordinates { (0.09145, 5584.3854113) (0.129807, 4446.88200639) (0.190622, 3247.82055985) (0.20707, 2266.7971737) (0.308187, 1939.72103986) (0.332147, 1481.26194653) (0.354522, 1255.66460079) (0.419189, 1240.63373154) (0.449313, 1022.7544419) (0.476034, 934.016037545) (0.543489, 765.689211275) (0.575762, 688.535908575) (0.603812, 649.434006022) (0.711671, 380.240612309) (0.7409, 375.267750327) (0.765137, 360.018396517) (0.850168, 231.717874622) (0.868631, 217.512564304) (0.934323, 130.316700287) (0.947136, 127.74095228) (0.996496, 58.7219372326) (0.999975, 32.1364902735) (1.0, 17.6399500268) }; \addlegendentry{ annoy }; \addplot coordinates { (0.123762, 1455.39282331) (0.252582, 446.729613344) (0.367618, 252.152151095) (0.480771, 146.351017915) (0.587564, 102.150281964) (0.70461, 69.6570121256) (0.814835, 50.088150487) (0.922787, 35.0569393551) (0.950804, 27.4715037194) (0.966254, 24.5977195558) (0.987357, 22.104513078) (0.993235, 17.4163284087) (0.998872, 15.9540269096) }; \addlegendentry{ BallTree(nmslib) }; \addplot coordinates { (1.0, 7.51910805742) }; \addlegendentry{ bruteforce-blas }; \addplot coordinates { (0.290361, 7353.33749653) (0.345648, 6588.5191515) (0.395867, 4547.40302368) (0.566513, 3872.47034714) (0.671152, 2544.20616937) (0.754526, 1454.92387005) (0.807297, 1011.42177509) (0.828532, 948.72098202) (0.858561, 727.990952044) (0.875072, 602.568762422) (0.893103, 583.135351866) (0.921691, 393.541847731) (0.933826, 341.375455197) (0.972305, 206.928185662) (0.988273, 102.361656863) (0.995512, 99.5596939172) (0.999808, 51.5348619831) (0.999967, 48.8830534787) (0.999997, 25.3121548836) (1.0, 19.0369415227) }; \addlegendentry{ faiss-ivf }; \addplot coordinates { (0.089163, 4816.29143502) (0.240928, 2930.22387901) (0.454262, 1187.05508649) (0.60448, 527.401481685) (0.764367, 186.975780523) (0.875483, 76.9398473298) (0.92637, 73.1326676187) }; \addlegendentry{ flann }; \addplot coordinates { (0.228057, 7793.61100287) (0.35182, 6112.04486854) (0.378974, 4944.11632094) (0.49702, 4481.58814091) (0.52763, 3718.20891415) (0.574845, 3233.71703634) (0.625768, 3133.47813724) (0.633795, 2683.98215211) (0.685006, 2582.14014969) (0.72992, 2186.24634844) (0.758932, 1959.66457871) (0.76181, 1840.17561567) (0.784396, 1776.58086341) (0.811073, 1659.6727255) (0.81339, 1438.46593412) (0.84984, 1356.85980568) (0.861079, 1246.64049684) (0.872391, 1202.09832062) (0.891944, 1081.54277573) (0.897315, 1005.17045307) (0.917154, 883.043065019) (0.933352, 790.756667986) (0.951501, 631.284800081) (0.966076, 554.701954545) (0.97668, 498.360075749) (0.985358, 354.373756951) (0.992142, 321.491194049) (0.997191, 283.288589498) (0.998933, 256.00078594) (0.999079, 209.113001606) (0.999852, 186.228615892) (0.999965, 169.476531242) (0.999991, 136.05808713) (1.0, 124.588658504) }; \addlegendentry{ hnsw(faiss) }; \addplot coordinates { (0.027409, 46347.5393605) (0.081513, 17169.2939977) (0.121518, 14373.7866357) (0.169436, 11148.7066949) (0.232557, 10311.396857) (0.272798, 8725.37429122) (0.352506, 7983.69115215) (0.434993, 6767.3204386) (0.497287, 5950.64613176) (0.555121, 5080.30638544) (0.586162, 4897.49631605) (0.602173, 4527.85818144) (0.64726, 4183.27855105) (0.667467, 3744.63577843) (0.691834, 3670.7015494) (0.708138, 3074.32450757) (0.751394, 2987.52410894) (0.773155, 2736.73559165) (0.798524, 2227.87643735) (0.826836, 1964.02710067) (0.848579, 1756.05801337) (0.866535, 1589.24869716) (0.881307, 1447.86798251) (0.893856, 1330.79888565) (0.914153, 1144.81473633) (0.929472, 1011.50758499) (0.941904, 904.963457575) (0.96014, 750.936135899) (0.984794, 529.523939331) (0.994916, 411.370879324) (0.99957, 286.175046975) }; \addlegendentry{ hnsw(nmslib) }; \addplot coordinates { (0.409799, 6207.77457791) (0.448496, 5389.12883093) (0.64245, 4285.1115121) (0.674247, 3729.12311411) (0.726772, 3375.83594981) (0.755192, 2928.91124464) (0.77446, 2841.37984856) (0.800732, 2439.78348113) (0.826886, 2225.57325184) (0.850095, 1917.8806038) (0.869366, 1610.7789787) (0.891011, 1376.58742848) (0.894138, 1360.34032638) (0.906443, 1235.97240581) (0.914724, 1234.60043981) (0.934028, 1059.09118685) (0.934713, 974.048346639) (0.942281, 894.559815481) (0.951865, 833.785099853) (0.961478, 754.88291416) (0.975449, 685.946650531) (0.986067, 539.081092728) (0.986813, 492.339002084) (0.995318, 413.10595846) (0.998737, 375.060861375) (0.999645, 294.199243493) (0.999683, 288.737269134) (0.999956, 262.375277248) (0.999989, 223.529610456) (0.999995, 203.537536565) (0.999999, 159.37659859) }; \addlegendentry{ hnswlib }; \addplot coordinates { (1.0, 2.95079520454) }; \addlegendentry{ kd }; \addplot coordinates { (0.99882, 209.601358166) (0.998962, 207.702022187) (0.999036, 206.665452386) (0.999252, 195.799358744) (0.999565, 183.558839928) (0.999714, 172.180184858) (0.999817, 162.090963787) (0.999888, 153.295959023) (0.999924, 146.075359552) (0.999953, 138.951985325) (0.999981, 132.840087029) (0.999992, 127.058042284) (0.999995, 122.18271921) }; \addlegendentry{ kgraph }; \addplot coordinates { (0.166383, 15190.1987222) (0.401427, 7272.1472328) (0.546205, 5277.68966188) (0.793181, 2737.40485287) (0.846063, 2137.55521363) (0.930236, 1261.74599934) (0.999967, 281.355345694) (1.0, 49.1145165684) }; \addlegendentry{ NGT-onng }; \addplot coordinates { (0.072237, 8050.30673975) (0.220014, 4306.00477815) (0.413921, 2107.55520864) (0.560758, 1635.93370214) (0.791848, 835.745058846) (0.834426, 721.412903618) (0.892308, 424.258053605) (0.966668, 220.372185111) (0.999986, 57.3680458276) (0.999997, 16.8706857128) }; \addlegendentry{ NGT-panng }; \addplot coordinates { (0.440749, 1122.17769956) (0.640613, 823.816445315) (0.77032, 635.32932705) (0.859638, 417.743401756) (0.916735, 242.873419524) (0.961068, 131.822493053) (0.98815, 71.1932593336) (0.988586, 66.2417765271) (0.998571, 36.7264058833) (0.998674, 30.0949672647) (0.999985, 18.0286199838) (1.0, 8.06273201751) }; \addlegendentry{ pynndescent }; \addplot coordinates { (0.001117, 28438.5428914) (0.00285, 27063.5527985) (0.007079, 14548.3202313) (0.009391, 10119.0775178) (0.01089, 8527.59067279) (0.022268, 4753.67028376) (0.034612, 3097.45196547) (0.034774, 2770.1190411) (0.08232, 1491.18105352) (0.120658, 756.800074859) (0.177924, 497.262987363) (0.258389, 294.836752133) (0.488061, 135.745726641) (0.498439, 92.7824888626) (0.645389, 81.4564980485) (0.949897, 23.2925906606) }; \addlegendentry{ rpforest }; \addplot coordinates { (0.03597, 3947.97893472) (0.045293, 3782.72532731) (0.058442, 3403.67242133) (0.06417, 3223.64090229) (0.085987, 2770.58088872) (0.116018, 2240.75528388) (0.138663, 1910.52564572) (0.156944, 1678.1735657) (0.512051, 1618.72996489) (0.581893, 1387.91785618) (0.665822, 1093.22112843) (0.729727, 969.913807875) (0.734976, 847.437186352) (0.799207, 758.65880509) (0.852553, 580.084027532) (0.891571, 453.805160704) (0.910722, 390.245191407) (0.932672, 322.230790348) (0.953842, 257.373089517) (0.967468, 215.7280188) (0.979033, 178.215040258) (0.986397, 152.383946346) (0.991185, 133.862085353) (0.992842, 124.579594022) }; \addlegendentry{ SW-graph(nmslib) }; \end{axis} \end{tikzpicture} \caption{ Epsilon 0.01 Recall-Queries per second (1/s) tradeoff - up and to the right is better } \label{} \end{figure}
\begin{figure} \centering \begin{tikzpicture} \begin{axis}[ xlabel={ Recall }, ylabel={ Queries per second (1/s) }, ymode = log, yticklabel style={/pgf/number format/fixed, /pgf/number format/precision=3}, legend style = { anchor=west}, cycle list name = black white ] \addplot [only marks] coordinates { (0.084543, 5584.3854113) (0.119391, 4446.88200639) (0.093022, 3507.02612779) (0.174152, 3247.82055985) (0.130075, 2913.9469079) (0.100816, 2310.34026521) (0.189256, 2266.7971737) (0.140888, 2043.01884473) (0.278427, 1939.72103986) (0.203224, 1707.85527167) (0.299902, 1481.26194653) (0.319946, 1255.66460079) (0.375522, 1240.63373154) (0.401737, 1022.7544419) (0.425452, 934.016037545) (0.483465, 765.689211275) (0.512056, 688.535908575) (0.536908, 649.434006022) (0.631789, 380.240612309) (0.659541, 375.267750327) (0.681717, 360.018396517) (0.762977, 231.717874622) (0.781039, 217.512564304) (0.736857, 215.927060945) (0.849984, 130.316700287) (0.865492, 127.74095228) (0.830641, 118.470917831) (0.943076, 58.7219372326) (0.935092, 58.1272843431) (0.923987, 54.9967828624) (0.976695, 32.1364902735) (0.972858, 31.5022823965) (0.967376, 31.0153071357) (0.992438, 17.6399500268) (0.991305, 17.1686571387) (0.989406, 16.8100341759) }; \addlegendentry{ annoy }; \addplot [only marks] coordinates { (0.1079, 1455.39282331) (0.215855, 446.729613344) (0.314101, 252.152151095) (0.410406, 146.351017915) (0.495311, 102.150281964) (0.593046, 69.6570121256) (0.687743, 50.088150487) (0.795523, 35.0569393551) (0.83316, 27.4715037194) (0.889175, 24.5977195558) (0.943601, 22.104513078) (0.965166, 17.4163284087) (0.987217, 15.9540269096) }; \addlegendentry{ BallTree(nmslib) }; \addplot [only marks] coordinates { (0.999605, 7.51910805742) }; \addlegendentry{ bruteforce-blas }; \addplot [only marks] coordinates { (0.262003, 7353.33749653) (0.310045, 6588.5191515) (0.353912, 4547.40302368) (0.220503, 4099.32389515) (0.507244, 3872.47034714) (0.178141, 3440.62932867) (0.395445, 3343.3904113) (0.449748, 3050.12762121) (0.3897, 2980.17799482) (0.484128, 2635.64497331) (0.601447, 2544.20616937) (0.543971, 2433.96604707) (0.566889, 2417.36582589) (0.453454, 1740.56916636) (0.67979, 1454.92387005) (0.622557, 1417.67996623) (0.658372, 1414.58821755) (0.730314, 1011.42177509) (0.498679, 970.528006022) (0.751507, 948.72098202) (0.67498, 869.260382873) (0.714734, 792.777470149) (0.781097, 727.990952044) (0.798461, 602.568762422) (0.816479, 583.135351866) (0.562598, 500.891071265) (0.766299, 464.728505153) (0.743691, 414.568731754) (0.846245, 393.541847731) (0.830556, 355.131829114) (0.859968, 341.375455197) (0.828283, 219.98633215) (0.794087, 214.366813001) (0.904183, 206.928185662) (0.891846, 190.137928632) (0.882661, 188.397231809) (0.87985, 110.576402842) (0.847772, 109.35856021) (0.927954, 102.361656863) (0.945224, 99.5596939172) (0.93974, 97.6597802403) (0.931245, 55.95868818) (0.977353, 51.5348619831) (0.98231, 48.8830534787) (0.974136, 46.5639049347) (0.998784, 25.3121548836) (0.998362, 23.7092441708) (0.997643, 23.4849759222) (0.999582, 19.0369415227) (0.999582, 18.9851015876) (0.999582, 18.9575004937) (0.999582, 18.9564186773) (0.999582, 18.956325952) (0.999582, 18.953835731) }; \addlegendentry{ faiss-ivf }; \addplot [only marks] coordinates { (0.082195, 4816.29143502) (0.219768, 2930.22387901) (0.408383, 1187.05508649) (0.542068, 527.401481685) (0.688995, 186.975780523) (0.79592, 76.9398473298) (0.852054, 73.1326676187) }; \addlegendentry{ flann }; \addplot [only marks] coordinates { (0.208655, 7793.61100287) (0.088468, 7732.27544889) (0.151558, 6460.28123752) (0.318785, 6112.04486854) (0.269682, 5007.34393029) (0.342181, 4944.11632094) (0.23909, 4868.0696694) (0.30248, 4527.08308711) (0.444927, 4481.58814091) (0.379491, 4435.54814072) (0.404161, 4076.32417238) (0.392886, 4063.79600409) (0.471472, 3718.20891415) (0.425458, 3713.53162781) (0.316178, 3669.04113577) (0.427274, 3616.20826746) (0.511486, 3233.71703634) (0.55702, 3133.47813724) (0.523128, 3049.26370417) (0.361078, 2987.93677688) (0.537475, 2952.06791657) (0.560722, 2683.98215211) (0.559828, 2664.33123685) (0.605681, 2582.14014969) (0.448052, 2535.96222331) (0.608732, 2517.89170369) (0.644878, 2186.24634844) (0.639457, 2155.01711892) (0.670373, 1959.66457871) (0.46173, 1952.84577776) (0.583614, 1858.45814098) (0.677892, 1840.17561567) (0.692669, 1776.58086341) (0.690963, 1715.17266967) (0.723003, 1659.6727255) (0.690186, 1584.9165574) (0.729815, 1438.46593412) (0.760252, 1356.85980568) (0.775353, 1246.64049684) (0.714747, 1240.73406849) (0.782694, 1202.09832062) (0.76031, 1110.07128502) (0.802146, 1081.54277573) (0.811554, 1005.17045307) (0.797527, 934.499642793) (0.585718, 922.155510892) (0.832518, 883.043065019) (0.849911, 790.756667986) (0.840204, 783.056761078) (0.821297, 761.110362476) (0.774029, 754.285985992) (0.873398, 631.284800081) (0.833628, 558.413448561) (0.867149, 557.472246234) (0.891078, 554.701954545) (0.644362, 542.179980004) (0.904906, 498.360075749) (0.867769, 471.128805479) (0.811877, 453.889274281) (0.90617, 391.594514803) (0.67996, 357.044092805) (0.917927, 354.373756951) (0.867956, 348.560532303) (0.933874, 321.491194049) (0.834883, 305.82228851) (0.899914, 299.006656251) (0.946719, 283.288589498) (0.95603, 256.00078594) (0.935133, 251.350767131) (0.88924, 241.59556348) (0.919292, 210.24820759) (0.958461, 209.113001606) (0.968318, 186.228615892) (0.963456, 185.509359107) (0.951668, 179.30589784) (0.974755, 169.476531242) (0.971609, 151.271096163) (0.979307, 136.05808713) (0.98404, 124.588658504) (0.979641, 124.431513207) (0.987259, 92.5785451162) }; \addlegendentry{ hnsw(faiss) }; \addplot [only marks] coordinates { (0.025977, 46347.5393605) (0.075582, 17169.2939977) (0.112118, 14373.7866357) (0.155912, 11148.7066949) (0.212738, 10311.396857) (0.249201, 8725.37429122) (0.319766, 7983.69115215) (0.31728, 7551.59794562) (0.392282, 6767.3204386) (0.367761, 6701.08458955) (0.446315, 5950.64613176) (0.441794, 5850.61970367) (0.426256, 5312.22848678) (0.495813, 5080.30638544) (0.522203, 4897.49631605) (0.53637, 4527.85818144) (0.574643, 4183.27855105) (0.555447, 3855.87997003) (0.593896, 3744.63577843) (0.614048, 3670.7015494) (0.615785, 3466.93626466) (0.628316, 3074.32450757) (0.669022, 2987.52410894) (0.68965, 2736.73559165) (0.677742, 2576.49276171) (0.713268, 2227.87643735) (0.740954, 1964.02710067) (0.762956, 1756.05801337) (0.781288, 1589.24869716) (0.796751, 1447.86798251) (0.810056, 1330.79888565) (0.832068, 1144.81473633) (0.849485, 1011.50758499) (0.863864, 904.963457575) (0.886173, 750.936135899) (0.921282, 529.523939331) (0.94154, 411.370879324) (0.964443, 286.175046975) }; \addlegendentry{ hnsw(nmslib) }; \addplot [only marks] coordinates { (0.3665, 6207.77457791) (0.3665, 6203.25287782) (0.3665, 6201.53314918) (0.3665, 6188.39752187) (0.400039, 5389.12883093) (0.572225, 4285.1115121) (0.572225, 4283.04877053) (0.572225, 4277.12278389) (0.572225, 4270.2643157) (0.601047, 3729.12311411) (0.489899, 3615.62595793) (0.648503, 3375.83594981) (0.648503, 3373.67562264) (0.648503, 3371.42483256) (0.648503, 3365.94170682) (0.675362, 2928.91124464) (0.692622, 2841.37984856) (0.692622, 2837.49349365) (0.692622, 2832.0195961) (0.692622, 2830.73976771) (0.674564, 2501.02606788) (0.718129, 2439.78348113) (0.742136, 2225.57325184) (0.742136, 2225.17558594) (0.742136, 2225.0246093) (0.742136, 2222.50105977) (0.597942, 2057.99362912) (0.742244, 1937.50041574) (0.765899, 1917.8806038) (0.783331, 1610.7789787) (0.780408, 1605.6705386) (0.783331, 1605.41628347) (0.783331, 1603.22940542) (0.783331, 1601.82538336) (0.651165, 1457.87807635) (0.756362, 1394.93571272) (0.80645, 1376.58742848) (0.80815, 1360.34032638) (0.80815, 1359.91196813) (0.80815, 1359.01686889) (0.80815, 1358.58195055) (0.825789, 1235.97240581) (0.828945, 1234.60043981) (0.828945, 1233.62637042) (0.828945, 1233.48789242) (0.828945, 1227.65983491) (0.830668, 1165.94841222) (0.684077, 1141.3057202) (0.81579, 1066.77437068) (0.85088, 1059.09118685) (0.796832, 986.233145547) (0.849224, 974.048346639) (0.849224, 973.090205861) (0.849224, 972.740065818) (0.849224, 972.631746106) (0.864082, 894.559815481) (0.85023, 883.049943761) (0.870052, 833.785099853) (0.822178, 767.097859394) (0.886108, 754.88291416) (0.852397, 751.0247728) (0.903295, 685.946650531) (0.891142, 684.493464304) (0.88464, 621.860611759) (0.875336, 582.332008455) (0.918747, 539.081092728) (0.924118, 492.339002084) (0.905803, 482.232597635) (0.921989, 479.471219757) (0.941675, 413.10595846) (0.954358, 375.060861375) (0.940088, 369.806687735) (0.950018, 345.089574943) (0.963847, 294.199243493) (0.964136, 288.737269134) (0.964674, 267.551564945) (0.97351, 262.375277248) (0.976154, 223.529610456) (0.979802, 205.49556939) (0.983202, 203.537536565) (0.987473, 159.37659859) }; \addlegendentry{ hnswlib }; \addplot [only marks] coordinates { (0.999671, 2.95079520454) (0.999671, 2.85120482499) (0.999671, 2.75459154202) (0.999671, 2.69205914126) (0.999671, 2.55611375417) (0.999671, 2.33616104541) (0.999671, 1.98011960939) }; \addlegendentry{ kd }; \addplot [only marks] coordinates { (0.964074, 209.601358166) (0.964625, 207.702022187) (0.964849, 206.930777737) (0.965731, 206.665452386) (0.965438, 204.618469048) (0.967571, 195.799358744) (0.970861, 183.558839928) (0.973594, 172.180184858) (0.976119, 162.090963787) (0.97815, 153.295959023) (0.980053, 146.075359552) (0.981593, 138.951985325) (0.983049, 132.840087029) (0.984238, 127.058042284) (0.985353, 122.18271921) }; \addlegendentry{ kgraph }; \addplot [only marks] coordinates { (0.158647, 15190.1987222) (0.374353, 7272.1472328) (0.501234, 5277.68966188) (0.712712, 2737.40485287) (0.762282, 2137.55521363) (0.847298, 1261.74599934) (0.971457, 281.355345694) (0.999117, 49.1145165684) }; \addlegendentry{ NGT-onng }; \addplot [only marks] coordinates { (0.069043, 8050.30673975) (0.209118, 4306.00477815) (0.38621, 2107.55520864) (0.514367, 1635.93370214) (0.709225, 835.745058846) (0.749095, 721.412903618) (0.805284, 424.258053605) (0.884641, 220.372185111) (0.977308, 57.3680458276) (0.997158, 16.8706857128) }; \addlegendentry{ NGT-panng }; \addplot [only marks] coordinates { (0.393239, 1122.17769956) (0.57002, 823.816445315) (0.48057, 684.384645897) (0.689904, 635.32932705) (0.654903, 494.953854504) (0.778844, 417.743401756) (0.763595, 380.809645403) (0.565744, 361.779117649) (0.729406, 273.585049777) (0.839509, 242.873419524) (0.839995, 233.542710301) (0.826212, 199.182400785) (0.645824, 162.092019919) (0.891035, 131.822493053) (0.891186, 131.285955902) (0.795125, 126.242802895) (0.878075, 94.0320407164) (0.932505, 71.1932593336) (0.932238, 66.2417765271) (0.719383, 59.411587928) (0.851935, 50.0664170502) (0.921686, 38.5106149603) (0.963326, 36.7264058833) (0.962531, 30.0949672647) (0.785977, 18.8380209118) (0.983164, 18.0286199838) (0.899257, 17.2358346444) (0.954682, 14.3458156571) (0.982457, 12.0112625461) (0.993724, 8.06273201751) (0.845577, 5.38024749099) (0.937575, 5.11000120973) (0.977291, 4.63711568106) (0.993282, 4.12415966635) (0.998089, 3.11358613307) }; \addlegendentry{ pynndescent }; \addplot [only marks] coordinates { (0.001051, 28438.5428914) (0.002647, 27063.5527985) (0.006516, 14548.3202313) (0.00349, 13274.0506688) (0.00865, 10119.0775178) (0.009958, 8527.59067279) (0.020274, 4753.67028376) (0.013048, 3414.61131164) (0.031555, 3097.45196547) (0.022082, 2850.86438006) (0.032153, 2770.1190411) (0.030689, 1649.15513269) (0.074878, 1491.18105352) (0.073269, 1182.28191721) (0.06746, 885.805441214) (0.108954, 756.800074859) (0.160395, 497.262987363) (0.231426, 294.836752133) (0.225171, 274.851876127) (0.226508, 238.7779019) (0.43199, 135.745726641) (0.436945, 92.7824888626) (0.565938, 81.4564980485) (0.836055, 23.2925906606) }; \addlegendentry{ rpforest }; \addplot [only marks] coordinates { (0.032573, 3947.97893472) (0.040982, 3782.72532731) (0.052797, 3403.67242133) (0.057908, 3223.64090229) (0.077359, 2770.58088872) (0.10367, 2240.75528388) (0.123328, 1910.52564572) (0.139192, 1678.1735657) (0.456795, 1618.72996489) (0.517055, 1387.91785618) (0.165684, 1356.76320078) (0.590677, 1093.22112843) (0.650369, 969.913807875) (0.652614, 847.437186352) (0.715777, 758.65880509) (0.768564, 580.084027532) (0.808798, 453.805160704) (0.829111, 390.245191407) (0.853239, 322.230790348) (0.877705, 257.373089517) (0.894639, 215.7280188) (0.910986, 178.215040258) (0.922927, 152.383946346) (0.932504, 133.862085353) (0.936439, 124.579594022) }; \addlegendentry{ SW-graph(nmslib) }; \end{axis} \end{tikzpicture} \caption{ Recall-Queries per second (1/s) tradeoff - up and to the right is better } \label{} \end{figure}
\begin{figure} \centering \begin{tikzpicture} \begin{axis}[ xlabel={ Recall }, ylabel={ Index size (kB)/Queries per second (s) }, ymode = log, yticklabel style={/pgf/number format/fixed, /pgf/number format/precision=3}, legend style = { anchor=west}, cycle list name = black white ] \addplot [only marks] coordinates { (0.084543, 492.756820551) (0.119391, 618.803016595) (0.174152, 847.258630609) (0.093022, 1293.76281632) (0.278427, 1418.6287324) (0.130075, 1557.08396323) (0.189256, 2001.61710657) (0.375522, 2218.01481779) (0.299902, 3063.10440947) (0.100816, 3292.10381455) (0.483465, 3593.81320708) (0.140888, 3722.8633596) (0.401737, 4436.31414749) (0.203224, 4453.46870204) (0.319946, 6057.2544573) (0.512056, 6589.7216739) (0.631789, 7236.84927627) (0.425452, 8143.20064566) (0.536908, 11711.5517966) (0.659541, 12090.7272102) (0.736857, 12743.8589121) (0.762977, 19580.9667571) (0.681717, 21126.3648569) (0.830641, 23227.1687464) (0.849984, 34817.1799162) (0.781039, 34967.5432514) (0.923987, 50034.6357874) (0.865492, 59541.4380765) (0.935092, 78057.3194031) (0.967376, 88722.126399) (0.943076, 129523.656038) (0.972858, 144029.564045) (0.989406, 163696.514308) (0.976695, 236674.258305) (0.991305, 264275.765038) (0.992438, 431173.557094) }; \addlegendentry{ annoy }; \addplot [only marks] coordinates { (0.1079, 921.373239254) (0.215855, 3008.0656394) (0.314101, 5326.00651697) (0.410406, 9167.19281571) (0.495311, 13127.7953836) (0.593046, 19247.0500684) (0.687743, 26759.1433696) (0.795523, 38377.4517899) (0.83316, 48878.7222467) (0.889175, 54548.6339479) (0.943601, 60756.6425581) (0.965166, 77340.7556626) (0.987217, 84078.3338028) }; \addlegendentry{ BallTree(nmslib) }; \addplot [only marks] coordinates { (0.999605, 6.91571388559) }; \addlegendentry{ bruteforce-blas }; \addplot [only marks] coordinates { (0.262003, 88.1673118235) (0.310045, 96.2953867798) (0.353912, 142.965995451) (0.220503, 159.605831775) (0.507244, 167.418712574) (0.178141, 189.637399926) (0.395445, 203.253558933) (0.449748, 214.50774566) (0.3897, 218.937258491) (0.484128, 247.556862403) (0.601447, 254.82368835) (0.566889, 262.452622274) (0.543971, 268.810651976) (0.453454, 383.095376436) (0.67979, 448.457828915) (0.658372, 448.500837296) (0.622557, 458.583047999) (0.730314, 646.887397636) (0.498679, 683.302280702) (0.751507, 687.738557875) (0.67498, 781.76345476) (0.714734, 820.05862235) (0.781097, 890.566013464) (0.798461, 1085.81134769) (0.816479, 1118.90318073) (0.562598, 1252.82329033) (0.766299, 1462.26451028) (0.743691, 1608.42810595) (0.846245, 1647.40802976) (0.830556, 1786.50278006) (0.859968, 1916.58770436) (0.828283, 3031.11558561) (0.794087, 3093.59452947) (0.904183, 3133.08695925) (0.891846, 3336.75666168) (0.882661, 3450.81503458) (0.847772, 5738.26135599) (0.87985, 5997.33743326) (0.945224, 6372.49849852) (0.927954, 6638.77491658) (0.93974, 6657.02911065) (0.931245, 11214.1299307) (0.977353, 13186.335887) (0.98231, 13299.5783556) (0.974136, 14320.1907343) (0.998784, 26847.0228285) (0.998362, 28124.2200383) (0.997643, 28237.7977392) (0.999582, 33101.8321855) (0.999582, 33103.721261) (0.999582, 33103.8831886) (0.999582, 34835.6378156) (0.999582, 34988.37963) (0.999582, 35122.4878584) }; \addlegendentry{ faiss-ivf }; \addplot [only marks] coordinates { (0.082195, 151.117931674) (0.219768, 267.276505939) (0.408383, 656.731106142) (0.542068, 1171.14574276) (0.688995, 3344.5615162) (0.79592, 8039.0073735) (0.852054, 10841.5572113) }; \addlegendentry{ flann }; \addplot [only marks] coordinates { (0.088468, 69.7160885645) (0.208655, 74.2864892521) (0.151558, 83.4428069275) (0.318785, 94.7244355125) (0.23909, 110.734651845) (0.269682, 122.750905182) (0.444927, 129.186346848) (0.30248, 144.074227808) (0.342181, 146.871139929) (0.316178, 146.922310231) (0.392886, 151.251686694) (0.427274, 180.364611703) (0.361078, 180.413455924) (0.55702, 184.76592931) (0.379491, 188.457429269) (0.471472, 195.295104919) (0.523128, 201.575219342) (0.608732, 229.938404083) (0.404161, 231.657728892) (0.559828, 244.802894992) (0.511486, 258.498808215) (0.46173, 276.040231205) (0.605681, 281.219437329) (0.639457, 285.220936115) (0.425458, 295.227322636) (0.537475, 319.881529385) (0.677892, 354.442257819) (0.690963, 358.363919196) (0.690186, 365.2936789) (0.644878, 382.350324151) (0.560722, 408.473655139) (0.723003, 437.524813684) (0.729815, 453.424710681) (0.670373, 481.874301481) (0.448052, 547.422981005) (0.76031, 553.70858457) (0.775353, 582.483885162) (0.585718, 584.569515264) (0.760252, 616.063646737) (0.692669, 617.104474432) (0.797527, 697.952112695) (0.583614, 746.986961606) (0.774029, 767.560329573) (0.782694, 785.553048202) (0.811554, 831.612188206) (0.840204, 927.32485829) (0.644362, 994.252867833) (0.802146, 1013.67789106) (0.832518, 1069.3838584) (0.833628, 1100.71847586) (0.714747, 1118.88924086) (0.811877, 1275.55338451) (0.873398, 1324.14403118) (0.867769, 1384.41121072) (0.849911, 1386.43914669) (0.67996, 1509.7967194) (0.891078, 1702.37727173) (0.867956, 1763.41250095) (0.821297, 1823.97201305) (0.90617, 1854.3364949) (0.834883, 1893.12558879) (0.899914, 2181.34274393) (0.904906, 2199.88729706) (0.867149, 2490.24773767) (0.88924, 2544.15267875) (0.933874, 2600.10854255) (0.935133, 2888.98262889) (0.919292, 3102.21907467) (0.946719, 3333.39228973) (0.917927, 3917.45712759) (0.958461, 3997.41763344) (0.951668, 4049.77197486) (0.95603, 4282.54935224) (0.968318, 5070.71373256) (0.971609, 5525.92016058) (0.974755, 6468.95468042) (0.979307, 6940.50621996) (0.963456, 7483.41758434) (0.98404, 8799.64527404) (0.979641, 11156.6914539) (0.987259, 14995.3101797) }; \addlegendentry{ hnsw(faiss) }; \addplot [only marks] coordinates { (0.025977, 35.5405275604) (0.075582, 95.9396466866) (0.112118, 129.806574098) (0.155912, 147.749514368) (0.212738, 180.946580359) (0.249201, 188.784566143) (0.31728, 218.128138158) (0.319766, 233.702928187) (0.367761, 245.813342301) (0.392282, 275.709125484) (0.441794, 281.545559861) (0.446315, 313.547799464) (0.495813, 324.235562785) (0.53637, 363.795846511) (0.522203, 380.972619394) (0.593896, 439.886840127) (0.574643, 446.016677405) (0.615785, 475.121511979) (0.614048, 508.298475071) (0.426256, 561.856856765) (0.669022, 624.534541635) (0.68965, 681.765533248) (0.555447, 774.067663724) (0.628316, 970.851317957) (0.677742, 1158.43989331) (0.713268, 1339.71164197) (0.740954, 1519.68982453) (0.762956, 1699.66594342) (0.781288, 1878.06477698) (0.796751, 2061.45314079) (0.810056, 2242.79718911) (0.832068, 2607.1572153) (0.849485, 2950.75592542) (0.863864, 3298.15748362) (0.886173, 3974.65491047) (0.921282, 5636.59502112) (0.94154, 7255.52573119) (0.964443, 10429.6724384) }; \addlegendentry{ hnsw(nmslib) }; \addplot [only marks] coordinates { (0.3665, 97.24644354) (0.3665, 97.3173288096) (0.3665, 97.3443155874) (0.3665, 97.5509407511) (0.400039, 112.018847376) (0.572225, 149.135908878) (0.572225, 149.207733612) (0.572225, 149.414462079) (0.572225, 149.65443653) (0.489899, 166.965279878) (0.601047, 171.371118744) (0.648503, 199.407794102) (0.648503, 199.535484527) (0.648503, 199.668696006) (0.648503, 199.993956709) (0.675362, 229.835574988) (0.692622, 250.454370035) (0.692622, 250.797403269) (0.692622, 251.282159551) (0.692622, 251.395768738) (0.674564, 255.520727356) (0.718129, 291.679981238) (0.597942, 293.336185038) (0.742244, 347.441473834) (0.742136, 351.882374283) (0.742136, 351.945259938) (0.742136, 351.969140802) (0.742136, 352.368785858) (0.765899, 408.336159429) (0.651165, 414.084010037) (0.780408, 443.201754589) (0.756362, 458.131506829) (0.684077, 528.941535397) (0.783331, 556.155755598) (0.783331, 558.013525352) (0.783331, 558.774681259) (0.783331, 559.26445498) (0.81579, 631.031283184) (0.825789, 633.622560116) (0.796832, 647.984711207) (0.80645, 650.771597551) (0.80815, 738.682799084) (0.80815, 738.915476552) (0.80815, 739.402153865) (0.80815, 739.638856231) (0.85023, 805.884202845) (0.822178, 833.093186448) (0.830668, 861.839159838) (0.852397, 896.332616953) (0.828945, 933.814668147) (0.828945, 934.552006705) (0.828945, 934.656924553) (0.828945, 939.094012217) (0.864082, 1001.43554908) (0.85088, 1088.56349134) (0.891142, 1144.11611044) (0.88464, 1144.36577352) (0.875336, 1155.98660253) (0.886108, 1331.14683238) (0.905803, 1475.71110599) (0.849224, 1489.03491804) (0.849224, 1490.50107715) (0.849224, 1491.03758647) (0.849224, 1491.20363982) (0.921989, 1633.34099677) (0.903295, 1680.72546037) (0.870052, 1739.52736773) (0.924118, 1819.56740418) (0.940088, 2117.70102049) (0.941675, 2432.45099573) (0.950018, 2595.97526279) (0.918747, 2690.48946358) (0.954358, 3073.86912026) (0.964674, 3348.30409303) (0.964136, 3480.18807206) (0.97351, 4394.04204578) (0.976154, 4495.42231989) (0.963847, 4929.96509026) (0.983202, 5664.25249837) (0.979802, 7058.02078509) (0.987473, 9100.40754307) }; \addlegendentry{ hnswlib }; \addplot [only marks] coordinates { (0.999671, 319168.202032) (0.999671, 337018.228777) (0.999671, 340324.866935) (0.999671, 352219.602262) (0.999671, 385912.402526) (0.999671, 444566.953995) (0.999671, 577264.118075) }; \addlegendentry{ kd }; \addplot [only marks] coordinates { (0.964074, 63109.8964039) (0.964625, 63687.0063214) (0.964849, 63924.3719309) (0.965731, 64006.4405894) (0.965438, 64646.7548189) (0.967571, 67558.5460792) (0.970861, 72063.6500272) (0.973594, 76826.0297251) (0.976119, 81608.0038699) (0.97815, 86290.0762965) (0.980053, 90555.4505601) (0.981593, 95197.7761889) (0.983049, 99577.7727631) (0.984238, 104109.269766) (0.985353, 108263.427803) }; \addlegendentry{ kgraph }; \addplot [only marks] coordinates { (0.158647, 162.552712124) (0.374353, 339.543180433) (0.501234, 467.857748029) (0.712712, 902.02514159) (0.762282, 1155.1551905) (0.847298, 1956.97707882) (0.971457, 8776.11901743) (0.999117, 50274.504821) }; \addlegendentry{ NGT-onng }; \addplot [only marks] coordinates { (0.069043, 144.389529191) (0.209118, 269.935603857) (0.38621, 551.450322741) (0.514367, 710.388201235) (0.709225, 1390.36179479) (0.749095, 1611.47103714) (0.805284, 2740.99216295) (0.884641, 5273.82346105) (0.977308, 20272.0518578) (0.997158, 68895.599135) }; \addlegendentry{ NGT-panng }; \addplot [only marks] coordinates { (0.393239, 1124.80581328) (0.57002, 1754.53161711) (0.48057, 1844.33126542) (0.654903, 2920.29648188) (0.689904, 3038.53752347) (0.565744, 3488.95759435) (0.763595, 5069.38840258) (0.729406, 5283.22728592) (0.778844, 6576.59220577) (0.645824, 7787.13227606) (0.826212, 9691.98077936) (0.839509, 11311.7689263) (0.795125, 11449.4606176) (0.878075, 20529.9383624) (0.891035, 20841.1169928) (0.719383, 21245.5523244) (0.839995, 26754.369648) (0.851935, 28869.8909401) (0.932238, 41474.249998) (0.891186, 47592.9657295) (0.921686, 50128.308831) (0.785977, 67004.4908597) (0.899257, 83860.8648679) (0.932505, 87765.1628607) (0.962531, 91288.6189853) (0.954682, 134566.904116) (0.963326, 170130.668921) (0.982457, 228729.327118) (0.845577, 234604.821082) (0.937575, 282859.42423) (0.983164, 346576.055496) (0.977291, 416308.78606) (0.993282, 666154.616277) (0.993724, 774959.156082) (0.998089, 2006781.80495) }; \addlegendentry{ pynndescent }; \addplot [only marks] coordinates { (0.002647, 37.6515237148) (0.001051, 41.7695099407) (0.006516, 67.7315308113) (0.009958, 115.164064234) (0.00865, 116.102282835) (0.00349, 132.333380656) (0.020274, 221.704901074) (0.031555, 331.801755591) (0.022082, 345.409626248) (0.032153, 668.085368369) (0.074878, 888.849812619) (0.06746, 1148.71726076) (0.013048, 1224.93824868) (0.108954, 1634.75670933) (0.073269, 2712.7438501) (0.160395, 3776.88275164) (0.226508, 5051.79076625) (0.030689, 5479.21285323) (0.231426, 5623.54587075) (0.436945, 16987.7745178) (0.43199, 34264.0031115) (0.225171, 36289.83051) (0.565938, 45809.1384898) (0.836055, 145719.47146) }; \addlegendentry{ rpforest }; \addplot [only marks] coordinates { (0.032573, 203.664713844) (0.040982, 212.562089612) (0.052797, 236.234249501) (0.057908, 249.427285598) (0.077359, 290.214952132) (0.10367, 358.836150375) (0.123328, 420.86009251) (0.139192, 479.130416801) (0.165684, 592.633997987) (0.456795, 692.602240223) (0.517055, 807.782676051) (0.590677, 1025.53451525) (0.652614, 1322.97239023) (0.650369, 1571.59944278) (0.715777, 2009.22468674) (0.768564, 2627.75033901) (0.808798, 3358.96576768) (0.829111, 3906.0468484) (0.853239, 4730.51007432) (0.877705, 5922.59277324) (0.894639, 7065.91572332) (0.910986, 8553.23993862) (0.922927, 10003.1272096) (0.932504, 11387.2124132) (0.936439, 12235.6796229) }; \addlegendentry{ SW-graph(nmslib) }; \end{axis} \end{tikzpicture} \caption{ Recall-Index size (kB)/Queries per second (s) tradeoff - down and to the right is better } \label{} \end{figure}
\begin{figure} \centering \begin{tikzpicture} \begin{axis}[ xlabel={ Recall }, ylabel={ Build time (s) }, ymode = log, yticklabel style={/pgf/number format/fixed, /pgf/number format/precision=3}, legend style = { anchor=west}, cycle list name = black white ] \addplot [only marks] coordinates { (0.967376, 291.590550423) (0.375522, 291.590550423) (0.483465, 291.590550423) (0.631789, 291.590550423) (0.830641, 291.590550423) (0.736857, 291.590550423) (0.278427, 291.590550423) (0.119391, 291.590550423) (0.989406, 291.590550423) (0.174152, 291.590550423) (0.084543, 291.590550423) (0.923987, 291.590550423) (0.401737, 673.77855444) (0.972858, 673.77855444) (0.299902, 673.77855444) (0.659541, 673.77855444) (0.935092, 673.77855444) (0.849984, 673.77855444) (0.512056, 673.77855444) (0.093022, 673.77855444) (0.130075, 673.77855444) (0.762977, 673.77855444) (0.991305, 673.77855444) (0.189256, 673.77855444) (0.140888, 1166.84624171) (0.865492, 1166.84624171) (0.425452, 1166.84624171) (0.943076, 1166.84624171) (0.536908, 1166.84624171) (0.976695, 1166.84624171) (0.992438, 1166.84624171) (0.319946, 1166.84624171) (0.681717, 1166.84624171) (0.203224, 1166.84624171) (0.100816, 1166.84624171) (0.781039, 1166.84624171) }; \addlegendentry{ annoy }; \addplot [only marks] coordinates { (0.314101, 183.296724081) (0.1079, 221.541928053) (0.215855, 226.50135088) (0.410406, 248.201233864) (0.495311, 268.507893085) (0.687743, 319.419001818) (0.593046, 358.954446077) (0.889175, 369.783482075) (0.943601, 371.056446075) (0.795523, 374.213179827) (0.987217, 403.527091026) (0.83316, 525.244204998) (0.965166, 617.890927792) }; \addlegendentry{ BallTree(nmslib) }; \addplot [only marks] coordinates { (0.999605, 0.287957906723) }; \addlegendentry{ bruteforce-blas }; \addplot [only marks] coordinates { (0.562598, 1.75712418556) (0.999582, 1.75712418556) (0.847772, 1.75712418556) (0.931245, 1.75712418556) (0.999582, 1.75712418556) (0.999582, 1.75712418556) (0.87985, 2.09001994133) (0.999582, 2.09001994133) (0.999582, 2.09001994133) (0.498679, 2.09001994133) (0.997643, 2.09001994133) (0.794087, 2.09001994133) (0.999582, 2.8856511116) (0.974136, 2.8856511116) (0.828283, 2.8856511116) (0.453454, 2.8856511116) (0.998362, 2.8856511116) (0.743691, 2.8856511116) (0.927954, 4.61507296562) (0.395445, 4.61507296562) (0.67498, 4.61507296562) (0.977353, 4.61507296562) (0.998784, 4.61507296562) (0.766299, 4.61507296562) (0.714734, 10.2106320858) (0.353912, 10.2106320858) (0.622557, 10.2106320858) (0.98231, 10.2106320858) (0.882661, 10.2106320858) (0.93974, 10.2106320858) (0.310045, 26.8808128834) (0.891846, 26.8808128834) (0.830556, 26.8808128834) (0.658372, 26.8808128834) (0.566889, 26.8808128834) (0.945224, 26.8808128834) (0.904183, 77.9411120415) (0.601447, 77.9411120415) (0.781097, 77.9411120415) (0.507244, 77.9411120415) (0.262003, 77.9411120415) (0.846245, 77.9411120415) (0.859968, 304.902735233) (0.543971, 304.902735233) (0.730314, 304.902735233) (0.449748, 304.902735233) (0.798461, 304.902735233) (0.220503, 304.902735233) (0.816479, 661.318217993) (0.3897, 661.318217993) (0.751507, 661.318217993) (0.178141, 661.318217993) (0.67979, 661.318217993) (0.484128, 661.318217993) }; \addlegendentry{ faiss-ivf }; \addplot [only marks] coordinates { (0.082195, 488.529290199) (0.219768, 637.47782135) (0.408383, 975.347343683) (0.542068, 1329.02515864) (0.688995, 3127.58393455) (0.852054, 4661.91295815) (0.79592, 4933.04766393) }; \addlegendentry{ flann }; \addplot [only marks] coordinates { (0.585718, 932.309959888) (0.088468, 932.309959888) (0.151558, 932.309959888) (0.46173, 932.309959888) (0.23909, 932.309959888) (0.361078, 932.309959888) (0.644362, 932.309959888) (0.316178, 932.309959888) (0.67996, 932.309959888) (0.774029, 1386.31206989) (0.690186, 1386.31206989) (0.608732, 1386.31206989) (0.55702, 1386.31206989) (0.834883, 1386.31206989) (0.318785, 1386.31206989) (0.208655, 1386.31206989) (0.811877, 1386.31206989) (0.444927, 1386.31206989) (0.76031, 2142.73861003) (0.88924, 2142.73861003) (0.523128, 2142.73861003) (0.833628, 2142.73861003) (0.639457, 2142.73861003) (0.392886, 2142.73861003) (0.867956, 2142.73861003) (0.269682, 2142.73861003) (0.690963, 2142.73861003) (0.427274, 2775.9745729) (0.30248, 2775.9745729) (0.919292, 2775.9745729) (0.867769, 2775.9745729) (0.559828, 2775.9745729) (0.899914, 2775.9745729) (0.797527, 2775.9745729) (0.677892, 2775.9745729) (0.729815, 2775.9745729) (0.90617, 4034.59430909) (0.723003, 4034.59430909) (0.935133, 4034.59430909) (0.840204, 4034.59430909) (0.605681, 4034.59430909) (0.775353, 4034.59430909) (0.342181, 4034.59430909) (0.471472, 4034.59430909) (0.951668, 4034.59430909) (0.891078, 4802.58256006) (0.979307, 4802.58256006) (0.670373, 4802.58256006) (0.946719, 4802.58256006) (0.782694, 4802.58256006) (0.404161, 4802.58256006) (0.537475, 4802.58256006) (0.968318, 4802.58256006) (0.832518, 4802.58256006) (0.933874, 4951.555022) (0.958461, 4951.555022) (0.971609, 4951.555022) (0.811554, 4951.555022) (0.644878, 4951.555022) (0.873398, 4951.555022) (0.511486, 4951.555022) (0.379491, 4951.555022) (0.760252, 4951.555022) (0.98404, 5805.64648199) (0.692669, 5805.64648199) (0.425458, 5805.64648199) (0.802146, 5805.64648199) (0.904906, 5805.64648199) (0.95603, 5805.64648199) (0.974755, 5805.64648199) (0.560722, 5805.64648199) (0.849911, 5805.64648199) (0.987259, 6634.84332585) (0.917927, 6634.84332585) (0.714747, 6634.84332585) (0.448052, 6634.84332585) (0.867149, 6634.84332585) (0.821297, 6634.84332585) (0.979641, 6634.84332585) (0.583614, 6634.84332585) (0.963456, 6634.84332585) }; \addlegendentry{ hnsw(faiss) }; \addplot [only marks] coordinates { (0.31728, 4235.73589087) (0.495813, 4235.73589087) (0.593896, 4235.73589087) (0.155912, 4235.73589087) (0.53637, 4235.73589087) (0.367761, 4235.73589087) (0.025977, 4235.73589087) (0.075582, 4235.73589087) (0.441794, 4235.73589087) (0.249201, 4235.73589087) (0.615785, 4235.73589087) (0.112118, 5438.26300192) (0.522203, 5438.26300192) (0.574643, 5438.26300192) (0.669022, 5438.26300192) (0.212738, 5438.26300192) (0.446315, 5438.26300192) (0.392282, 5438.26300192) (0.319766, 5438.26300192) (0.614048, 5438.26300192) (0.68965, 5438.26300192) (0.555447, 17158.9926538) (0.886173, 17158.9926538) (0.762956, 17158.9926538) (0.713268, 17158.9926538) (0.426256, 17158.9926538) (0.921282, 17158.9926538) (0.677742, 17158.9926538) (0.740954, 17158.9926538) (0.832068, 17158.9926538) (0.781288, 17158.9926538) (0.796751, 17158.9926538) (0.810056, 17158.9926538) (0.863864, 17158.9926538) (0.849485, 17158.9926538) (0.964443, 17158.9926538) (0.628316, 17158.9926538) (0.94154, 17158.9926538) }; \addlegendentry{ hnsw(nmslib) }; \addplot [only marks] coordinates { (0.597942, 842.791985035) (0.3665, 842.791985035) (0.3665, 842.791985035) (0.489899, 842.791985035) (0.3665, 842.791985035) (0.400039, 842.791985035) (0.651165, 842.791985035) (0.3665, 842.791985035) (0.684077, 842.791985035) (0.756362, 1106.15124846) (0.674564, 1106.15124846) (0.601047, 1106.15124846) (0.572225, 1106.15124846) (0.822178, 1106.15124846) (0.572225, 1106.15124846) (0.572225, 1106.15124846) (0.796832, 1106.15124846) (0.572225, 1106.15124846) (0.742244, 1424.40907335) (0.875336, 1424.40907335) (0.648503, 1424.40907335) (0.81579, 1424.40907335) (0.648503, 1424.40907335) (0.648503, 1424.40907335) (0.852397, 1424.40907335) (0.648503, 1424.40907335) (0.675362, 1424.40907335) (0.692622, 1712.881567) (0.692622, 1712.881567) (0.905803, 1712.881567) (0.85023, 1712.881567) (0.692622, 1712.881567) (0.88464, 1712.881567) (0.780408, 1712.881567) (0.692622, 1712.881567) (0.718129, 1712.881567) (0.891142, 2232.16507077) (0.742136, 2232.16507077) (0.921989, 2232.16507077) (0.825789, 2232.16507077) (0.742136, 2232.16507077) (0.765899, 2232.16507077) (0.742136, 2232.16507077) (0.742136, 2232.16507077) (0.940088, 2232.16507077) (0.924118, 3092.75346589) (0.950018, 3092.75346589) (0.964674, 3092.75346589) (0.80645, 3092.75346589) (0.783331, 3092.75346589) (0.864082, 3092.75346589) (0.783331, 3092.75346589) (0.783331, 3092.75346589) (0.783331, 3092.75346589) (0.886108, 3565.52533364) (0.976154, 3565.52533364) (0.80815, 3565.52533364) (0.941675, 3565.52533364) (0.80815, 3565.52533364) (0.80815, 3565.52533364) (0.80815, 3565.52533364) (0.964136, 3565.52533364) (0.830668, 3565.52533364) (0.983202, 3854.97793722) (0.828945, 3854.97793722) (0.828945, 3854.97793722) (0.828945, 3854.97793722) (0.903295, 3854.97793722) (0.954358, 3854.97793722) (0.97351, 3854.97793722) (0.828945, 3854.97793722) (0.85088, 3854.97793722) (0.987473, 4590.37983727) (0.918747, 4590.37983727) (0.849224, 4590.37983727) (0.849224, 4590.37983727) (0.870052, 4590.37983727) (0.849224, 4590.37983727) (0.979802, 4590.37983727) (0.849224, 4590.37983727) (0.963847, 4590.37983727) }; \addlegendentry{ hnswlib }; \addplot [only marks] coordinates { (0.999671, 11.4433910847) (0.999671, 12.0855000019) (0.999671, 13.7878851891) (0.999671, 14.3085608482) (0.999671, 14.6016504765) (0.999671, 15.0337507725) (0.999671, 15.8254005909) }; \addlegendentry{ kd }; \addplot [only marks] coordinates { (0.97815, 7700.138515) (0.965438, 7700.138515) (0.973594, 7700.138515) (0.970861, 7700.138515) (0.964625, 7700.138515) (0.983049, 7700.138515) (0.984238, 7700.138515) (0.965731, 7700.138515) (0.981593, 7700.138515) (0.976119, 7700.138515) (0.985353, 7700.138515) (0.964074, 7700.138515) (0.980053, 7700.138515) (0.964849, 7700.138515) (0.967571, 7700.138515) }; \addlegendentry{ kgraph }; \addplot [only marks] coordinates { (0.971457, 4056.20341682) (0.712712, 4056.20341682) (0.847298, 4056.20341682) (0.158647, 4056.20341682) (0.762282, 4056.20341682) (0.374353, 4056.20341682) (0.999117, 4056.20341682) (0.501234, 4056.20341682) }; \addlegendentry{ NGT-onng }; \addplot [only marks] coordinates { (0.997158, 889.341522217) (0.749095, 912.248856783) (0.977308, 918.790708542) (0.209118, 1012.72382641) (0.709225, 1017.40969491) (0.884641, 1039.26953387) (0.805284, 1042.11171651) (0.38621, 1051.98558331) (0.514367, 1056.55087042) (0.069043, 1083.00600505) }; \addlegendentry{ NGT-panng }; \addplot [only marks] coordinates { (0.719383, 184.452769756) (0.785977, 184.452769756) (0.645824, 184.452769756) (0.565744, 184.452769756) (0.845577, 184.452769756) (0.48057, 184.452769756) (0.393239, 184.452769756) (0.729406, 379.611212969) (0.851935, 379.611212969) (0.654903, 379.611212969) (0.795125, 379.611212969) (0.937575, 379.611212969) (0.899257, 379.611212969) (0.57002, 379.611212969) (0.689904, 789.893992424) (0.921686, 789.893992424) (0.878075, 789.893992424) (0.826212, 789.893992424) (0.763595, 789.893992424) (0.977291, 789.893992424) (0.954682, 789.893992424) (0.778844, 2025.0387876) (0.993282, 2025.0387876) (0.962531, 2025.0387876) (0.932238, 2025.0387876) (0.891035, 2025.0387876) (0.839509, 2025.0387876) (0.982457, 2025.0387876) (0.998089, 5079.60852051) (0.993724, 5079.60852051) (0.839995, 5079.60852051) (0.891186, 5079.60852051) (0.932505, 5079.60852051) (0.963326, 5079.60852051) (0.983164, 5079.60852051) }; \addlegendentry{ pynndescent }; \addplot [only marks] coordinates { (0.022082, 23.0682070255) (0.006516, 24.3702347279) (0.002647, 25.9618668556) (0.009958, 26.5596103668) (0.001051, 34.4364128113) (0.06746, 74.045173645) (0.031555, 77.6017310619) (0.020274, 87.6503455639) (0.00865, 91.7815806866) (0.00349, 100.982311964) (0.226508, 265.396026611) (0.074878, 303.247697353) (0.108954, 330.95527792) (0.032153, 370.811196327) (0.013048, 407.806825399) (0.436945, 715.43530035) (0.231426, 844.622889042) (0.160395, 884.398779154) (0.073269, 896.069484711) (0.030689, 945.187116146) (0.565938, 3147.18274713) (0.836055, 3261.21967912) (0.43199, 3368.56300759) (0.225171, 3779.10703421) }; \addlegendentry{ rpforest }; \addplot [only marks] coordinates { (0.165684, 268.504122019) (0.057908, 268.504122019) (0.123328, 268.504122019) (0.077359, 268.504122019) (0.040982, 268.504122019) (0.032573, 268.504122019) (0.139192, 268.504122019) (0.10367, 268.504122019) (0.052797, 268.504122019) (0.590677, 777.695152998) (0.517055, 777.695152998) (0.652614, 777.695152998) (0.456795, 777.695152998) (0.910986, 1645.50340319) (0.932504, 1645.50340319) (0.853239, 1645.50340319) (0.808798, 1645.50340319) (0.650369, 1645.50340319) (0.922927, 1645.50340319) (0.877705, 1645.50340319) (0.768564, 1645.50340319) (0.715777, 1645.50340319) (0.936439, 1645.50340319) (0.894639, 1645.50340319) (0.829111, 1645.50340319) }; \addlegendentry{ SW-graph(nmslib) }; \end{axis} \end{tikzpicture} \caption{ Recall-Build time (s) tradeoff - down and to the right is better } \label{} \end{figure}
\begin{figure} \centering \begin{tikzpicture} \begin{axis}[ xlabel={ Recall }, ylabel={ Index size (kB) }, ymode = log, yticklabel style={/pgf/number format/fixed, /pgf/number format/precision=3}, legend style = { anchor=west}, cycle list name = black white ] \addplot [only marks] coordinates { (0.967376, 2751744.0) (0.375522, 2751744.0) (0.483465, 2751744.0) (0.631789, 2751744.0) (0.830641, 2751744.0) (0.736857, 2751744.0) (0.278427, 2751744.0) (0.119391, 2751744.0) (0.989406, 2751744.0) (0.174152, 2751744.0) (0.084543, 2751744.0) (0.923987, 2751744.0) (0.401737, 4537260.0) (0.972858, 4537260.0) (0.299902, 4537260.0) (0.659541, 4537260.0) (0.935092, 4537260.0) (0.849984, 4537260.0) (0.512056, 4537260.0) (0.093022, 4537260.0) (0.130075, 4537260.0) (0.762977, 4537260.0) (0.991305, 4537260.0) (0.189256, 4537260.0) (0.140888, 7605880.0) (0.865492, 7605880.0) (0.425452, 7605880.0) (0.943076, 7605880.0) (0.536908, 7605880.0) (0.976695, 7605880.0) (0.992438, 7605880.0) (0.319946, 7605880.0) (0.681717, 7605880.0) (0.203224, 7605880.0) (0.100816, 7605880.0) (0.781039, 7605880.0) }; \addlegendentry{ annoy }; \addplot [only marks] coordinates { (0.687743, 1340316) (0.593046, 1340692) (0.1079, 1340960) (0.495311, 1341008) (0.987217, 1341388) (0.410406, 1341628) (0.889175, 1341772) (0.83316, 1342772) (0.314101, 1342964) (0.943601, 1342996) (0.215855, 1343792) (0.795523, 1345396) (0.965166, 1346992) }; \addlegendentry{ BallTree(nmslib) }; \addplot [only marks] coordinates { (0.999605, 52.0) }; \addlegendentry{ bruteforce-blas }; \addplot [only marks] coordinates { (0.562598, 627528) (0.999582, 627528) (0.847772, 627528) (0.931245, 627528) (0.999582, 627528) (0.999582, 627528) (0.310045, 634444) (0.891846, 634444) (0.830556, 634444) (0.658372, 634444) (0.566889, 634444) (0.945224, 634444) (0.904183, 648324) (0.601447, 648324) (0.781097, 648324) (0.507244, 648324) (0.262003, 648324) (0.846245, 648324) (0.714734, 650124) (0.353912, 650124) (0.622557, 650124) (0.98231, 650124) (0.882661, 650124) (0.93974, 650124) (0.816479, 652472) (0.3897, 652472) (0.751507, 652472) (0.178141, 652472) (0.67979, 652472) (0.484128, 652472) (0.859968, 654276) (0.543971, 654276) (0.730314, 654276) (0.449748, 654276) (0.798461, 654276) (0.220503, 654276) (0.87985, 663164) (0.999582, 663164) (0.999582, 663164) (0.498679, 663164) (0.997643, 663164) (0.794087, 663164) (0.999582, 666804) (0.974136, 666804) (0.828283, 666804) (0.453454, 666804) (0.998362, 666804) (0.743691, 666804) (0.927954, 679556) (0.395445, 679556) (0.67498, 679556) (0.977353, 679556) (0.998784, 679556) (0.766299, 679556) }; \addlegendentry{ faiss-ivf }; \addplot [only marks] coordinates { (0.542068, 617664.0) (0.79592, 618520.0) (0.688995, 625352.0) (0.082195, 727828.0) (0.408383, 779576.0) (0.219768, 783180.0) (0.852054, 792872.0) }; \addlegendentry{ flann }; \addplot [only marks] coordinates { (0.585718, 539064) (0.088468, 539064) (0.151558, 539064) (0.46173, 539064) (0.23909, 539064) (0.361078, 539064) (0.644362, 539064) (0.316178, 539064) (0.67996, 539064) (0.774029, 578960) (0.690186, 578960) (0.608732, 578960) (0.55702, 578960) (0.834883, 578960) (0.318785, 578960) (0.208655, 578960) (0.811877, 578960) (0.444927, 578960) (0.76031, 614656) (0.88924, 614656) (0.523128, 614656) (0.833628, 614656) (0.639457, 614656) (0.392886, 614656) (0.867956, 614656) (0.269682, 614656) (0.690963, 614656) (0.427274, 652236) (0.30248, 652236) (0.919292, 652236) (0.867769, 652236) (0.559828, 652236) (0.899914, 652236) (0.797527, 652236) (0.677892, 652236) (0.729815, 652236) (0.90617, 726148) (0.723003, 726148) (0.935133, 726148) (0.840204, 726148) (0.605681, 726148) (0.775353, 726148) (0.342181, 726148) (0.471472, 726148) (0.951668, 726148) (0.933874, 835912) (0.958461, 835912) (0.971609, 835912) (0.811554, 835912) (0.644878, 835912) (0.873398, 835912) (0.511486, 835912) (0.379491, 835912) (0.760252, 835912) (0.891078, 944312) (0.979307, 944312) (0.670373, 944312) (0.946719, 944312) (0.782694, 944312) (0.404161, 944312) (0.537475, 944312) (0.968318, 944312) (0.832518, 944312) (0.98404, 1096336) (0.692669, 1096336) (0.425458, 1096336) (0.802146, 1096336) (0.904906, 1096336) (0.95603, 1096336) (0.974755, 1096336) (0.560722, 1096336) (0.849911, 1096336) (0.987259, 1388244) (0.917927, 1388244) (0.714747, 1388244) (0.448052, 1388244) (0.867149, 1388244) (0.821297, 1388244) (0.979641, 1388244) (0.583614, 1388244) (0.963456, 1388244) }; \addlegendentry{ hnsw(faiss) }; \addplot [only marks] coordinates { (0.31728, 1647216) (0.495813, 1647216) (0.593896, 1647216) (0.155912, 1647216) (0.53637, 1647216) (0.367761, 1647216) (0.025977, 1647216) (0.075582, 1647216) (0.441794, 1647216) (0.249201, 1647216) (0.615785, 1647216) (0.112118, 1865812) (0.522203, 1865812) (0.574643, 1865812) (0.669022, 1865812) (0.212738, 1865812) (0.446315, 1865812) (0.392282, 1865812) (0.319766, 1865812) (0.614048, 1865812) (0.68965, 1865812) (0.555447, 2984712) (0.886173, 2984712) (0.762956, 2984712) (0.713268, 2984712) (0.426256, 2984712) (0.921282, 2984712) (0.677742, 2984712) (0.740954, 2984712) (0.832068, 2984712) (0.781288, 2984712) (0.796751, 2984712) (0.810056, 2984712) (0.863864, 2984712) (0.849485, 2984712) (0.964443, 2984712) (0.628316, 2984712) (0.94154, 2984712) }; \addlegendentry{ hnsw(nmslib) }; \addplot [only marks] coordinates { (0.597942, 603684.0) (0.3665, 603684.0) (0.3665, 603684.0) (0.489899, 603684.0) (0.3665, 603684.0) (0.400039, 603684.0) (0.651165, 603684.0) (0.3665, 603684.0) (0.684077, 603684.0) (0.756362, 639064.0) (0.674564, 639064.0) (0.601047, 639064.0) (0.572225, 639064.0) (0.822178, 639064.0) (0.572225, 639064.0) (0.572225, 639064.0) (0.796832, 639064.0) (0.572225, 639064.0) (0.742244, 673168.0) (0.875336, 673168.0) (0.648503, 673168.0) (0.81579, 673168.0) (0.648503, 673168.0) (0.648503, 673168.0) (0.852397, 673168.0) (0.648503, 673168.0) (0.675362, 673168.0) (0.692622, 711636.0) (0.692622, 711636.0) (0.905803, 711636.0) (0.85023, 711636.0) (0.692622, 711636.0) (0.88464, 711636.0) (0.780408, 711636.0) (0.692622, 711636.0) (0.718129, 711636.0) (0.891142, 783140.0) (0.742136, 783140.0) (0.921989, 783140.0) (0.825789, 783140.0) (0.742136, 783140.0) (0.765899, 783140.0) (0.742136, 783140.0) (0.742136, 783140.0) (0.940088, 783140.0) (0.924118, 895844.0) (0.950018, 895844.0) (0.964674, 895844.0) (0.80645, 895844.0) (0.783331, 895844.0) (0.864082, 895844.0) (0.783331, 895844.0) (0.783331, 895844.0) (0.783331, 895844.0) (0.886108, 1004860.0) (0.976154, 1004860.0) (0.80815, 1004860.0) (0.941675, 1004860.0) (0.80815, 1004860.0) (0.80815, 1004860.0) (0.80815, 1004860.0) (0.964136, 1004860.0) (0.830668, 1004860.0) (0.983202, 1152888.0) (0.828945, 1152888.0) (0.828945, 1152888.0) (0.828945, 1152888.0) (0.903295, 1152888.0) (0.954358, 1152888.0) (0.97351, 1152888.0) (0.828945, 1152888.0) (0.85088, 1152888.0) (0.987473, 1450392.0) (0.918747, 1450392.0) (0.849224, 1450392.0) (0.849224, 1450392.0) (0.870052, 1450392.0) (0.849224, 1450392.0) (0.979802, 1450392.0) (0.849224, 1450392.0) (0.963847, 1450392.0) }; \addlegendentry{ hnswlib }; \addplot [only marks] coordinates { (0.999671, 937456.0) (0.999671, 941800.0) (0.999671, 948196.0) (0.999671, 960908.0) (0.999671, 986436.0) (0.999671, 1038580.0) (0.999671, 1143052.0) }; \addlegendentry{ kd }; \addplot [only marks] coordinates { (0.97815, 13227920) (0.965438, 13227920) (0.973594, 13227920) (0.970861, 13227920) (0.964625, 13227920) (0.983049, 13227920) (0.984238, 13227920) (0.965731, 13227920) (0.981593, 13227920) (0.976119, 13227920) (0.985353, 13227920) (0.964074, 13227920) (0.980053, 13227920) (0.964849, 13227920) (0.967571, 13227920) }; \addlegendentry{ kgraph }; \addplot [only marks] coordinates { (0.971457, 2469208.0) (0.712712, 2469208.0) (0.847298, 2469208.0) (0.158647, 2469208.0) (0.762282, 2469208.0) (0.374353, 2469208.0) (0.999117, 2469208.0) (0.501234, 2469208.0) }; \addlegendentry{ NGT-onng }; \addplot [only marks] coordinates { (0.709225, 1161988.0) (0.514367, 1162148.0) (0.884641, 1162204.0) (0.38621, 1162212.0) (0.997158, 1162316.0) (0.209118, 1162344.0) (0.069043, 1162380.0) (0.749095, 1162536.0) (0.805284, 1162888.0) (0.977308, 1162968.0) }; \addlegendentry{ NGT-panng }; \addplot [only marks] coordinates { (0.719383, 1262232.0) (0.785977, 1262232.0) (0.645824, 1262232.0) (0.565744, 1262232.0) (0.845577, 1262232.0) (0.48057, 1262232.0) (0.393239, 1262232.0) (0.729406, 1445412.0) (0.851935, 1445412.0) (0.654903, 1445412.0) (0.795125, 1445412.0) (0.937575, 1445412.0) (0.899257, 1445412.0) (0.57002, 1445412.0) (0.689904, 1930472.0) (0.921686, 1930472.0) (0.878075, 1930472.0) (0.826212, 1930472.0) (0.763595, 1930472.0) (0.977291, 1930472.0) (0.954682, 1930472.0) (0.778844, 2747328.0) (0.993282, 2747328.0) (0.962531, 2747328.0) (0.932238, 2747328.0) (0.891035, 2747328.0) (0.839509, 2747328.0) (0.982457, 2747328.0) (0.998089, 6248288.0) (0.993724, 6248288.0) (0.839995, 6248288.0) (0.891186, 6248288.0) (0.932505, 6248288.0) (0.963326, 6248288.0) (0.983164, 6248288.0) }; \addlegendentry{ pynndescent }; \addplot [only marks] coordinates { (0.009958, 982072.0) (0.022082, 984716.0) (0.006516, 985380.0) (0.06746, 1017540.0) (0.002647, 1018984.0) (0.031555, 1027740.0) (0.020274, 1053912.0) (0.00865, 1174848.0) (0.001051, 1187864.0) (0.226508, 1206256.0) (0.108954, 1237184.0) (0.074878, 1325436.0) (0.436945, 1576168.0) (0.231426, 1658028.0) (0.00349, 1756600.0) (0.032153, 1850676.0) (0.160395, 1878104.0) (0.073269, 3207228.0) (0.836055, 3394184.0) (0.565938, 3731452.0) (0.013048, 4182688.0) (0.43199, 4651192.0) (0.030689, 9036072.0) (0.225171, 9974328.0) }; \addlegendentry{ rpforest }; \addplot [only marks] coordinates { (0.165684, 804064) (0.057908, 804064) (0.123328, 804064) (0.077359, 804064) (0.040982, 804064) (0.032573, 804064) (0.139192, 804064) (0.10367, 804064) (0.052797, 804064) (0.590677, 1121136) (0.517055, 1121136) (0.652614, 1121136) (0.456795, 1121136) (0.910986, 1524316) (0.932504, 1524316) (0.853239, 1524316) (0.808798, 1524316) (0.650369, 1524316) (0.922927, 1524316) (0.877705, 1524316) (0.768564, 1524316) (0.715777, 1524316) (0.936439, 1524316) (0.894639, 1524316) (0.829111, 1524316) }; \addlegendentry{ SW-graph(nmslib) }; \end{axis} \end{tikzpicture} \caption{ Recall-Index size (kB) tradeoff - down and to the right is better } \label{} \end{figure}
\begin{figure} \centering \begin{tikzpicture} \begin{axis}[ xlabel={ Epsilon 0.01 Recall }, ylabel={ Queries per second (1/s) }, ymode = log, yticklabel style={/pgf/number format/fixed, /pgf/number format/precision=3}, legend style = { anchor=west}, cycle list name = black white ] \addplot [only marks] coordinates { (0.09145, 5584.3854113) (0.129807, 4446.88200639) (0.100498, 3507.02612779) (0.190622, 3247.82055985) (0.141266, 2913.9469079) (0.10903, 2310.34026521) (0.20707, 2266.7971737) (0.153048, 2043.01884473) (0.308187, 1939.72103986) (0.222306, 1707.85527167) (0.332147, 1481.26194653) (0.354522, 1255.66460079) (0.419189, 1240.63373154) (0.449313, 1022.7544419) (0.476034, 934.016037545) (0.543489, 765.689211275) (0.575762, 688.535908575) (0.603812, 649.434006022) (0.711671, 380.240612309) (0.7409, 375.267750327) (0.765137, 360.018396517) (0.850168, 231.717874622) (0.868631, 217.512564304) (0.824829, 215.927060945) (0.934323, 130.316700287) (0.947136, 127.74095228) (0.918141, 118.470917831) (0.996496, 58.7219372326) (0.994153, 58.1272843431) (0.989974, 54.9967828624) (0.999975, 32.1364902735) (0.999933, 31.5022823965) (0.999862, 31.0153071357) (1.0, 17.6399500268) (1.0, 17.1686571387) (1.0, 16.8100341759) }; \addlegendentry{ annoy }; \addplot [only marks] coordinates { (0.123762, 1455.39282331) (0.252582, 446.729613344) (0.367618, 252.152151095) (0.480771, 146.351017915) (0.587564, 102.150281964) (0.70461, 69.6570121256) (0.814835, 50.088150487) (0.922787, 35.0569393551) (0.950804, 27.4715037194) (0.966254, 24.5977195558) (0.987357, 22.104513078) (0.993235, 17.4163284087) (0.998872, 15.9540269096) }; \addlegendentry{ BallTree(nmslib) }; \addplot [only marks] coordinates { (1.0, 7.51910805742) }; \addlegendentry{ bruteforce-blas }; \addplot [only marks] coordinates { (0.290361, 7353.33749653) (0.345648, 6588.5191515) (0.395867, 4547.40302368) (0.242537, 4099.32389515) (0.566513, 3872.47034714) (0.194365, 3440.62932867) (0.444371, 3343.3904113) (0.501283, 3050.12762121) (0.432814, 2980.17799482) (0.539908, 2635.64497331) (0.671152, 2544.20616937) (0.60721, 2433.96604707) (0.634068, 2417.36582589) (0.509709, 1740.56916636) (0.754526, 1454.92387005) (0.6951, 1417.67996623) (0.732924, 1414.58821755) (0.807297, 1011.42177509) (0.560757, 970.528006022) (0.828532, 948.72098202) (0.752352, 869.260382873) (0.792678, 792.777470149) (0.858561, 727.990952044) (0.875072, 602.568762422) (0.893103, 583.135351866) (0.62877, 500.891071265) (0.84443, 464.728505153) (0.82166, 414.568731754) (0.921691, 393.541847731) (0.906368, 355.131829114) (0.933826, 341.375455197) (0.906409, 219.98633215) (0.872988, 214.366813001) (0.972305, 206.928185662) (0.96239, 190.137928632) (0.955058, 188.397231809) (0.954146, 110.576402842) (0.924936, 109.35856021) (0.988273, 102.361656863) (0.995512, 99.5596939172) (0.993703, 97.6597802403) (0.987454, 55.95868818) (0.999808, 51.5348619831) (0.999967, 48.8830534787) (0.999413, 46.5639049347) (0.999997, 25.3121548836) (0.999996, 23.7092441708) (0.999987, 23.4849759222) (1.0, 19.0369415227) (1.0, 18.9851015876) (1.0, 18.9575004937) (1.0, 18.9564186773) (1.0, 18.956325952) (1.0, 18.953835731) }; \addlegendentry{ faiss-ivf }; \addplot [only marks] coordinates { (0.089163, 4816.29143502) (0.240928, 2930.22387901) (0.454262, 1187.05508649) (0.60448, 527.401481685) (0.764367, 186.975780523) (0.875483, 76.9398473298) (0.92637, 73.1326676187) }; \addlegendentry{ flann }; \addplot [only marks] coordinates { (0.228057, 7793.61100287) (0.09596, 7732.27544889) (0.165673, 6460.28123752) (0.35182, 6112.04486854) (0.296129, 5007.34393029) (0.378974, 4944.11632094) (0.264196, 4868.0696694) (0.33381, 4527.08308711) (0.49702, 4481.58814091) (0.421873, 4435.54814072) (0.450514, 4076.32417238) (0.435915, 4063.79600409) (0.52763, 3718.20891415) (0.475825, 3713.53162781) (0.352854, 3669.04113577) (0.476142, 3616.20826746) (0.574845, 3233.71703634) (0.625768, 3133.47813724) (0.587752, 3049.26370417) (0.404447, 2987.93677688) (0.605797, 2952.06791657) (0.633795, 2683.98215211) (0.631166, 2664.33123685) (0.685006, 2582.14014969) (0.502249, 2535.96222331) (0.681672, 2517.89170369) (0.72992, 2186.24634844) (0.719097, 2155.01711892) (0.758932, 1959.66457871) (0.519292, 1952.84577776) (0.66168, 1858.45814098) (0.76181, 1840.17561567) (0.784396, 1776.58086341) (0.77172, 1715.17266967) (0.811073, 1659.6727255) (0.768512, 1584.9165574) (0.81339, 1438.46593412) (0.84984, 1356.85980568) (0.861079, 1246.64049684) (0.809656, 1240.73406849) (0.872391, 1202.09832062) (0.841562, 1110.07128502) (0.891944, 1081.54277573) (0.897315, 1005.17045307) (0.879111, 934.499642793) (0.659132, 922.155510892) (0.917154, 883.043065019) (0.933352, 790.756667986) (0.920693, 783.056761078) (0.910599, 761.110362476) (0.854064, 754.285985992) (0.951501, 631.284800081) (0.911242, 558.413448561) (0.94864, 557.472246234) (0.966076, 554.701954545) (0.724394, 542.179980004) (0.97668, 498.360075749) (0.942293, 471.128805479) (0.891005, 453.889274281) (0.974358, 391.594514803) (0.763562, 357.044092805) (0.985358, 354.373756951) (0.94183, 348.560532303) (0.992142, 321.491194049) (0.912758, 305.82228851) (0.968211, 299.006656251) (0.997191, 283.288589498) (0.998933, 256.00078594) (0.991805, 251.350767131) (0.959504, 241.59556348) (0.981668, 210.24820759) (0.999079, 209.113001606) (0.999852, 186.228615892) (0.999603, 185.509359107) (0.997537, 179.30589784) (0.999965, 169.476531242) (0.999902, 151.271096163) (0.999991, 136.05808713) (1.0, 124.588658504) (0.999988, 124.431513207) (1.0, 92.5785451162) }; \addlegendentry{ hnsw(faiss) }; \addplot [only marks] coordinates { (0.027409, 46347.5393605) (0.081513, 17169.2939977) (0.121518, 14373.7866357) (0.169436, 11148.7066949) (0.232557, 10311.396857) (0.272798, 8725.37429122) (0.352506, 7983.69115215) (0.349224, 7551.59794562) (0.434993, 6767.3204386) (0.40669, 6701.08458955) (0.497287, 5950.64613176) (0.492212, 5850.61970367) (0.474691, 5312.22848678) (0.555121, 5080.30638544) (0.586162, 4897.49631605) (0.602173, 4527.85818144) (0.64726, 4183.27855105) (0.625286, 3855.87997003) (0.667467, 3744.63577843) (0.691834, 3670.7015494) (0.691661, 3466.93626466) (0.708138, 3074.32450757) (0.751394, 2987.52410894) (0.773155, 2736.73559165) (0.761372, 2576.49276171) (0.798524, 2227.87643735) (0.826836, 1964.02710067) (0.848579, 1756.05801337) (0.866535, 1589.24869716) (0.881307, 1447.86798251) (0.893856, 1330.79888565) (0.914153, 1144.81473633) (0.929472, 1011.50758499) (0.941904, 904.963457575) (0.96014, 750.936135899) (0.984794, 529.523939331) (0.994916, 411.370879324) (0.99957, 286.175046975) }; \addlegendentry{ hnsw(nmslib) }; \addplot [only marks] coordinates { (0.409799, 6207.77457791) (0.409799, 6203.25287782) (0.409799, 6201.53314918) (0.409799, 6188.39752187) (0.448496, 5389.12883093) (0.64245, 4285.1115121) (0.64245, 4283.04877053) (0.64245, 4277.12278389) (0.64245, 4270.2643157) (0.674247, 3729.12311411) (0.551912, 3615.62595793) (0.726772, 3375.83594981) (0.726772, 3373.67562264) (0.726772, 3371.42483256) (0.726772, 3365.94170682) (0.755192, 2928.91124464) (0.77446, 2841.37984856) (0.77446, 2837.49349365) (0.77446, 2832.0195961) (0.77446, 2830.73976771) (0.753294, 2501.02606788) (0.800732, 2439.78348113) (0.826886, 2225.57325184) (0.826886, 2225.17558594) (0.826886, 2225.0246093) (0.826886, 2222.50105977) (0.673221, 2057.99362912) (0.82391, 1937.50041574) (0.850095, 1917.8806038) (0.869366, 1610.7789787) (0.862367, 1605.6705386) (0.869366, 1605.41628347) (0.869366, 1603.22940542) (0.869366, 1601.82538336) (0.731764, 1457.87807635) (0.837421, 1394.93571272) (0.891011, 1376.58742848) (0.894138, 1360.34032638) (0.894138, 1359.91196813) (0.894138, 1359.01686889) (0.894138, 1358.58195055) (0.906443, 1235.97240581) (0.914724, 1234.60043981) (0.914724, 1233.62637042) (0.914724, 1233.48789242) (0.914724, 1227.65983491) (0.914506, 1165.94841222) (0.767516, 1141.3057202) (0.895483, 1066.77437068) (0.934028, 1059.09118685) (0.877285, 986.233145547) (0.934713, 974.048346639) (0.934713, 973.090205861) (0.934713, 972.740065818) (0.934713, 972.631746106) (0.942281, 894.559815481) (0.927199, 883.049943761) (0.951865, 833.785099853) (0.901497, 767.097859394) (0.961478, 754.88291416) (0.928992, 751.0247728) (0.975449, 685.946650531) (0.962708, 684.493464304) (0.956811, 621.860611759) (0.948856, 582.332008455) (0.986067, 539.081092728) (0.986813, 492.339002084) (0.97317, 482.232597635) (0.984394, 479.471219757) (0.995318, 413.10595846) (0.998737, 375.060861375) (0.993624, 369.806687735) (0.997459, 345.089574943) (0.999645, 294.199243493) (0.999683, 288.737269134) (0.999628, 267.551564945) (0.999956, 262.375277248) (0.999989, 223.529610456) (0.999987, 205.49556939) (0.999995, 203.537536565) (0.999999, 159.37659859) }; \addlegendentry{ hnswlib }; \addplot [only marks] coordinates { (1.0, 2.95079520454) (1.0, 2.85120482499) (1.0, 2.75459154202) (1.0, 2.69205914126) (1.0, 2.55611375417) (1.0, 2.33616104541) (1.0, 1.98011960939) }; \addlegendentry{ kd }; \addplot [only marks] coordinates { (0.99882, 209.601358166) (0.998962, 207.702022187) (0.998949, 206.930777737) (0.999036, 206.665452386) (0.999014, 204.618469048) (0.999252, 195.799358744) (0.999565, 183.558839928) (0.999714, 172.180184858) (0.999817, 162.090963787) (0.999888, 153.295959023) (0.999924, 146.075359552) (0.999953, 138.951985325) (0.999981, 132.840087029) (0.999992, 127.058042284) (0.999995, 122.18271921) }; \addlegendentry{ kgraph }; \addplot [only marks] coordinates { (0.166383, 15190.1987222) (0.401427, 7272.1472328) (0.546205, 5277.68966188) (0.793181, 2737.40485287) (0.846063, 2137.55521363) (0.930236, 1261.74599934) (0.999967, 281.355345694) (1.0, 49.1145165684) }; \addlegendentry{ NGT-onng }; \addplot [only marks] coordinates { (0.072237, 8050.30673975) (0.220014, 4306.00477815) (0.413921, 2107.55520864) (0.560758, 1635.93370214) (0.791848, 835.745058846) (0.834426, 721.412903618) (0.892308, 424.258053605) (0.966668, 220.372185111) (0.999986, 57.3680458276) (0.999997, 16.8706857128) }; \addlegendentry{ NGT-panng }; \addplot [only marks] coordinates { (0.440749, 1122.17769956) (0.640613, 823.816445315) (0.541679, 684.384645897) (0.77032, 635.32932705) (0.733509, 494.953854504) (0.859638, 417.743401756) (0.844888, 380.809645403) (0.637925, 361.779117649) (0.811971, 273.585049777) (0.916735, 242.873419524) (0.916262, 233.542710301) (0.90545, 199.182400785) (0.725867, 162.092019919) (0.961068, 131.822493053) (0.960616, 131.285955902) (0.877405, 126.242802895) (0.951169, 94.0320407164) (0.98815, 71.1932593336) (0.988586, 66.2417765271) (0.804059, 59.411587928) (0.930218, 50.0664170502) (0.983146, 38.5106149603) (0.998571, 36.7264058833) (0.998674, 30.0949672647) (0.871085, 18.8380209118) (0.999985, 18.0286199838) (0.968849, 17.2358346444) (0.997175, 14.3458156571) (0.999974, 12.0112625461) (1.0, 8.06273201751) (0.926877, 5.38024749099) (0.991487, 5.11000120973) (0.999913, 4.63711568106) (1.0, 4.12415966635) (1.0, 3.11358613307) }; \addlegendentry{ pynndescent }; \addplot [only marks] coordinates { (0.001117, 28438.5428914) (0.00285, 27063.5527985) (0.007079, 14548.3202313) (0.003719, 13274.0506688) (0.009391, 10119.0775178) (0.01089, 8527.59067279) (0.022268, 4753.67028376) (0.013986, 3414.61131164) (0.034612, 3097.45196547) (0.024632, 2850.86438006) (0.034774, 2770.1190411) (0.033011, 1649.15513269) (0.08232, 1491.18105352) (0.079776, 1182.28191721) (0.075166, 885.805441214) (0.120658, 756.800074859) (0.177924, 497.262987363) (0.258389, 294.836752133) (0.249271, 274.851876127) (0.255133, 238.7779019) (0.488061, 135.745726641) (0.498439, 92.7824888626) (0.645389, 81.4564980485) (0.949897, 23.2925906606) }; \addlegendentry{ rpforest }; \addplot [only marks] coordinates { (0.03597, 3947.97893472) (0.045293, 3782.72532731) (0.058442, 3403.67242133) (0.06417, 3223.64090229) (0.085987, 2770.58088872) (0.116018, 2240.75528388) (0.138663, 1910.52564572) (0.156944, 1678.1735657) (0.512051, 1618.72996489) (0.581893, 1387.91785618) (0.187715, 1356.76320078) (0.665822, 1093.22112843) (0.729727, 969.913807875) (0.734976, 847.437186352) (0.799207, 758.65880509) (0.852553, 580.084027532) (0.891571, 453.805160704) (0.910722, 390.245191407) (0.932672, 322.230790348) (0.953842, 257.373089517) (0.967468, 215.7280188) (0.979033, 178.215040258) (0.986397, 152.383946346) (0.991185, 133.862085353) (0.992842, 124.579594022) }; \addlegendentry{ SW-graph(nmslib) }; \end{axis} \end{tikzpicture} \caption{ Epsilon 0.01 Recall-Queries per second (1/s) tradeoff - up and to the right is better } \label{} \end{figure}
ANN-Benchmarks has been developed by Martin Aumueller ([email protected]), Erik Bernhardsson ([email protected]), and Alec Faitfull ([email protected]). Please use Github to submit your implementation or improvements.