From de5ad93524499cbaf1624c42f229353e540141c0 Mon Sep 17 00:00:00 2001 From: Kai Chappell Date: Tue, 3 Feb 2026 17:30:50 +0000 Subject: [PATCH] feat(metrics): add SemanticResult type --- src/veritext/metrics/__init__.py | 2 ++ src/veritext/metrics/results.py | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) 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