File size: 1,422 Bytes
d54db1a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | # 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)
|