From a27f12a6cbea2c484acfd3564a1b3793e1ca20eb Mon Sep 17 00:00:00 2001 From: weitong Date: Fri, 15 May 2026 19:52:51 +0800 Subject: [PATCH] =?UTF-8?q?=E9=AA=8C=E8=AF=81=E5=AE=8C=E6=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 3 +++ config/config.yaml | 1 + internal/config/config.go | 26 +++++++++++++++++++++----- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/.env.example b/.env.example index b35b340e..67c8863f 100644 --- a/.env.example +++ b/.env.example @@ -512,3 +512,6 @@ DOCREADER_TRANSPORT=grpc # 用于OIDC用于信息中提取用户数据 # OIDC_USER_INFO_MAPPING_USER_NAME=name # OIDC_USER_INFO_MAPPING_EMAIL=email + +# Document processing task timeout. Large files may need more than Asynq's default 30m. +# WEKNORA_DOCUMENT_PROCESS_TIMEOUT=2h diff --git a/config/config.yaml b/config/config.yaml index 48209531..c6b69f3c 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -42,6 +42,7 @@ knowledge_base: chunk_size: 512 chunk_overlap: 50 split_markers: ["\n\n", "\n", "。"] + document_process_timeout: 2h image_processing: enable_multimodal: true diff --git a/internal/config/config.go b/internal/config/config.go index 6da56e90..4b851e75 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -154,11 +154,12 @@ type ServerConfig struct { // KnowledgeBaseConfig 知识库配置 type KnowledgeBaseConfig struct { - ChunkSize int `yaml:"chunk_size" json:"chunk_size"` - ChunkOverlap int `yaml:"chunk_overlap" json:"chunk_overlap"` - SplitMarkers []string `yaml:"split_markers" json:"split_markers"` - KeepSeparator bool `yaml:"keep_separator" json:"keep_separator"` - ImageProcessing *ImageProcessingConfig `yaml:"image_processing" json:"image_processing"` + ChunkSize int `yaml:"chunk_size" json:"chunk_size"` + ChunkOverlap int `yaml:"chunk_overlap" json:"chunk_overlap"` + SplitMarkers []string `yaml:"split_markers" json:"split_markers"` + KeepSeparator bool `yaml:"keep_separator" json:"keep_separator"` + ImageProcessing *ImageProcessingConfig `yaml:"image_processing" json:"image_processing"` + DocumentProcessTimeout time.Duration `yaml:"document_process_timeout" json:"document_process_timeout"` } // ImageProcessingConfig 图像处理配置 @@ -434,6 +435,7 @@ func LoadConfig() (*Config, error) { // Validate configuration values applyOIDCEnvOverrides(&cfg) applyAgentEnvOverrides(&cfg) + applyKnowledgeBaseEnvOverrides(&cfg) if err := ValidateConfig(&cfg); err != nil { return nil, err @@ -561,6 +563,20 @@ func applyOIDCEnvOverrides(cfg *Config) { } } +func applyKnowledgeBaseEnvOverrides(cfg *Config) { + if cfg.KnowledgeBase == nil { + cfg.KnowledgeBase = &KnowledgeBaseConfig{} + } + if cfg.KnowledgeBase.DocumentProcessTimeout <= 0 { + cfg.KnowledgeBase.DocumentProcessTimeout = 2 * time.Hour + } + if value := strings.TrimSpace(os.Getenv("WEKNORA_DOCUMENT_PROCESS_TIMEOUT")); value != "" { + if d, err := time.ParseDuration(value); err == nil { + cfg.KnowledgeBase.DocumentProcessTimeout = d + } + } +} + func applyAgentEnvOverrides(cfg *Config) { if cfg.Agent == nil { cfg.Agent = &AgentConfig{}