use ort::session::Session;
use tokenizers::Tokenizer;
use crate::{
init::{HasMaxLength, InitOptionsWithLength},
models::sparse::SparseModel,
TokenizerFiles,
};
use super::DEFAULT_MAX_LENGTH;
impl HasMaxLength for SparseModel {
const MAX_LENGTH: usize = DEFAULT_MAX_LENGTH;
}
pub type SparseInitOptions = InitOptionsWithLength<SparseModel>;
#[derive(Debug, Clone, PartialEq, Eq)]
#[non_exhaustive]
pub struct UserDefinedSparseModel {
pub onnx_file: Vec<u8>,
pub tokenizer_files: TokenizerFiles,
}
impl UserDefinedSparseModel {
pub fn new(onnx_file: Vec<u8>, tokenizer_files: TokenizerFiles) -> Self {
Self {
onnx_file,
tokenizer_files,
}
}
}
pub struct SparseTextEmbedding {
pub tokenizer: Tokenizer,
pub(crate) session: Session,
pub(crate) need_token_type_ids: bool,
pub(crate) model: SparseModel,
}