"""Abstract base class for vector database providers""" from abc import ABC, abstractmethod from typing import List, Dict, Any, Optional class VectorDBProvider(ABC): """Abstract base class for vector database implementations""" @abstractmethod def initialize(self, config: Dict[str, Any]) -> None: """Initialize database connection""" pass @abstractmethod def add_vectors( self, vectors: List[List[float]], ids: List[str], metadata: List[Dict[str, Any]], ) -> bool: """Add vectors to database""" pass @abstractmethod def search( self, query_vector: List[float], top_k: int = 5, ) -> List[Dict[str, Any]]: """Search for similar vectors""" pass @abstractmethod def delete(self, doc_id: str) -> bool: """Delete document from database""" pass @abstractmethod def health_check(self) -> bool: """Check database connection health""" pass @abstractmethod def get_stats(self) -> Dict[str, Any]: """Get database statistics""" pass