pub struct DualRetriever<L: LLMProvider, E: EmbeddingProvider, V: VectorBackend, S: StorageBackend> { /* private fields */ }Expand description
Dual retriever: fast search + LLM reasoning.
TigerStyle: Generic over LLM and storage for sim/production flexibility.
§Example
ⓘ
use umi_memory::retrieval::{DualRetriever, SearchOptions};
use umi_memory::llm::SimLLMProvider;
use umi_memory::embedding::SimEmbeddingProvider;
use umi_memory::storage::{SimStorageBackend, SimVectorBackend};
use umi_memory::dst::SimConfig;
#[tokio::main]
async fn main() {
let llm = SimLLMProvider::with_seed(42);
let embedder = SimEmbeddingProvider::with_seed(42);
let vector = SimVectorBackend::new(42);
let storage = SimStorageBackend::new(SimConfig::with_seed(42));
let retriever = DualRetriever::new(llm, embedder, vector, storage);
// Deep search with query rewriting + vector search
let result = retriever
.search("Who works at Acme?", SearchOptions::default())
.await
.unwrap();
}Implementations§
Source§impl<L: LLMProvider, E: EmbeddingProvider, V: VectorBackend, S: StorageBackend> DualRetriever<L, E, V, S>
impl<L: LLMProvider, E: EmbeddingProvider, V: VectorBackend, S: StorageBackend> DualRetriever<L, E, V, S>
Sourcepub async fn search(
&self,
query: &str,
options: SearchOptions,
) -> Result<SearchResult, RetrievalError>
pub async fn search( &self, query: &str, options: SearchOptions, ) -> Result<SearchResult, RetrievalError>
Search with dual retrieval strategy.
§Arguments
query- Search queryoptions- Search options (limit, deep_search, time_range)
§Returns
SearchResult with entities, query info, and metadata.
§Errors
Returns RetrievalError if query is empty, too long, or limit is invalid.
§Graceful Degradation
If LLM fails during query rewriting, falls back to fast search only.
Sourcepub async fn rewrite_query(&self, query: &str) -> Vec<String>
pub async fn rewrite_query(&self, query: &str) -> Vec<String>
Trait Implementations§
Source§impl<L: Debug + LLMProvider, E: Debug + EmbeddingProvider, V: Debug + VectorBackend, S: Debug + StorageBackend> Debug for DualRetriever<L, E, V, S>
impl<L: Debug + LLMProvider, E: Debug + EmbeddingProvider, V: Debug + VectorBackend, S: Debug + StorageBackend> Debug for DualRetriever<L, E, V, S>
Auto Trait Implementations§
impl<L, E, V, S> Freeze for DualRetriever<L, E, V, S>
impl<L, E, V, S> RefUnwindSafe for DualRetriever<L, E, V, S>
impl<L, E, V, S> Send for DualRetriever<L, E, V, S>
impl<L, E, V, S> Sync for DualRetriever<L, E, V, S>
impl<L, E, V, S> Unpin for DualRetriever<L, E, V, S>
impl<L, E, V, S> UnwindSafe for DualRetriever<L, E, V, S>
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
Mutably borrows from an owned value. Read more