# cache/warm_cache.py — Optional Retrieval & Index Warmup Tool (Replaces seed_cache.py) import time from pathlib import Path from knowledge.loader import KnowledgeLoader from knowledge.chunker import MarkdownChunker from knowledge.index import HybridIndex from knowledge.retrieval import HybridRetriever def warm_up_index(data_dir: Path) -> float: """Pre-warm knowledge loading, chunking, and hybrid search indexing.""" start_time = time.time() print("🔥 Pre-warming Retrieval Index...") loader = KnowledgeLoader(data_dir=str(data_dir)) documents = loader.load_documents() chunker = MarkdownChunker() chunks = chunker.chunk_all(documents) index = HybridIndex() index.build_index(chunks) retriever = HybridRetriever(index=index) # Run test retrieval queries to warm in-memory data structures test_queries = [ "مصاريف كلية طب الأسنان", "الحد الأدنى لكلية الهندسة", "مين مطورين الموقع؟", "برامج كلية العلوم" ] for q in test_queries: retriever.retrieve(q) elapsed = round(time.time() - start_time, 3) print(f"✅ Retrieval Index warmed in {elapsed}s.") return elapsed if __name__ == "__main__": base_dir = Path(__file__).resolve().parent.parent data_dir = base_dir / "university_data_arabic" warm_up_index(data_dir)