File size: 659 Bytes
87149fa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9d8bbd6
87149fa
 
 
 
 
 
 
 
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
"""Sentence embeddings via fastembed (ONNX runtime, no torch dependency).

Vectors come back L2-normalised, so a dot product is cosine similarity.
"""

from functools import lru_cache

import numpy as np

from config import get_settings


@lru_cache(maxsize=1)
def _model():
    from fastembed import TextEmbedding

    return TextEmbedding(get_settings(require_api_key=False).embedding_model)


def embed(texts) -> np.ndarray:
    """Embed a sequence of strings into a (n, dim) float32 matrix."""
    texts = list(texts)
    if not texts:
        return np.zeros((0, 0), dtype=np.float32)
    return np.asarray(list(_model().embed(texts)), dtype=np.float32)