Skip to main content

xz_rag/
lib.rs

1#![warn(missing_docs)]
2
3//! Multi-channel Retrieval-Augmented Generation (RAG) engine.
4//!
5//! `xz-rag` provides a composable RAG engine with multiple retrieval channels
6//! (semantic, BM25, metadata, graph), result fusion (RRF), context window
7//! management, query preprocessing (HYDE, expansion), and optional LLM generation.
8//!
9//! # Architecture
10//!
11//! - **Engine**: [`DefaultRagEngine`] coordinating retrieval, fusion, and generation
12//! - **Channels**: `semantic`, `bm25`, `metadata`, `graph` retrieval backends
13//! - **Pipeline**: Channel orchestration with RRF fusion and score normalization
14//! - **Context**: Token budget management and citation formatting
15//! - **Indexing**: Document chunking strategies (fixed, recursive, separator-based)
16//! - **Caching**: Optional in-memory result caching via `moka`
17//! - **Generation**: LLM integration via `xz-provider` (feature-gated)
18
19/// Retrieval channel implementations (semantic, BM25, metadata, graph).
20pub mod channels;
21
22/// Context assembly: token budget management and citation formatting.
23pub mod context;
24
25/// Default RAG engine implementation.
26pub mod engine;
27
28/// RAG error types.
29pub mod error;
30
31/// LLM generation integration.
32pub mod generation;
33
34/// Document indexing and chunking strategies.
35pub mod indexing;
36
37/// Multi-channel pipeline orchestration.
38pub mod pipeline;
39
40/// Query preprocessing (HYDE, expansion).
41pub mod preprocessing;
42
43/// Core trait definitions.
44pub mod traits;
45
46/// Shared type definitions.
47pub mod types;
48
49/// In-memory result caching.
50pub mod cache;
51
52// Re-exports
53pub use engine::{DefaultRagEngine, DefaultRagEngineBuilder};
54pub use error::RagError;
55pub use traits::RagEngine;
56pub use types::chunk::{Chunk, ChunkMetadata};
57pub use types::config::{RagConfig, RagEngineInfo};
58pub use types::rag::{
59    BuiltContext, ChatMessage, ChatRole, Citation, CitationFormat, ContextConfig, PromptTemplate,
60    RagGenerationConfig, RagRequest, RagRequestBuilder, RagResponse, RagStreamEvent, RagTokenUsage,
61    RequestOptions,
62};
63pub use types::retrieval::{
64    ChannelStats, QueryPreprocessing, RetrieveRequest, RetrieveRequestBuilder, RetrieveResult,
65    RetrievedChunk, StructuredFilter,
66};
67
68// Pipeline re-exports
69pub use pipeline::channel::{ChannelConfig, ChannelPipeline, ChannelType};
70pub use pipeline::fusion::RrfFusion;
71pub use pipeline::normalize::{MinMaxNormalizer, ZScoreNormalizer};
72
73// Context re-exports
74pub use context::citation::format_citations_numeric;
75pub use context::token_budget::ContextBuilder;
76
77// Indexing re-exports
78pub use indexing::chunker::ChunkStrategy;
79pub use indexing::chunker::fixed::FixedSizeChunker;
80pub use indexing::chunker::recursive::RecursiveCharacterChunker;
81pub use indexing::chunker::semantic::SeparatorChunker;
82pub use indexing::{DocumentIndexer, IndexDocument};
83
84// Channel re-exports
85#[cfg(feature = "bm25")]
86pub use channels::bm25::Bm25ChannelExecutor;
87pub use channels::graph::{GraphChannelExecutor, KnowledgeGraphSearch};
88pub use channels::metadata::{MetadataChannelExecutor, MetadataStore};
89pub use channels::semantic::{Embedder, SemanticChannelExecutor, SemanticSearch};