use crate::diskann_index::{
format::DiskANNGeneration, search::DiskANNTraversalStats, DiskANNQueryWork,
};
use uqa_core::PostingList;
pub use uqa_core::vector_execution::DiskANNExecutionRoute;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct DiskANNExecutionStats {
pub generation: DiskANNGeneration,
pub route: DiskANNExecutionRoute,
pub traversal: DiskANNTraversalStats,
pub work: DiskANNQueryWork,
}
pub struct VectorQueryResult {
pub postings: PostingList,
pub diskann: Option<DiskANNExecutionStats>,
}
impl VectorQueryResult {
pub(crate) fn unmeasured(postings: PostingList) -> Self {
Self {
postings,
diskann: None,
}
}
pub(crate) fn measured(
result: crate::diskann_index::DiskANNQueryResult,
generation: DiskANNGeneration,
route: DiskANNExecutionRoute,
) -> Self {
Self {
postings: result.postings,
diskann: Some(DiskANNExecutionStats {
generation,
route,
traversal: result.traversal,
work: result.work,
}),
}
}
}
#[cfg(test)]
mod tests;