use anyhow::{Context, Result};
use super::embeddings::EmbeddingEngine;
use super::model_cache_dir;
use super::reranker::CrossEncoderEngine;
#[derive(Debug, serde::Serialize)]
pub struct SetupResult {
pub model_dir: String,
}
pub fn download_model() -> Result<SetupResult> {
let cache_dir = model_cache_dir();
let _engine =
EmbeddingEngine::new_with_progress().context("Failed to download embedding model")?;
Ok(SetupResult {
model_dir: cache_dir.display().to_string(),
})
}
pub fn download_cross_encoder() -> Result<SetupResult> {
let cache_dir = model_cache_dir();
let _engine = CrossEncoderEngine::load_with_progress()
.context("Failed to download cross-encoder model")?;
Ok(SetupResult {
model_dir: cache_dir.display().to_string(),
})
}