CoolFace
Apppublic

Aigenthix/Graph_RAG

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
factory.py42 linesDownload Raw Back to vector_dbs
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