| 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 | |