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)