AnuragShirke commited on
Commit
c72956b
·
1 Parent(s): d81eeb3

quadrnt related issue

Browse files
Files changed (2) hide show
  1. src/core/models.py +1 -3
  2. src/core/vector_store.py +34 -9
src/core/models.py CHANGED
@@ -17,9 +17,7 @@ class SourceDocument(BaseModel):
17
 
18
  class QueryResponse(BaseModel):
19
  answer: str
20
- sources: List[Dict[str, Any]]
21
- query: str
22
- timestamp: str
23
 
24
  class ErrorResponse(BaseModel):
25
  error: str
 
17
 
18
  class QueryResponse(BaseModel):
19
  answer: str
20
+ source_documents: List[Dict[str, Any]]
 
 
21
 
22
  class ErrorResponse(BaseModel):
23
  error: str
src/core/vector_store.py CHANGED
@@ -178,19 +178,44 @@ def search_vectors(client: QdrantClient, collection_name: str, query_vector, lim
178
  logger.info(f"Collection '{collection_name}' is empty")
179
  return []
180
 
181
- # Perform the search
182
- results = client.search(
183
- collection_name=collection_name,
184
- query_vector=query_vector,
185
- limit=limit,
186
- with_payload=True
187
- )
188
 
189
- logger.info(f"Found {len(results)} results in collection '{collection_name}'")
190
- return results
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
191
 
192
  except Exception as e:
193
  logger.error(f"Error searching collection '{collection_name}': {str(e)}")
 
 
 
194
  return []
195
 
196
  def get_collection_info(client: QdrantClient, collection_name: str) -> dict:
 
178
  logger.info(f"Collection '{collection_name}' is empty")
179
  return []
180
 
181
+ # Convert numpy array to list if needed
182
+ query_vector_list = query_vector.tolist() if hasattr(query_vector, 'tolist') else query_vector
 
 
 
 
 
183
 
184
+ # Qdrant Cloud uses the newer API (v1.7+)
185
+ # Use query_points which is the current method
186
+ try:
187
+ logger.debug(f"Attempting query_points on collection '{collection_name}'")
188
+ result = client.query_points(
189
+ collection_name=collection_name,
190
+ query=query_vector_list,
191
+ limit=limit,
192
+ with_payload=True
193
+ )
194
+ # Extract points from QueryResponse
195
+ results = result.points if hasattr(result, 'points') else result
196
+ logger.info(f"Found {len(results)} results using query_points in collection '{collection_name}'")
197
+ return results
198
+ except AttributeError as attr_err:
199
+ # Fallback to older search method for backward compatibility
200
+ logger.warning(f"query_points failed ({attr_err}), falling back to search method")
201
+ try:
202
+ results = client.search(
203
+ collection_name=collection_name,
204
+ query_vector=query_vector_list,
205
+ limit=limit,
206
+ with_payload=True
207
+ )
208
+ logger.info(f"Found {len(results)} results using search in collection '{collection_name}'")
209
+ return results
210
+ except Exception as search_err:
211
+ logger.error(f"Both query_points and search failed. search error: {search_err}")
212
+ raise
213
 
214
  except Exception as e:
215
  logger.error(f"Error searching collection '{collection_name}': {str(e)}")
216
+ logger.error(f"Error type: {type(e).__name__}")
217
+ import traceback
218
+ logger.error(f"Traceback: {traceback.format_exc()}")
219
  return []
220
 
221
  def get_collection_info(client: QdrantClient, collection_name: str) -> dict: