@@ -8,26 +8,16 @@ use futures::{
88 TryFutureExt ,
99} ;
1010use neb:: {
11- index:: {
12- builder:: IndexError ,
13- vector:: { set_vector_index_core, VectorIndexerCore } ,
14- } ,
15-
11+ index:: { builder:: IndexError , vector:: VectorIndexerCore } ,
1612 server:: NebServer ,
1713} ;
1814
19-
20- use crate :: {
21- apps:: hnsw:: coordinator:: AsyncServiceClient ,
22- server:: MorpheusServer ,
23- } ;
24- use neb:: index:: vector:: MetricEncoding ;
25- use dovahkiin:: types:: OwnedValue ;
15+ use crate :: { apps:: hnsw:: coordinator:: AsyncServiceClient , server:: MorpheusServer } ;
2616use dovahkiin:: types:: Map ;
17+ use dovahkiin:: types:: OwnedValue ;
18+ use neb:: index:: vector:: MetricEncoding ;
2719use neb:: ram:: types:: OwnedPrimArray ;
2820
29-
30-
3121pub mod coordinator;
3222pub mod measurements;
3323pub mod partition;
@@ -87,8 +77,8 @@ impl VectorIndexerCore for VectorIndexer {
8777 self . coordinator
8878 . del_cell ( * cell_id)
8979 . map_err ( IndexError :: RPCError )
90- . and_then ( |r| async move {
91- //r.map_err(IndexError::Other)
80+ . and_then ( |r| async move {
81+ //r.map_err(IndexError::Other)
9282 Ok ( ( ) ) // Do not output index deletion errors
9383 } )
9484 . boxed ( )
@@ -128,13 +118,19 @@ impl VectorIndexer {
128118 }
129119 }
130120
131- pub fn set_core ( self ) {
132- set_vector_index_core ( self ) ;
121+ pub fn set_core ( self , neb_server : & NebServer ) {
122+ neb_server
123+ . indexer
124+ . as_ref ( )
125+ . unwrap ( )
126+ . clients
127+ . vector_client
128+ . set_vector_index_core ( self ) ;
133129 }
134130
135131 pub async fn new_and_set_core ( morph : & MorpheusServer ) {
136132 let indexer = Self :: new ( morph) . await ;
137- indexer. set_core ( ) ;
133+ indexer. set_core ( & morph . neb_server ) ;
138134 }
139135
140136 pub fn set_ef_construction ( & mut self , ef_construction : u64 ) {
@@ -147,8 +143,18 @@ unsafe impl Sync for VectorIndexer {}
147143
148144#[ cfg( test) ]
149145mod e2e_tests {
150- use dovahkiin:: { data_map, types:: { OwnedPrimArray , Type } } ;
151- use neb:: { index:: vector:: { self , MetricEncoding } , ram:: { cell:: OwnedCell , schema:: { Field , IndexType , Schema } , types:: RandValue } } ;
146+ use dovahkiin:: {
147+ data_map,
148+ types:: { OwnedPrimArray , Type } ,
149+ } ;
150+ use neb:: {
151+ index:: vector:: { self , MetricEncoding } ,
152+ ram:: {
153+ cell:: OwnedCell ,
154+ schema:: { Field , IndexType , Schema } ,
155+ types:: RandValue ,
156+ } ,
157+ } ;
152158
153159 use crate :: { apps:: hnsw:: coordinator:: Service , tests:: start_server} ;
154160
@@ -159,46 +165,66 @@ mod e2e_tests {
159165 const CELL_SCHEMA_ID : u32 = 123 ;
160166
161167 #[ tokio:: test]
162- async fn test_e2e ( ) {
163- let server = start_server ( 5010 , "vector_indexer_e2e_test" ) . await . unwrap ( ) ;
168+ async fn single_cell ( ) {
169+ let server = start_server ( 5910 , "vector_indexer_e2e_test" ) . await . unwrap ( ) ;
164170 let _partition = server. init_hnsw_index_partition_service ( ) . await . unwrap ( ) ;
165171 let coordinator = server. init_hnsw_index_service ( ) . await . unwrap ( ) ;
166172 let indexer = VectorIndexer :: new ( & server) . await ;
167- indexer. set_core ( ) ;
168- assert ! ( vector:: is_vector_index_core_set( ) ) ;
173+ indexer. set_core ( & server. neb_server ) ;
174+ assert ! ( server
175+ . neb_server
176+ . indexer
177+ . as_ref( )
178+ . unwrap( )
179+ . clients
180+ . vector_client
181+ . is_vector_index_core_set( ) ) ;
169182
170183 let neb_client = server. neb_client . clone ( ) ;
171184 let cell_schema = Schema :: new_with_id (
172- CELL_SCHEMA_ID , "test_schema" , None ,
173- Field :: new_schema (
174- vec ! [
175- Field :: new_indexed_array(
176- VECTOR ,
177- Type :: F32 ,
178- vec![ IndexType :: Vector ( MetricEncoding :: L2 ) ]
179- )
180- ]
181- ) ,
182- false , false
185+ CELL_SCHEMA_ID ,
186+ "test_schema" ,
187+ None ,
188+ Field :: new_schema ( vec ! [ Field :: new_indexed_array(
189+ VECTOR ,
190+ Type :: F32 ,
191+ vec![ IndexType :: Vector ( MetricEncoding :: L2 ) ] ,
192+ ) ] ) ,
193+ false ,
194+ false ,
183195 ) ;
184- neb_client. new_schema_with_id ( cell_schema) . await . unwrap ( ) . unwrap ( ) ;
196+ neb_client
197+ . new_schema_with_id ( cell_schema)
198+ . await
199+ . unwrap ( )
200+ . unwrap ( ) ;
185201 let cell_id = Id :: rand ( ) ;
186202 let vector1 = vec ! [ 1.0 , 2.0 , 3.0 ] ;
187203 let map = data_map ! ( VECTOR : OwnedValue :: PrimArray ( OwnedPrimArray :: F32 ( vector1. clone( ) ) ) ) ;
188204 let cell1 = OwnedCell :: new_with_id ( CELL_SCHEMA_ID , & cell_id, OwnedValue :: Map ( map) ) ;
189- assert ! ( vector:: is_vector_index_core_set( ) ) ;
205+ assert ! ( server
206+ . neb_server
207+ . indexer
208+ . as_ref( )
209+ . unwrap( )
210+ . clients
211+ . vector_client
212+ . is_vector_index_core_set( ) ) ;
190213 neb_client. write_cell ( cell1) . await . unwrap ( ) . unwrap ( ) ;
191- let query = coordinator. query_top_k (
192- CELL_SCHEMA_ID ,
193- VECTOR_FIELD_ID ,
194- OwnedPrimArray :: F32 ( vector1) ,
195- 10 ,
196- 32 ,
197- 10 ,
198- MetricEncoding :: L2
199- ) . await . unwrap ( ) ;
214+ let query = coordinator
215+ . query_top_k (
216+ CELL_SCHEMA_ID ,
217+ VECTOR_FIELD_ID ,
218+ OwnedPrimArray :: F32 ( vector1) ,
219+ 10 ,
220+ 32 ,
221+ 10 ,
222+ MetricEncoding :: L2 ,
223+ )
224+ . await
225+ . unwrap ( ) ;
200226 assert_eq ! ( query. len( ) , 1 ) ;
201227 assert_eq ! ( query[ 0 ] . 0 , cell_id) ;
202228 assert_eq ! ( query[ 0 ] . 1 , 0.0 ) ;
203229 }
204- }
230+ }
0 commit comments