fix: honor dashscope embedding batch limit

This commit is contained in:
gqt
2026-07-13 12:16:09 +08:00
parent 6e3f4b8d04
commit 52184aa00e
2 changed files with 8 additions and 2 deletions
+1 -1
View File
@@ -119,7 +119,7 @@ class IndexWorker:
await self._mark_failed(document_id, "INDEXING_FAILED", "文档索引失败,请重试") await self._mark_failed(document_id, "INDEXING_FAILED", "文档索引失败,请重试")
async def _embed_and_upsert(self, document_id: str, chunks: list[PreparedChunk]) -> bool: 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): for start in range(0, len(chunks), batch_size):
batch = chunks[start : start + batch_size] batch = chunks[start : start + batch_size]
vectors = await self.embeddings.embed_documents([chunk.content for chunk in batch]) vectors = await self.embeddings.embed_documents([chunk.content for chunk in batch])
+7 -1
View File
@@ -1,8 +1,12 @@
import logging
from langchain_openai import OpenAIEmbeddings from langchain_openai import OpenAIEmbeddings
from kbqa.api.errors import AppError from kbqa.api.errors import AppError
from kbqa.config import Settings, validate_live_settings from kbqa.config import Settings, validate_live_settings
logger = logging.getLogger(__name__)
class EmbeddingProvider: class EmbeddingProvider:
def __init__(self, settings: Settings) -> None: def __init__(self, settings: Settings) -> None:
@@ -17,7 +21,7 @@ class EmbeddingProvider:
base_url=self.settings.dashscope_base_url, base_url=self.settings.dashscope_base_url,
model=self.settings.embedding_model, model=self.settings.embedding_model,
dimensions=self.settings.embedding_dim, dimensions=self.settings.embedding_dim,
chunk_size=20, chunk_size=10,
max_retries=2, max_retries=2,
timeout=60.0, timeout=60.0,
check_embedding_ctx_length=False, check_embedding_ctx_length=False,
@@ -40,6 +44,7 @@ class EmbeddingProvider:
except AppError: except AppError:
raise raise
except Exception as exc: except Exception as exc:
logger.exception("Embedding document request failed error_type=%s", type(exc).__name__)
raise AppError( raise AppError(
"EMBEDDING_UPSTREAM_ERROR", "EMBEDDING_UPSTREAM_ERROR",
"文档向量化失败,请稍后重试", "文档向量化失败,请稍后重试",
@@ -54,6 +59,7 @@ class EmbeddingProvider:
except AppError: except AppError:
raise raise
except Exception as exc: except Exception as exc:
logger.exception("Embedding query request failed error_type=%s", type(exc).__name__)
raise AppError( raise AppError(
"EMBEDDING_UPSTREAM_ERROR", "EMBEDDING_UPSTREAM_ERROR",
"查询向量化失败,请稍后重试", "查询向量化失败,请稍后重试",