mod backend;
mod builder;
mod document;
mod exact_backend;
#[cfg(feature = "rag-hnsw")]
mod hnsw_backend;
mod index;
mod retriever;
pub use backend::{cosine_similarity, dot_product, BackendType, RetrievalBackend};
pub use builder::{IndexBuilder, IndexBuilderConfig, ParallelIndexBuilder};
pub use document::{
Document, DocumentBuilder, DocumentId, DocumentMeta, DocumentMetadata, LanguageTag,
};
pub use exact_backend::ExactCosineBackend;
#[cfg(feature = "rag-hnsw")]
pub use hnsw_backend::HnswBackend;
pub use index::{RagIndex, RagIndexConfig};
pub use retriever::{format_results, BatchRetriever, RetrievalConfig, RetrievalResult, Retriever};
pub use crate::neural::{Synopsis, SynopsisSource};
pub type Result<T> = std::result::Result<T, RagError>;
#[derive(Debug, thiserror::Error)]
pub enum RagError {
#[error("Document not found: {0}")]
DocumentNotFound(DocumentId),
#[error("Index error: {0}")]
IndexError(String),
#[error("Embedding error: {0}")]
EmbeddingError(String),
#[error("I/O error: {0}")]
Io(#[from] std::io::Error),
#[error("Serialization error: {0}")]
Serialization(String),
#[error("Neural error: {0}")]
Neural(#[from] crate::neural::NeuralError),
}