diff --git a/src/veritext/metrics/__init__.py b/src/veritext/metrics/__init__.py index 5f235fe..811d41b 100644 --- a/src/veritext/metrics/__init__.py +++ b/src/veritext/metrics/__init__.py @@ -10,6 +10,7 @@ from veritext.metrics.results import ( ReadabilityResult, RougeResult, RougeScore, + SemanticResult, ) from veritext.metrics.rouge import Rouge @@ -26,4 +27,5 @@ __all__ = [ "Rouge", "RougeResult", "RougeScore", + "SemanticResult", ] diff --git a/src/veritext/metrics/results.py b/src/veritext/metrics/results.py index 54f86ef..53fcd21 100644 --- a/src/veritext/metrics/results.py +++ b/src/veritext/metrics/results.py @@ -91,3 +91,20 @@ class ReadabilityResult(BaseModel): def score(self) -> float: """Return Flesch reading ease as the primary score.""" return self.flesch_reading_ease + + +class SemanticResult(BaseModel): + """Result of semantic similarity computation.""" + + model_config = ConfigDict(frozen=True) + + similarity: float + """Cosine similarity score (0.0 to 1.0).""" + + model: str + """Name of the embedding model used.""" + + @property + def score(self) -> float: + """Return the primary score for this result.""" + return self.similarity