Source code for langdash.models.sentence_transformers
from typing import List
import torch
from sentence_transformers import SentenceTransformer # type: ignore
from langdash.llm import EmbeddingLLM
from langdash.llm_session import LLMEmbeddingSession
[docs]class SentenceTransformersSession(
LLMEmbeddingSession["SentenceTransformersModel"]
):
"""
Session for sentence_transformers embedding model.
"""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._model = self._ld._get_model_internal(
self._llm, lambda llm: SentenceTransformer(llm._model_name)
)
@property
def embedding_size(self) -> int:
return self._model.get_sentence_embedding_dimension()
[docs] def embed(self, documents: List[str]) -> torch.Tensor:
return torch.tensor(self._model.encode(documents))
[docs]class SentenceTransformersModel(EmbeddingLLM[SentenceTransformersSession]):
"""
sentence_transformers embedding model.
"""
Session = SentenceTransformersSession
def __init__(self, model_name: str):
self._model_name = model_name