swiftide_core/search_strategies/
similarity_single_embedding.rsuse crate::querying;
use super::{SearchFilter, DEFAULT_TOP_K};
#[derive(Debug, Clone)]
pub struct SimilaritySingleEmbedding<FILTER: SearchFilter = ()> {
top_k: u64,
filter: Option<FILTER>,
}
impl<FILTER: SearchFilter> querying::SearchStrategy for SimilaritySingleEmbedding<FILTER> {}
impl<FILTER: SearchFilter> Default for SimilaritySingleEmbedding<FILTER> {
fn default() -> Self {
Self {
top_k: DEFAULT_TOP_K,
filter: None,
}
}
}
impl SimilaritySingleEmbedding<()> {
pub fn into_concrete_filter<FILTER: SearchFilter>(&self) -> SimilaritySingleEmbedding<FILTER> {
SimilaritySingleEmbedding::<FILTER> {
top_k: self.top_k,
filter: None,
}
}
}
impl<FILTER: SearchFilter> SimilaritySingleEmbedding<FILTER> {
pub fn from_filter(filter: FILTER) -> Self {
Self {
filter: Some(filter),
..Default::default()
}
}
pub fn with_top_k(&mut self, top_k: u64) -> &mut Self {
self.top_k = top_k;
self
}
pub fn top_k(&self) -> u64 {
self.top_k
}
pub fn with_filter<NEWFILTER: SearchFilter>(
self,
filter: NEWFILTER,
) -> SimilaritySingleEmbedding<NEWFILTER> {
SimilaritySingleEmbedding::<NEWFILTER> {
top_k: self.top_k,
filter: Some(filter),
}
}
pub fn filter(&self) -> &Option<FILTER> {
&self.filter
}
}