9x25dillon commited on
Commit
07725a6
·
verified ·
1 Parent(s): 589abc6

Create adapters/hf_sentence_tfm_adapter.py

Browse files
Files changed (1) hide show
  1. adapters/hf_sentence_tfm_adapter.py +24 -0
adapters/hf_sentence_tfm_adapter.py ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # adapters/hf_sentence_tfm_adapter.py
2
+ import os, hashlib
3
+ from typing import List
4
+ from .base import BaseModelAdapter
5
+
6
+ class SentenceTransformerAdapter(BaseModelAdapter):
7
+ """
8
+ Offline-friendly deterministic embeddings using hashing.
9
+ Later: replace with sentence-transformers when you want real vectors.
10
+ """
11
+ def __init__(self, model_name="all-MiniLM-L6-v2"):
12
+ self.model_name = model_name
13
+ self.dim = int(os.getenv("EMBED_DIM", "384"))
14
+
15
+ def generate(self, prompt: str) -> str:
16
+ # not a text model; echo to keep pipeline moving
17
+ return f"[{self.model_name}] {prompt.strip()}"
18
+
19
+ def embed_text(self, text: str) -> List[float]:
20
+ import numpy as np
21
+ h = hashlib.sha1((self.model_name + "||" + text).encode()).digest()
22
+ seed = int.from_bytes(h[:8], "little")
23
+ rng = np.random.default_rng(seed)
24
+ return rng.standard_normal(self.dim).astype("float32").tolist()