From c3e05045bb82b97f70443ed47f6db63a5df73a1e Mon Sep 17 00:00:00 2001 From: wangxiaolei Date: Mon, 13 Apr 2026 15:59:06 +0800 Subject: [PATCH] fix: fix qdrant delete size is too large (#35042) Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- .../tidb_on_qdrant/tidb_on_qdrant_vector.py | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/api/core/rag/datasource/vdb/tidb_on_qdrant/tidb_on_qdrant_vector.py b/api/core/rag/datasource/vdb/tidb_on_qdrant/tidb_on_qdrant_vector.py index 3c1d5e015f..587754e734 100644 --- a/api/core/rag/datasource/vdb/tidb_on_qdrant/tidb_on_qdrant_vector.py +++ b/api/core/rag/datasource/vdb/tidb_on_qdrant/tidb_on_qdrant_vector.py @@ -288,26 +288,27 @@ class TidbOnQdrantVector(BaseVector): if not ids: return - try: - filter = models.Filter( - must=[ - models.FieldCondition( - key="metadata.doc_id", - match=models.MatchAny(any=ids), - ), - ], - ) - self._client.delete( - collection_name=self._collection_name, - points_selector=FilterSelector(filter=filter), - ) - except UnexpectedResponse as e: - # Collection does not exist, so return - if e.status_code == 404: - return - # Some other error occurred, so re-raise the exception - else: - raise e + batch_size = 1000 + for i in range(0, len(ids), batch_size): + batch = ids[i : i + batch_size] + + try: + filter = models.Filter( + must=[ + models.FieldCondition( + key="metadata.doc_id", + match=models.MatchAny(any=batch), + ), + ], + ) + self._client.delete( + collection_name=self._collection_name, + points_selector=FilterSelector(filter=filter), + ) + except UnexpectedResponse as e: + # Collection does not exist, so return + if e.status_code != 404: + raise e def text_exists(self, id: str) -> bool: all_collection_name = []