Spaces:
Sleeping
Sleeping
| from fastapi import Depends, Request | |
| from transformers import (AutoModel, AutoModelForMaskedLM, AutoTokenizer, | |
| pipeline) | |
| from app.infrastructure.repository.query_search_repository import \ | |
| QuerySearchRepository | |
| from app.modules.denseEmbeddings.denseEmbeddings import DenseEmbeddings | |
| from app.modules.hybridSearcher.hybridSearcher import HybridSearcher | |
| from app.modules.querySearch.controllers.querySearch_controller import \ | |
| QuerySearchController | |
| from app.modules.querySearch.features.querySearch_feature import \ | |
| QuerySearchFeature | |
| from app.modules.questionAnswer.questionAnswer import QuestionAnswering | |
| from app.qdrant import QdrantConnectionDb | |
| def get_qdrant_connection_db() -> QdrantConnectionDb: | |
| return QdrantConnectionDb() | |
| def get_query_search_repository( | |
| qdrant_connection_db: QdrantConnectionDb = Depends(get_qdrant_connection_db), | |
| ): | |
| return QuerySearchRepository(qdrant_connection_db) | |
| def get_dense_model(request: Request) -> AutoModel: | |
| return request.scope["state"]["dense_model"] | |
| def get_sparse_model(request: Request) -> AutoModelForMaskedLM: | |
| return request.scope["state"]["sparse_model"] | |
| def get_dense_tokenizer(request: Request) -> AutoTokenizer: | |
| return request.scope["state"]["dense_tokenizer"] | |
| def get_sparse_tokenizer(request: Request) -> AutoTokenizer: | |
| return request.scope["state"]["sparse_tokenizer"] | |
| def get_dense_embeddings( | |
| dense_model: AutoModel = Depends(get_dense_model), | |
| dense_tokenizer: AutoTokenizer = Depends(get_dense_tokenizer), | |
| sparse_model: AutoModelForMaskedLM = Depends(get_sparse_model), | |
| sparse_tokenizer: AutoTokenizer = Depends(get_sparse_tokenizer), | |
| ): | |
| return DenseEmbeddings( | |
| dense_model=dense_model, | |
| dense_tokenizer=dense_tokenizer, | |
| sparse_model=sparse_model, | |
| sparse_tokenizer=sparse_tokenizer, | |
| ) | |
| def get_qa_pipeline(request: Request): | |
| return request.scope["state"]["qa_pipeline"] | |
| def get_question_ansering(qa_pipline: pipeline = Depends(get_qa_pipeline)): | |
| return QuestionAnswering(qa_pipline) | |
| def get_hybrid_searcher( | |
| dense_embeddings: DenseEmbeddings = Depends(get_dense_embeddings), | |
| query_search_repository: QuerySearchRepository = Depends( | |
| get_query_search_repository | |
| ), | |
| ): | |
| return HybridSearcher(dense_embeddings, query_search_repository) | |
| def get_query_search_feature( | |
| qa_pipeline: pipeline = Depends(get_qa_pipeline), | |
| hybrid_searcher: HybridSearcher = Depends(get_hybrid_searcher), | |
| question_answering: QuestionAnswering = Depends(get_question_ansering), | |
| ): | |
| return QuerySearchFeature(qa_pipeline, hybrid_searcher, question_answering) | |
| def get_query_search_controller( | |
| query_search_feature: QuerySearchFeature = Depends(get_query_search_feature), | |
| ): | |
| return QuerySearchController(query_search_feature) | |