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
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 07:19 +0800
1from __future__ import annotations
3from dataclasses import dataclass
4from enum import StrEnum
6from lexigram.domain import DomainModel
7from lexigram.validation import Field
10class CacheType(StrEnum):
11 """Types of caches in RAG system."""
13 EMBEDDING = "embedding"
14 RETRIEVAL = "retrieval"
15 DOCUMENT = "document"
16 RERANKING = "reranking"
17 LLM_RESPONSE = "llm_response"
18 QUERY_TRANSFORMATION = "query_transformation"
21@dataclass(init=False)
22class RAGCacheConfig(DomainModel):
23 """Configuration for RAG caching system."""
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 )