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

9 statements  

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

1"""Base evaluator class for RAG evaluation.""" 

2 

3from __future__ import annotations 

4 

5from abc import ABC, abstractmethod 

6from typing import Any 

7 

8from lexigram.ai.rag.evaluation.types import EvaluationResult 

9 

10 

11class EvaluatorBase(ABC): 

12 """Base class for RAG evaluators. 

13 

14 All evaluators should inherit from this class and implement the evaluate method. 

15 """ 

16 

17 def __init__(self, name: str = "base"): 

18 """Initialize evaluator. 

19 

20 Args: 

21 name: Name of the evaluator. 

22 """ 

23 self.name = name 

24 

25 @abstractmethod 

26 async def evaluate( 

27 self, 

28 query: str, 

29 retrieved_docs: list[Any], 

30 generated_answer: str, 

31 reference_answer: str | None = None, 

32 **kwargs, 

33 ) -> EvaluationResult: 

34 """Evaluate a RAG response. 

35 

36 Args: 

37 query: The query. 

38 retrieved_docs: Retrieved documents. 

39 generated_answer: Generated answer. 

40 reference_answer: Optional ground truth. 

41 **kwargs: Additional parameters. 

42 

43 Returns: 

44 Evaluation result. 

45 """