pub struct ToolRetriever { /* private fields */ }Expand description
Semantic search engine for OS capabilities.
Maintains an in-memory vector index of all registered tools and supports top-K retrieval via cosine similarity against a query embedding.
Implementations§
Source§impl ToolRetriever
impl ToolRetriever
Sourcepub fn new(embedder: Arc<dyn EmbeddingProvider>) -> Self
pub fn new(embedder: Arc<dyn EmbeddingProvider>) -> Self
Create a new, empty retriever backed by the given embedder.
Sourcepub fn embedder(&self) -> &Arc<dyn EmbeddingProvider> ⓘ
pub fn embedder(&self) -> &Arc<dyn EmbeddingProvider> ⓘ
Return a reference to the underlying embedder.
Useful when the caller needs to compute a query embedding before
calling retrieve.
Sourcepub async fn index_tool(&mut self, entry: ToolEntry)
pub async fn index_tool(&mut self, entry: ToolEntry)
Add a tool to the index.
The tool’s description is embedded immediately using the configured provider. If the embedding fails the tool is silently skipped (logged at warn level in future telemetry).
Sourcepub fn retrieve(
&self,
query_embedding: &EmbeddingVector,
top_k: usize,
) -> Vec<ScoredTool>
pub fn retrieve( &self, query_embedding: &EmbeddingVector, top_k: usize, ) -> Vec<ScoredTool>
Retrieve the top-K tools most relevant to the given query embedding.
The query_embedding is compared against every indexed tool using
EmbeddingVector::cosine_similarity. Results are sorted by score
descending.
If top_k exceeds the number of indexed tools, all tools are returned.