diff --git a/astrbot/core/provider/sources/openai_embedding_source.py b/astrbot/core/provider/sources/openai_embedding_source.py index 126a41fdaf..9f87897ac8 100644 --- a/astrbot/core/provider/sources/openai_embedding_source.py +++ b/astrbot/core/provider/sources/openai_embedding_source.py @@ -70,7 +70,9 @@ def _embedding_kwargs(self) -> dict: kwargs = {} if "embedding_dimensions" in self.provider_config: try: - kwargs["dimensions"] = int(self.provider_config["embedding_dimensions"]) + dim_val = int(self.provider_config["embedding_dimensions"]) + if dim_val > 0: + kwargs["dimensions"] = dim_val except (ValueError, TypeError): logger.warning( f"embedding_dimensions in embedding configs is not a valid integer: '{self.provider_config['embedding_dimensions']}', ignored." diff --git a/astrbot/dashboard/services/knowledge_base_service.py b/astrbot/dashboard/services/knowledge_base_service.py index ad2121c9aa..77f8c6c6ba 100644 --- a/astrbot/dashboard/services/knowledge_base_service.py +++ b/astrbot/dashboard/services/knowledge_base_service.py @@ -304,9 +304,11 @@ async def create_kb(self, data: object) -> tuple[dict[str, Any], str]: ) try: vec = await provider.get_embedding("astrbot") - if len(vec) != provider.get_dim(): + actual_dim = len(vec) + configured_dim = provider.get_dim() + if configured_dim != 0 and actual_dim != configured_dim: raise ValueError( - f"嵌入向量维度不匹配,实际是 {len(vec)},然而配置是 {provider.get_dim()}", + f"嵌入向量维度不匹配,实际是 {actual_dim},然而配置是 {configured_dim}", ) except Exception as exc: raise KnowledgeBaseServiceError(f"测试嵌入模型失败: {exc!s}") from exc