\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.