Source code for flexrag.metrics.metrics_base

from abc import ABC, abstractmethod

from flexrag.utils import Register
from flexrag.utils.dataclasses import Context, RetrievedContext


[docs] class MetricsBase(ABC): def __call__( self, *, questions: list[str] = None, responses: list[str] = None, golden_responses: list[list[str | Context]] = None, retrieved_contexts: list[list[str | RetrievedContext]] = None, golden_contexts: list[list[str]] = None, ) -> tuple[dict[str, float], dict]: """ Compute the metric value. :param questions: A list of questions. Defaults to None. :param responses: A list of responses. Defaults to None. :param golden_responses: A list of golden responses. Defaults to None. :param retrieved_contexts: A list of retrieved contexts. Defaults to None. :param golden_contexts: A list of golden contexts. Defaults to None. :type questions: list[str], optional :type responses: list[str], optional :type golden_responses: list[list[str]], optional :type retrieved_contexts: list[list[str | RetrievedContext]], optional :type golden_contexts: list[list[str]], optional :return: The metric scores and the metadata of the metric. :rtype: tuple[dict[str, float], dict] """ return self.compute( questions=questions, responses=responses, golden_responses=golden_responses, retrieved_contexts=retrieved_contexts, golden_contexts=golden_contexts, )
[docs] @abstractmethod def compute( self, questions: list[str] = None, responses: list[str] = None, golden_responses: list[list[str]] = None, retrieved_contexts: list[list[str | RetrievedContext]] = None, golden_contexts: list[list[str]] = None, ) -> tuple[dict[str, float], dict]: """ Compute the metric value. :param questions: A list of questions. Defaults to None. :param responses: A list of responses. Defaults to None. :param golden_responses: A list of golden responses. Defaults to None. :param retrieved_contexts: A list of retrieved contexts. Defaults to None. :param golden_contexts: A list of golden contexts. Defaults to None. :type questions: list[str], optional :type responses: list[str], optional :type golden_responses: list[list[str]], optional :type retrieved_contexts: list[list[str | RetrievedContext]], optional :type golden_contexts: list[list[str]], optional :return: The metric scores and the metadata of the metric. :rtype: tuple[dict[str, float], dict] """ return
METRICS = Register[MetricsBase]("metrics")