reflex/embedding/reranker/
error.rs1use std::path::PathBuf;
2use thiserror::Error;
3
4use crate::embedding::error::EmbeddingError;
5
6#[derive(Debug, Error)]
7pub enum RerankerError {
9 #[error("reranker model not found at path: {path}")]
11 ModelNotFound {
12 path: PathBuf,
14 },
15
16 #[error("failed to load reranker model: {reason}")]
18 ModelLoadFailed {
19 reason: String,
21 },
22
23 #[error("{device} device unavailable: {reason}")]
25 DeviceUnavailable {
26 device: String,
28 reason: String,
30 },
31
32 #[error("reranker inference failed: {reason}")]
34 InferenceFailed {
35 reason: String,
37 },
38
39 #[error("tokenization failed: {reason}")]
41 TokenizationFailed {
42 reason: String,
44 },
45
46 #[error("invalid reranker configuration: {reason}")]
48 InvalidConfig {
49 reason: String,
51 },
52
53 #[error("reranker not available: {reason}")]
55 NotAvailable {
56 reason: String,
58 },
59}
60
61impl From<candle_core::Error> for RerankerError {
62 fn from(err: candle_core::Error) -> Self {
63 RerankerError::InferenceFailed {
64 reason: err.to_string(),
65 }
66 }
67}
68
69impl From<std::io::Error> for RerankerError {
70 fn from(err: std::io::Error) -> Self {
71 RerankerError::ModelLoadFailed {
72 reason: err.to_string(),
73 }
74 }
75}
76
77impl From<EmbeddingError> for RerankerError {
78 fn from(err: EmbeddingError) -> Self {
79 match err {
80 EmbeddingError::DeviceUnavailable { device, reason } => {
81 RerankerError::DeviceUnavailable { device, reason }
82 }
83 _ => RerankerError::InferenceFailed {
84 reason: err.to_string(),
85 },
86 }
87 }
88}