From 58d92970a9129438b25f38c27b39e2ba4217f18e Mon Sep 17 00:00:00 2001 From: issac2e <90555819+issac2e@users.noreply.github.com> Date: Tue, 22 Jul 2025 08:21:41 +0800 Subject: [PATCH] Optimize tencent_vector knowledge base deletion error handling with batch processing support (#22726) Co-authored-by: liuchen15 Co-authored-by: crazywoola <427733928@qq.com> --- .../rag/datasource/vdb/tencent/tencent_vector.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/api/core/rag/datasource/vdb/tencent/tencent_vector.py b/api/core/rag/datasource/vdb/tencent/tencent_vector.py index 75afe0cdb8..84746d23ea 100644 --- a/api/core/rag/datasource/vdb/tencent/tencent_vector.py +++ b/api/core/rag/datasource/vdb/tencent/tencent_vector.py @@ -206,9 +206,19 @@ class TencentVector(BaseVector): def delete_by_ids(self, ids: list[str]) -> None: if not ids: return - self._client.delete( - database_name=self._client_config.database, collection_name=self.collection_name, document_ids=ids - ) + + total_count = len(ids) + batch_size = self._client_config.max_upsert_batch_size + batch = math.ceil(total_count / batch_size) + + for j in range(batch): + start_idx = j * batch_size + end_idx = min(total_count, (j + 1) * batch_size) + batch_ids = ids[start_idx:end_idx] + + self._client.delete( + database_name=self._client_config.database, collection_name=self.collection_name, document_ids=batch_ids + ) def delete_by_metadata_field(self, key: str, value: str) -> None: self._client.delete(