File size: 708 Bytes
74d1e21
 
 
 
6df4ebe
 
74d1e21
 
6df4ebe
74d1e21
 
 
 
 
6df4ebe
74d1e21
 
 
 
 
 
 
 
 
 
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
import os
import numpy as np
from sentence_transformers import SentenceTransformer

_model = None


def _get_model():
    global _model
    if _model is None:
        name = os.getenv("EMBED_MODEL_NAME", "sentence-transformers/all-MiniLM-L6-v2")
        _model = SentenceTransformer(name)
    return _model


def embed_texts(texts):
    """Return L2-normalized embeddings as (N, D) float32 array."""
    if not texts:
        return np.zeros((0, 0), dtype="float32")
    model = _get_model()
    embs = model.encode(texts, show_progress_bar=False, convert_to_numpy=True)
    embs = embs.astype("float32")
    norms = np.linalg.norm(embs, axis=1, keepdims=True) + 1e-8
    embs = embs / norms
    return embs