Aigenthix/Graph_RAG
0
1"""Vector database factory pattern"""2 3from typing import Dict, Any4from .base import VectorDBProvider5from .chroma_db import ChromaDB6import logging7 8logger = logging.getLogger(__name__)9 10 11class VectorDBFactory:12 """Factory for creating vector database instances"""13 14 _providers = {15 "chroma": ChromaDB,16 }17 18 @staticmethod19 def create(db_type: str, config: Dict[str, Any]) -> VectorDBProvider:20 """Create a vector database provider instance"""21 if db_type not in VectorDBFactory._providers:22 available = ", ".join(VectorDBFactory._providers.keys())23 raise ValueError(f"Unknown database type '{db_type}'. Available: {available}")24 25 provider_class = VectorDBFactory._providers[db_type]26 provider = provider_class()27 provider.initialize(config)28 29 logger.info(f"Created {db_type} vector database provider")30 return provider31 32 @staticmethod33 def register(db_type: str, provider_class: type) -> None:34 """Register a new vector database provider"""35 VectorDBFactory._providers[db_type] = provider_class36 logger.info(f"Registered vector database provider: {db_type}")37 38 @staticmethod39 def available_providers() -> list:40 """Get list of available providers"""41 return list(VectorDBFactory._providers.keys())42 