aboutsummaryrefslogtreecommitdiff
path: root/src/embedders.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/embedders.rs')
-rw-r--r--src/embedders.rs46
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()
- }
-}