-
Notifications
You must be signed in to change notification settings - Fork 4
Closed
Labels
backendBackend/API relatedBackend/API relatedgood first issueGood for newcomersGood for newcomersllmLLM providers and integrationLLM providers and integration
Milestone
Description
Problem
The codebase currently has two WatsonX implementations:
- Legacy:
backend/vectordbs/utils/watsonx.py- Standalone utility functions - Modern:
backend/rag_solution/generation/providers/watsonx.py- Factory pattern implementation
Analysis
The modern version (rag_solution/generation/providers/watsonx.py) is actively used in core services:
PipelineServiceusesLLMProviderFactory.get_provider()QuestionServiceuses the provider factory patternSystemInitializationServiceinitializes WatsonX models
The legacy version is still imported in 14+ files but not used in core application logic.
Files Using Legacy Implementation
Vector Store Implementations (5 files):
backend/vectordbs/weaviate_store.pybackend/vectordbs/chroma_store.pybackend/vectordbs/milvus_store.pybackend/vectordbs/elasticsearch_store.pybackend/vectordbs/pinecone_store.py
Data Processing (3 files):
backend/rag_solution/data_ingestion/pdf_processor.pybackend/rag_solution/data_ingestion/chunking.pybackend/rag_solution/doc_utils.py
Evaluation & Analysis (3 files):
backend/rag_solution/evaluation/evaluator.pybackend/rag_solution/evaluation/llm_as_judge_evals.pybackend/rag_solution/query_rewriting/query_rewriter.py
Tests & Documentation (3 files):
backend/tests/unit/test_settings_dependency_injection.pybackend/SETTINGS_MIGRATION_PLAN.mddocs/fixes/TEST_ISOLATION.md
Solution
- Update all imports from
vectordbs.utils.watsonxto useLLMProviderFactory - Replace direct function calls with provider pattern:
get_embeddings()→provider.get_embeddings()generate_text()→provider.generate_text()
- Update vector stores to use provider factory for embeddings
- Update data processing to use provider pattern for text generation
- Remove legacy file
backend/vectordbs/utils/watsonx.py
Benefits
- ✅ Consistent architecture - all LLM interactions use the same provider pattern
- ✅ Better testability - providers can be easily mocked via factory
- ✅ Database-driven configuration - no hardcoded settings dependencies
- ✅ Resource management - proper client lifecycle management
- ✅ Error handling - standardized LLM provider error handling
Priority
High - This cleanup will improve code consistency and maintainability.
Acceptance Criteria
- All 14 files updated to use modern provider pattern
- Legacy
vectordbs/utils/watsonx.pyfile removed - All tests pass
- No breaking changes to existing functionality
- Documentation updated to reflect new patterns
Metadata
Metadata
Assignees
Labels
backendBackend/API relatedBackend/API relatedgood first issueGood for newcomersGood for newcomersllmLLM providers and integrationLLM providers and integration