pub struct QueryEngine { /* private fields */ }Expand description
Query engine for semantic search
Implementations§
Source§impl QueryEngine
impl QueryEngine
Sourcepub fn new(
graph: Arc<Mutex<GraphStore>>,
embedder: Arc<EmbeddingEngine>,
) -> Self
pub fn new( graph: Arc<Mutex<GraphStore>>, embedder: Arc<EmbeddingEngine>, ) -> Self
Create a new query engine
Sourcepub fn with_cache_capacity(
graph: Arc<Mutex<GraphStore>>,
embedder: Arc<EmbeddingEngine>,
cache_capacity: usize,
) -> Self
pub fn with_cache_capacity( graph: Arc<Mutex<GraphStore>>, embedder: Arc<EmbeddingEngine>, cache_capacity: usize, ) -> Self
Create a new query engine with custom cache capacity
Sourcepub fn with_intelligence(
self,
intelligence: Box<dyn IntelligenceEngine>,
) -> Self
pub fn with_intelligence( self, intelligence: Box<dyn IntelligenceEngine>, ) -> Self
Set the intelligence engine for RAG (builder pattern)
Sourcepub fn set_intelligence(&mut self, intelligence: Box<dyn IntelligenceEngine>)
pub fn set_intelligence(&mut self, intelligence: Box<dyn IntelligenceEngine>)
Set or replace the intelligence engine after creation
Sourcepub fn search(&self, query: &str, k: usize) -> Result<Vec<SearchResult>>
pub fn search(&self, query: &str, k: usize) -> Result<Vec<SearchResult>>
Search for relevant chunks using a hybrid (semantic + lexical) approach
Uses integer Reciprocal Rank Fusion (RRF) per CP-003 §7 for deterministic results: Score(d) = 1,000,000 / (k + rank(d))
Sourcepub fn search_semantic(
&self,
query: &str,
k: usize,
) -> Result<Vec<SearchResult>>
pub fn search_semantic( &self, query: &str, k: usize, ) -> Result<Vec<SearchResult>>
Perform purely semantic search (vector only)
Sourcepub fn search_lexical(&self, query: &str, k: usize) -> Result<Vec<SearchResult>>
pub fn search_lexical(&self, query: &str, k: usize) -> Result<Vec<SearchResult>>
Perform purely lexical search (keyword only)
Sourcepub fn search_filtered(
&self,
query: &str,
k: usize,
filters: &[Filter],
) -> Result<Vec<SearchResult>>
pub fn search_filtered( &self, query: &str, k: usize, filters: &[Filter], ) -> Result<Vec<SearchResult>>
Search with filters applied
Per CP-012: Supports filtering by document path, MIME type, and modification time.
Sourcepub fn search_cached(&self, query: &str, k: usize) -> Result<Vec<SearchResult>>
pub fn search_cached(&self, query: &str, k: usize) -> Result<Vec<SearchResult>>
Search with caching
Per CP-020: Uses query cache for faster repeated queries.
Sourcepub fn invalidate_cache(&self) -> Result<()>
pub fn invalidate_cache(&self) -> Result<()>
Invalidate the query cache
Sourcepub fn get_chunks_for_document(&self, doc_id: Uuid) -> Result<Vec<SearchResult>>
pub fn get_chunks_for_document(&self, doc_id: Uuid) -> Result<Vec<SearchResult>>
Get all chunks for a specific document
Sourcepub fn graph(&self) -> Arc<Mutex<GraphStore>>
pub fn graph(&self) -> Arc<Mutex<GraphStore>>
Access the underlying graph store (for testing/debugging)
Sourcepub async fn generate_answer(&self, query: &str) -> Result<GenerationResult>
pub async fn generate_answer(&self, query: &str) -> Result<GenerationResult>
Generate an answer using the knowledge graph and an LLM
Sourcepub fn generate_proof_receipt(
&self,
query: &str,
search_results: &[SearchResult],
identity: &DeviceIdentity,
) -> Result<ProofReceipt>
pub fn generate_proof_receipt( &self, query: &str, search_results: &[SearchResult], identity: &DeviceIdentity, ) -> Result<ProofReceipt>
Generate a cryptographic proof receipt for a query.
This creates a signed, verifiable record of exactly what context was available when a search was performed. The receipt includes Merkle proofs for each chunk, allowing independent verification.
Auto Trait Implementations§
impl !Freeze for QueryEngine
impl !RefUnwindSafe for QueryEngine
impl Send for QueryEngine
impl Sync for QueryEngine
impl Unpin for QueryEngine
impl UnsafeUnpin for QueryEngine
impl !UnwindSafe for QueryEngine
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more