31 lines
937 B
Python
31 lines
937 B
Python
# tests/test_rag_embeddings.py
|
|
from genesis.rag.embeddings import FakeEmbedder, get_embedder
|
|
|
|
|
|
def test_fake_embedder_deterministic():
|
|
e = FakeEmbedder()
|
|
a = e.embed(["OrderController 创建订单"])[0]
|
|
b = e.embed(["OrderController 创建订单"])[0]
|
|
assert a == b
|
|
|
|
|
|
def test_fake_embedder_similar_closer_than_unrelated():
|
|
e = FakeEmbedder()
|
|
base = e.embed(["OrderController 处理创建订单请求"])[0]
|
|
sim = e.embed(["OrderController 保存订单到数据库"])[0]
|
|
dif = e.embed(["用户登录认证模块"])[0]
|
|
import math
|
|
|
|
def cos(x, y):
|
|
dot = sum(p * q for p, q in zip(x, y))
|
|
nx = math.sqrt(sum(p * p for p in x))
|
|
ny = math.sqrt(sum(q * q for q in y))
|
|
return dot / (nx * ny or 1.0)
|
|
|
|
assert cos(base, sim) > cos(base, dif)
|
|
|
|
|
|
def test_get_embedder_fake_engine_returns_fake():
|
|
e = get_embedder("fake")
|
|
assert e.__class__.__name__ == "FakeEmbedder"
|