From 52184aa00e91531825524a1a6ad0f8bccac2e684 Mon Sep 17 00:00:00 2001 From: gqt <3217233537@qq.com> Date: Mon, 13 Jul 2026 12:16:09 +0800 Subject: [PATCH] fix: honor dashscope embedding batch limit --- backend/src/kbqa/indexing/worker.py | 2 +- backend/src/kbqa/rag/embeddings.py | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/backend/src/kbqa/indexing/worker.py b/backend/src/kbqa/indexing/worker.py index 55e9774..81b6b89 100644 --- a/backend/src/kbqa/indexing/worker.py +++ b/backend/src/kbqa/indexing/worker.py @@ -119,7 +119,7 @@ class IndexWorker: await self._mark_failed(document_id, "INDEXING_FAILED", "文档索引失败,请重试") async def _embed_and_upsert(self, document_id: str, chunks: list[PreparedChunk]) -> bool: - batch_size = 20 + batch_size = 10 for start in range(0, len(chunks), batch_size): batch = chunks[start : start + batch_size] vectors = await self.embeddings.embed_documents([chunk.content for chunk in batch]) diff --git a/backend/src/kbqa/rag/embeddings.py b/backend/src/kbqa/rag/embeddings.py index 7534c72..5990a9d 100644 --- a/backend/src/kbqa/rag/embeddings.py +++ b/backend/src/kbqa/rag/embeddings.py @@ -1,8 +1,12 @@ +import logging + from langchain_openai import OpenAIEmbeddings from kbqa.api.errors import AppError from kbqa.config import Settings, validate_live_settings +logger = logging.getLogger(__name__) + class EmbeddingProvider: def __init__(self, settings: Settings) -> None: @@ -17,7 +21,7 @@ class EmbeddingProvider: base_url=self.settings.dashscope_base_url, model=self.settings.embedding_model, dimensions=self.settings.embedding_dim, - chunk_size=20, + chunk_size=10, max_retries=2, timeout=60.0, check_embedding_ctx_length=False, @@ -40,6 +44,7 @@ class EmbeddingProvider: except AppError: raise except Exception as exc: + logger.exception("Embedding document request failed error_type=%s", type(exc).__name__) raise AppError( "EMBEDDING_UPSTREAM_ERROR", "文档向量化失败,请稍后重试", @@ -54,6 +59,7 @@ class EmbeddingProvider: except AppError: raise except Exception as exc: + logger.exception("Embedding query request failed error_type=%s", type(exc).__name__) raise AppError( "EMBEDDING_UPSTREAM_ERROR", "查询向量化失败,请稍后重试",