uqa_storage/vector_index/query/
statistics.rs1use crate::diskann_index::{
10 format::DiskANNGeneration, search::DiskANNTraversalStats, DiskANNQueryWork,
11};
12use uqa_core::PostingList;
13
14pub use uqa_core::vector_execution::DiskANNExecutionRoute;
15
16#[derive(Debug, Clone, Copy, PartialEq, Eq)]
18pub struct DiskANNExecutionStats {
19 pub generation: DiskANNGeneration,
20 pub route: DiskANNExecutionRoute,
21 pub traversal: DiskANNTraversalStats,
22 pub work: DiskANNQueryWork,
23}
24
25pub struct VectorQueryResult {
27 pub postings: PostingList,
28 pub diskann: Option<DiskANNExecutionStats>,
29}
30
31impl VectorQueryResult {
32 pub(crate) fn unmeasured(postings: PostingList) -> Self {
33 Self {
34 postings,
35 diskann: None,
36 }
37 }
38
39 pub(crate) fn measured(
40 result: crate::diskann_index::DiskANNQueryResult,
41 generation: DiskANNGeneration,
42 route: DiskANNExecutionRoute,
43 ) -> Self {
44 Self {
45 postings: result.postings,
46 diskann: Some(DiskANNExecutionStats {
47 generation,
48 route,
49 traversal: result.traversal,
50 work: result.work,
51 }),
52 }
53 }
54}
55
56#[cfg(test)]
57mod tests;