holographic_memory/core/engine/
query.rs1use super::HmsCore;
5use crate::core::entangled::EntangledHVec;
6use crate::core::types::RetrievalResult;
7use rayon::prelude::*;
8
9impl HmsCore {
10 pub fn query(&self, query_vec: &EntangledHVec, k: u32) -> Vec<RetrievalResult> {
12 self.shards.read().query(query_vec, k, self.dimensions)
13 }
14
15 pub fn query_batch(&self, queries: &[EntangledHVec], k: u32) -> Vec<Vec<RetrievalResult>> {
17 queries.par_iter().map(|q| self.query(q, k)).collect()
18 }
19
20 pub fn analyze_components(&self, vector: &EntangledHVec) -> Vec<RetrievalResult> {
23 let cfg = &self.config.query;
24 let neighbors = self.query(vector, cfg.component_max_neighbors);
25 neighbors
26 .into_iter()
27 .filter(|r| r.similarity > cfg.component_similarity_threshold)
28 .collect()
29 }
30}