refactor: 重构多模态配置检查逻辑,统一使用IsMultimodalEnabled方法并优化错误处理

This commit is contained in:
wizardchen
2025-12-03 13:27:00 +08:00
parent 313860bea4
commit eafa0cd80b
2 changed files with 24 additions and 14 deletions

View File

@@ -279,7 +279,7 @@ func (s *knowledgeService) CreateKnowledgeFromFile(ctx context.Context,
if enableMultimodel != nil {
enableMultimodelValue = *enableMultimodel
} else {
enableMultimodelValue = kb.VLMConfig.IsEnabled()
enableMultimodelValue = kb.IsMultimodalEnabled()
}
// Check question generation config
@@ -413,7 +413,7 @@ func (s *knowledgeService) CreateKnowledgeFromURL(ctx context.Context,
if enableMultimodel != nil {
enableMultimodelValue = *enableMultimodel
} else {
enableMultimodelValue = kb.VLMConfig.IsEnabled()
enableMultimodelValue = kb.IsMultimodalEnabled()
}
// Check question generation config
@@ -4155,7 +4155,7 @@ func (s *knowledgeService) triggerManualProcessing(ctx context.Context,
fileType := "md"
// 检查是否需要启用多模态(对于手动内容通常不需要,但保持一致性)
enableMultimodel := kb.VLMConfig.IsEnabled() && kb.StorageConfig.Provider != ""
enableMultimodel := kb.IsMultimodalEnabled() && kb.StorageConfig.Provider != ""
var vlmConfig *proto.VLMConfig
if enableMultimodel {
@@ -4411,20 +4411,10 @@ func (s *knowledgeService) ProcessDocument(ctx context.Context, t *asynq.Task) e
if err != nil {
logger.GetLogger(ctx).WithField("knowledge_id", knowledge.ID).
WithField("error", err).Errorf("processDocument build VLM config failed")
knowledge.ParseStatus = "failed"
knowledge.ErrorMessage = err.Error()
knowledge.UpdatedAt = time.Now()
s.repo.UpdateKnowledge(ctx, knowledge)
return nil
}
if vlmConfig == nil {
logger.GetLogger(ctx).WithField("knowledge_id", knowledge.ID).
Error("processDocument enable multimodal but VLM config missing")
knowledge.ParseStatus = "failed"
knowledge.ErrorMessage = "VLM 配置缺失"
knowledge.UpdatedAt = time.Now()
s.repo.UpdateKnowledge(ctx, knowledge)
return nil
Warn("processDocument enable multimodal but VLM config missing")
}
}

View File

@@ -101,6 +101,8 @@ type ChunkingConfig struct {
ChunkOverlap int `yaml:"chunk_overlap" json:"chunk_overlap"`
// Separators
Separators []string `yaml:"separators" json:"separators"`
// EnableMultimodal (deprecated, kept for backward compatibility with old data)
EnableMultimodal bool `yaml:"enable_multimodal,omitempty" json:"enable_multimodal,omitempty"`
}
// COSConfig represents the COS configuration
@@ -325,3 +327,21 @@ func (kb *KnowledgeBase) EnsureDefaults() {
kb.FAQConfig.QuestionIndexMode = FAQQuestionIndexModeCombined
}
}
// IsMultimodalEnabled 判断多模态是否启用(兼容新老版本配置)
// 新版本VLMConfig.IsEnabled()
// 老版本ChunkingConfig.EnableMultimodal
func (kb *KnowledgeBase) IsMultimodalEnabled() bool {
if kb == nil {
return false
}
// 新版本配置优先
if kb.VLMConfig.IsEnabled() {
return true
}
// 兼容老版本chunking_config 中的 enable_multimodal 字段
if kb.ChunkingConfig.EnableMultimodal {
return true
}
return false
}