fix: add _cosine dimension guard, fix return type annotation, add zero-vector test
This commit is contained in:
parent
276bdadb92
commit
5ea77da97d
2 changed files with 10 additions and 1 deletions
|
|
@ -45,7 +45,7 @@ def _config_file() -> Path:
|
|||
return _ROOT / "config" / "label_tool.yaml"
|
||||
|
||||
|
||||
def _load_config() -> dict:
|
||||
def _load_config() -> dict[str, Any]:
|
||||
f = _config_file()
|
||||
if not f.exists():
|
||||
return {}
|
||||
|
|
@ -73,6 +73,10 @@ def _ratings_path() -> Path:
|
|||
|
||||
|
||||
def _cosine(a: list[float], b: list[float]) -> float:
|
||||
if len(a) != len(b):
|
||||
raise ValueError(
|
||||
f"Embedding dimension mismatch: {len(a)} vs {len(b)}"
|
||||
)
|
||||
dot = sum(x * y for x, y in zip(a, b))
|
||||
mag_a = math.sqrt(sum(x * x for x in a))
|
||||
mag_b = math.sqrt(sum(x * x for x in b))
|
||||
|
|
|
|||
|
|
@ -48,3 +48,8 @@ def test_cosine_orthogonal():
|
|||
def test_cosine_opposite():
|
||||
from app.eval.embed_bench import _cosine
|
||||
assert _cosine([1.0, 0.0], [-1.0, 0.0]) == pytest.approx(-1.0)
|
||||
|
||||
|
||||
def test_cosine_zero_vector_returns_zero():
|
||||
from app.eval.embed_bench import _cosine
|
||||
assert _cosine([0.0, 0.0], [1.0, 0.0]) == pytest.approx(0.0)
|
||||
|
|
|
|||
Loading…
Reference in a new issue