git_semantic/embedding/
mod.rs1mod 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}