Commit Graph

142 Commits

Author SHA1 Message Date
Dirkjan Ochtman 2ab15e0c66 Improve ZeroNode abstraction some more 2021-01-20 18:07:03 +01:00
Dirkjan Ochtman 28f133a9f8 Strengthen abstraction for node types 2021-01-20 16:53:31 +01:00
Dirkjan Ochtman d80a2e3f67 Move search() method into Search 2021-01-20 16:52:53 +01:00
Dirkjan Ochtman 5cf83543db Reduce unnecessary work to enforce invariants 2021-01-20 16:29:33 +01:00
Dirkjan Ochtman ecdce08196 Enforce API boundary between Hnsw and Search 2021-01-20 16:29:04 +01:00
Dirkjan Ochtman f66bad132e Use specialized set implementation for faster tracking of visited points 2021-01-20 15:04:30 +01:00
Dirkjan Ochtman 7b84aa8d45 Move support types into a separate module 2021-01-20 14:30:46 +01:00
Dirkjan Ochtman 6250d198ad Add simple benchmark 2021-01-20 13:25:06 +01:00
Dirkjan Ochtman d885f1b72d Bump M to 12 again 2021-01-19 14:15:24 +01:00
Dirkjan Ochtman 092d6a0176 Remove unused import 2021-01-19 11:14:34 +01:00
Dirkjan Ochtman 9fee57c05f Remove more serde-big-array debris 2021-01-19 11:10:35 +01:00
Dirkjan Ochtman 0d0266a296 Remove serde-big-array for M = 6 2021-01-19 11:08:49 +01:00
Dirkjan Ochtman cffb0f8992 Apply clippy suggestion 2021-01-19 11:06:06 +01:00
Dirkjan Ochtman baf7863fd2 Tweak recall boundary for heuristic test 2021-01-19 11:04:25 +01:00
Dirkjan Ochtman 0fb389f2af Enable heuristic selection by default 2021-01-19 11:04:13 +01:00
Dirkjan Ochtman 0c0f35dc1a Fix formatting 2021-01-19 11:03:42 +01:00
Dirkjan Ochtman cdc1242ba9 Test both heuristic and simple selection 2021-01-19 11:00:29 +01:00
Dirkjan Ochtman 6db0f151ec Reset M to 12 for now 2021-01-19 10:50:41 +01:00
Dirkjan Ochtman c3a7ff5d23 Use heuristic selection for randomized test 2021-01-19 10:50:17 +01:00
Dirkjan Ochtman e4d66890da Fix heuristic selection candidate sourcing 2021-01-19 10:49:56 +01:00
Dirkjan Ochtman 08e1f4e085 Fix formatting 2021-01-19 10:47:59 +01:00
Dirkjan Ochtman c03cec4458 Fix neighbor updates for heuristic searches 2021-01-19 10:47:35 +01:00
Dirkjan Ochtman 58a7162d0a Simplify selection return value invariants 2021-01-19 10:47:01 +01:00
Dirkjan Ochtman 9e302d7dbe Fix ef value for insertion Searches 2021-01-19 10:45:41 +01:00
Dirkjan Ochtman 4c7caaf436 Simplify accessing zero nodes 2021-01-18 10:37:34 +01:00
Dirkjan Ochtman 1b70dcf743 Fix formatting 2021-01-14 18:29:39 +01:00
Dirkjan Ochtman 6dc83caabe Improve heuristic neighbor selection 2021-01-14 17:01:31 +01:00
Dirkjan Ochtman 47f26978f5 Simplify handling of ef parameters 2021-01-14 16:55:47 +01:00
Dirkjan Ochtman b865f2f287 Remove unused trait and impls 2021-01-14 16:53:22 +01:00
Dirkjan Ochtman f577dec212 Move neighbor selection into insert() 2021-01-13 17:07:24 +01:00
Dirkjan Ochtman eb7b9aafb3 Bump M to 32 2021-01-12 16:35:47 +01:00
Dirkjan Ochtman 619ea8a561 Make code compile again without serde 2021-01-12 16:35:41 +01:00
Dirkjan Ochtman e81d838f42 Fix formatting with cargo fmt 2021-01-12 14:39:22 +01:00
Dirkjan Ochtman 27d5e9b522 Fix serde support for larger ZeroNodes 2021-01-12 14:33:31 +01:00
Dirkjan Ochtman 04094ce06f Bump M up to 24 2021-01-12 13:37:07 +01:00
Dirkjan Ochtman 581b3a17e2 Simplify heuristic selection code 2021-01-12 13:31:51 +01:00
Dirkjan Ochtman d265ef7c29 Don't use heuristic selection for test 2021-01-12 13:31:40 +01:00
Dirkjan Ochtman c1e5acf35c Generalize Layer implementations 2021-01-11 21:13:17 +01:00
Dirkjan Ochtman 7bfca28d85 Add support for selection heuristic 2021-01-11 21:05:17 +01:00
Dirkjan Ochtman 09dd8d886b Make selection phase explicit in the code 2021-01-11 12:38:40 +01:00
Dirkjan Ochtman 19e451bac2 Default M to 12 2021-01-11 09:33:27 +01:00
Dirkjan Ochtman 0872d04665 Lower recall threshold to prevent spurious test failures 2021-01-07 21:44:11 +01:00
Dirkjan Ochtman df24ddc186 Test recall in randomized test 2021-01-07 21:38:53 +01:00
Dirkjan Ochtman 6def318423 Stick closer to algorithm 2 from the paper 2021-01-07 21:19:56 +01:00
Dirkjan Ochtman f01ed4a4a0 Re-order some code 2021-01-07 20:58:35 +01:00
Dirkjan Ochtman e6d200954e Discard empty layers 2021-01-07 20:55:08 +01:00
Dirkjan Ochtman e3c0224dc2 Update status with current layer 2021-01-07 20:53:21 +01:00
Dirkjan Ochtman f61659cca5 Search in appropriate layer during construction 2021-01-07 16:00:56 +01:00
Dirkjan Ochtman bd9c3f3897 Sort nearest neighbors after pushing batch peers 2021-01-07 16:00:41 +01:00
Dirkjan Ochtman d7c33e9e8f Keep track of candidate order using BinaryHeap 2021-01-07 15:59:41 +01:00