Coverage for /home/admin/Documents/AI/applications/lexigram-dev/lexigram/experimental/ai/lexigram-ai-rag/src/lexigram/ai/rag/cache/base.py: 100%

24 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-25 07:19 +0800

1from __future__ import annotations 

2 

3from dataclasses import dataclass 

4from enum import StrEnum 

5 

6from lexigram.domain import DomainModel 

7from lexigram.validation import Field 

8 

9 

10class CacheType(StrEnum): 

11 """Types of caches in RAG system.""" 

12 

13 EMBEDDING = "embedding" 

14 RETRIEVAL = "retrieval" 

15 DOCUMENT = "document" 

16 RERANKING = "reranking" 

17 LLM_RESPONSE = "llm_response" 

18 QUERY_TRANSFORMATION = "query_transformation" 

19 

20 

21@dataclass(init=False) 

22class RAGCacheConfig(DomainModel): 

23 """Configuration for RAG caching system.""" 

24 

25 embedding_ttl: int = Field( 

26 default=86400, # 24 hours 

27 description="TTL for embedding cache in seconds", 

28 ) 

29 retrieval_ttl: int = Field( 

30 default=300, # 5 minutes 

31 description="TTL for retrieval cache in seconds", 

32 ) 

33 document_ttl: int = Field( 

34 default=3600, # 1 hour 

35 description="TTL for document cache in seconds", 

36 ) 

37 reranking_ttl: int = Field( 

38 default=600, # 10 minutes 

39 description="TTL for reranking cache in seconds", 

40 ) 

41 llm_response_ttl: int = Field( 

42 default=1800, # 30 minutes 

43 description="TTL for LLM responses in seconds", 

44 ) 

45 query_transformation_ttl: int = Field( 

46 default=3600, # 1 hour 

47 description="TTL for query transformations in seconds", 

48 ) 

49 key_prefix: str = Field( 

50 default="rag:", 

51 description="Prefix for all cache keys", 

52 ) 

53 enable_stats: bool = Field( 

54 default=True, 

55 description="Enable cache statistics tracking", 

56 ) 

57 max_embedding_cache_size: int = Field( 

58 default=10000, 

59 description="Maximum number of embeddings to cache", 

60 ) 

61 max_retrieval_cache_size: int = Field( 

62 default=1000, 

63 description="Maximum number of retrieval results to cache", 

64 )