Files
2025-07-27 03:02:44 -05:00

64 lines
2.0 KiB
Python

"""Test embedding service."""
import pytest
from hanzo_memory.services.embeddings import EmbeddingService
class TestEmbeddingService:
"""Test embedding service."""
@pytest.fixture
def embedding_service(self):
"""Create embedding service."""
return EmbeddingService()
def test_embed_single(self, embedding_service):
"""Test single text embedding."""
text = "Hello, world!"
embedding = embedding_service.embed_single(text)
assert isinstance(embedding, list)
assert len(embedding) == 384 # BGE small dimension
assert all(isinstance(x, float) for x in embedding)
def test_embed_batch(self, embedding_service):
"""Test batch text embedding."""
texts = ["Hello", "World", "Test"]
embeddings = embedding_service.embed_batch(texts)
assert len(embeddings) == 3
assert all(len(emb) == 384 for emb in embeddings)
def test_compute_similarity_cosine(self, embedding_service):
"""Test cosine similarity computation."""
# Create simple test embeddings
query = [1.0, 0.0, 0.0]
embeddings = [
[1.0, 0.0, 0.0], # Same as query
[0.0, 1.0, 0.0], # Orthogonal
[-1.0, 0.0, 0.0], # Opposite
]
similarities = embedding_service.compute_similarity(
query, embeddings, metric="cosine"
)
assert len(similarities) == 3
assert similarities[0] > 0.99 # Very similar
assert abs(similarities[1]) < 0.01 # Orthogonal
assert similarities[2] < -0.99 # Opposite
def test_empty_batch(self, embedding_service):
"""Test embedding empty batch."""
embeddings = embedding_service.embed_batch([])
assert embeddings == []
def test_model_info(self, embedding_service):
"""Test getting model info."""
info = embedding_service.get_model_info()
assert info["model_name"] == "BAAI/bge-small-en-v1.5"
assert info["dimensions"] == 384
assert "loaded" in info