"""
RAG (Retrieval Augmented Generation) module for MK3.

Provides various RAG strategies:
- Dense/Sparse/Hybrid retrieval
- Self-RAG with reflection
- HyDE (Hypothetical Document Embeddings)
- Corrective RAG (CRAG)
"""

from .base_retriever import (
    DenseRetriever,
    SparseRetriever,
    HybridRetriever,
    RetrievalResult,
    RetrievalBatch
)

from .self_rag import (
    SelfRAG,
    RetrievalCritic,
    ResponseCritic,
    SelfRAGOutput,
    ReflectionToken
)

from .hyde import (
    HyDE,
    HypotheticalDocGenerator,
    MultiHopHyDE,
    HyDEOutput
)

from .corrective_rag import (
    CorrectiveRAG,
    AdaptiveCRAG,
    RetrievalEvaluator,
    QueryRewriter,
    DocumentDecomposer,
    CRAGOutput,
    RetrievalAction
)

__all__ = [
    # Base retrievers
    'DenseRetriever',
    'SparseRetriever',
    'HybridRetriever',
    'RetrievalResult',
    'RetrievalBatch',

    # Self-RAG
    'SelfRAG',
    'RetrievalCritic',
    'ResponseCritic',
    'SelfRAGOutput',
    'ReflectionToken',

    # HyDE
    'HyDE',
    'HypotheticalDocGenerator',
    'MultiHopHyDE',
    'HyDEOutput',

    # Corrective RAG
    'CorrectiveRAG',
    'AdaptiveCRAG',
    'RetrievalEvaluator',
    'QueryRewriter',
    'DocumentDecomposer',
    'CRAGOutput',
    'RetrievalAction',
]
