Coverage for /home/admin/Documents/AI/applications/lexigram-dev/lexigram/experimental/ai/lexigram-ai-rag/src/lexigram/ai/rag/__init__.py: 53%
17 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 07:19 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 07:19 +0800
1"""RAG (Retrieval-Augmented Generation) module.
3Root ``__init__.py`` exposes only the core pipeline API.
4All specialised symbols remain importable from their subpackage paths, e.g.::
6 from lexigram.ai.rag.evaluation import HallucinationDetector
7 from lexigram.ai.rag.chunking import SemanticChunker
8 from lexigram.ai.rag.hyde import SingleHyDEGenerator
9"""
11from __future__ import annotations
13import importlib.metadata
14from typing import TYPE_CHECKING, Any
16__path__ = __import__("pkgutil").extend_path(__path__, __name__)
18from lexigram.ai.rag.constants import __version__ as __version__
20_LAZY_IMPORTS = {
21 # DI Provider
22 "RAGModule": "lexigram.ai.rag.module",
23 "RAGProvider": "lexigram.ai.rag.di.provider",
24 # Events
25 "RetrievalCompletedEvent": "lexigram.ai.rag.events",
26 "SynthesisCompletedEvent": "lexigram.ai.rag.events",
27 # Hooks
28 "RAGAnswerSynthesizedHook": "lexigram.ai.rag.hooks",
29 "RAGDocumentsRetrievedHook": "lexigram.ai.rag.hooks",
30 "RAGPipelineStartedHook": "lexigram.ai.rag.hooks",
31 # Core types
32 "Chunk": "lexigram.ai.rag.types",
33 "Context": "lexigram.ai.rag.types",
34 "RAGError": "lexigram.ai.rag.types",
35 # Pipeline
36 "RAGPipeline": "lexigram.ai.rag.pipeline",
37 "PipelineBuilder": "lexigram.ai.rag.pipeline.builder",
38 # Config
39 "RAGConfig": "lexigram.ai.rag.config",
40 "RAGTenancyConfig": "lexigram.ai.rag.config",
41 "PipelineConfig": "lexigram.ai.rag.config",
42 "IngestionConfig": "lexigram.ai.rag.config",
43 "RetrievalConfig": "lexigram.ai.rag.config",
44 "SynthesisConfig": "lexigram.ai.rag.config",
45 # Chunking — factory + primary types only
46 "ChunkingConfig": "lexigram.ai.rag.chunking",
47 "create_chunker": "lexigram.ai.rag.chunking",
48 # Cache
49 "RAGCache": "lexigram.ai.rag.cache",
50 # Tenancy
51 "TenantScopedRAGPipeline": "lexigram.ai.rag.tenancy",
52 # Strategy registries
53 "RerankingStrategyRegistry": "lexigram.ai.rag.reranking.strategy_registry",
54 "RetrievalStrategyRegistry": "lexigram.ai.rag.retrieval.strategy_registry",
55 # Types
56 "RerankResult": "lexigram.ai.rag.reranking.types",
57 # Contracts re-exports
58 "ChunkerProtocol": "lexigram.contracts.ai.vector",
59}
61if TYPE_CHECKING:
62 from lexigram.ai.rag.cache import RAGCache
63 from lexigram.ai.rag.chunking import (
64 ChunkingConfig,
65 create_chunker,
66 )
67 from lexigram.ai.rag.config import (
68 IngestionConfig,
69 PipelineConfig,
70 RAGConfig,
71 RAGTenancyConfig,
72 RetrievalConfig,
73 SynthesisConfig,
74 )
75 from lexigram.ai.rag.di.provider import RAGProvider
76 from lexigram.ai.rag.events import (
77 RetrievalCompletedEvent,
78 SynthesisCompletedEvent,
79 )
80 from lexigram.ai.rag.hooks import (
81 RAGAnswerSynthesizedHook,
82 RAGDocumentsRetrievedHook,
83 RAGPipelineStartedHook,
84 )
85 from lexigram.ai.rag.pipeline import RAGPipeline
86 from lexigram.ai.rag.pipeline.builder import PipelineBuilder
87 from lexigram.ai.rag.reranking.strategy_registry import (
88 RerankingStrategyRegistry,
89 )
90 from lexigram.ai.rag.reranking.types import RerankResult
91 from lexigram.ai.rag.retrieval.strategy_registry import (
92 RetrievalStrategyRegistry,
93 )
94 from lexigram.ai.rag.tenancy import TenantScopedRAGPipeline
95 from lexigram.ai.rag.types import (
96 Chunk,
97 Context,
98 RAGError,
99 )
100 from lexigram.contracts.ai.vector import ChunkerProtocol
103def __getattr__(name: str) -> Any:
104 if name in _LAZY_IMPORTS:
105 import importlib
107 module = importlib.import_module(_LAZY_IMPORTS[name])
108 value = getattr(module, name)
109 globals()[name] = value
110 return value
111 raise AttributeError(f"module {__name__} has no attribute {name}")
114def __dir__() -> list[str]:
115 return __all__
118__all__ = [
119 "Chunk",
120 "ChunkerProtocol",
121 "ChunkingConfig",
122 "Context",
123 "IngestionConfig",
124 "PipelineBuilder",
125 "PipelineConfig",
126 "RAGAnswerSynthesizedHook",
127 "RAGCache",
128 "RAGConfig",
129 "RAGDocumentsRetrievedHook",
130 "RAGError",
131 "RAGModule",
132 "RAGPipeline",
133 "RAGPipelineStartedHook",
134 "RAGProvider",
135 "RAGTenancyConfig",
136 "RerankResult",
137 "RerankingStrategyRegistry",
138 "RetrievalCompletedEvent",
139 "RetrievalConfig",
140 "RetrievalStrategyRegistry",
141 "SynthesisCompletedEvent",
142 "SynthesisConfig",
143 "TenantScopedRAGPipeline",
144 "create_chunker",
145]