use std::io;
use thiserror::Error;
#[derive(Debug, Error)]
#[non_exhaustive]
pub enum RagError {
#[error("document is empty")]
EmptyDocument,
#[error("query is empty")]
EmptyQuery,
#[error("no documents have been indexed yet")]
NoDocumentsIndexed,
#[error("embedding failed: {0}")]
EmbeddingFailed(String),
#[error("dimension mismatch: expected {expected}, got {got}")]
DimensionMismatch {
expected: usize,
got: usize,
},
#[error("persistence error: {0}")]
Persistence(String),
#[error("non-finite value in input (NaN or infinity)")]
NonFinite,
#[error("invalid metadata filter: {0}")]
InvalidFilter(String),
#[error("I/O error: {0}")]
Io(#[from] io::Error),
}