File size: 1,397 Bytes
de388a4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
"""测试 embedder 模块."""

import pytest
from hermes_core.embedder import Embedder

pytestmark = pytest.mark.requires_embedder


class TestEmbedder:
    @pytest.fixture
    def embedder(self):
        return Embedder()

    def test_encode_returns_384_dim_vector(self, embedder):
        vec = embedder.encode("后端API开发")
        assert isinstance(vec, list)
        assert len(vec) == 384
        assert all(isinstance(v, float) for v in vec)

    def test_encode_batch_returns_same_count(self, embedder):
        texts = ["后端开发", "前端开发", "游戏开发"]
        vecs = embedder.encode_batch(texts)
        assert len(vecs) == 3
        assert all(len(v) == 384 for v in vecs)

    def test_similar_texts_have_high_similarity(self, embedder):
        a = embedder.encode("后端API开发")
        b = embedder.encode("后端服务开发")
        sim = embedder.cosine_similarity(a, b)
        assert sim > 0.5

    def test_different_texts_have_low_similarity(self, embedder):
        a = embedder.encode("后端API开发")
        b = embedder.encode("周末去哪玩")
        sim = embedder.cosine_similarity(a, b)
        assert sim < 0.5

    def test_identical_texts_have_similarity_one(self, embedder):
        a = embedder.encode("TypeScript")
        b = embedder.encode("TypeScript")
        sim = embedder.cosine_similarity(a, b)
        assert sim > 0.99