Skip to content

Commit

Permalink
perf: parallel search partitions in subindex
Browse files Browse the repository at this point in the history
  • Loading branch information
chebbyChefNEQ committed Oct 29, 2024
1 parent 8cf899b commit ffbf547
Showing 1 changed file with 11 additions and 8 deletions.
19 changes: 11 additions & 8 deletions rust/lance/src/index/vector/ivf/v2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ use deepsize::DeepSizeOf;
use futures::prelude::stream::{self, StreamExt, TryStreamExt};
use lance_arrow::RecordBatchExt;
use lance_core::cache::FileMetadataCache;
use lance_core::utils::tokio::get_num_compute_intensive_cpus;
use lance_core::utils::tokio::{get_num_compute_intensive_cpus, spawn_cpu};
use lance_core::{Error, Result};
use lance_encoding::decoder::{DecoderPlugins, FilterExpression};
use lance_file::v2::reader::{FileReader, FileReaderOptions};
Expand Down Expand Up @@ -436,14 +436,17 @@ impl<S: IvfSubIndex + fmt::Debug + 'static, Q: Quantization + fmt::Debug + 'stat
) -> Result<RecordBatch> {
let part_entry = self.load_partition(partition_id, true).await?;
pre_filter.wait_for_ready().await?;

let query = self.preprocess_query(partition_id, query)?;
let param = (&query).into();
let refine_factor = query.refine_factor.unwrap_or(1) as usize;
let k = query.k * refine_factor;
part_entry
.index
.search(query.key, k, param, &part_entry.storage, pre_filter)

spawn_cpu(move || {
let param = (&query).into();
let refine_factor = query.refine_factor.unwrap_or(1) as usize;
let k = query.k * refine_factor;
part_entry
.index
.search(query.key, k, param, &part_entry.storage, pre_filter)
})
.await
}

fn is_loadable(&self) -> bool {
Expand Down

0 comments on commit ffbf547

Please sign in to comment.