from typing import Literal from injector import inject, singleton from pydantic import BaseModel, Field from private_gpt.components.embedding.embedding_component import EmbeddingComponent class Embedding(BaseModel): index: int object: Literal["embedding"] embedding: list[float] = Field(examples=[[0.0023064255, -0.009327292]]) @singleton class EmbeddingsService: @inject def __init__(self, embedding_component: EmbeddingComponent) -> None: self.embedding_model = embedding_component.embedding_model def texts_embeddings(self, texts: list[str]) -> list[Embedding]: texts_embeddings = self.embedding_model.get_text_embedding_batch(texts) return [ Embedding( index=texts_embeddings.index(embedding), object="embedding", embedding=embedding, ) for embedding in texts_embeddings ]