Skip to main content

veles_core/
model.rs

1//! Model loading wrapper around model2vec-rs.
2
3use anyhow::Result;
4pub use model2vec_rs::model::StaticModel;
5
6/// Default model for code search (English-focused, code-specialised, ~16M params).
7pub const DEFAULT_MODEL_NAME: &str = "minishlab/potion-code-16M";
8
9/// Multilingual model — larger but covers Cyrillic, CJK, Greek, Arabic, …
10/// Use this for codebases or queries with non-English natural language.
11pub const MULTILINGUAL_MODEL_NAME: &str = "minishlab/potion-multilingual-128M";
12
13/// Load a model from a HuggingFace model ID or local path.
14pub fn load_model(model_path: Option<&str>) -> Result<StaticModel> {
15    let path = model_path.unwrap_or(DEFAULT_MODEL_NAME);
16    let model = StaticModel::from_pretrained(path, None, None, None)?;
17    Ok(model)
18}
19
20/// Convenience: load the multilingual model.
21pub fn load_multilingual_model() -> Result<StaticModel> {
22    load_model(Some(MULTILINGUAL_MODEL_NAME))
23}