From 6a60d02263061ed5d1f69c90f281cebd770bd768 Mon Sep 17 00:00:00 2001 From: ZhenYi <434836402@qq.com> Date: Wed, 29 Apr 2026 15:35:22 +0800 Subject: [PATCH] fix(qdrant): reject empty vectors in upsert_points Prevent Qdrant from rejecting entire batches when any point has an empty vector. Log error with count before failing. --- libs/agent/embed/qdrant.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libs/agent/embed/qdrant.rs b/libs/agent/embed/qdrant.rs index 0c254ca..76d516c 100644 --- a/libs/agent/embed/qdrant.rs +++ b/libs/agent/embed/qdrant.rs @@ -89,6 +89,16 @@ impl QdrantClient { return Ok(()); } + // Reject empty vectors — they cause Qdrant to reject the entire batch + let empty_vectors = points.iter().filter(|p| p.vector.is_empty()).count(); + if empty_vectors > 0 { + tracing::error!(empty_count = empty_vectors, total = points.len(), "upsert_points: REJECTING points with empty vectors"); + return Err(crate::AgentError::Qdrant(format!( + "refusing to upsert {} points with empty vectors", + empty_vectors + ))); + } + let collection_name = Self::collection_name(&points[0].payload.entity_type); self.upsert_to_collection(&collection_name, points).await }