use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
#[error("embedding model load failed: {0}")]
ModelLoad(String),
#[error("tokenization failed: {0}")]
Tokenization(String),
#[error("inference failed: {0}")]
Inference(String),
#[error("vector dimension mismatch: expected {expected}, got {actual}")]
Dimension {
expected: usize,
actual: usize,
},
#[error("vector index is full")]
IndexFull,
#[error(transparent)]
External(#[from] anyhow::Error),
}
pub type Result<T, E = Error> = std::result::Result<T, E>;
impl Error {
#[must_use]
pub fn kind(&self) -> &'static str {
match self {
Self::ModelLoad(_) => "model_load",
Self::Tokenization(_) => "tokenization",
Self::Inference(_) => "inference",
Self::Dimension { .. } => "dimension_mismatch",
Self::IndexFull => "index_full",
Self::External(_) => "external",
}
}
}