From e03061c1053621659bbde2b13a681f56a112151a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=9F=E5=AD=90=E6=A7=AD?= <77519623+Kaedeser@users.noreply.github.com> Date: Fri, 9 Jan 2026 21:55:29 +0800 Subject: [PATCH 1/4] Enhance vectorizer config handling in project.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 解决issue719问题。原因应该是向量化器配置在校验/导入时没有拿到 type (或拿到的是空配置),于是框架退回去尝试按基类构造,触发 pyhocon 的缺键异常,最终包装成 invalid vectorizer config: 'No configuration setting found for key name' 。我已经做出修改同时兼容 vectorizer 和 vectorize_model 两种写法,并把维度写回两边,避免后续流程再读空: --- knext/command/sub_command/project.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/knext/command/sub_command/project.py b/knext/command/sub_command/project.py index d9e80c17a..02b218401 100644 --- a/knext/command/sub_command/project.py +++ b/knext/command/sub_command/project.py @@ -166,11 +166,18 @@ def create_project( llm_config_checker = LLMConfigChecker() vectorize_model_config_checker = VectorizeModelConfigChecker() llm_config = config.get("chat_llm", {}) - vectorize_model_config = config.get("vectorizer", {}) + vectorize_model_config = config.get("vectorizer", {}) or config.get( + "vectorize_model", {} + ) + if "vectorizer" not in config and "vectorize_model" in config: + config["vectorizer"] = config.get("vectorize_model", {}) try: llm_config_checker.check(json.dumps(llm_config)) dim = vectorize_model_config_checker.check(json.dumps(vectorize_model_config)) - config["vectorizer"]["vector_dimensions"] = dim + if "vectorizer" in config and isinstance(config["vectorizer"], dict): + config["vectorizer"]["vector_dimensions"] = dim + if "vectorize_model" in config and isinstance(config["vectorize_model"], dict): + config["vectorize_model"]["vector_dimensions"] = dim except Exception as e: click.secho(f"Error: {e}", fg="bright_red") sys.exit() From 6967b945289d325cb84586e06f59ace27a46fe17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=9F=E5=AD=90=E6=A7=AD?= <77519623+Kaedeser@users.noreply.github.com> Date: Thu, 29 Jan 2026 15:51:11 +0800 Subject: [PATCH 2/4] Fix according to the suggestions and resubmit. --- knext/command/sub_command/project.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knext/command/sub_command/project.py b/knext/command/sub_command/project.py index 02b218401..d18885ef4 100644 --- a/knext/command/sub_command/project.py +++ b/knext/command/sub_command/project.py @@ -170,7 +170,7 @@ def create_project( "vectorize_model", {} ) if "vectorizer" not in config and "vectorize_model" in config: - config["vectorizer"] = config.get("vectorize_model", {}) + config[“vectorizer”] = config[“vectorize_model”] try: llm_config_checker.check(json.dumps(llm_config)) dim = vectorize_model_config_checker.check(json.dumps(vectorize_model_config)) From 771b4cec534d71a5bd62e02a65c5a337607c031e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=9F=E5=AD=90=E6=A7=AD?= <77519623+Kaedeser@users.noreply.github.com> Date: Thu, 29 Jan 2026 15:52:30 +0800 Subject: [PATCH 3/4] repair --- knext/command/sub_command/project.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knext/command/sub_command/project.py b/knext/command/sub_command/project.py index d18885ef4..e32866a4c 100644 --- a/knext/command/sub_command/project.py +++ b/knext/command/sub_command/project.py @@ -170,7 +170,7 @@ def create_project( "vectorize_model", {} ) if "vectorizer" not in config and "vectorize_model" in config: - config[“vectorizer”] = config[“vectorize_model”] + config["vectorizer"] = config["vectorize_model"] try: llm_config_checker.check(json.dumps(llm_config)) dim = vectorize_model_config_checker.check(json.dumps(vectorize_model_config)) From 971621392a5772f5e24801abe3697cbf5aad6128 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=9F=E5=AD=90=E6=A7=AD?= <77519623+Kaedeser@users.noreply.github.com> Date: Thu, 29 Jan 2026 17:17:06 +0800 Subject: [PATCH 4/4] fix completed --- knext/command/sub_command/project.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/knext/command/sub_command/project.py b/knext/command/sub_command/project.py index e32866a4c..3d4eeb981 100644 --- a/knext/command/sub_command/project.py +++ b/knext/command/sub_command/project.py @@ -166,17 +166,24 @@ def create_project( llm_config_checker = LLMConfigChecker() vectorize_model_config_checker = VectorizeModelConfigChecker() llm_config = config.get("chat_llm", {}) - vectorize_model_config = config.get("vectorizer", {}) or config.get( - "vectorize_model", {} - ) - if "vectorizer" not in config and "vectorize_model" in config: - config["vectorizer"] = config["vectorize_model"] + vectorizer_config = config.get("vectorizer",{}) + vectorize_model_config = config.get("vectorize_model", {}) + if vectorizer_config: + vectorize_model_config = vectorizer_config + elif vectorize_model_config: + vectorizer_config = vectorize_model_config + else: + vectorizer_config = vectorize_model_config = {} + + if vectorizer_config or vectorize_model_config: + config["vectorizer"] = vectorizer_config + config["vectorize_model"] = vectorize_model_config try: llm_config_checker.check(json.dumps(llm_config)) - dim = vectorize_model_config_checker.check(json.dumps(vectorize_model_config)) - if "vectorizer" in config and isinstance(config["vectorizer"], dict): + dim = vectorize_model_config_checker.check(json.dumps(vectorizer_config)) + if isinstance(config.get("vectorizer"), dict): config["vectorizer"]["vector_dimensions"] = dim - if "vectorize_model" in config and isinstance(config["vectorize_model"], dict): + if isinstance(config.get("vectorize_model"), dict): config["vectorize_model"]["vector_dimensions"] = dim except Exception as e: click.secho(f"Error: {e}", fg="bright_red")