Skip to content

Commit 0a585d2

Browse files
committed
Leave provider change for upstream
1 parent e07901f commit 0a585d2

File tree

4 files changed

+10
-98
lines changed

4 files changed

+10
-98
lines changed

rust/index/src/spann/quantized_spann.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1073,11 +1073,12 @@ impl QuantizedSpannIndexWriter<USearchIndex> {
10731073
usearch_provider: &USearchIndexProvider,
10741074
) -> Result<(), QuantizedSpannError> {
10751075
// Scrub all clusters that received mutations.
1076-
let mutated_cluster_ids = self
1076+
let mut mutated_cluster_ids = self
10771077
.cluster_deltas
10781078
.iter()
10791079
.filter_map(|entry| (!entry.value().ids.is_empty()).then_some(*entry.key()))
10801080
.collect::<Vec<_>>();
1081+
mutated_cluster_ids.sort_unstable();
10811082

10821083
for cluster_id in &mutated_cluster_ids {
10831084
self.scrub(*cluster_id).await?;

rust/segment/src/quantized_spann.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -543,8 +543,7 @@ mod test {
543543
.await
544544
.unwrap_or_else(|e| panic!("cycle {cycle}: finish failed: {e}"));
545545

546-
let flusher = writer
547-
.commit()
546+
let flusher = Box::pin(writer.commit())
548547
.await
549548
.unwrap_or_else(|e| panic!("cycle {cycle}: commit failed: {e}"));
550549

rust/segment/src/spann_provider.rs

Lines changed: 4 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ use async_trait::async_trait;
22
use chroma_blockstore::provider::BlockfileProvider;
33
use chroma_config::{registry::Registry, Configurable};
44
use chroma_error::ChromaError;
5-
#[cfg(feature = "usearch")]
6-
use chroma_index::usearch::USearchIndexProvider;
75
use chroma_index::{
86
config::SpannProviderConfig,
97
hnsw_provider::HnswIndexProvider,
@@ -12,28 +10,17 @@ use chroma_index::{
1210
use chroma_types::{Cmek, Collection, Segment};
1311

1412
use crate::distributed_spann::{SpannSegmentWriter, SpannSegmentWriterError};
15-
#[cfg(feature = "usearch")]
16-
use crate::quantized_spann::{QuantizedSpannSegmentError, QuantizedSpannSegmentWriter};
1713

18-
#[derive(Clone)]
14+
#[derive(Debug, Clone)]
1915
pub 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]
3825
impl 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
}

rust/segment/src/test.rs

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -57,35 +57,17 @@ impl TestDistributedSegment {
5757
.await
5858
.expect("Expected to construct gc context for spann");
5959

60-
#[allow(unused_mut)]
61-
let mut temp_dirs = vec![blockfile_dir, hnsw_dir];
62-
63-
#[cfg(feature = "usearch")]
64-
let (usearch_dir, usearch_provider) = {
65-
let (dir, storage) = chroma_storage::test_storage();
66-
let provider = chroma_index::usearch::USearchIndexProvider::new(
67-
storage,
68-
chroma_cache::new_non_persistent_cache_for_test(),
69-
);
70-
(dir, provider)
71-
};
72-
73-
#[cfg(feature = "usearch")]
74-
temp_dirs.push(usearch_dir);
75-
7660
Self {
77-
temp_dirs,
61+
temp_dirs: vec![blockfile_dir, hnsw_dir],
7862
blockfile_provider: blockfile_provider.clone(),
7963
hnsw_provider: hnsw_provider.clone(),
8064
spann_provider: SpannProvider {
81-
adaptive_search_nprobe: true,
65+
hnsw_provider,
8266
blockfile_provider,
8367
garbage_collection_context,
84-
hnsw_provider,
8568
metrics: SpannMetrics::default(),
8669
pl_block_size: 5 * 1024 * 1024,
87-
#[cfg(feature = "usearch")]
88-
usearch_provider,
70+
adaptive_search_nprobe: true,
8971
},
9072
collection,
9173
metadata_segment: test_segment(collection_uuid, SegmentScope::METADATA),

0 commit comments

Comments
 (0)