File size: 1,270 Bytes
5a67683
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
28
29
30
31
32
33
34
35
36
37
38
39
import logging

from llama_index import MockEmbedding
from llama_index.embeddings.base import BaseEmbedding

from app._config import settings
from app.enums import EmbeddingMode
from app.paths import models_cache_path

logger = logging.getLogger(__name__)

MOCK_EMBEDDING_DIM = 1536


class EmbeddingComponent:
    embedding_model: BaseEmbedding

    def __init__(self) -> None:
        embedding_mode = settings.EMBEDDING_MODE
        logger.info("Initializing the embedding model in mode=%s", embedding_mode)
        match embedding_mode:
            case EmbeddingMode.OPENAI:
                from llama_index import OpenAIEmbedding

                self.embedding_model = OpenAIEmbedding(api_key=settings.OPENAI_API_KEY)

            case EmbeddingMode.MOCK:
                # Not a random number, is the dimensionality used by
                # the default embedding model
                self.embedding_model = MockEmbedding(MOCK_EMBEDDING_DIM)

            case EmbeddingMode.LOCAL:
                from llama_index.embeddings import HuggingFaceEmbedding

                self.embedding_model = HuggingFaceEmbedding(
                    model_name=settings.LOCAL_HF_EMBEDDING_MODEL_NAME,
                    cache_folder=str(models_cache_path),
                )