\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.93707, 11652.0873338) (0.95604, 8536.03210325) (0.98129, 8335.10993042) (0.98944, 6528.86173483) (0.99451, 5649.79063345) (0.99763, 4812.40937946) (0.99923, 3090.29968945) (0.99961, 3063.78686705) (0.99995, 2787.27558044) (1.0, 1885.44542083) }; \addlegendentry{ annoy }; \addplot coordinates { (0.76179, 686.318576301) (0.99853, 80.4898891349) }; \addlegendentry{ BallTree(nmslib) }; \addplot coordinates { (1.0, 36.1630634023) }; \addlegendentry{ bruteforce-blas }; \addplot coordinates { (0.85208, 2543.2123768) (0.99312, 1662.87808506) (0.99957, 1376.98431497) (0.99988, 1087.44162587) (0.99994, 980.754267895) (0.99996, 859.979065108) (0.99999, 462.091388618) (1.0, 122.841673158) }; \addlegendentry{ faiss-ivf }; \addplot coordinates { (0.98655, 221.780794922) (0.99994, 22.7254892968) }; \addlegendentry{ flann }; \addplot coordinates { (0.0045, 15077.7432476) (0.00616, 12469.5092947) (0.01546, 11314.0228417) (0.03258, 8926.31492923) (0.05516, 8013.87289245) (0.10341, 6005.52972694) (0.20971, 4152.15341461) (0.34458, 3450.17478714) (0.50389, 3016.57492815) (0.70208, 2512.71437774) (0.71036, 1769.79556841) (0.88131, 1468.02220326) (0.9379, 621.005031346) (0.94912, 283.840353958) (0.94993, 184.399826487) (0.95026, 109.376281742) (0.9503, 55.9528095711) (0.95034, 38.6376686979) (0.95057, 30.3013110064) }; \addlegendentry{ hnsw(faiss) }; \addplot coordinates { (0.00116, 150561.207274) (0.00166, 104908.480613) (0.00327, 85683.899581) (0.00335, 72578.4955503) (0.00838, 64771.0938634) (0.01375, 39825.4038036) (0.03185, 24152.1950186) (0.04609, 23542.8725387) (0.05628, 15483.7071082) (0.09086, 14267.2670231) (0.09578, 9141.56985602) (0.13963, 9092.80185849) (0.1789, 6729.64758071) (0.21066, 4654.49896741) (0.26139, 3346.00025193) (0.47712, 3122.91843795) (0.56114, 2214.12838818) (0.61553, 1610.65353579) (0.65768, 1325.49508662) (0.69465, 1127.4738886) (0.72153, 971.657818132) (0.74107, 862.728281433) (0.75764, 773.762333342) (0.7753, 702.51147235) (0.79559, 601.31894065) (0.8124, 524.013305675) (0.82584, 463.936347326) (0.84262, 376.057132369) (0.86225, 254.30851466) (0.86912, 192.053011214) }; \addlegendentry{ hnsw(nmslib) }; \addplot coordinates { (0.00524, 30846.2996316) (0.00996, 21671.0954684) (0.01739, 15795.339771) (0.03112, 10670.6720764) (0.0512, 10456.7816439) (0.08933, 7575.75522222) (0.17849, 5151.19010395) (0.33547, 4039.62902828) (0.47766, 3123.31749423) (0.83467, 2812.71555716) (0.90983, 1522.99980603) (0.94672, 757.848247136) (0.95997, 374.3420427) (0.96371, 248.765091537) (0.96529, 150.11257287) (0.96575, 78.0841108849) (0.96602, 54.5345880156) }; \addlegendentry{ hnswlib }; \addplot coordinates { (0.99558, 2504.43782999) (0.99615, 1328.65030191) (0.99661, 909.648342297) (0.99692, 700.819371235) (0.9972, 566.424005648) (0.99808, 298.345126833) (0.99915, 156.079965663) (0.99954, 108.48196173) (0.99967, 84.0473279926) (0.99983, 69.5614051528) (0.9999, 59.5761251725) (0.99994, 52.323535446) (0.99996, 46.9065762579) (0.99998, 39.0683715616) }; \addlegendentry{ kgraph }; \addplot coordinates { (0.99238, 1263.72727452) (0.99961, 706.679662295) (0.99999, 385.433418745) (1.0, 80.9036178045) }; \addlegendentry{ mrpt }; \addplot coordinates { (0.23865, 32102.7704045) (0.27242, 20162.3640076) (0.29422, 18849.8387049) (0.7305, 5971.90560175) (0.9448, 4498.41821382) (1.0, 3793.642952) }; \addlegendentry{ NGT-panng }; \addplot coordinates { (0.98645, 2546.41358421) (0.99265, 2431.62408077) (0.9948, 193.83683919) (0.99662, 193.437676772) (0.99805, 108.628438822) (0.99862, 50.2942055332) (0.99963, 46.843661559) (1.0, 28.532851508) }; \addlegendentry{ pynndescent }; \addplot coordinates { (0.63882, 3437.15510067) (0.66099, 3358.16465664) (0.66694, 3329.5108387) (0.66933, 2994.97410649) (0.67083, 2993.13284936) (0.68122, 2667.73096796) (0.7344, 2032.26670322) (0.7434, 1494.46493019) (0.90251, 1340.78127998) (0.92269, 1225.19979109) (0.92904, 702.45871537) (0.93346, 476.740636167) (0.94332, 285.781290233) (0.96354, 160.545298785) (0.98803, 88.375436211) (0.99791, 53.0236556907) (1.0, 34.1363867176) }; \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.93707, 205.616721826) (0.98129, 287.44239968) (0.99451, 424.062439733) (0.99961, 781.99434359) (0.99997, 1341.004467) (1.0, 2385.73503948) }; \addlegendentry{ annoy }; \addplot coordinates { (0.76179, 2960.32202851) (0.99853, 25023.764123) }; \addlegendentry{ BallTree(nmslib) }; \addplot coordinates { (1.0, 107.955456001) }; \addlegendentry{ bruteforce-blas }; \addplot coordinates { (0.85208, 552.979378691) (0.99312, 814.258130024) (0.99957, 983.316937801) (0.99994, 1117.1646516) (0.99996, 1274.05892126) (0.99999, 2371.09807062) (1.0, 11022.4158072) }; \addlegendentry{ faiss-ivf }; \addplot coordinates { (0.98655, 1693.14931048) (0.99994, 18375.1379144) }; \addlegendentry{ flann }; \addplot coordinates { (0.0045, 59.5887584267) (0.00616, 72.0528754395) (0.01546, 82.845157122) (0.03258, 107.593335841) (0.05516, 123.776857122) (0.10341, 175.56353027) (0.20971, 277.573558805) (0.34458, 360.160303945) (0.50389, 453.571362418) (0.52073, 610.60310875) (0.70208, 644.12255302) (0.71036, 773.10172114) (0.88131, 1102.50103602) (0.9379, 2606.25263614) (0.94912, 5702.13494111) (0.94993, 8777.1015344) (0.95026, 14797.5043055) (0.9503, 28926.0899034) (0.95034, 41889.0697742) (0.95057, 53413.3985048) }; \addlegendentry{ hnsw(faiss) }; \addplot coordinates { (0.00116, 13.6143701097) (0.00166, 19.5388970274) (0.00327, 24.8977463728) (0.00335, 28.2424702311) (0.00838, 34.3261147432) (0.01375, 55.8271803336) (0.03185, 92.0554011049) (0.04609, 142.333353523) (0.05628, 143.592227912) (0.07623, 195.844458196) (0.09086, 234.86880806) (0.09578, 243.212056027) (0.13111, 345.993049402) (0.13963, 368.526231205) (0.15922, 437.567503875) (0.1789, 497.936327246) (0.18375, 524.932124818) (0.2274, 699.549889711) (0.24424, 784.372326309) (0.26139, 1001.47511886) (0.47712, 1078.95869423) (0.56114, 1521.81780334) (0.61553, 2092.00794903) (0.65768, 2542.06902312) (0.69465, 2988.53927711) (0.72153, 3467.78458128) (0.74107, 3905.63294668) (0.75764, 4354.69633866) (0.7753, 4796.36295295) (0.79559, 5603.51549273) (0.8124, 6430.18023304) (0.82584, 7262.84978408) (0.84262, 8960.07470666) (0.86225, 13249.6546744) (0.86912, 17544.6350916) }; \addlegendentry{ hnsw(nmslib) }; \addplot coordinates { (0.00524, 32.5322651982) (0.00996, 46.3059193969) (0.01739, 65.3808031338) (0.03112, 96.7804082634) (0.0512, 101.648101318) (0.08933, 144.39801286) (0.1457, 218.899192058) (0.17849, 224.412606926) (0.33547, 309.307609994) (0.47766, 430.439749556) (0.65227, 579.271071997) (0.83467, 611.372165103) (0.90983, 1129.09797703) (0.94672, 2269.07696428) (0.95997, 4593.70256036) (0.96371, 6912.60976117) (0.96529, 11455.5094695) (0.96575, 22022.611009) (0.96602, 31532.575244) }; \addlegendentry{ hnswlib }; \addplot coordinates { (0.99558, 1420.93684954) (0.99615, 2678.39324982) (0.99661, 3912.11398354) (0.99692, 5077.83909244) (0.9972, 6282.65745186) (0.99808, 11927.9575228) (0.99915, 22800.1587832) (0.99954, 32804.052796) (0.99967, 42341.0010169) (0.99983, 51158.3685261) (0.9999, 59732.7870803) (0.99994, 68012.3766421) (0.99996, 75866.7181427) (0.99998, 91087.6972282) }; \addlegendentry{ kgraph }; \addplot coordinates { (0.94029, 483.057844268) (0.99238, 1298.1218599) (0.99961, 2321.37995124) (0.99999, 8468.78125083) (1.0, 31453.4324288) }; \addlegendentry{ mrpt }; \addplot coordinates { (0.23865, 39.1298316055) (0.27242, 62.2954728684) (0.29422, 66.6407824314) (0.7305, 210.387786376) (0.9448, 279.228817841) (1.0, 331.701221207) }; \addlegendentry{ NGT-panng }; \addplot coordinates { (0.98645, 953.612569088) (0.98765, 1331.21028046) (0.99104, 1472.13974758) (0.99265, 1879.69844358) (0.9948, 17210.6397006) (0.99662, 23628.9024779) (0.99805, 42076.6426323) (0.99862, 66330.8221024) (0.99963, 97573.9267145) (1.0, 160191.490104) }; \addlegendentry{ pynndescent }; \addplot coordinates { (0.63882, 329.684278658) (0.66099, 337.439082315) (0.66694, 340.343087888) (0.66933, 378.359197679) (0.67083, 378.591949316) (0.68122, 424.771468192) (0.69661, 576.143028829) (0.7344, 613.508058772) (0.7434, 834.286556222) (0.90251, 1030.59016458) (0.92269, 1127.81279432) (0.92904, 1967.08499698) (0.93346, 2898.42294777) (0.94332, 4835.15208037) (0.96354, 8606.89170256) (0.98803, 15635.5211272) (0.99791, 26059.9911869) (0.99992, 42546.9386962) (1.0, 45335.9054315) }; \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 { (1.0, 299.219715357) }; \addlegendentry{ annoy }; \addplot coordinates { (0.54426, 88.5387971401) (0.65337, 92.5049760342) (0.76179, 94.6215929985) (0.92879, 95.3309628963) (0.9936, 104.011317968) (0.99853, 113.060717106) }; \addlegendentry{ BallTree(nmslib) }; \addplot coordinates { (1.0, 0.405945301056) }; \addlegendentry{ bruteforce-blas }; \addplot coordinates { (0.98858, 3.2873711586) (0.99942, 3.2873711586) (1.0, 6.86084890366) }; \addlegendentry{ faiss-ivf }; \addplot coordinates { (0.98655, 995.514039993) (0.99994, 2397.67117548) }; \addlegendentry{ flann }; \addplot coordinates { (0.00616, 25.5499489307) (0.03659, 25.5499489307) (0.06024, 71.8734920025) (0.14268, 71.8734920025) (0.2452, 124.46711278) (0.25775, 124.46711278) (0.35501, 208.34649086) (0.36467, 353.133896112) (0.51769, 353.133896112) (0.64561, 516.760396004) (0.67692, 516.760396004) (0.69441, 516.760396004) (0.74661, 686.118350029) (0.79286, 686.118350029) (0.80384, 686.118350029) (0.80757, 686.118350029) (0.88747, 857.951200962) (0.95034, 1089.73801613) (0.95057, 1089.73801613) }; \addlegendentry{ hnsw(faiss) }; \addplot coordinates { (0.02782, 44.7693841457) (0.04333, 44.7693841457) (0.08197, 86.6195750237) (0.1223, 86.6195750237) (0.14991, 86.6195750237) (0.2274, 289.208294153) (0.30308, 289.208294153) (0.33469, 540.146919966) (0.66568, 540.146919966) (0.69465, 1120.41045403) (0.72153, 1120.41045403) (0.82584, 1120.41045403) (0.86225, 1120.41045403) (0.86912, 1120.41045403) }; \addlegendentry{ hnsw(nmslib) }; \addplot coordinates { (0.00996, 39.0654232502) (0.13625, 39.0654232502) (0.31327, 76.340154171) (0.50889, 115.823498011) (0.52388, 115.823498011) (0.62202, 142.26453495) (0.73169, 227.573456287) (0.77668, 345.724270821) (0.80514, 345.724270821) (0.81419, 345.724270821) (0.85095, 460.502251863) (0.86518, 460.502251863) (0.86565, 460.502251863) (0.91512, 596.635110378) (0.96602, 829.262500763) }; \addlegendentry{ hnswlib }; \addplot coordinates { (0.99692, 96.1019210815) (0.9999, 96.1019210815) (0.99994, 96.1019210815) (0.99996, 96.1019210815) (0.99998, 96.1019210815) }; \addlegendentry{ kgraph }; \addplot coordinates { (0.99944, 0.285668134689) (0.99999, 0.285668134689) (1.0, 0.525902509689) }; \addlegendentry{ mrpt }; \addplot coordinates { (0.9999, 1076.81996012) (1.0, 1085.07650781) }; \addlegendentry{ NGT-panng }; \addplot coordinates { (0.92069, 85.9821593761) (0.98713, 106.702132225) (0.98876, 106.702132225) (0.99111, 219.140282869) (0.99401, 219.140282869) (0.99625, 219.140282869) (0.99862, 510.267754793) (0.99961, 510.267754793) (1.0, 1353.12176704) }; \addlegendentry{ pynndescent }; \addplot coordinates { (0.68122, 28.6451289654) (0.71053, 28.6451289654) (0.72597, 28.6451289654) (0.97988, 72.9279232025) (0.99571, 72.9279232025) (1.0, 226.677884817) }; \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 { (1.0, 2395864.0) }; \addlegendentry{ annoy }; \addplot coordinates { (0.66267, 1962348) (0.86024, 1970448) (0.9936, 2006560) (0.99853, 2014160) }; \addlegendentry{ BallTree(nmslib) }; \addplot coordinates { (1.0, 3904.0) }; \addlegendentry{ bruteforce-blas }; \addplot coordinates { (0.98858, 948900) (0.99942, 948900) (0.99999, 1095664) (1.0, 1293392) }; \addlegendentry{ faiss-ivf }; \addplot coordinates { (0.98655, 375508.0) (0.99994, 417584.0) }; \addlegendentry{ flann }; \addplot coordinates { (0.00616, 898464) (0.03659, 898464) (0.06024, 937312) (0.14268, 937312) (0.2452, 960412) (0.25775, 960412) (0.35501, 991932) (0.36467, 1054352) (0.51769, 1054352) (0.64561, 1152528) (0.67692, 1152528) (0.69441, 1152528) (0.74661, 1242616) (0.79286, 1242616) (0.80384, 1242616) (0.80757, 1242616) (0.88747, 1368232) (0.95034, 1618496) (0.95057, 1618496) }; \addlegendentry{ hnsw(faiss) }; \addplot coordinates { (0.02782, 2049796) (0.04333, 2049796) (0.08197, 2133336) (0.1223, 2133336) (0.14991, 2133336) (0.2274, 2223340) (0.30308, 2223340) (0.33469, 3350936) (0.66568, 3350936) (0.69465, 3369500) (0.72153, 3369500) (0.82584, 3369500) (0.86225, 3369500) (0.86912, 3369500) }; \addlegendentry{ hnsw(nmslib) }; \addplot coordinates { (0.00996, 1003500.0) (0.13625, 1003500.0) (0.31327, 1032712.0) (0.50889, 1062912.0) (0.52388, 1062912.0) (0.62202, 1093924.0) (0.73169, 1155992.0) (0.77668, 1249488.0) (0.80514, 1249488.0) (0.81419, 1249488.0) (0.85095, 1344400.0) (0.86518, 1344400.0) (0.86565, 1344400.0) (0.91512, 1469520.0) (0.96602, 1719616.0) }; \addlegendentry{ hnswlib }; \addplot coordinates { (0.99692, 3558648) (0.9999, 3558648) (0.99994, 3558648) (0.99996, 3558648) (0.99998, 3558648) }; \addlegendentry{ kgraph }; \addplot coordinates { (0.99944, 130404.0) (0.99999, 130404.0) (1.0, 637140.0) }; \addlegendentry{ mrpt }; \addplot coordinates { (0.27242, 1256024.0) (0.9999, 1256048.0) (1.0, 1256160.0) }; \addlegendentry{ NGT-panng }; \addplot coordinates { (0.92069, 1873900.0) (0.96257, 2072920.0) (0.97748, 2072920.0) (0.98713, 2428292.0) (0.98876, 2428292.0) (0.98948, 2686132.0) (0.99687, 2686132.0) (0.99862, 3336056.0) (0.99961, 3336056.0) (1.0, 4570720.0) }; \addlegendentry{ pynndescent }; \addplot coordinates { (0.68122, 1133176) (0.71053, 1133176) (0.72597, 1133176) (0.97988, 1246812) (0.99571, 1246812) (1.0, 1381796) }; \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.93729, 11652.0873338) (0.95625, 8536.03210325) (0.98148, 8335.10993042) (0.9895, 6528.86173483) (0.99464, 5649.79063345) (0.99767, 4812.40937946) (0.99925, 3090.29968945) (0.99962, 3063.78686705) (0.99995, 2787.27558044) (1.0, 1885.44542083) }; \addlegendentry{ annoy }; \addplot coordinates { (0.76181, 686.318576301) (0.99861, 80.4898891349) }; \addlegendentry{ BallTree(nmslib) }; \addplot coordinates { (1.0, 36.1630634023) }; \addlegendentry{ bruteforce-blas }; \addplot coordinates { (0.85226, 2543.2123768) (0.99314, 1662.87808506) (0.99957, 1376.98431497) (0.99988, 1087.44162587) (0.99994, 980.754267895) (0.99996, 859.979065108) (0.99999, 462.091388618) (1.0, 122.841673158) }; \addlegendentry{ faiss-ivf }; \addplot coordinates { (0.98666, 221.780794922) (0.99994, 22.7254892968) }; \addlegendentry{ flann }; \addplot coordinates { (0.00451, 15077.7432476) (0.00618, 12469.5092947) (0.01547, 11314.0228417) (0.03258, 8926.31492923) (0.05517, 8013.87289245) (0.10346, 6005.52972694) (0.20976, 4152.15341461) (0.34467, 3450.17478714) (0.50403, 3016.57492815) (0.70218, 2512.71437774) (0.71052, 1769.79556841) (0.88138, 1468.02220326) (0.93798, 621.005031346) (0.9492, 283.840353958) (0.95001, 184.399826487) (0.95034, 109.376281742) (0.95038, 55.9528095711) (0.95042, 38.6376686979) (0.95065, 30.3013110064) }; \addlegendentry{ hnsw(faiss) }; \addplot coordinates { (0.00117, 150561.207274) (0.00167, 104908.480613) (0.00327, 85683.899581) (0.00336, 72578.4955503) (0.00838, 64771.0938634) (0.01375, 39825.4038036) (0.03185, 24152.1950186) (0.04609, 23542.8725387) (0.05632, 15483.7071082) (0.09088, 14267.2670231) (0.09584, 9141.56985602) (0.13968, 9092.80185849) (0.17895, 6729.64758071) (0.21072, 4654.49896741) (0.26149, 3346.00025193) (0.47719, 3122.91843795) (0.56121, 2214.12838818) (0.6156, 1610.65353579) (0.65775, 1325.49508662) (0.69472, 1127.4738886) (0.7216, 971.657818132) (0.74114, 862.728281433) (0.75771, 773.762333342) (0.77537, 702.51147235) (0.79566, 601.31894065) (0.81247, 524.013305675) (0.82591, 463.936347326) (0.84269, 376.057132369) (0.86232, 254.30851466) (0.86919, 192.053011214) }; \addlegendentry{ hnsw(nmslib) }; \addplot coordinates { (0.00524, 30846.2996316) (0.00996, 21671.0954684) (0.0174, 15795.339771) (0.03113, 10670.6720764) (0.05123, 10456.7816439) (0.08934, 7575.75522222) (0.17852, 5151.19010395) (0.33552, 4039.62902828) (0.47768, 3123.31749423) (0.83469, 2812.71555716) (0.90985, 1522.99980603) (0.94674, 757.848247136) (0.95999, 374.3420427) (0.96373, 248.765091537) (0.96531, 150.11257287) (0.96577, 78.0841108849) (0.96604, 54.5345880156) }; \addlegendentry{ hnswlib }; \addplot coordinates { (0.99559, 2504.43782999) (0.99616, 1328.65030191) (0.99662, 909.648342297) (0.99693, 700.819371235) (0.99721, 566.424005648) (0.99809, 298.345126833) (0.99915, 156.079965663) (0.99954, 108.48196173) (0.99967, 84.0473279926) (0.99983, 69.5614051528) (0.9999, 59.5761251725) (0.99994, 52.323535446) (0.99996, 46.9065762579) (0.99998, 39.0683715616) }; \addlegendentry{ kgraph }; \addplot coordinates { (0.99256, 1263.72727452) (0.99963, 706.679662295) (0.99999, 385.433418745) (1.0, 80.9036178045) }; \addlegendentry{ mrpt }; \addplot coordinates { (0.23865, 32102.7704045) (0.27245, 20162.3640076) (0.29426, 18849.8387049) (0.7305, 5971.90560175) (0.9448, 4498.41821382) (1.0, 3793.642952) }; \addlegendentry{ NGT-panng }; \addplot coordinates { (0.98663, 2546.41358421) (0.99279, 2431.62408077) (0.99489, 193.83683919) (0.99669, 193.437676772) (0.9981, 108.628438822) (0.99865, 50.2942055332) (0.99963, 46.843661559) (1.0, 28.532851508) }; \addlegendentry{ pynndescent }; \addplot coordinates { (0.63905, 3437.15510067) (0.66123, 3358.16465664) (0.66718, 3329.5108387) (0.66958, 2994.97410649) (0.67108, 2993.13284936) (0.68147, 2667.73096796) (0.73461, 2032.26670322) (0.74362, 1494.46493019) (0.90263, 1340.78127998) (0.92281, 1225.19979109) (0.92916, 702.45871537) (0.93358, 476.740636167) (0.94343, 285.781290233) (0.96364, 160.545298785) (0.98809, 88.375436211) (0.99793, 53.0236556907) (1.0, 34.1363867176) }; \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.93707, 11652.0873338) (0.95604, 8536.03210325) (0.98129, 8335.10993042) (0.98944, 6528.86173483) (0.99451, 5649.79063345) (0.97052, 5032.69514889) (0.99763, 4812.40937946) (0.99441, 4026.01573699) (0.99923, 3090.29968945) (0.99961, 3063.78686705) (0.99995, 2787.27558044) (1.0, 1885.44542083) (0.99997, 1786.61895539) (1.0, 1690.70908617) (1.0, 1168.0845398) (1.0, 1004.24563514) (1.0, 967.802188925) (1.0, 695.729139798) (1.0, 445.972066288) (1.0, 443.943170544) (1.0, 326.646889893) (1.0, 235.645523872) (1.0, 234.097559958) (1.0, 179.229456029) (1.0, 122.573322743) (1.0, 119.117347629) (1.0, 97.6009762034) (1.0, 55.9000140168) (1.0, 55.2112118804) (1.0, 45.2560442449) (1.0, 30.361806748) (1.0, 30.0343176356) (1.0, 21.4928555289) (1.0, 16.6213764213) (1.0, 16.6099500163) }; \addlegendentry{ annoy }; \addplot [only marks] coordinates { (0.76179, 686.318576301) (0.54426, 249.138106405) (0.66267, 146.502965532) (0.65337, 114.372905638) (0.99853, 80.4898891349) (0.9936, 62.5380548315) (0.50374, 54.8198689742) (0.98335, 53.6765547242) (0.92879, 37.2565973358) (0.86024, 27.8357654716) (0.77174, 27.691250323) (0.40301, 26.6771670834) (0.54177, 17.907900402) }; \addlegendentry{ BallTree(nmslib) }; \addplot [only marks] coordinates { (1.0, 36.1630634023) }; \addlegendentry{ bruteforce-blas }; \addplot [only marks] coordinates { (0.85208, 2543.2123768) (0.99312, 1662.87808506) (0.93576, 1558.37228703) (0.99957, 1376.98431497) (0.99988, 1087.44162587) (0.99796, 1060.20772448) (0.99032, 1042.58468286) (0.97793, 1034.52176322) (0.99994, 980.754267895) (0.99658, 881.719306231) (0.99996, 859.979065108) (0.72782, 785.189883586) (0.99317, 549.951911542) (0.99999, 462.091388618) (1.0, 122.841673158) (0.74025, 114.983322582) (0.7806, 84.5232316726) (0.7405, 82.3629597406) (0.9692, 81.2732144257) (0.74847, 70.9924959989) (0.99999, 69.7383241932) (1.0, 54.1058473968) (1.0, 50.0974989828) (0.97396, 48.0732234761) (0.99987, 47.5758292609) (0.99988, 47.3156645321) (0.99162, 45.6815985943) (0.96761, 45.4529752466) (0.99999, 43.397335038) (0.99539, 42.8687775766) (0.98217, 41.2185956475) (0.99999, 41.2002504491) (1.0, 39.9920980426) (0.99263, 35.6170445705) (0.98858, 34.6374054514) (1.0, 34.2814308723) (0.99805, 31.205872076) (0.99997, 31.0047573197) (1.0, 29.5826102773) (0.99999, 27.0287349539) (1.0, 25.5170715577) (0.99942, 21.4023565865) (1.0, 17.7130418269) (1.0, 17.135234217) (1.0, 16.2634804312) }; \addlegendentry{ faiss-ivf }; \addplot [only marks] coordinates { (0.98655, 221.780794922) (0.99994, 22.7254892968) }; \addlegendentry{ flann }; \addplot [only marks] coordinates { (0.0045, 15077.7432476) (0.00616, 12469.5092947) (0.01546, 11314.0228417) (0.00913, 9412.26948736) (0.03258, 8926.31492923) (0.02553, 8103.08290877) (0.05516, 8013.87289245) (0.10341, 6005.52972694) (0.01391, 5983.99646636) (0.0549, 5951.08432702) (0.09045, 5366.96627284) (0.04055, 5201.14406956) (0.01806, 4164.68641608) (0.20971, 4152.15341461) (0.16829, 3718.00687081) (0.08513, 3632.88802066) (0.34458, 3450.17478714) (0.13173, 3158.60880671) (0.50389, 3016.57492815) (0.06024, 2967.97375182) (0.33009, 2522.54397864) (0.70208, 2512.71437774) (0.02209, 2440.29393113) (0.24283, 2039.01241559) (0.52073, 2035.06333688) (0.07372, 2020.31419822) (0.12441, 1995.00172707) (0.71036, 1769.79556841) (0.18502, 1689.99937788) (0.88131, 1468.02220326) (0.14812, 1359.85950045) (0.45214, 1333.01852561) (0.09247, 1189.30402629) (0.21644, 1142.25483171) (0.31924, 1057.92877805) (0.66131, 1015.13629383) (0.02913, 978.83110273) (0.82488, 827.113701118) (0.17999, 803.993653473) (0.36467, 710.938518463) (0.26112, 679.858223688) (0.55372, 674.18404006) (0.9379, 621.005031346) (0.03396, 531.474929525) (0.11946, 527.915120019) (0.74661, 496.077586872) (0.60235, 449.749690726) (0.41863, 426.422722019) (0.87151, 390.470030492) (0.22353, 370.96473966) (0.03659, 327.720627116) (0.77354, 327.5343598) (0.31447, 324.452611573) (0.13445, 312.062858148) (0.94912, 283.840353958) (0.64561, 269.280496976) (0.88087, 255.249402552) (0.2452, 230.020563083) (0.14268, 211.485883536) (0.47863, 207.596486863) (0.3414, 202.195577802) (0.79286, 194.989848409) (0.94993, 184.399826487) (0.25775, 160.790844084) (0.88401, 151.338658307) (0.35501, 145.467676765) (0.50347, 134.643649596) (0.67692, 133.90173362) (0.95026, 109.376281742) (0.51769, 97.964214337) (0.80057, 97.4574055627) (0.68637, 89.1166956935) (0.88562, 76.1477203656) (0.69441, 66.5516947027) (0.80384, 65.8034699248) (0.9503, 55.9528095711) (0.88616, 51.7431996935) (0.80757, 49.745108598) (0.88747, 39.4651364402) (0.95034, 38.6376686979) (0.95057, 30.3013110064) }; \addlegendentry{ hnsw(faiss) }; \addplot [only marks] coordinates { (0.00116, 150561.207274) (0.00166, 104908.480613) (0.00327, 85683.899581) (0.00335, 72578.4955503) (0.00838, 64771.0938634) (0.00524, 56925.5637516) (0.00565, 50024.2589337) (0.01375, 39825.4038036) (0.00977, 35612.9154964) (0.00926, 31616.1591035) (0.03185, 24152.1950186) (0.04609, 23542.8725387) (0.01319, 23397.3450345) (0.0171, 23072.4639595) (0.02105, 15663.8192002) (0.05628, 15483.7071082) (0.03135, 14284.185651) (0.09086, 14267.2670231) (0.02782, 11747.3489158) (0.07623, 11352.5806167) (0.04176, 10446.0779613) (0.034, 9445.9392049) (0.09578, 9141.56985602) (0.13963, 9092.80185849) (0.04333, 7323.7597045) (0.06296, 6809.25231419) (0.1789, 6729.64758071) (0.13111, 6425.96723791) (0.08197, 5135.86148628) (0.15922, 5081.1360083) (0.21066, 4654.49896741) (0.18375, 4235.48092198) (0.09788, 4119.23910578) (0.26139, 3346.00025193) (0.1223, 3190.73709585) (0.2274, 3178.24365739) (0.47712, 3122.91843795) (0.24424, 2834.54671388) (0.30434, 2610.94351751) (0.14991, 2441.31149342) (0.56114, 2214.12838818) (0.33469, 2130.53849699) (0.30308, 1978.43697732) (0.61553, 1610.65353579) (0.39132, 1576.30100612) (0.41501, 1389.77215088) (0.65768, 1325.49508662) (0.69465, 1127.4738886) (0.72153, 971.657818132) (0.48425, 968.688792295) (0.74107, 862.728281433) (0.75764, 773.762333342) (0.7753, 702.51147235) (0.5692, 613.327120763) (0.79559, 601.31894065) (0.8124, 524.013305675) (0.82584, 463.936347326) (0.84262, 376.057132369) (0.66568, 314.52970943) (0.86225, 254.30851466) (0.86912, 192.053011214) }; \addlegendentry{ hnsw(nmslib) }; \addplot [only marks] coordinates { (0.00524, 30846.2996316) (0.00996, 21671.0954684) (0.01739, 15795.339771) (0.0166, 13299.8904757) (0.03112, 10670.6720764) (0.0512, 10456.7816439) (0.02968, 7826.7199482) (0.08933, 7575.75522222) (0.08778, 7164.04613216) (0.05306, 6509.58301336) (0.04207, 5570.0212745) (0.17849, 5151.19010395) (0.1457, 4997.38710644) (0.14353, 4163.42636471) (0.33547, 4039.62902828) (0.09089, 3666.82435025) (0.06307, 3507.35604994) (0.26944, 3232.33618545) (0.47766, 3123.31749423) (0.22542, 2928.34930986) (0.83467, 2812.71555716) (0.12306, 2598.10705011) (0.65227, 2536.84340724) (0.45333, 2465.50410761) (0.22375, 2361.19313014) (0.60594, 2165.80655162) (0.37963, 1929.08074375) (0.10374, 1810.43987824) (0.76361, 1691.37457856) (0.28442, 1676.9023326) (0.3282, 1650.76441895) (0.17669, 1645.01224237) (0.90983, 1522.99980603) (0.58006, 1376.48519339) (0.12571, 1203.7507233) (0.71868, 1186.56593526) (0.39469, 1167.6737285) (0.49808, 1091.26801434) (0.36878, 1057.50117775) (0.13625, 892.789195692) (0.84365, 890.442060551) (0.25879, 845.011077929) (0.56828, 771.989296152) (0.68284, 761.569230214) (0.94672, 757.848247136) (0.48231, 736.346868745) (0.79747, 640.556049097) (0.29718, 565.965845101) (0.47074, 538.190178877) (0.7293, 531.317759006) (0.64491, 484.391852228) (0.88847, 463.742975077) (0.82753, 439.246698547) (0.31327, 423.856281864) (0.57723, 378.404226251) (0.95997, 374.3420427) (0.50889, 366.452395505) (0.77668, 328.048021185) (0.90321, 312.731509582) (0.52388, 276.425887271) (0.85095, 268.041119052) (0.61071, 254.684507264) (0.96371, 248.765091537) (0.70786, 248.712146631) (0.62202, 192.020876586) (0.9114, 189.219770661) (0.72521, 168.022961153) (0.80514, 167.998300496) (0.96529, 150.11257287) (0.8634, 137.570375726) (0.73169, 127.593747008) (0.81231, 114.372837337) (0.91446, 97.5753798636) (0.86518, 94.3159191484) (0.81419, 87.6509207224) (0.96575, 78.0841108849) (0.86565, 72.7488809248) (0.91497, 67.3549060835) (0.96602, 54.5345880156) (0.91512, 52.2689876356) (0.96602, 42.141521467) }; \addlegendentry{ hnswlib }; \addplot [only marks] coordinates { (0.99558, 2504.43782999) (0.99615, 1328.65030191) (0.99661, 909.648342297) (0.99692, 700.819371235) (0.9972, 566.424005648) (0.99808, 298.345126833) (0.99915, 156.079965663) (0.99954, 108.48196173) (0.99967, 84.0473279926) (0.99983, 69.5614051528) (0.9999, 59.5761251725) (0.99994, 52.323535446) (0.99996, 46.9065762579) (0.99996, 42.5823121563) (0.99998, 39.0683715616) }; \addlegendentry{ kgraph }; \addplot [only marks] coordinates { (0.99238, 1263.72727452) (0.99961, 706.679662295) (0.94029, 632.694414606) (0.99999, 385.433418745) (0.99915, 360.540646271) (0.7584, 284.52483946) (0.52719, 213.720440743) (0.94778, 177.088490827) (0.99996, 167.604493158) (0.98633, 106.8683687) (0.99832, 88.8351204497) (0.74672, 86.1078141891) (1.0, 80.9036178045) (0.74672, 79.8942745823) (0.74672, 75.5499709949) (0.74672, 75.0568719046) (0.74672, 71.6562375076) (0.98632, 66.8181799007) (0.98632, 65.5146375193) (0.98632, 64.0083780497) (0.52178, 57.5370715321) (0.52178, 56.9813624959) (0.52178, 56.4373412447) (0.52178, 56.3692905339) (1.0, 54.3349530125) (0.98985, 52.919175006) (0.99832, 50.7249379834) (0.98077, 44.5388588962) (0.98077, 43.3970840819) (0.99403, 39.4981449944) (1.0, 38.8176394663) (1.0, 36.3571617055) (0.41458, 34.1016378757) (0.78471, 33.7556687688) (1.0, 28.5153846826) (1.0, 25.8362542529) (0.92632, 25.72898914) (0.99299, 24.5483038987) (1.0, 21.0212136972) (1.0, 20.74460921) (1.0, 20.0529767461) (0.99953, 19.6883763582) (1.0, 19.0722873934) (1.0, 17.9006327685) (1.0, 17.6260356497) (0.99944, 17.4856153509) (0.99999, 15.3982014811) (1.0, 12.0490043418) (1.0, 11.8816838579) (1.0, 6.59633557208) }; \addlegendentry{ mrpt }; \addplot [only marks] coordinates { (0.23865, 32102.7704045) (0.23824, 30601.955348) (0.27242, 20162.3640076) (0.29422, 18849.8387049) (0.7305, 5971.90560175) (0.9448, 4498.41821382) (1.0, 3793.642952) (1.0, 3600.71806541) (1.0, 3588.04925725) (0.9999, 3109.70947899) }; \addlegendentry{ NGT-panng }; \addplot [only marks] coordinates { (0.98645, 2546.41358421) (0.99265, 2431.62408077) (0.99104, 2266.12725149) (0.98765, 2073.13903784) (0.95543, 1227.34862429) (0.95875, 1078.9953054) (0.94337, 992.447041088) (0.90415, 989.855869118) (0.9224, 719.826614334) (0.9869, 309.210048) (0.9948, 193.83683919) (0.99662, 193.437676772) (0.90691, 191.607726626) (0.97693, 168.935138551) (0.964, 161.969707944) (0.98713, 148.702143831) (0.98979, 135.801823901) (0.90912, 119.600975847) (0.93572, 113.990819768) (0.99633, 108.907979796) (0.99805, 108.628438822) (0.97406, 101.73078677) (0.98652, 97.1456212678) (0.98789, 92.8264684117) (0.99111, 85.2289814113) (0.9143, 78.2692617534) (0.94464, 78.0589262053) (0.98876, 68.4729808623) (0.92069, 55.8129127082) (0.98948, 50.5293805624) (0.99862, 50.2942055332) (0.99401, 49.4278610048) (0.96257, 46.8629810934) (0.99963, 46.843661559) (0.9973, 42.5317362218) (0.99625, 33.9639680321) (0.97748, 32.3149742055) (0.99687, 29.8461944586) (0.99961, 29.4011564936) (1.0, 28.532851508) (0.99948, 24.8408989998) }; \addlegendentry{ pynndescent }; \addplot [only marks] coordinates { (0.63882, 3437.15510067) (0.66099, 3358.16465664) (0.66694, 3329.5108387) (0.66933, 2994.97410649) (0.67083, 2993.13284936) (0.68122, 2667.73096796) (0.6578, 2568.1898672) (0.67954, 2057.23435042) (0.7344, 2032.26670322) (0.69661, 1966.83105288) (0.7434, 1494.46493019) (0.71053, 1468.42833085) (0.90251, 1340.78127998) (0.92269, 1225.19979109) (0.71962, 1187.15497448) (0.72597, 1033.85205989) (0.75253, 861.575709402) (0.92904, 702.45871537) (0.76481, 575.485183298) (0.93346, 476.740636167) (0.79343, 327.850300302) (0.94332, 285.781290233) (0.83667, 191.072675639) (0.96354, 160.545298785) (0.897, 109.066607727) (0.98803, 88.375436211) (0.94696, 64.0190655412) (0.99791, 53.0236556907) (0.97988, 37.7263242244) (1.0, 34.1363867176) (0.99992, 32.4769781879) (0.99571, 23.737243907) (1.0, 20.7189070361) (1.0, 19.3110986073) (1.0, 12.4323996951) }; \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.93707, 205.616721826) (0.98129, 287.44239968) (0.99451, 424.062439733) (0.95604, 473.717524851) (0.98944, 619.352678037) (0.99961, 781.99434359) (0.99763, 840.258523571) (0.99997, 1341.004467) (0.97052, 1356.67903539) (0.99995, 1450.76002832) (0.99441, 1695.90792636) (0.99923, 2209.41419478) (1.0, 2385.73503948) (1.0, 2391.69945502) (1.0, 3621.29389935) (1.0, 4178.19679091) (1.0, 5372.22884819) (1.0, 5845.25500285) (1.0, 9108.52619952) (1.0, 9813.80771543) (1.0, 10234.4680587) (1.0, 17159.9610023) (1.0, 20113.4767327) (1.0, 20902.5470968) (1.0, 32989.7885567) (1.0, 38095.0327658) (1.0, 42859.8103621) (1.0, 69955.7757063) (1.0, 73239.9790238) (1.0, 79770.8817316) (1.0, 133182.719776) (1.0, 144242.69776) (1.0, 150869.394661) (1.0, 243281.175848) (1.0, 317675.424321) }; \addlegendentry{ annoy }; \addplot [only marks] coordinates { (0.76179, 2960.32202851) (0.54426, 7977.90441887) (0.66267, 13394.5957536) (0.65337, 17312.0372255) (0.99853, 25023.764123) (0.9936, 32085.4239136) (0.50374, 36443.0641186) (0.98335, 37590.9372419) (0.92879, 54410.5512838) (0.86024, 70788.3532791) (0.77174, 71588.2445494) (0.40301, 76062.6491433) (0.54177, 114028.107939) }; \addlegendentry{ BallTree(nmslib) }; \addplot [only marks] coordinates { (1.0, 107.955456001) }; \addlegendentry{ bruteforce-blas }; \addplot [only marks] coordinates { (0.85208, 552.979378691) (0.99312, 814.258130024) (0.93576, 885.488025862) (0.99957, 983.316937801) (0.99796, 1033.44276287) (0.99994, 1117.1646516) (0.99988, 1245.13534132) (0.99996, 1274.05892126) (0.99032, 1323.55675533) (0.97793, 1359.4146107) (0.99658, 1565.03321437) (0.72782, 1647.23467156) (0.99999, 2371.09807062) (0.99317, 2557.21267712) (0.74025, 10331.4808907) (1.0, 11022.4158072) (0.74847, 13366.2014083) (0.99999, 15711.074401) (0.7806, 18052.9301803) (0.7405, 18687.1866291) (0.9692, 18774.844957) (1.0, 25025.2433914) (0.99999, 25247.2645852) (0.97396, 26904.6239565) (1.0, 27027.536853) (0.98858, 27395.2389804) (0.98217, 28820.6810868) (0.99987, 29004.6441951) (0.99988, 29722.5879401) (0.99539, 30170.9559525) (0.99162, 33402.7715088) (0.96761, 33862.0737509) (0.99999, 34134.3556088) (1.0, 34504.8163897) (0.99805, 38068.0917074) (1.0, 40252.6955523) (0.99263, 43213.3552506) (0.99942, 44336.2391504) (0.99997, 49214.7699873) (1.0, 51580.7085885) (0.99999, 52031.4399619) (1.0, 60317.7365601) (1.0, 75481.4310457) (1.0, 86145.1135786) (1.0, 94637.3075868) }; \addlegendentry{ faiss-ivf }; \addplot [only marks] coordinates { (0.98655, 1693.14931048) (0.99994, 18375.1379144) }; \addlegendentry{ flann }; \addplot [only marks] coordinates { (0.0045, 59.5887584267) (0.00616, 72.0528754395) (0.01546, 82.845157122) (0.00913, 95.4566803688) (0.03258, 107.593335841) (0.02553, 115.673504832) (0.05516, 123.776857122) (0.01391, 150.144473689) (0.0549, 161.384370851) (0.10341, 175.56353027) (0.04055, 180.212658497) (0.09045, 184.821731603) (0.01806, 215.733889719) (0.08513, 264.365979501) (0.20971, 277.573558805) (0.16829, 283.579895529) (0.13173, 314.040788429) (0.06024, 315.808722845) (0.34458, 360.160303945) (0.02209, 368.178598709) (0.50389, 453.571362418) (0.33009, 456.891142339) (0.07372, 463.943678079) (0.12441, 481.409107054) (0.24283, 517.089543909) (0.18502, 586.942227898) (0.52073, 610.60310875) (0.70208, 644.12255302) (0.14812, 706.258256595) (0.71036, 773.10172114) (0.09247, 788.118075179) (0.45214, 864.600137099) (0.21644, 868.398165159) (0.02913, 917.894821174) (0.31924, 996.619074813) (0.88131, 1102.50103602) (0.17999, 1194.55171798) (0.66131, 1224.08784668) (0.26112, 1459.02772878) (0.36467, 1483.04244688) (0.82488, 1654.22480386) (0.03396, 1690.51059624) (0.55372, 1709.51540161) (0.11946, 1775.49754583) (0.41863, 2472.55116943) (0.74661, 2504.88236696) (0.60235, 2562.59876053) (0.22353, 2588.95764832) (0.9379, 2606.25263614) (0.03659, 2741.55462201) (0.13445, 3003.59999765) (0.31447, 3057.24769849) (0.87151, 3504.06405909) (0.77354, 3793.84929495) (0.2452, 4175.33105357) (0.64561, 4280.02775152) (0.14268, 4432.03103832) (0.3414, 4905.80462137) (0.47863, 5078.85280687) (0.88087, 5360.37297765) (0.94912, 5702.13494111) (0.25775, 5973.05154699) (0.79286, 6372.72150393) (0.35501, 6818.91690347) (0.50347, 7830.68494626) (0.67692, 8607.2672014) (0.94993, 8777.1015344) (0.88401, 9040.86249544) (0.51769, 10762.6239554) (0.80057, 12750.3496817) (0.68637, 12932.7954883) (0.95026, 14797.5043055) (0.69441, 17317.7858978) (0.88562, 17968.1281781) (0.80384, 18883.745818) (0.80757, 24979.6620215) (0.88616, 26442.7404587) (0.9503, 28926.0899034) (0.88747, 34669.3847638) (0.95034, 41889.0697742) (0.95057, 53413.3985048) }; \addlegendentry{ hnsw(faiss) }; \addplot [only marks] coordinates { (0.00116, 13.6143701097) (0.00166, 19.5388970274) (0.00327, 24.8977463728) (0.00335, 28.2424702311) (0.00838, 34.3261147432) (0.00524, 37.4758870955) (0.00565, 40.9760392996) (0.01375, 55.8271803336) (0.00977, 59.9034358818) (0.00926, 64.8338083474) (0.01319, 87.6080596742) (0.03185, 92.0554011049) (0.0171, 92.4624263689) (0.02105, 130.861827106) (0.04609, 142.333353523) (0.05628, 143.592227912) (0.03135, 149.349501058) (0.02782, 174.49009259) (0.07623, 195.844458196) (0.04176, 204.223633779) (0.034, 217.002878754) (0.09086, 234.86880806) (0.09578, 243.212056027) (0.04333, 279.883022205) (0.06296, 313.299596133) (0.13111, 345.993049402) (0.13963, 368.526231205) (0.08197, 415.380361347) (0.15922, 437.567503875) (0.1789, 497.936327246) (0.09788, 517.895646555) (0.18375, 524.932124818) (0.1223, 668.602876361) (0.2274, 699.549889711) (0.21066, 719.934846579) (0.24424, 784.372326309) (0.14991, 873.848341658) (0.26139, 1001.47511886) (0.47712, 1078.95869423) (0.30308, 1123.78611272) (0.30434, 1283.4195675) (0.56114, 1521.81780334) (0.33469, 1572.8117585) (0.61553, 2092.00794903) (0.39132, 2125.82240764) (0.41501, 2411.14055846) (0.65768, 2542.06902312) (0.69465, 2988.53927711) (0.48425, 3459.24927247) (0.72153, 3467.78458128) (0.74107, 3905.63294668) (0.75764, 4354.69633866) (0.7753, 4796.36295295) (0.5692, 5463.53794991) (0.79559, 5603.51549273) (0.8124, 6430.18023304) (0.82584, 7262.84978408) (0.84262, 8960.07470666) (0.66568, 10653.7980341) (0.86225, 13249.6546744) (0.86912, 17544.6350916) }; \addlegendentry{ hnsw(nmslib) }; \addplot [only marks] coordinates { (0.00524, 32.5322651982) (0.00996, 46.3059193969) (0.01739, 65.3808031338) (0.0166, 75.4517491579) (0.03112, 96.7804082634) (0.0512, 101.648101318) (0.02968, 128.21462971) (0.08933, 144.39801286) (0.08778, 148.367553809) (0.05306, 158.644877541) (0.04207, 180.160891771) (0.1457, 218.899192058) (0.17849, 224.412606926) (0.14353, 255.297417774) (0.09089, 281.636615599) (0.06307, 286.112953949) (0.33547, 309.307609994) (0.26944, 357.633591828) (0.22542, 373.563357458) (0.12306, 397.48631603) (0.47766, 430.439749556) (0.22375, 450.158856738) (0.45333, 506.788042308) (0.10374, 554.28518343) (0.65227, 579.271071997) (0.37963, 599.245005035) (0.83467, 611.372165103) (0.60594, 620.738726177) (0.17669, 627.783777773) (0.28442, 633.854446582) (0.3282, 662.677234525) (0.12571, 833.644358897) (0.76361, 868.831788431) (0.58006, 907.73806068) (0.39469, 936.840466046) (0.36878, 1005.11661108) (0.49808, 1059.31080615) (0.13625, 1124.00553775) (0.90983, 1129.09797703) (0.71868, 1133.01752566) (0.25879, 1222.12835663) (0.48231, 1485.60963105) (0.56828, 1497.41972559) (0.68284, 1640.67552946) (0.84365, 1650.32635486) (0.29718, 1824.689615) (0.47074, 1974.97472402) (0.79747, 2098.80150518) (0.94672, 2269.07696428) (0.7293, 2351.67746386) (0.64491, 2386.48109931) (0.31327, 2436.46736922) (0.57723, 2890.88737417) (0.50889, 2900.54591821) (0.82753, 3060.69460384) (0.88847, 3168.82428193) (0.77668, 3808.85699443) (0.52388, 3845.1970273) (0.61071, 4295.2121892) (0.95997, 4593.70256036) (0.70786, 4647.91131298) (0.90321, 4698.98284943) (0.85095, 5015.64836304) (0.62202, 5696.9013966) (0.72521, 6879.96445287) (0.96371, 6912.60976117) (0.80514, 7437.50380991) (0.9114, 7766.20748912) (0.73169, 9059.94241184) (0.8634, 9772.45277485) (0.81231, 10924.6918158) (0.96529, 11455.5094695) (0.86518, 14254.2214733) (0.81419, 14255.2752407) (0.91446, 15060.3564347) (0.86565, 18480.0093542) (0.91497, 21817.5643832) (0.96575, 22022.611009) (0.91512, 28114.5678628) (0.96602, 31532.575244) (0.96602, 40805.7407549) }; \addlegendentry{ hnswlib }; \addplot [only marks] coordinates { (0.99558, 1420.93684954) (0.99615, 2678.39324982) (0.99661, 3912.11398354) (0.99692, 5077.83909244) (0.9972, 6282.65745186) (0.99808, 11927.9575228) (0.99915, 22800.1587832) (0.99954, 32804.052796) (0.99967, 42341.0010169) (0.99983, 51158.3685261) (0.9999, 59732.7870803) (0.99994, 68012.3766421) (0.99996, 75866.7181427) (0.99996, 83571.0373579) (0.99998, 91087.6972282) }; \addlegendentry{ kgraph }; \addplot [only marks] coordinates { (0.94029, 483.057844268) (0.7584, 1074.16983551) (0.52719, 1119.94902859) (0.99238, 1298.1218599) (0.94778, 1351.61804633) (0.99961, 2321.37995124) (0.74672, 3549.36428103) (0.74672, 3825.40553247) (0.74672, 4045.37547765) (0.74672, 4071.95227092) (0.52178, 4160.03097875) (0.52178, 4200.60155664) (0.52178, 4241.09277158) (0.52178, 4246.21274693) (0.74672, 4265.19742915) (0.41458, 4711.21066341) (0.78471, 4759.49687445) (0.92632, 5068.36857407) (0.99403, 6059.93015707) (0.99299, 6544.64767353) (0.99944, 7457.78729447) (0.99953, 8160.14470045) (0.99999, 8468.78125083) (0.99996, 9787.75669488) (0.99999, 10147.7552537) (0.99915, 10848.3857242) (0.98633, 15350.3980641) (0.98985, 23071.939422) (0.98632, 24551.2823372) (0.98632, 25039.778317) (0.98632, 25629.0199812) (0.98077, 27413.0956711) (0.98077, 28134.3326592) (1.0, 31453.4324288) (1.0, 41977.0243864) (1.0, 42817.16742) (1.0, 44003.8409843) (0.99832, 44028.5776639) (1.0, 47257.1599602) (1.0, 48344.9826614) (1.0, 50062.7604264) (1.0, 52879.058047) (1.0, 53623.7125662) (1.0, 71984.6762194) (0.99832, 77107.7137892) (1.0, 107579.464857) (1.0, 142170.140211) (1.0, 154636.092628) (1.0, 164757.527744) (1.0, 341926.206657) }; \addlegendentry{ mrpt }; \addplot [only marks] coordinates { (0.23865, 39.1298316055) (0.23824, 41.0594677925) (0.27242, 62.2954728684) (0.29422, 66.6407824314) (0.7305, 210.387786376) (0.9448, 279.228817841) (1.0, 331.701221207) (1.0, 348.863748058) (1.0, 350.144579945) (0.9999, 403.911686441) }; \addlegendentry{ NGT-panng }; \addplot [only marks] coordinates { (0.98645, 953.612569088) (0.98765, 1331.21028046) (0.99104, 1472.13974758) (0.99265, 1879.69844358) (0.90415, 1893.10389367) (0.94337, 2706.5746471) (0.9224, 2879.74903778) (0.95543, 3195.75377555) (0.95875, 5854.07551673) (0.9869, 7853.21180767) (0.90691, 9779.87700704) (0.90912, 15667.932362) (0.98713, 16329.9057932) (0.964, 16584.1627678) (0.9948, 17210.6397006) (0.93572, 18184.9731779) (0.98979, 20322.1423743) (0.97693, 23217.8103008) (0.99662, 23628.9024779) (0.9143, 23941.710424) (0.98789, 26159.47845) (0.97406, 26404.317565) (0.94464, 26555.8354537) (0.99633, 30631.878456) (0.99111, 32380.8164113) (0.92069, 33574.667744) (0.98876, 35463.5064725) (0.98652, 40375.5099696) (0.99805, 42076.6426323) (0.96257, 44233.6349851) (0.98948, 53159.8046543) (0.99401, 55834.5828425) (0.97748, 64147.3512193) (0.99862, 66330.8221024) (0.99625, 81256.230055) (0.99687, 89999.145577) (0.9973, 92220.6415356) (0.99963, 97573.9267145) (0.99961, 113466.829127) (0.99948, 157897.022972) (1.0, 160191.490104) }; \addlegendentry{ pynndescent }; \addplot [only marks] coordinates { (0.63882, 329.684278658) (0.66099, 337.439082315) (0.66694, 340.343087888) (0.66933, 378.359197679) (0.67083, 378.591949316) (0.68122, 424.771468192) (0.6578, 485.482797018) (0.69661, 576.143028829) (0.7344, 613.508058772) (0.67954, 671.676515472) (0.71053, 771.693092669) (0.7434, 834.286556222) (0.71962, 954.530810516) (0.90251, 1030.59016458) (0.72597, 1096.07171467) (0.92269, 1127.81279432) (0.75253, 1447.1299346) (0.92904, 1967.08499698) (0.76481, 2166.54057513) (0.93346, 2898.42294777) (0.79343, 3802.99178879) (0.94332, 4835.15208037) (0.83667, 6525.32862603) (0.96354, 8606.89170256) (0.897, 11431.6565444) (0.98803, 15635.5211272) (0.94696, 19475.635726) (0.99791, 26059.9911869) (0.97988, 33048.8597984) (0.99992, 42546.9386962) (1.0, 45335.9054315) (0.99571, 52525.5587752) (1.0, 71554.4997259) (1.0, 74695.2528578) (1.0, 124481.519091) }; \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 { (1.0, 299.219715357) (0.99997, 299.219715357) (1.0, 299.219715357) (1.0, 299.219715357) (1.0, 299.219715357) (0.99961, 299.219715357) (0.93707, 299.219715357) (1.0, 299.219715357) (1.0, 299.219715357) (0.98129, 299.219715357) (1.0, 299.219715357) (0.99451, 299.219715357) (0.99995, 565.533512831) (1.0, 565.533512831) (0.98944, 565.533512831) (1.0, 565.533512831) (1.0, 565.533512831) (1.0, 565.533512831) (1.0, 565.533512831) (0.99763, 565.533512831) (0.95604, 565.533512831) (1.0, 565.533512831) (1.0, 565.533512831) (1.0, 565.533512831) (1.0, 1162.50015807) (1.0, 1162.50015807) (1.0, 1162.50015807) (1.0, 1162.50015807) (1.0, 1162.50015807) (1.0, 1162.50015807) (0.99441, 1162.50015807) (1.0, 1162.50015807) (1.0, 1162.50015807) (0.97052, 1162.50015807) (0.99923, 1162.50015807) }; \addlegendentry{ annoy }; \addplot [only marks] coordinates { (0.54426, 88.5387971401) (0.65337, 92.5049760342) (0.54177, 92.8170340061) (0.76179, 94.6215929985) (0.92879, 95.3309628963) (0.66267, 97.1375069618) (0.50374, 102.022999048) (0.9936, 104.011317968) (0.40301, 105.061705112) (0.77174, 105.160145998) (0.86024, 110.366919994) (0.99853, 113.060717106) (0.98335, 113.198681831) }; \addlegendentry{ BallTree(nmslib) }; \addplot [only marks] coordinates { (1.0, 0.405945301056) }; \addlegendentry{ bruteforce-blas }; \addplot [only marks] coordinates { (0.98858, 3.2873711586) (0.74847, 3.2873711586) (0.99942, 3.2873711586) (0.99805, 5.17996788025) (0.98217, 5.17996788025) (0.74025, 5.17996788025) (0.72782, 6.86084890366) (1.0, 6.86084890366) (0.97396, 6.86084890366) (0.99539, 6.86084890366) (0.7405, 10.9374661446) (1.0, 10.9374661446) (1.0, 10.9374661446) (0.96761, 10.9374661446) (0.99263, 10.9374661446) (0.9692, 14.9254479408) (1.0, 14.9254479408) (0.7806, 14.9254479408) (1.0, 14.9254479408) (0.99997, 14.9254479408) (0.99162, 14.9254479408) (0.85208, 19.3627891541) (0.99317, 19.3627891541) (0.99999, 19.3627891541) (0.99988, 19.3627891541) (0.97793, 19.3627891541) (0.99999, 19.3627891541) (0.99658, 72.3190851212) (1.0, 72.3190851212) (0.93576, 72.3190851212) (0.99032, 72.3190851212) (1.0, 72.3190851212) (0.99987, 72.3190851212) (0.99988, 231.676584959) (0.99957, 231.676584959) (0.99312, 231.676584959) (1.0, 231.676584959) (1.0, 231.676584959) (1.0, 231.676584959) (0.99999, 437.453967094) (0.99999, 437.453967094) (0.99999, 437.453967094) (0.99996, 437.453967094) (0.99796, 437.453967094) (0.99994, 437.453967094) }; \addlegendentry{ faiss-ivf }; \addplot [only marks] coordinates { (0.98655, 995.514039993) (0.99994, 2397.67117548) }; \addlegendentry{ flann }; \addplot [only marks] coordinates { (0.00616, 25.5499489307) (0.03659, 25.5499489307) (0.01806, 25.5499489307) (0.03396, 25.5499489307) (0.02209, 25.5499489307) (0.00913, 25.5499489307) (0.01391, 25.5499489307) (0.02913, 25.5499489307) (0.0045, 25.5499489307) (0.06024, 71.8734920025) (0.14268, 71.8734920025) (0.04055, 71.8734920025) (0.07372, 71.8734920025) (0.11946, 71.8734920025) (0.01546, 71.8734920025) (0.13445, 71.8734920025) (0.02553, 71.8734920025) (0.09247, 71.8734920025) (0.0549, 124.46711278) (0.03258, 124.46711278) (0.12441, 124.46711278) (0.2452, 124.46711278) (0.17999, 124.46711278) (0.08513, 124.46711278) (0.22353, 124.46711278) (0.14812, 124.46711278) (0.25775, 124.46711278) (0.35501, 208.34649086) (0.3414, 208.34649086) (0.05516, 208.34649086) (0.21644, 208.34649086) (0.09045, 208.34649086) (0.31447, 208.34649086) (0.18502, 208.34649086) (0.13173, 208.34649086) (0.26112, 208.34649086) (0.31924, 353.133896112) (0.10341, 353.133896112) (0.24283, 353.133896112) (0.36467, 353.133896112) (0.51769, 353.133896112) (0.47863, 353.133896112) (0.50347, 353.133896112) (0.16829, 353.133896112) (0.41863, 353.133896112) (0.20971, 516.760396004) (0.64561, 516.760396004) (0.45214, 516.760396004) (0.67692, 516.760396004) (0.55372, 516.760396004) (0.69441, 516.760396004) (0.60235, 516.760396004) (0.68637, 516.760396004) (0.33009, 516.760396004) (0.74661, 686.118350029) (0.79286, 686.118350029) (0.80384, 686.118350029) (0.34458, 686.118350029) (0.66131, 686.118350029) (0.77354, 686.118350029) (0.80057, 686.118350029) (0.80757, 686.118350029) (0.52073, 686.118350029) (0.88747, 857.951200962) (0.50389, 857.951200962) (0.82488, 857.951200962) (0.87151, 857.951200962) (0.71036, 857.951200962) (0.88616, 857.951200962) (0.88562, 857.951200962) (0.88401, 857.951200962) (0.88087, 857.951200962) (0.70208, 1089.73801613) (0.95034, 1089.73801613) (0.95026, 1089.73801613) (0.9379, 1089.73801613) (0.9503, 1089.73801613) (0.88131, 1089.73801613) (0.94912, 1089.73801613) (0.95057, 1089.73801613) (0.94993, 1089.73801613) }; \addlegendentry{ hnsw(faiss) }; \addplot [only marks] coordinates { (0.02782, 44.7693841457) (0.00166, 44.7693841457) (0.00926, 44.7693841457) (0.04333, 44.7693841457) (0.00565, 44.7693841457) (0.02105, 44.7693841457) (0.01319, 44.7693841457) (0.034, 44.7693841457) (0.00116, 44.7693841457) (0.00335, 44.7693841457) (0.00977, 86.6195750237) (0.08197, 86.6195750237) (0.0171, 86.6195750237) (0.04176, 86.6195750237) (0.1223, 86.6195750237) (0.00524, 86.6195750237) (0.09788, 86.6195750237) (0.14991, 86.6195750237) (0.06296, 86.6195750237) (0.00327, 86.6195750237) (0.03135, 86.6195750237) (0.07623, 289.208294153) (0.09578, 289.208294153) (0.03185, 289.208294153) (0.2274, 289.208294153) (0.18375, 289.208294153) (0.15922, 289.208294153) (0.30308, 289.208294153) (0.13111, 289.208294153) (0.01375, 289.208294153) (0.24424, 289.208294153) (0.00838, 289.208294153) (0.05628, 289.208294153) (0.33469, 540.146919966) (0.66568, 540.146919966) (0.48425, 540.146919966) (0.5692, 540.146919966) (0.13963, 540.146919966) (0.1789, 540.146919966) (0.26139, 540.146919966) (0.21066, 540.146919966) (0.39132, 540.146919966) (0.30434, 540.146919966) (0.41501, 540.146919966) (0.09086, 540.146919966) (0.04609, 540.146919966) (0.69465, 1120.41045403) (0.72153, 1120.41045403) (0.82584, 1120.41045403) (0.86225, 1120.41045403) (0.47712, 1120.41045403) (0.65768, 1120.41045403) (0.86912, 1120.41045403) (0.74107, 1120.41045403) (0.84262, 1120.41045403) (0.75764, 1120.41045403) (0.56114, 1120.41045403) (0.61553, 1120.41045403) (0.7753, 1120.41045403) (0.79559, 1120.41045403) (0.8124, 1120.41045403) }; \addlegendentry{ hnsw(nmslib) }; \addplot [only marks] coordinates { (0.00996, 39.0654232502) (0.13625, 39.0654232502) (0.04207, 39.0654232502) (0.12571, 39.0654232502) (0.06307, 39.0654232502) (0.0166, 39.0654232502) (0.02968, 39.0654232502) (0.10374, 39.0654232502) (0.00524, 39.0654232502) (0.09089, 76.340154171) (0.31327, 76.340154171) (0.05306, 76.340154171) (0.12306, 76.340154171) (0.25879, 76.340154171) (0.01739, 76.340154171) (0.29718, 76.340154171) (0.03112, 76.340154171) (0.17669, 76.340154171) (0.08778, 115.823498011) (0.0512, 115.823498011) (0.22375, 115.823498011) (0.50889, 115.823498011) (0.36878, 115.823498011) (0.14353, 115.823498011) (0.47074, 115.823498011) (0.28442, 115.823498011) (0.52388, 115.823498011) (0.62202, 142.26453495) (0.61071, 142.26453495) (0.08933, 142.26453495) (0.39469, 142.26453495) (0.1457, 142.26453495) (0.57723, 142.26453495) (0.3282, 142.26453495) (0.22542, 142.26453495) (0.48231, 142.26453495) (0.49808, 227.573456287) (0.17849, 227.573456287) (0.37963, 227.573456287) (0.56828, 227.573456287) (0.73169, 227.573456287) (0.70786, 227.573456287) (0.72521, 227.573456287) (0.26944, 227.573456287) (0.64491, 227.573456287) (0.33547, 345.724270821) (0.77668, 345.724270821) (0.58006, 345.724270821) (0.80514, 345.724270821) (0.68284, 345.724270821) (0.81419, 345.724270821) (0.7293, 345.724270821) (0.81231, 345.724270821) (0.45333, 345.724270821) (0.79747, 460.502251863) (0.85095, 460.502251863) (0.86518, 460.502251863) (0.47766, 460.502251863) (0.71868, 460.502251863) (0.82753, 460.502251863) (0.8634, 460.502251863) (0.86565, 460.502251863) (0.60594, 460.502251863) (0.91512, 596.635110378) (0.65227, 596.635110378) (0.84365, 596.635110378) (0.88847, 596.635110378) (0.76361, 596.635110378) (0.91497, 596.635110378) (0.91446, 596.635110378) (0.9114, 596.635110378) (0.90321, 596.635110378) (0.83467, 829.262500763) (0.96602, 829.262500763) (0.96529, 829.262500763) (0.94672, 829.262500763) (0.96575, 829.262500763) (0.90983, 829.262500763) (0.95997, 829.262500763) (0.96602, 829.262500763) (0.96371, 829.262500763) }; \addlegendentry{ hnswlib }; \addplot [only marks] coordinates { (0.99692, 96.1019210815) (0.9999, 96.1019210815) (0.99558, 96.1019210815) (0.99661, 96.1019210815) (0.99915, 96.1019210815) (0.9972, 96.1019210815) (0.99808, 96.1019210815) (0.99994, 96.1019210815) (0.99967, 96.1019210815) (0.99996, 96.1019210815) (0.99954, 96.1019210815) (0.99615, 96.1019210815) (0.99996, 96.1019210815) (0.99983, 96.1019210815) (0.99998, 96.1019210815) }; \addlegendentry{ kgraph }; \addplot [only marks] coordinates { (0.99944, 0.285668134689) (0.99999, 0.285668134689) (0.92632, 0.285668134689) (0.99299, 0.468030691147) (0.41458, 0.468030691147) (0.78471, 0.468030691147) (0.99953, 0.468030691147) (1.0, 0.525902509689) (1.0, 0.525902509689) (1.0, 0.608678102493) (1.0, 0.608678102493) (1.0, 0.608678102493) (0.52178, 0.74211192131) (0.52178, 0.74211192131) (0.52178, 0.74211192131) (0.52178, 0.74211192131) (0.52719, 0.74211192131) (0.99403, 0.74211192131) (0.94778, 0.74211192131) (0.98077, 1.00739192963) (0.98077, 1.00739192963) (0.98985, 1.00739192963) (1.0, 1.00739192963) (1.0, 1.00739192963) (1.0, 1.00739192963) (0.74672, 1.13198566437) (0.74672, 1.13198566437) (0.94029, 1.13198566437) (0.7584, 1.13198566437) (0.74672, 1.13198566437) (0.74672, 1.13198566437) (0.74672, 1.13198566437) (1.0, 1.71006155014) (0.98633, 1.87989854813) (0.99996, 1.87989854813) (0.98632, 1.87989854813) (0.99961, 1.87989854813) (0.99238, 1.87989854813) (0.98632, 1.87989854813) (0.98632, 1.87989854813) (1.0, 2.46324586868) (1.0, 2.46324586868) (1.0, 2.46324586868) (1.0, 5.25425815582) (0.99832, 5.25425815582) (0.99832, 5.25425815582) (0.99915, 5.25425815582) (0.99999, 5.25425815582) (1.0, 5.25425815582) (1.0, 5.25425815582) }; \addlegendentry{ mrpt }; \addplot [only marks] coordinates { (0.9999, 1076.81996012) (1.0, 1085.07650781) (0.9448, 1095.01271129) (1.0, 1097.45313525) (0.7305, 1097.63468242) (0.27242, 1100.3291347) (0.23824, 1124.81526423) (0.29422, 1144.32674885) (0.23865, 1226.48771524) (1.0, 1229.43445349) }; \addlegendentry{ NGT-panng }; \addplot [only marks] coordinates { (0.92069, 85.9821593761) (0.9143, 85.9821593761) (0.90415, 85.9821593761) (0.90912, 85.9821593761) (0.90691, 85.9821593761) (0.98713, 106.702132225) (0.9869, 106.702132225) (0.98645, 106.702132225) (0.98876, 106.702132225) (0.98789, 106.702132225) (0.96257, 205.630700111) (0.97748, 205.630700111) (0.94464, 205.630700111) (0.93572, 205.630700111) (0.9224, 205.630700111) (0.99111, 219.140282869) (0.99401, 219.140282869) (0.98979, 219.140282869) (0.98765, 219.140282869) (0.99625, 219.140282869) (0.99862, 510.267754793) (0.99104, 510.267754793) (0.99633, 510.267754793) (0.9948, 510.267754793) (0.99961, 510.267754793) (0.964, 528.763134718) (0.94337, 528.763134718) (0.97406, 528.763134718) (0.98948, 528.763134718) (0.99687, 528.763134718) (0.99662, 1353.12176704) (1.0, 1353.12176704) (0.99265, 1353.12176704) (0.99805, 1353.12176704) (0.99963, 1353.12176704) (0.9973, 1406.7914927) (0.97693, 1406.7914927) (0.95543, 1406.7914927) (0.98652, 1406.7914927) (0.99948, 1406.7914927) (0.95875, 3513.55250168) }; \addlegendentry{ pynndescent }; \addplot [only marks] coordinates { (0.68122, 28.6451289654) (0.71053, 28.6451289654) (0.72597, 28.6451289654) (0.66694, 28.6451289654) (0.66099, 28.6451289654) (0.63882, 28.6451289654) (0.66933, 28.6451289654) (0.71962, 28.6451289654) (0.67083, 28.6451289654) (0.69661, 28.6451289654) (0.97988, 72.9279232025) (0.76481, 72.9279232025) (0.7344, 72.9279232025) (0.83667, 72.9279232025) (0.94696, 72.9279232025) (0.75253, 72.9279232025) (0.79343, 72.9279232025) (0.897, 72.9279232025) (0.99571, 72.9279232025) (0.7434, 72.9279232025) (0.6578, 72.9279232025) (0.92904, 226.677884817) (1.0, 226.677884817) (0.93346, 226.677884817) (0.96354, 226.677884817) (0.94332, 226.677884817) (0.92269, 226.677884817) (0.67954, 226.677884817) (0.98803, 226.677884817) (0.90251, 226.677884817) (0.99791, 226.677884817) (0.99992, 226.677884817) (1.0, 260.417482138) (1.0, 260.417482138) (1.0, 260.417482138) }; \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 { (1.0, 2395864.0) (0.99997, 2395864.0) (1.0, 2395864.0) (1.0, 2395864.0) (1.0, 2395864.0) (0.99961, 2395864.0) (0.93707, 2395864.0) (1.0, 2395864.0) (1.0, 2395864.0) (0.98129, 2395864.0) (1.0, 2395864.0) (0.99451, 2395864.0) (0.99995, 4043668.0) (1.0, 4043668.0) (0.98944, 4043668.0) (1.0, 4043668.0) (1.0, 4043668.0) (1.0, 4043668.0) (1.0, 4043668.0) (0.99763, 4043668.0) (0.95604, 4043668.0) (1.0, 4043668.0) (1.0, 4043668.0) (1.0, 4043668.0) (1.0, 6827752.0) (1.0, 6827752.0) (1.0, 6827752.0) (1.0, 6827752.0) (1.0, 6827752.0) (1.0, 6827752.0) (0.99441, 6827752.0) (1.0, 6827752.0) (1.0, 6827752.0) (0.97052, 6827752.0) (0.99923, 6827752.0) }; \addlegendentry{ annoy }; \addplot [only marks] coordinates { (0.66267, 1962348) (0.86024, 1970448) (0.65337, 1980028) (0.77174, 1982368) (0.54426, 1987600) (0.50374, 1997804) (0.9936, 2006560) (0.99853, 2014160) (0.98335, 2017752) (0.92879, 2027152) (0.40301, 2029136) (0.76179, 2031724) (0.54177, 2042004) }; \addlegendentry{ BallTree(nmslib) }; \addplot [only marks] coordinates { (1.0, 3904.0) }; \addlegendentry{ bruteforce-blas }; \addplot [only marks] coordinates { (0.98858, 948900) (0.74847, 948900) (0.99942, 948900) (0.99999, 1095664) (0.99999, 1095664) (0.99999, 1095664) (0.99996, 1095664) (0.99796, 1095664) (0.99994, 1095664) (0.99805, 1187948) (0.98217, 1187948) (0.74025, 1187948) (0.72782, 1293392) (1.0, 1293392) (0.97396, 1293392) (0.99539, 1293392) (0.99988, 1354012) (0.99957, 1354012) (0.99312, 1354012) (1.0, 1354012) (1.0, 1354012) (1.0, 1354012) (0.99658, 1379920) (1.0, 1379920) (0.93576, 1379920) (0.99032, 1379920) (1.0, 1379920) (0.99987, 1379920) (0.85208, 1406344) (0.99317, 1406344) (0.99999, 1406344) (0.99988, 1406344) (0.97793, 1406344) (0.99999, 1406344) (0.9692, 1525892) (1.0, 1525892) (0.7806, 1525892) (1.0, 1525892) (0.99997, 1525892) (0.99162, 1525892) (0.7405, 1539132) (1.0, 1539132) (1.0, 1539132) (0.96761, 1539132) (0.99263, 1539132) }; \addlegendentry{ faiss-ivf }; \addplot [only marks] coordinates { (0.98655, 375508.0) (0.99994, 417584.0) }; \addlegendentry{ flann }; \addplot [only marks] coordinates { (0.00616, 898464) (0.03659, 898464) (0.01806, 898464) (0.03396, 898464) (0.02209, 898464) (0.00913, 898464) (0.01391, 898464) (0.02913, 898464) (0.0045, 898464) (0.06024, 937312) (0.14268, 937312) (0.04055, 937312) (0.07372, 937312) (0.11946, 937312) (0.01546, 937312) (0.13445, 937312) (0.02553, 937312) (0.09247, 937312) (0.0549, 960412) (0.03258, 960412) (0.12441, 960412) (0.2452, 960412) (0.17999, 960412) (0.08513, 960412) (0.22353, 960412) (0.14812, 960412) (0.25775, 960412) (0.35501, 991932) (0.3414, 991932) (0.05516, 991932) (0.21644, 991932) (0.09045, 991932) (0.31447, 991932) (0.18502, 991932) (0.13173, 991932) (0.26112, 991932) (0.31924, 1054352) (0.10341, 1054352) (0.24283, 1054352) (0.36467, 1054352) (0.51769, 1054352) (0.47863, 1054352) (0.50347, 1054352) (0.16829, 1054352) (0.41863, 1054352) (0.20971, 1152528) (0.64561, 1152528) (0.45214, 1152528) (0.67692, 1152528) (0.55372, 1152528) (0.69441, 1152528) (0.60235, 1152528) (0.68637, 1152528) (0.33009, 1152528) (0.74661, 1242616) (0.79286, 1242616) (0.80384, 1242616) (0.34458, 1242616) (0.66131, 1242616) (0.77354, 1242616) (0.80057, 1242616) (0.80757, 1242616) (0.52073, 1242616) (0.88747, 1368232) (0.50389, 1368232) (0.82488, 1368232) (0.87151, 1368232) (0.71036, 1368232) (0.88616, 1368232) (0.88562, 1368232) (0.88401, 1368232) (0.88087, 1368232) (0.70208, 1618496) (0.95034, 1618496) (0.95026, 1618496) (0.9379, 1618496) (0.9503, 1618496) (0.88131, 1618496) (0.94912, 1618496) (0.95057, 1618496) (0.94993, 1618496) }; \addlegendentry{ hnsw(faiss) }; \addplot [only marks] coordinates { (0.02782, 2049796) (0.00166, 2049796) (0.00926, 2049796) (0.04333, 2049796) (0.00565, 2049796) (0.02105, 2049796) (0.01319, 2049796) (0.034, 2049796) (0.00116, 2049796) (0.00335, 2049796) (0.00977, 2133336) (0.08197, 2133336) (0.0171, 2133336) (0.04176, 2133336) (0.1223, 2133336) (0.00524, 2133336) (0.09788, 2133336) (0.14991, 2133336) (0.06296, 2133336) (0.00327, 2133336) (0.03135, 2133336) (0.07623, 2223340) (0.09578, 2223340) (0.03185, 2223340) (0.2274, 2223340) (0.18375, 2223340) (0.15922, 2223340) (0.30308, 2223340) (0.13111, 2223340) (0.01375, 2223340) (0.24424, 2223340) (0.00838, 2223340) (0.05628, 2223340) (0.33469, 3350936) (0.66568, 3350936) (0.48425, 3350936) (0.5692, 3350936) (0.13963, 3350936) (0.1789, 3350936) (0.26139, 3350936) (0.21066, 3350936) (0.39132, 3350936) (0.30434, 3350936) (0.41501, 3350936) (0.09086, 3350936) (0.04609, 3350936) (0.69465, 3369500) (0.72153, 3369500) (0.82584, 3369500) (0.86225, 3369500) (0.47712, 3369500) (0.65768, 3369500) (0.86912, 3369500) (0.74107, 3369500) (0.84262, 3369500) (0.75764, 3369500) (0.56114, 3369500) (0.61553, 3369500) (0.7753, 3369500) (0.79559, 3369500) (0.8124, 3369500) }; \addlegendentry{ hnsw(nmslib) }; \addplot [only marks] coordinates { (0.00996, 1003500.0) (0.13625, 1003500.0) (0.04207, 1003500.0) (0.12571, 1003500.0) (0.06307, 1003500.0) (0.0166, 1003500.0) (0.02968, 1003500.0) (0.10374, 1003500.0) (0.00524, 1003500.0) (0.09089, 1032712.0) (0.31327, 1032712.0) (0.05306, 1032712.0) (0.12306, 1032712.0) (0.25879, 1032712.0) (0.01739, 1032712.0) (0.29718, 1032712.0) (0.03112, 1032712.0) (0.17669, 1032712.0) (0.08778, 1062912.0) (0.0512, 1062912.0) (0.22375, 1062912.0) (0.50889, 1062912.0) (0.36878, 1062912.0) (0.14353, 1062912.0) (0.47074, 1062912.0) (0.28442, 1062912.0) (0.52388, 1062912.0) (0.62202, 1093924.0) (0.61071, 1093924.0) (0.08933, 1093924.0) (0.39469, 1093924.0) (0.1457, 1093924.0) (0.57723, 1093924.0) (0.3282, 1093924.0) (0.22542, 1093924.0) (0.48231, 1093924.0) (0.49808, 1155992.0) (0.17849, 1155992.0) (0.37963, 1155992.0) (0.56828, 1155992.0) (0.73169, 1155992.0) (0.70786, 1155992.0) (0.72521, 1155992.0) (0.26944, 1155992.0) (0.64491, 1155992.0) (0.33547, 1249488.0) (0.77668, 1249488.0) (0.58006, 1249488.0) (0.80514, 1249488.0) (0.68284, 1249488.0) (0.81419, 1249488.0) (0.7293, 1249488.0) (0.81231, 1249488.0) (0.45333, 1249488.0) (0.79747, 1344400.0) (0.85095, 1344400.0) (0.86518, 1344400.0) (0.47766, 1344400.0) (0.71868, 1344400.0) (0.82753, 1344400.0) (0.8634, 1344400.0) (0.86565, 1344400.0) (0.60594, 1344400.0) (0.91512, 1469520.0) (0.65227, 1469520.0) (0.84365, 1469520.0) (0.88847, 1469520.0) (0.76361, 1469520.0) (0.91497, 1469520.0) (0.91446, 1469520.0) (0.9114, 1469520.0) (0.90321, 1469520.0) (0.83467, 1719616.0) (0.96602, 1719616.0) (0.96529, 1719616.0) (0.94672, 1719616.0) (0.96575, 1719616.0) (0.90983, 1719616.0) (0.95997, 1719616.0) (0.96602, 1719616.0) (0.96371, 1719616.0) }; \addlegendentry{ hnswlib }; \addplot [only marks] coordinates { (0.99692, 3558648) (0.9999, 3558648) (0.99558, 3558648) (0.99661, 3558648) (0.99915, 3558648) (0.9972, 3558648) (0.99808, 3558648) (0.99994, 3558648) (0.99967, 3558648) (0.99996, 3558648) (0.99954, 3558648) (0.99615, 3558648) (0.99996, 3558648) (0.99983, 3558648) (0.99998, 3558648) }; \addlegendentry{ kgraph }; \addplot [only marks] coordinates { (0.99944, 130404.0) (0.99999, 130404.0) (0.92632, 130404.0) (0.99299, 160660.0) (0.41458, 160660.0) (0.78471, 160660.0) (0.99953, 160660.0) (0.52178, 239356.0) (0.52178, 239356.0) (0.52178, 239356.0) (0.52178, 239356.0) (0.52719, 239356.0) (0.99403, 239356.0) (0.94778, 239356.0) (0.74672, 305628.0) (0.74672, 305628.0) (0.94029, 305628.0) (0.7584, 305628.0) (0.74672, 305628.0) (0.74672, 305628.0) (0.74672, 305628.0) (1.0, 637140.0) (1.0, 637140.0) (1.0, 882408.0) (1.0, 882408.0) (1.0, 882408.0) (0.98077, 1220948.0) (0.98077, 1220948.0) (0.98985, 1220948.0) (1.0, 1220948.0) (1.0, 1220948.0) (1.0, 1220948.0) (0.98633, 1640472.0) (0.99996, 1640472.0) (0.98632, 1640472.0) (0.99961, 1640472.0) (0.99238, 1640472.0) (0.98632, 1640472.0) (0.98632, 1640472.0) (1.0, 2255460.0) (1.0, 2949264.0) (1.0, 2949264.0) (1.0, 2949264.0) (1.0, 3911284.0) (0.99832, 3911284.0) (0.99832, 3911284.0) (0.99915, 3911284.0) (0.99999, 3911284.0) (1.0, 3911284.0) (1.0, 3911284.0) }; \addlegendentry{ mrpt }; \addplot [only marks] coordinates { (0.27242, 1256024.0) (0.9999, 1256048.0) (0.9448, 1256088.0) (1.0, 1256160.0) (0.29422, 1256168.0) (0.23865, 1256176.0) (1.0, 1256336.0) (0.7305, 1256416.0) (0.23824, 1256500.0) (1.0, 1258356.0) }; \addlegendentry{ NGT-panng }; \addplot [only marks] coordinates { (0.92069, 1873900.0) (0.9143, 1873900.0) (0.90415, 1873900.0) (0.90912, 1873900.0) (0.90691, 1873900.0) (0.96257, 2072920.0) (0.97748, 2072920.0) (0.94464, 2072920.0) (0.93572, 2072920.0) (0.9224, 2072920.0) (0.98713, 2428292.0) (0.9869, 2428292.0) (0.98645, 2428292.0) (0.98876, 2428292.0) (0.98789, 2428292.0) (0.964, 2686132.0) (0.94337, 2686132.0) (0.97406, 2686132.0) (0.98948, 2686132.0) (0.99687, 2686132.0) (0.99111, 2759784.0) (0.99401, 2759784.0) (0.98979, 2759784.0) (0.98765, 2759784.0) (0.99625, 2759784.0) (0.99862, 3336056.0) (0.99104, 3336056.0) (0.99633, 3336056.0) (0.9948, 3336056.0) (0.99961, 3336056.0) (0.9973, 3922304.0) (0.97693, 3922304.0) (0.95543, 3922304.0) (0.98652, 3922304.0) (0.99948, 3922304.0) (0.99662, 4570720.0) (1.0, 4570720.0) (0.99265, 4570720.0) (0.99805, 4570720.0) (0.99963, 4570720.0) (0.95875, 6316520.0) }; \addlegendentry{ pynndescent }; \addplot [only marks] coordinates { (0.68122, 1133176) (0.71053, 1133176) (0.72597, 1133176) (0.66694, 1133176) (0.66099, 1133176) (0.63882, 1133176) (0.66933, 1133176) (0.71962, 1133176) (0.67083, 1133176) (0.69661, 1133176) (0.97988, 1246812) (0.76481, 1246812) (0.7344, 1246812) (0.83667, 1246812) (0.94696, 1246812) (0.75253, 1246812) (0.79343, 1246812) (0.897, 1246812) (0.99571, 1246812) (0.7434, 1246812) (0.6578, 1246812) (0.92904, 1381796) (1.0, 1381796) (0.93346, 1381796) (0.96354, 1381796) (0.94332, 1381796) (0.92269, 1381796) (0.67954, 1381796) (0.98803, 1381796) (0.90251, 1381796) (0.99791, 1381796) (0.99992, 1381796) (1.0, 1547604) (1.0, 1547604) (1.0, 1547604) }; \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.93729, 11652.0873338) (0.95625, 8536.03210325) (0.98148, 8335.10993042) (0.9895, 6528.86173483) (0.99464, 5649.79063345) (0.97073, 5032.69514889) (0.99767, 4812.40937946) (0.99453, 4026.01573699) (0.99925, 3090.29968945) (0.99962, 3063.78686705) (0.99995, 2787.27558044) (1.0, 1885.44542083) (0.99997, 1786.61895539) (1.0, 1690.70908617) (1.0, 1168.0845398) (1.0, 1004.24563514) (1.0, 967.802188925) (1.0, 695.729139798) (1.0, 445.972066288) (1.0, 443.943170544) (1.0, 326.646889893) (1.0, 235.645523872) (1.0, 234.097559958) (1.0, 179.229456029) (1.0, 122.573322743) (1.0, 119.117347629) (1.0, 97.6009762034) (1.0, 55.9000140168) (1.0, 55.2112118804) (1.0, 45.2560442449) (1.0, 30.361806748) (1.0, 30.0343176356) (1.0, 21.4928555289) (1.0, 16.6213764213) (1.0, 16.6099500163) }; \addlegendentry{ annoy }; \addplot [only marks] coordinates { (0.76181, 686.318576301) (0.54435, 249.138106405) (0.66279, 146.502965532) (0.65352, 114.372905638) (0.99861, 80.4898891349) (0.99376, 62.5380548315) (0.5039, 54.8198689742) (0.98359, 53.6765547242) (0.92903, 37.2565973358) (0.86045, 27.8357654716) (0.77191, 27.691250323) (0.40317, 26.6771670834) (0.54193, 17.907900402) }; \addlegendentry{ BallTree(nmslib) }; \addplot [only marks] coordinates { (1.0, 36.1630634023) }; \addlegendentry{ bruteforce-blas }; \addplot [only marks] coordinates { (0.85226, 2543.2123768) (0.99314, 1662.87808506) (0.93587, 1558.37228703) (0.99957, 1376.98431497) (0.99988, 1087.44162587) (0.99798, 1060.20772448) (0.99037, 1042.58468286) (0.97809, 1034.52176322) (0.99994, 980.754267895) (0.99661, 881.719306231) (0.99996, 859.979065108) (0.72805, 785.189883586) (0.99328, 549.951911542) (0.99999, 462.091388618) (1.0, 122.841673158) (0.74052, 114.983322582) (0.78081, 84.5232316726) (0.74074, 82.3629597406) (0.96942, 81.2732144257) (0.74873, 70.9924959989) (0.99999, 69.7383241932) (1.0, 54.1058473968) (1.0, 50.0974989828) (0.97407, 48.0732234761) (0.99987, 47.5758292609) (0.99988, 47.3156645321) (0.99174, 45.6815985943) (0.9678, 45.4529752466) (0.99999, 43.397335038) (0.99542, 42.8687775766) (0.9823, 41.2185956475) (0.99999, 41.2002504491) (1.0, 39.9920980426) (0.99274, 35.6170445705) (0.98865, 34.6374054514) (1.0, 34.2814308723) (0.99805, 31.205872076) (0.99998, 31.0047573197) (1.0, 29.5826102773) (0.99999, 27.0287349539) (1.0, 25.5170715577) (0.99942, 21.4023565865) (1.0, 17.7130418269) (1.0, 17.135234217) (1.0, 16.2634804312) }; \addlegendentry{ faiss-ivf }; \addplot [only marks] coordinates { (0.98666, 221.780794922) (0.99994, 22.7254892968) }; \addlegendentry{ flann }; \addplot [only marks] coordinates { (0.00451, 15077.7432476) (0.00618, 12469.5092947) (0.01547, 11314.0228417) (0.00915, 9412.26948736) (0.03258, 8926.31492923) (0.02554, 8103.08290877) (0.05517, 8013.87289245) (0.10346, 6005.52972694) (0.01393, 5983.99646636) (0.05491, 5951.08432702) (0.09046, 5366.96627284) (0.04056, 5201.14406956) (0.01809, 4164.68641608) (0.20976, 4152.15341461) (0.16837, 3718.00687081) (0.08517, 3632.88802066) (0.34467, 3450.17478714) (0.13179, 3158.60880671) (0.50403, 3016.57492815) (0.06028, 2967.97375182) (0.33023, 2522.54397864) (0.70218, 2512.71437774) (0.02212, 2440.29393113) (0.24293, 2039.01241559) (0.52089, 2035.06333688) (0.07376, 2020.31419822) (0.12448, 1995.00172707) (0.71052, 1769.79556841) (0.18511, 1689.99937788) (0.88138, 1468.02220326) (0.1482, 1359.85950045) (0.45233, 1333.01852561) (0.09251, 1189.30402629) (0.21652, 1142.25483171) (0.31939, 1057.92877805) (0.66149, 1015.13629383) (0.02916, 978.83110273) (0.82503, 827.113701118) (0.18008, 803.993653473) (0.36483, 710.938518463) (0.26123, 679.858223688) (0.55394, 674.18404006) (0.93798, 621.005031346) (0.03399, 531.474929525) (0.11951, 527.915120019) (0.74682, 496.077586872) (0.60257, 449.749690726) (0.41881, 426.422722019) (0.87167, 390.470030492) (0.22364, 370.96473966) (0.03662, 327.720627116) (0.77376, 327.5343598) (0.31462, 324.452611573) (0.13451, 312.062858148) (0.9492, 283.840353958) (0.64584, 269.280496976) (0.88103, 255.249402552) (0.24535, 230.020563083) (0.14274, 211.485883536) (0.47882, 207.596486863) (0.34155, 202.195577802) (0.79308, 194.989848409) (0.95001, 184.399826487) (0.2579, 160.790844084) (0.88417, 151.338658307) (0.35517, 145.467676765) (0.50367, 134.643649596) (0.67716, 133.90173362) (0.95034, 109.376281742) (0.5179, 97.964214337) (0.80079, 97.4574055627) (0.68661, 89.1166956935) (0.88578, 76.1477203656) (0.69465, 66.5516947027) (0.80406, 65.8034699248) (0.95038, 55.9528095711) (0.88632, 51.7431996935) (0.80779, 49.745108598) (0.88763, 39.4651364402) (0.95042, 38.6376686979) (0.95065, 30.3013110064) }; \addlegendentry{ hnsw(faiss) }; \addplot [only marks] coordinates { (0.00117, 150561.207274) (0.00167, 104908.480613) (0.00327, 85683.899581) (0.00336, 72578.4955503) (0.00838, 64771.0938634) (0.00524, 56925.5637516) (0.00567, 50024.2589337) (0.01375, 39825.4038036) (0.00978, 35612.9154964) (0.00928, 31616.1591035) (0.03185, 24152.1950186) (0.04609, 23542.8725387) (0.01321, 23397.3450345) (0.01712, 23072.4639595) (0.02107, 15663.8192002) (0.05632, 15483.7071082) (0.03138, 14284.185651) (0.09088, 14267.2670231) (0.02784, 11747.3489158) (0.07627, 11352.5806167) (0.04179, 10446.0779613) (0.03402, 9445.9392049) (0.09584, 9141.56985602) (0.13968, 9092.80185849) (0.04335, 7323.7597045) (0.06302, 6809.25231419) (0.17895, 6729.64758071) (0.13118, 6425.96723791) (0.08204, 5135.86148628) (0.15929, 5081.1360083) (0.21072, 4654.49896741) (0.18382, 4235.48092198) (0.09795, 4119.23910578) (0.26149, 3346.00025193) (0.12237, 3190.73709585) (0.2275, 3178.24365739) (0.47719, 3122.91843795) (0.24434, 2834.54671388) (0.30445, 2610.94351751) (0.14998, 2441.31149342) (0.56121, 2214.12838818) (0.33481, 2130.53849699) (0.30319, 1978.43697732) (0.6156, 1610.65353579) (0.39145, 1576.30100612) (0.41514, 1389.77215088) (0.65775, 1325.49508662) (0.69472, 1127.4738886) (0.7216, 971.657818132) (0.48438, 968.688792295) (0.74114, 862.728281433) (0.75771, 773.762333342) (0.77537, 702.51147235) (0.56936, 613.327120763) (0.79566, 601.31894065) (0.81247, 524.013305675) (0.82591, 463.936347326) (0.84269, 376.057132369) (0.66584, 314.52970943) (0.86232, 254.30851466) (0.86919, 192.053011214) }; \addlegendentry{ hnsw(nmslib) }; \addplot [only marks] coordinates { (0.00524, 30846.2996316) (0.00996, 21671.0954684) (0.0174, 15795.339771) (0.01663, 13299.8904757) (0.03113, 10670.6720764) (0.05123, 10456.7816439) (0.02973, 7826.7199482) (0.08934, 7575.75522222) (0.08783, 7164.04613216) (0.05309, 6509.58301336) (0.04213, 5570.0212745) (0.17852, 5151.19010395) (0.14572, 4997.38710644) (0.14358, 4163.42636471) (0.33552, 4039.62902828) (0.09093, 3666.82435025) (0.06313, 3507.35604994) (0.26948, 3232.33618545) (0.47768, 3123.31749423) (0.22545, 2928.34930986) (0.83469, 2812.71555716) (0.12313, 2598.10705011) (0.6523, 2536.84340724) (0.45338, 2465.50410761) (0.22381, 2361.19313014) (0.60596, 2165.80655162) (0.37968, 1929.08074375) (0.1038, 1810.43987824) (0.76364, 1691.37457856) (0.2845, 1676.9023326) (0.32829, 1650.76441895) (0.17679, 1645.01224237) (0.90985, 1522.99980603) (0.58012, 1376.48519339) (0.12579, 1203.7507233) (0.7187, 1186.56593526) (0.39478, 1167.6737285) (0.49816, 1091.26801434) (0.36888, 1057.50117775) (0.13634, 892.789195692) (0.84368, 890.442060551) (0.25892, 845.011077929) (0.56837, 771.989296152) (0.6829, 761.569230214) (0.94674, 757.848247136) (0.48242, 736.346868745) (0.79749, 640.556049097) (0.29732, 565.965845101) (0.47087, 538.190178877) (0.72936, 531.317759006) (0.64502, 484.391852228) (0.8885, 463.742975077) (0.82755, 439.246698547) (0.31341, 423.856281864) (0.57735, 378.404226251) (0.95999, 374.3420427) (0.50906, 366.452395505) (0.77674, 328.048021185) (0.90324, 312.731509582) (0.52406, 276.425887271) (0.85098, 268.041119052) (0.61086, 254.684507264) (0.96373, 248.765091537) (0.708, 248.712146631) (0.62218, 192.020876586) (0.91143, 189.219770661) (0.72535, 168.022961153) (0.80521, 167.998300496) (0.96531, 150.11257287) (0.86343, 137.570375726) (0.73183, 127.593747008) (0.81239, 114.372837337) (0.91449, 97.5753798636) (0.86521, 94.3159191484) (0.81427, 87.6509207224) (0.96577, 78.0841108849) (0.86567, 72.7488809248) (0.915, 67.3549060835) (0.96604, 54.5345880156) (0.91515, 52.2689876356) (0.96604, 42.141521467) }; \addlegendentry{ hnswlib }; \addplot [only marks] coordinates { (0.99559, 2504.43782999) (0.99616, 1328.65030191) (0.99662, 909.648342297) (0.99693, 700.819371235) (0.99721, 566.424005648) (0.99809, 298.345126833) (0.99915, 156.079965663) (0.99954, 108.48196173) (0.99967, 84.0473279926) (0.99983, 69.5614051528) (0.9999, 59.5761251725) (0.99994, 52.323535446) (0.99996, 46.9065762579) (0.99996, 42.5823121563) (0.99998, 39.0683715616) }; \addlegendentry{ kgraph }; \addplot [only marks] coordinates { (0.99256, 1263.72727452) (0.99963, 706.679662295) (0.94056, 632.694414606) (0.99999, 385.433418745) (0.99935, 360.540646271) (0.75857, 284.52483946) (0.52726, 213.720440743) (0.94801, 177.088490827) (0.99997, 167.604493158) (0.98661, 106.8683687) (0.99859, 88.8351204497) (0.74689, 86.1078141891) (1.0, 80.9036178045) (0.74689, 79.8942745823) (0.74689, 75.5499709949) (0.74689, 75.0568719046) (0.74689, 71.6562375076) (0.9866, 66.8181799007) (0.9866, 65.5146375193) (0.9866, 64.0083780497) (0.52185, 57.5370715321) (0.52185, 56.9813624959) (0.52185, 56.4373412447) (0.52185, 56.3692905339) (1.0, 54.3349530125) (0.98997, 52.919175006) (0.99859, 50.7249379834) (0.98098, 44.5388588962) (0.98098, 43.3970840819) (0.99412, 39.4981449944) (1.0, 38.8176394663) (1.0, 36.3571617055) (0.41464, 34.1016378757) (0.78491, 33.7556687688) (1.0, 28.5153846826) (1.0, 25.8362542529) (0.9265, 25.72898914) (0.99307, 24.5483038987) (1.0, 21.0212136972) (1.0, 20.74460921) (1.0, 20.0529767461) (0.99955, 19.6883763582) (1.0, 19.0722873934) (1.0, 17.9006327685) (1.0, 17.6260356497) (0.99944, 17.4856153509) (0.99999, 15.3982014811) (1.0, 12.0490043418) (1.0, 11.8816838579) (1.0, 6.59633557208) }; \addlegendentry{ mrpt }; \addplot [only marks] coordinates { (0.23865, 32102.7704045) (0.23824, 30601.955348) (0.27245, 20162.3640076) (0.29426, 18849.8387049) (0.7305, 5971.90560175) (0.9448, 4498.41821382) (1.0, 3793.642952) (1.0, 3600.71806541) (1.0, 3588.04925725) (0.9999, 3109.70947899) }; \addlegendentry{ NGT-panng }; \addplot [only marks] coordinates { (0.98663, 2546.41358421) (0.99279, 2431.62408077) (0.99115, 2266.12725149) (0.98782, 2073.13903784) (0.95572, 1227.34862429) (0.95903, 1078.9953054) (0.94366, 992.447041088) (0.90444, 989.855869118) (0.92268, 719.826614334) (0.98709, 309.210048) (0.99489, 193.83683919) (0.99669, 193.437676772) (0.9072, 191.607726626) (0.97715, 168.935138551) (0.96423, 161.969707944) (0.98732, 148.702143831) (0.98992, 135.801823901) (0.90941, 119.600975847) (0.93598, 113.990819768) (0.9964, 108.907979796) (0.9981, 108.628438822) (0.97427, 101.73078677) (0.9867, 97.1456212678) (0.98808, 92.8264684117) (0.99123, 85.2289814113) (0.91457, 78.2692617534) (0.94488, 78.0589262053) (0.98895, 68.4729808623) (0.92097, 55.8129127082) (0.98962, 50.5293805624) (0.99865, 50.2942055332) (0.99411, 49.4278610048) (0.9628, 46.8629810934) (0.99963, 46.843661559) (0.99734, 42.5317362218) (0.99632, 33.9639680321) (0.97766, 32.3149742055) (0.99691, 29.8461944586) (0.99962, 29.4011564936) (1.0, 28.532851508) (0.99949, 24.8408989998) }; \addlegendentry{ pynndescent }; \addplot [only marks] coordinates { (0.63905, 3437.15510067) (0.66123, 3358.16465664) (0.66718, 3329.5108387) (0.66958, 2994.97410649) (0.67108, 2993.13284936) (0.68147, 2667.73096796) (0.658, 2568.1898672) (0.67967, 2057.23435042) (0.73461, 2032.26670322) (0.69686, 1966.83105288) (0.74362, 1494.46493019) (0.71079, 1468.42833085) (0.90263, 1340.78127998) (0.92281, 1225.19979109) (0.71989, 1187.15497448) (0.72626, 1033.85205989) (0.75277, 861.575709402) (0.92916, 702.45871537) (0.76506, 575.485183298) (0.93358, 476.740636167) (0.79371, 327.850300302) (0.94343, 285.781290233) (0.83696, 191.072675639) (0.96364, 160.545298785) (0.89722, 109.066607727) (0.98809, 88.375436211) (0.94713, 64.0190655412) (0.99793, 53.0236556907) (0.97996, 37.7263242244) (1.0, 34.1363867176) (0.99992, 32.4769781879) (0.99575, 23.737243907) (1.0, 20.7189070361) (1.0, 19.3110986073) (1.0, 12.4323996951) }; \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 (maau@itu.dk), Erik Bernhardsson (mail@erikbern.com), and Alec Faitfull (alef@itu.dk). Please use Github to submit your implementation or improvements.