use thiserror::Error;
#[derive(Error, Debug)]
pub enum EmbedVecError {
#[error("Invalid dimension: {0}. Dimension must be > 0")]
InvalidDimension(usize),
#[error("Dimension mismatch: expected {expected}, got {got}")]
DimensionMismatch {
expected: usize,
got: usize,
},
#[error("Mismatched lengths: {vectors} vectors, {payloads} payloads")]
MismatchedLengths {
vectors: usize,
payloads: usize,
},
#[error("Vector ID {0} not found")]
VectorNotFound(usize),
#[error("Index is empty")]
EmptyIndex,
#[error("Persistence error: {0}")]
PersistenceError(String),
#[error("Serialization error: {0}")]
SerializationError(String),
#[error("Quantization error: {0}")]
QuantizationError(String),
#[error("Invalid parameter: {0}")]
InvalidParameter(String),
#[error("Internal error: {0}")]
InternalError(String),
}
pub type Result<T> = std::result::Result<T, EmbedVecError>;
impl From<serde_json::Error> for EmbedVecError {
fn from(e: serde_json::Error) -> Self {
EmbedVecError::SerializationError(e.to_string())
}
}
#[cfg(feature = "persistence")]
impl From<sled::Error> for EmbedVecError {
fn from(e: sled::Error) -> Self {
EmbedVecError::PersistenceError(e.to_string())
}
}