#![cfg_attr(docsrs, feature(doc_cfg))]
#![doc(html_root_url = "https://docs.rs/entelix-rag/0.5.3")]
#![deny(missing_docs)]
#![allow(
clippy::doc_markdown,
clippy::missing_errors_doc,
clippy::missing_panics_doc,
clippy::module_name_repetitions,
clippy::too_long_first_doc_paragraph,
// Tests use unwrap/expect liberally; the splitter modules call
// `Regex::new(...).expect(...)` on a compile-time-constant
// pattern (the round-trip test pins regex correctness).
clippy::expect_used,
clippy::indexing_slicing,
clippy::unwrap_used
)]
mod chunker;
mod corrective;
mod document;
mod loader;
mod pipeline;
mod splitter;
pub use chunker::{
CONTEXTUAL_CHUNKER_DEFAULT_INSTRUCTION, Chunker, ContextualChunker, ContextualChunkerBuilder,
FailurePolicy,
};
pub use corrective::{
CORRECTIVE_RAG_AGENT_NAME, CorrectiveRagState, CragConfig, DEFAULT_GENERATOR_SYSTEM_PROMPT,
DEFAULT_GRADER_INSTRUCTION, DEFAULT_MAX_REWRITE_ATTEMPTS, DEFAULT_MIN_CORRECT_FRACTION,
DEFAULT_RETRIEVAL_TOP_K, DEFAULT_REWRITER_INSTRUCTION, GradeVerdict, LlmQueryRewriter,
LlmQueryRewriterBuilder, LlmRetrievalGrader, LlmRetrievalGraderBuilder, QueryRewriter,
RetrievalGrader, build_corrective_rag_graph, create_corrective_rag_agent,
};
pub use document::{Document, DocumentId, Lineage, Source};
pub use loader::{DocumentLoader, DocumentStream};
pub use pipeline::{
IngestError, IngestReport, IngestionPipeline, IngestionPipelineBuilder, PROVENANCE_METADATA_KEY,
};
pub use splitter::{
DEFAULT_CHUNK_OVERLAP_CHARS, DEFAULT_CHUNK_OVERLAP_TOKENS, DEFAULT_CHUNK_SIZE_CHARS,
DEFAULT_CHUNK_SIZE_TOKENS, DEFAULT_MARKDOWN_HEADING_LEVELS, DEFAULT_RECURSIVE_SEPARATORS,
MarkdownStructureSplitter, RecursiveCharacterSplitter, TextSplitter, TokenCountSplitter,
};