Commit
·
c72956b
1
Parent(s):
d81eeb3
quadrnt related issue
Browse files- src/core/models.py +1 -3
- 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 |
-
|
| 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 |
-
#
|
| 182 |
-
|
| 183 |
-
collection_name=collection_name,
|
| 184 |
-
query_vector=query_vector,
|
| 185 |
-
limit=limit,
|
| 186 |
-
with_payload=True
|
| 187 |
-
)
|
| 188 |
|
| 189 |
-
|
| 190 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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:
|