@startuml backend class VectorDatabase { - chroma_client - collection + __init__(config: class VectorDatabaseConfig {}) + store_text_as_vector(df: pd.DataFrame) } class PDFExtractor { + __init__(config: class PDFExtractorConfig {}) + extract_text_from_pdf(pdf_path: str) } class GenerativeModel { - client + __init__(config: class GenerativeModelConfig {}) + generate_response(query: str) } class RAGApplicationConfig { + vector_db: VectorDatabase + pdf_extractor: PDFExtractor + generative_model: GenerativeModel } class DataPreparerConfig { + input_data_path: str + output_data_path: str + output_file: str + pdf_extractor: PDFExtractorConfig + vector_database: VectorDatabaseConfig + embedding_model: EmbeddingModelConfig } class RAGApplication { - vector_db - pdf_extractor - generative_model + __init__(config: class RAGApplicationConfig) + run(pdf_path: str, query: str) } @enduml