Spaces:
Sleeping
Sleeping
| """SHA-256 helpers for cache keys.""" | |
| import hashlib | |
| import numpy as np | |
| def sha256_key(*parts: str) -> str: | |
| """Create a SHA-256 hex digest from concatenated parts.""" | |
| combined = "||".join(parts) | |
| return hashlib.sha256(combined.encode("utf-8")).hexdigest() | |
| def embeddings_fingerprint(embeddings: np.ndarray) -> str: | |
| """SHA-256 of per-dimension mean vector. | |
| Matching Android's DimensionReducerAdapter fingerprint approach: | |
| computes the mean across all entries for each dimension, | |
| then hashes the resulting vector. | |
| Args: | |
| embeddings: (N, D) array of embedding vectors. | |
| Returns: | |
| 64-char hex digest string. | |
| """ | |
| mean_vec = embeddings.mean(axis=0).astype(np.float32) | |
| return hashlib.sha256(mean_vec.tobytes()).hexdigest() | |