File size: 1,219 Bytes
a34068e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import logging
from functools import lru_cache

from app.core.bm25 import BM25Index, get_bm25
from app.core.embedder import EmbedderService, get_embedder
from app.core.generator import AnswerGenerator
from app.core.llm import GeminiService, get_llm
from app.core.query_analyzer import QueryAnalyzer
from app.core.reranker import RerankerService, get_reranker
from app.core.retriever import HybridRetriever
from app.core.vectorstore import VectorStoreService, get_vectorstore

logger = logging.getLogger(__name__)


def dep_embedder() -> EmbedderService:
    return get_embedder()


def dep_vectorstore() -> VectorStoreService:
    return get_vectorstore()


def dep_bm25() -> BM25Index:
    return get_bm25()


def dep_reranker() -> RerankerService:
    return get_reranker()


def dep_llm() -> GeminiService:
    return get_llm()


@lru_cache
def dep_query_analyzer() -> QueryAnalyzer:
    return QueryAnalyzer()


def dep_retriever() -> HybridRetriever:
    return HybridRetriever(
        vectorstore=get_vectorstore(),
        bm25=get_bm25(),
        embedder=get_embedder(),
    )


def dep_generator() -> AnswerGenerator:
    return AnswerGenerator(
        llm=get_llm(),
        reranker=get_reranker(),
    )