frimeet-api-nlp / tests /test_embeddings.py
AlleksDev's picture
Add: Bert
baaa888 unverified
Raw
History Blame
1.41 kB
from app.shared.nlp.embeddings.mock import MockEmbeddingProvider
from app.shared.nlp.embeddings.base import EmbeddingProvider
from app.shared.nlp.embeddings.cached import CachedEmbeddingProvider
from app.shared.cache.memory import SimpleTTLCache
def test_mock_embedding_provider_is_deterministic() -> None:
provider = MockEmbeddingProvider()
first = provider.embed_text("lugares tranquilos para cenar")
second = provider.embed_text("lugares tranquilos para cenar")
assert first == second
assert len(first) == provider.dimension
class RecordingBatchProvider(EmbeddingProvider):
def __init__(self) -> None:
self.batches: list[list[str]] = []
def embed_text(self, text: str) -> list[float]:
raise AssertionError("batch cache should use embed_batch for misses")
def embed_batch(self, texts: list[str]) -> list[list[float]]:
self.batches.append(list(texts))
return [[float(len(text))] for text in texts]
def test_cached_provider_batches_unique_misses_and_preserves_order() -> None:
inner = RecordingBatchProvider()
provider = CachedEmbeddingProvider(inner, SimpleTTLCache())
first = provider.embed_batch(["donas", "cafe", "donas"])
second = provider.embed_batch(["cafe", "parque"])
assert first == [[5.0], [4.0], [5.0]]
assert second == [[4.0], [6.0]]
assert inner.batches == [["donas", "cafe"], ["parque"]]