use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct JinaEmbedderConfig {
#[serde(default = "default_model")]
pub model: String,
pub api_key: Option<String>,
#[serde(default = "default_embedding_dims")]
pub embedding_dims: usize,
#[serde(default = "default_base_url")]
pub base_url: String,
}
fn default_model() -> String {
"jina-embeddings-v2-base-en".to_string()
}
fn default_embedding_dims() -> usize {
768
}
fn default_base_url() -> String {
"https://api.jina.ai/v1".to_string()
}
impl Default for JinaEmbedderConfig {
fn default() -> Self {
Self {
model: default_model(),
api_key: None,
embedding_dims: default_embedding_dims(),
base_url: default_base_url(),
}
}
}
impl JinaEmbedderConfig {
pub fn with_model(model: impl Into<String>) -> Self {
Self {
model: model.into(),
..Default::default()
}
}
pub fn get_api_key(&self) -> Option<String> {
self.api_key
.clone()
.or_else(|| std::env::var("JINA_API_KEY").ok())
}
}