26 lines
951 B
Python
26 lines
951 B
Python
import pipmaster as pm # Pipmaster for dynamic library install
|
|
|
|
if not pm.is_installed("sentence_transformers"):
|
|
pm.install("sentence_transformers")
|
|
if not pm.is_installed("numpy"):
|
|
pm.install("numpy")
|
|
|
|
import numpy as np
|
|
from lightrag.utils import EmbeddingFunc
|
|
from sentence_transformers import SentenceTransformer
|
|
|
|
|
|
async def sentence_transformers_embed(
|
|
texts: list[str], model: SentenceTransformer
|
|
) -> np.ndarray:
|
|
async def inner_encode(texts: list[str], model: SentenceTransformer, embedding_dim: int = 1024):
|
|
return model.encode(
|
|
texts,
|
|
truncate_dim=embedding_dim,
|
|
convert_to_numpy=True,
|
|
convert_to_tensor=False,
|
|
show_progress_bar=False,
|
|
)
|
|
|
|
embedding_func = EmbeddingFunc(embedding_dim=model.get_sentence_embedding_dimension(), func=inner_encode, max_token_size=model.get_max_seq_length())
|
|
return await embedding_func(texts, model=model)
|