faceverification / test /test_vectordb_integration.py
leandrodevai's picture
Sync from GitHub via hub-sync
c628352 verified
Raw
History Blame Contribute Delete
1.98 kB
import uuid
import numpy as np
import pytest
from faceverification.core.vectordb import VectorDB
pytestmark = pytest.mark.integration
def test_vectordb_adds_and_queries_embedding_with_real_chromadb():
db = VectorDB(
distance_metric="l2",
name_collection=f"test_faces_{uuid.uuid4().hex}",
)
stored_embedding = np.array([0.1, 0.2, 0.3])
query_embedding = np.array([0.11, 0.19, 0.31])
db.add_embedding(stored_embedding, {"name": "Ada"})
metadata, distance = db.query_embedding(
query_embedding,
threshold=0.1,
n_results=1,
)
assert metadata == {"name": "Ada"}
assert distance == pytest.approx(np.linalg.norm(query_embedding - stored_embedding))
def test_vectordb_raises_when_real_chromadb_collection_is_empty():
db = VectorDB(
distance_metric="l2",
name_collection=f"test_empty_faces_{uuid.uuid4().hex}",
)
with pytest.raises(ValueError, match="Add a person before verifying faces"):
db.query_embedding(np.array([0.1, 0.2, 0.3]), threshold=0.1, n_results=1)
def test_vectordb_persists_embeddings_between_instances(tmp_path):
persist_directory = tmp_path / "chroma"
collection_name = f"test_persistent_faces_{uuid.uuid4().hex}"
stored_embedding = np.array([0.1, 0.2, 0.3])
query_embedding = np.array([0.11, 0.19, 0.31])
first_db = VectorDB(
distance_metric="l2",
name_collection=collection_name,
persist_directory=str(persist_directory),
)
first_db.add_embedding(stored_embedding, {"name": "Ada"})
second_db = VectorDB(
distance_metric="l2",
name_collection=collection_name,
persist_directory=str(persist_directory),
)
metadata, distance = second_db.query_embedding(
query_embedding,
threshold=0.1,
n_results=1,
)
assert metadata == {"name": "Ada"}
assert distance == pytest.approx(np.linalg.norm(query_embedding - stored_embedding))