@@ -2,8 +2,6 @@ use async_trait::async_trait;
22use chroma_blockstore:: provider:: BlockfileProvider ;
33use chroma_config:: { registry:: Registry , Configurable } ;
44use chroma_error:: ChromaError ;
5- #[ cfg( feature = "usearch" ) ]
6- use chroma_index:: usearch:: USearchIndexProvider ;
75use chroma_index:: {
86 config:: SpannProviderConfig ,
97 hnsw_provider:: HnswIndexProvider ,
@@ -12,28 +10,17 @@ use chroma_index::{
1210use chroma_types:: { Cmek , Collection , Segment } ;
1311
1412use crate :: distributed_spann:: { SpannSegmentWriter , SpannSegmentWriterError } ;
15- #[ cfg( feature = "usearch" ) ]
16- use crate :: quantized_spann:: { QuantizedSpannSegmentError , QuantizedSpannSegmentWriter } ;
1713
18- #[ derive( Clone ) ]
14+ #[ derive( Debug , Clone ) ]
1915pub struct SpannProvider {
20- pub adaptive_search_nprobe : bool ,
16+ pub hnsw_provider : HnswIndexProvider ,
2117 pub blockfile_provider : BlockfileProvider ,
2218 pub garbage_collection_context : GarbageCollectionContext ,
23- pub hnsw_provider : HnswIndexProvider ,
2419 pub metrics : SpannMetrics ,
2520 pub pl_block_size : usize ,
26- #[ cfg( feature = "usearch" ) ]
27- pub usearch_provider : USearchIndexProvider ,
28- }
29-
30- impl std:: fmt:: Debug for SpannProvider {
31- fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
32- f. debug_struct ( "SpannProvider" ) . finish ( )
33- }
21+ pub adaptive_search_nprobe : bool ,
3422}
3523
36- #[ cfg( not( feature = "usearch" ) ) ]
3724#[ async_trait]
3825impl Configurable < ( HnswIndexProvider , BlockfileProvider , SpannProviderConfig ) > for SpannProvider {
3926 async fn try_from_config (
@@ -49,51 +36,12 @@ impl Configurable<(HnswIndexProvider, BlockfileProvider, SpannProviderConfig)> f
4936 )
5037 . await ?;
5138 Ok ( SpannProvider {
52- adaptive_search_nprobe : config. 2 . adaptive_search_nprobe ,
53- blockfile_provider : config. 1 . clone ( ) ,
54- garbage_collection_context,
5539 hnsw_provider : config. 0 . clone ( ) ,
56- metrics : SpannMetrics :: default ( ) ,
57- pl_block_size : config. 2 . pl_block_size ,
58- } )
59- }
60- }
61-
62- #[ cfg( feature = "usearch" ) ]
63- #[ async_trait]
64- impl
65- Configurable < (
66- HnswIndexProvider ,
67- BlockfileProvider ,
68- SpannProviderConfig ,
69- USearchIndexProvider ,
70- ) > for SpannProvider
71- {
72- async fn try_from_config (
73- config : & (
74- HnswIndexProvider ,
75- BlockfileProvider ,
76- SpannProviderConfig ,
77- USearchIndexProvider ,
78- ) ,
79- registry : & Registry ,
80- ) -> Result < Self , Box < dyn ChromaError > > {
81- let garbage_collection_context = GarbageCollectionContext :: try_from_config (
82- & (
83- config. 2 . pl_garbage_collection . clone ( ) ,
84- config. 2 . hnsw_garbage_collection . clone ( ) ,
85- ) ,
86- registry,
87- )
88- . await ?;
89- Ok ( SpannProvider {
90- adaptive_search_nprobe : config. 2 . adaptive_search_nprobe ,
9140 blockfile_provider : config. 1 . clone ( ) ,
9241 garbage_collection_context,
93- hnsw_provider : config. 0 . clone ( ) ,
9442 metrics : SpannMetrics :: default ( ) ,
9543 pl_block_size : config. 2 . pl_block_size ,
96- usearch_provider : config. 3 . clone ( ) ,
44+ adaptive_search_nprobe : config. 2 . adaptive_search_nprobe ,
9745 } )
9846 }
9947}
@@ -119,22 +67,4 @@ impl SpannProvider {
11967 )
12068 . await
12169 }
122-
123- #[ cfg( feature = "usearch" ) ]
124- pub async fn write_quantized_usearch (
125- & self ,
126- collection : & Collection ,
127- vector_segment : & Segment ,
128- record_segment : & Segment ,
129- ) -> Result < QuantizedSpannSegmentWriter , QuantizedSpannSegmentError > {
130- QuantizedSpannSegmentWriter :: from_segment (
131- self . pl_block_size ,
132- collection,
133- vector_segment,
134- record_segment,
135- & self . blockfile_provider ,
136- & self . usearch_provider ,
137- )
138- . await
139- }
14070}
0 commit comments