Skip to main content

git_semantic/embedding/
mod.rs

1mod error;
2mod model;
3
4pub use error::EmbeddingError;
5pub use model::ModelManager;
6
7use ndarray::Array1;
8use serde::{Deserialize, Serialize};
9
10pub type Embedding = Array1<f32>;
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
13pub struct EmbeddingConfig {
14    pub model_name: String,
15    pub dimension: usize,
16    pub max_length: usize,
17}
18
19impl Default for EmbeddingConfig {
20    fn default() -> Self {
21        Self {
22            model_name: "bge-small-en-v1.5".to_string(),
23            dimension: 384,
24            max_length: 512,
25        }
26    }
27}
28
29#[cfg(test)]
30mod tests {
31    use super::*;
32
33    #[test]
34    fn test_embedding_config_defaults() {
35        let config = EmbeddingConfig::default();
36        assert_eq!(config.model_name, "bge-small-en-v1.5");
37        assert_eq!(config.dimension, 384);
38        assert_eq!(config.max_length, 512);
39    }
40
41    #[test]
42    fn test_embedding_type_is_384_dimensional() {
43        let embedding: Embedding = Array1::zeros(384);
44        assert_eq!(embedding.len(), 384);
45    }
46}