File size: 1,194 Bytes
d8dfb33 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | import numpy as np
from geometry_audit import GeometryAuditLog
from rrf_safe_similarity import stabilize_vector
class SavantWrapper:
def __init__(
self,
embedder,
r_min: float = 1e-4,
r_max: float = 1e4,
enable_audit: bool = True,
):
"""
embedder: callable(text) -> np.ndarray
"""
self.embedder = embedder
self.r_min = r_min
self.r_max = r_max
self.audit_log = GeometryAuditLog() if enable_audit else None
print("✅ SavantWrapper Initialized (Logarithmic Regularization Active).")
def encode(self, text: str) -> np.ndarray:
vec = self.embedder(text).astype(np.float64)
stabilized_vec, audit_event = stabilize_vector(
vec,
r_min=self.r_min,
r_max=self.r_max,
)
if audit_event and self.audit_log is not None:
self.audit_log.record(audit_event)
return stabilized_vec
def batch_encode(self, texts):
return np.vstack([self.encode(t) for t in texts])
def get_audit_log(self):
if self.audit_log is None:
return []
return self.audit_log.events
|