Fix created_at problem for Qdrant vector db

This commit is contained in:
yangdx
2025-05-02 16:38:35 +08:00
parent ce96947502
commit 6021796a61

View File

@@ -88,9 +88,14 @@ class QdrantVectorDBStorage(BaseVectorStorage):
logger.info(f"Inserting {len(data)} to {self.namespace}") logger.info(f"Inserting {len(data)} to {self.namespace}")
if not data: if not data:
return return
import time
current_time = int(time.time())
list_data = [ list_data = [
{ {
"id": k, "id": k,
"created_at": current_time,
**{k1: v1 for k1, v1 in v.items() if k1 in self.meta_fields}, **{k1: v1 for k1, v1 in v.items() if k1 in self.meta_fields},
} }
for k, v in data.items() for k, v in data.items()
@@ -137,7 +142,14 @@ class QdrantVectorDBStorage(BaseVectorStorage):
logger.debug(f"query result: {results}") logger.debug(f"query result: {results}")
return [{**dp.payload, "distance": dp.score} for dp in results] return [
{
**dp.payload,
"distance": dp.score,
"created_at": dp.payload.get("created_at")
}
for dp in results
]
async def index_done_callback(self) -> None: async def index_done_callback(self) -> None:
# Qdrant handles persistence automatically # Qdrant handles persistence automatically
@@ -298,8 +310,13 @@ class QdrantVectorDBStorage(BaseVectorStorage):
if not result: if not result:
return None return None
return result[0].payload # Ensure the result contains created_at field
payload = result[0].payload
if "created_at" not in payload:
payload["created_at"] = None
return payload
except Exception as e: except Exception as e:
logger.error(f"Error retrieving vector data for ID {id}: {e}") logger.error(f"Error retrieving vector data for ID {id}: {e}")
return None return None
@@ -326,8 +343,16 @@ class QdrantVectorDBStorage(BaseVectorStorage):
ids=qdrant_ids, ids=qdrant_ids,
with_payload=True, with_payload=True,
) )
return [point.payload for point in results] # Ensure each result contains created_at field
payloads = []
for point in results:
payload = point.payload
if "created_at" not in payload:
payload["created_at"] = None
payloads.append(payload)
return payloads
except Exception as e: except Exception as e:
logger.error(f"Error retrieving vector data for IDs {ids}: {e}") logger.error(f"Error retrieving vector data for IDs {ids}: {e}")
return [] return []