fix: honor dashscope embedding batch limit
This commit is contained in:
@@ -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])
|
||||
|
||||
@@ -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",
|
||||
"查询向量化失败,请稍后重试",
|
||||
|
||||
Reference in New Issue
Block a user