Spaces:
Sleeping
Sleeping
from fastapi import Depends, Request | |
from transformers import AutoModel, AutoModelForMaskedLM, AutoTokenizer | |
from app.infrastructure.repository.document_handeler_repository import ( | |
DocumentHandelerRepository, | |
) | |
from app.modules.denseEmbeddings.denseEmbeddings import DenseEmbeddings | |
from app.modules.documentHandeler.controllers.document_handeler_controller import ( | |
DocumentHandelerController, | |
) | |
from app.modules.documentHandeler.features.createEmbeddings_feature import ( | |
CreateEmbeddingsFeature, | |
) | |
from app.modules.documentHandeler.features.deleteDocument_feature import ( | |
DeleteDocumentFeature, | |
) | |
from app.modules.documentHandeler.features.getAllChunkedText_feature import ( | |
GetAllChunkedTextFeature, | |
) | |
from app.qdrant import QdrantConnectionDb | |
def get_qdrant_connection_db() -> QdrantConnectionDb: | |
return QdrantConnectionDb() | |
def get_document_handeler_repository( | |
qdrant_connection_db: QdrantConnectionDb = Depends(get_qdrant_connection_db), | |
): | |
return DocumentHandelerRepository(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_all_chunked_text_feature( | |
document_handeler_repository: DocumentHandelerRepository = Depends( | |
get_document_handeler_repository | |
), | |
): | |
return GetAllChunkedTextFeature(document_handeler_repository) | |
def get_create_embeddings_feature( | |
dense_embeddings: DenseEmbeddings = Depends(get_dense_embeddings), | |
document_handeler_repository: DocumentHandelerRepository = Depends( | |
get_document_handeler_repository | |
), | |
): | |
return CreateEmbeddingsFeature(dense_embeddings, document_handeler_repository) | |
def get_delete_document_feature( | |
document_handeler_repository: DocumentHandelerRepository = Depends( | |
get_document_handeler_repository | |
), | |
): | |
return DeleteDocumentFeature(document_handeler_repository) | |
def get_document_handeler_controller( | |
delete_document_feature: DeleteDocumentFeature = Depends( | |
get_delete_document_feature | |
), | |
create_embeddings_feature: CreateEmbeddingsFeature = Depends( | |
get_create_embeddings_feature | |
), | |
get_all_chunked_text_feature: GetAllChunkedTextFeature = Depends( | |
get_all_chunked_text_feature | |
), | |
): | |
return DocumentHandelerController( | |
delete_document_feature=delete_document_feature, | |
create_embeddings_feature=create_embeddings_feature, | |
get_all_chunked_text_feature=get_all_chunked_text_feature, | |
) | |
def get_create_embeddings_feature( | |
dense_embeddings: DenseEmbeddings = Depends(get_dense_embeddings), | |
document_handeler_repository: DocumentHandelerRepository = Depends( | |
get_document_handeler_repository | |
), | |
): | |
return CreateEmbeddingsFeature(dense_embeddings, document_handeler_repository) | |