File size: 671 Bytes
1e8bb26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""Local embedding model wrapper (fastembed / ONNX — no torch dependency)."""
from __future__ import annotations

from functools import lru_cache
from typing import List

from .config import get_settings


@lru_cache
def _model():
    from fastembed import TextEmbedding

    settings = get_settings()
    return TextEmbedding(model_name=settings.embedding_model)


def embed_texts(texts: List[str]) -> List[List[float]]:
    if not texts:
        return []
    # fastembed returns numpy arrays (already L2-normalized for bge models).
    return [v.tolist() for v in _model().embed(texts)]


def embed_query(text: str) -> List[float]:
    return embed_texts([text])[0]