diff options
author | metamuffin <metamuffin@disroot.org> | 2023-09-20 16:55:50 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-09-20 16:55:50 +0200 |
commit | fbfee0a2bb436a6205d67f561dbd6284621504d6 (patch) | |
tree | 8bc973c19f1e3ee12eaa382fa63a20ddf642fdfe /src/embedders.rs | |
parent | f62b4e356a1deecc550a2eba6d7d0caaad1303c1 (diff) | |
download | embeddings-sort-fbfee0a2bb436a6205d67f561dbd6284621504d6.tar embeddings-sort-fbfee0a2bb436a6205d67f561dbd6284621504d6.tar.bz2 embeddings-sort-fbfee0a2bb436a6205d67f561dbd6284621504d6.tar.zst |
move embedder to module
Diffstat (limited to 'src/embedders.rs')
-rw-r--r-- | src/embedders.rs | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/src/embedders.rs b/src/embedders.rs deleted file mode 100644 index a14a8cf..0000000 --- a/src/embedders.rs +++ /dev/null @@ -1,46 +0,0 @@ -use anyhow::Result; -use indicatif::{ParallelProgressIterator, ProgressStyle}; -use rayon::prelude::*; -use serde::{Deserialize, Serialize}; -use std::path::{Path, PathBuf}; - -pub trait MetricElem: Send + Sync + 'static + Serialize + for<'a> Deserialize<'a> { - fn dist(&self, _: &Self) -> f64; -} - -impl MetricElem for f64 { - fn dist(&self, b: &f64) -> f64 { - (self - b).abs() - } -} - -pub trait EmbedderT: Send + Sync { - type Embedding: MetricElem; - const NAME: &'static str; - - fn embed(&self, _: &Path) -> Result<Self::Embedding>; -} - -pub trait BatchEmbedder: Send + Sync { - type Embedding: MetricElem; - const NAME: &'static str; - - fn embeds(&mut self, _: &[PathBuf]) -> Result<Vec<Self::Embedding>>; -} - -impl<T: EmbedderT> BatchEmbedder for T { - type Embedding = T::Embedding; - const NAME: &'static str = T::NAME; - - fn embeds(&mut self, paths: &[PathBuf]) -> Result<Vec<Self::Embedding>> { - let st = - ProgressStyle::with_template("{bar:20.cyan/blue} {pos}/{len} Embedding images...")?; - paths - .par_iter() - .progress_with_style(st) - .map(|p| self.embed(p)) - .collect::<Vec<_>>() - .into_iter() - .try_collect() - } -} |