from loguru import logger from qdrant_client import QdrantClient from qdrant_client.http.exceptions import UnexpectedResponse from llm_engineering.settings import settings class QdrantDatabaseConnector: _instance: QdrantClient | None = None def __new__(cls, *args, **kwargs) -> QdrantClient: if cls._instance is None: try: if settings.USE_QDRANT_CLOUD: cls._instance = QdrantClient( url=settings.QDRANT_CLOUD_URL, api_key=settings.QDRANT_APIKEY, ) uri = settings.QDRANT_CLOUD_URL else: cls._instance = QdrantClient( host=settings.QDRANT_DATABASE_HOST, port=settings.QDRANT_DATABASE_PORT, ) uri = f"{settings.QDRANT_DATABASE_HOST}:{settings.QDRANT_DATABASE_PORT}" logger.info(f"Connection to Qdrant DB with URI successful: {uri}") except UnexpectedResponse: logger.exception( "Couldn't connect to Qdrant.", host=settings.QDRANT_DATABASE_HOST, port=settings.QDRANT_DATABASE_PORT, url=settings.QDRANT_CLOUD_URL, ) raise return cls._instance connection = QdrantDatabaseConnector()