@@ -31,38 +31,32 @@ use heed::EnvOpenOptions;
3131use rand :: {rngs :: StdRng , SeedableRng };
3232
3333fn main () -> Result <()> {
34- const DIM : usize = 3 ;
35- let vecs : Vec <[f32 ; DIM ]> = vec! [[1.0 , 0.0 , 0.0 ], [0.0 , 1.0 , 0.0 ], [0.0 , 0.0 , 1.0 ]];
36-
3734 let env = unsafe {
3835 EnvOpenOptions :: new ()
39- . map_size (1024 * 1024 * 1024 * 1 ) // 1GiB
36+ . map_size (1024 * 1024 * 1024 ) // 1GiB
4037 . open (" ./" )
4138 }
4239 . unwrap ();
4340
44- let mut wtxn = env . write_txn (). unwrap () ;
41+ let mut wtxn = env . write_txn ()? ;
4542 let db : Database <Cosine > = env . create_database (& mut wtxn , None )? ;
46- let writer : Writer <Cosine > = Writer :: new (db , 0 , DIM );
43+ let writer : Writer <Cosine > = Writer :: new (db , 0 , 3 );
4744
48- // insert into lmdb
49- writer . add_item (& mut wtxn , 0 , & vecs [0 ])? ;
50- writer . add_item (& mut wtxn , 1 , & vecs [1 ])? ;
51- writer . add_item (& mut wtxn , 2 , & vecs [2 ])? ;
45+ // build
46+ writer . add_item (& mut wtxn , 0 , & [1.0 , 0.0 , 0.0 ])? ;
47+ writer . add_item (& mut wtxn , 0 , & [0.0 , 1.0 , 0.0 ])? ;
5248
53- // ...and build hnsw
5449 let mut rng = StdRng :: seed_from_u64 (42 );
55-
5650 let mut builder = writer . builder (& mut rng );
5751 builder . ef_construction (100 ). build :: <16 ,32 >(& mut wtxn )? ;
5852 wtxn . commit ()? ;
5953
60- // search hnsw using a new lmdb read transaction
54+ // search
6155 let rtxn = env . read_txn ()? ;
6256 let reader = Reader :: <Cosine >:: open (& rtxn , 0 , db )? ;
6357
6458 let query = vec! [0.0 , 1.0 , 0.0 ];
65- let nns = reader . nns (1 ). ef_search (10 ). by_vector (& rtxn , & query )? ;
59+ let nns = reader . nns (1 ). ef_search (10 ). by_vector (& rtxn , & query )? . into_nns () ;
6660
6761 dbg! (" {:?}" , & nns );
6862 Ok (())
@@ -81,7 +75,6 @@ db = hannoy.Database(tmp_dir, Metric.COSINE)
8175with db.writer(3 , m = 4 , ef = 10 ) as writer:
8276 writer.add_item(0 , [1.0 , 0.0 , 0.0 ])
8377 writer.add_item(1 , [0.0 , 1.0 , 0.0 ])
84- writer.add_item(2 , [0.0 , 0.0 , 1.0 ])
8578
8679reader = db.reader()
8780nns = reader.by_vec([0.0 , 1.0 , 0.0 ], n = 2 )
0 commit comments