SuZeAI commited on
Commit
27e079c
·
1 Parent(s): 437ffc0

feat: add Qdrant configuration and handle disabled state in QdrantService

Browse files
app/core/config.py CHANGED
@@ -90,6 +90,7 @@ class Settings(BaseSettings):
90
 
91
 
92
  # Qdrant Vector DB
 
93
  QDRANT_HOST: str = "localhost"
94
  QDRANT_PORT: int = 6333
95
  QDRANT_URL: Optional[str] = None
 
90
 
91
 
92
  # Qdrant Vector DB
93
+ QDRANT_ENABLED: bool = False
94
  QDRANT_HOST: str = "localhost"
95
  QDRANT_PORT: int = 6333
96
  QDRANT_URL: Optional[str] = None
app/services/qdrant_client.py CHANGED
@@ -7,6 +7,11 @@ import uuid
7
 
8
  class QdrantService:
9
  def __init__(self):
 
 
 
 
 
10
  if settings.QDRANT_URL:
11
  self.client = QdrantClient(
12
  url=settings.QDRANT_URL,
@@ -18,7 +23,6 @@ class QdrantService:
18
  port=settings.QDRANT_PORT,
19
  api_key=settings.QDRANT_API_KEY
20
  )
21
- self.collection_name = "fashion_items"
22
  self._ensure_collection_exists()
23
 
24
  def _ensure_collection_exists(self):
@@ -38,6 +42,8 @@ class QdrantService:
38
  logging.error(f"Error initializing Qdrant: {e}")
39
 
40
  def upsert_vector(self, vector_id: uuid.UUID, vector: List[float], payload: Dict[str, Any]) -> bool:
 
 
41
  try:
42
  self.client.upsert(
43
  collection_name=self.collection_name,
@@ -55,6 +61,8 @@ class QdrantService:
55
  return False
56
 
57
  def search_similar(self, vector: List[float], limit: int = 10, filter_dict: Dict[str, Any] = None) -> List[Dict[str, Any]]:
 
 
58
  try:
59
  # Build filters if any
60
  query_filter = None
@@ -83,6 +91,8 @@ class QdrantService:
83
  return []
84
 
85
  def delete_vector(self, vector_id: uuid.UUID) -> bool:
 
 
86
  try:
87
  self.client.delete(
88
  collection_name=self.collection_name,
 
7
 
8
  class QdrantService:
9
  def __init__(self):
10
+ self.collection_name = "fashion_items"
11
+ self.client = None
12
+ if not settings.QDRANT_ENABLED:
13
+ logging.info("Qdrant is disabled (QDRANT_ENABLED=false); vector search will return empty results.")
14
+ return
15
  if settings.QDRANT_URL:
16
  self.client = QdrantClient(
17
  url=settings.QDRANT_URL,
 
23
  port=settings.QDRANT_PORT,
24
  api_key=settings.QDRANT_API_KEY
25
  )
 
26
  self._ensure_collection_exists()
27
 
28
  def _ensure_collection_exists(self):
 
42
  logging.error(f"Error initializing Qdrant: {e}")
43
 
44
  def upsert_vector(self, vector_id: uuid.UUID, vector: List[float], payload: Dict[str, Any]) -> bool:
45
+ if self.client is None:
46
+ return False
47
  try:
48
  self.client.upsert(
49
  collection_name=self.collection_name,
 
61
  return False
62
 
63
  def search_similar(self, vector: List[float], limit: int = 10, filter_dict: Dict[str, Any] = None) -> List[Dict[str, Any]]:
64
+ if self.client is None:
65
+ return []
66
  try:
67
  # Build filters if any
68
  query_filter = None
 
91
  return []
92
 
93
  def delete_vector(self, vector_id: uuid.UUID) -> bool:
94
+ if self.client is None:
95
+ return False
96
  try:
97
  self.client.delete(
98
  collection_name=self.collection_name,