28 lines
851 B
Python
28 lines
851 B
Python
"""
|
|
FILE: app/embeddings.py
|
|
DESCRIPTION: Lokaler Wrapper für SentenceTransformer Embeddings.
|
|
VERSION: 0.1.0
|
|
STATUS: Active (Bestätigung durch Aufrufer erforderlich)
|
|
DEPENDENCIES: app.config, sentence_transformers
|
|
LAST_ANALYSIS: 2025-12-15
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
from typing import List
|
|
from functools import lru_cache
|
|
|
|
from .config import get_settings
|
|
|
|
@lru_cache
|
|
def _load_model():
|
|
from sentence_transformers import SentenceTransformer
|
|
settings = get_settings()
|
|
model = SentenceTransformer(settings.MODEL_NAME, device="cpu")
|
|
return model
|
|
|
|
def embed_texts(texts: List[str]) -> list[list[float]]:
|
|
model = _load_model()
|
|
texts = [t if isinstance(t, str) else str(t) for t in texts]
|
|
vecs = model.encode(texts, normalize_embeddings=True, convert_to_numpy=False)
|
|
return [list(map(float, v)) for v in vecs]
|