@@ -149,32 +149,6 @@ def is_chinese(text):
149149 chinese_pattern = re .compile (r"[\u4e00-\u9fff]+" )
150150 return bool (chinese_pattern .search (text ))
151151
152-
153- async def do_index_pipeline (query , qa_config , reporter ):
154- if "chat" not in qa_config or "index_list" not in qa_config ["chat" ]:
155- raise RuntimeError ("chat or index_list not found in qa_config." )
156- index_names = qa_config .get ("chat" , {}).get ("index_list" , [])
157- retriever_configs = []
158- for index_name in index_names :
159- try :
160- index_manager = KAGIndexManager .from_config (
161- {
162- "type" : index_name ,
163- "llm_config" : qa_config .get ("llm" , {}),
164- "vectorize_model_config" : qa_config .get ("vectorize_model" , {}),
165- }
166- )
167- retriever_configs += index_manager .build_retriever_config (
168- qa_config .get ("llm" , {}), qa_config .get ("vectorize_model" , {})
169- )
170- except Exception as e :
171- raise RuntimeError (f"not found index { index_name } " )
172- qa_config ["retrievers" ] = retriever_configs
173- pipeline_config = get_pipeline_conf ("index_pipeline" , qa_config )
174- pipeline = SolverPipelineABC .from_config (pipeline_config )
175- return await pipeline .ainvoke (query , reporter = reporter )
176-
177-
178152async def do_qa_pipeline (
179153 use_pipeline , query , qa_config , reporter , task_id , kb_project_ids
180154):
@@ -219,10 +193,12 @@ async def do_qa_pipeline(
219193 custom_pipeline_conf = copy .deepcopy (qa_config .get (use_pipeline , None ))
220194 else :
221195 custom_pipeline_conf = copy .deepcopy (qa_config .get ("solver_pipeline" , None ))
222-
223- self_cognition_conf = get_pipeline_conf ("self_cognition_pipeline" , qa_config )
224- self_cognition_pipeline = SolverPipelineABC .from_config (self_cognition_conf )
225- self_cognition_res = await self_cognition_pipeline .ainvoke (query , reporter = reporter )
196+ if use_pipeline not in ["index_pipeline" ]:
197+ self_cognition_conf = get_pipeline_conf ("self_cognition_pipeline" , qa_config )
198+ self_cognition_pipeline = SolverPipelineABC .from_config (self_cognition_conf )
199+ self_cognition_res = await self_cognition_pipeline .ainvoke (query , reporter = reporter )
200+ else :
201+ self_cognition_res = False
226202 if not self_cognition_res :
227203 if custom_pipeline_conf :
228204 pipeline_config = custom_pipeline_conf
@@ -262,7 +238,8 @@ async def qa(task_id, query, project_id, host_addr, app_id, params={}):
262238
263239 kb_configs = {}
264240 kb_project_ids = []
265-
241+ vectorize_model = {}
242+ global_index_set = main_config .get ("chat" , {}).get ("index_list" , [])
266243 if isinstance (main_config .get ("kb" ), list ):
267244 kbs = main_config ["kb" ]
268245 for kb in kbs :
@@ -293,12 +270,24 @@ async def qa(task_id, query, project_id, host_addr, app_id, params={}):
293270 kb_conf .update_conf ({"llm" : main_config ["llm" ]})
294271 if "vectorizer" in kb :
295272 kb_conf .update_conf ({"vectorize_model" : kb ["vectorizer" ]})
296-
273+ vectorize_model = kb ["vectorizer" ]
274+ if "index_list" not in kb and global_index_set :
275+ kb ["index_list" ] = global_index_set
297276 KAGConfigAccessor .set_task_config (kb_task_project_id , kb_conf )
298277 kb_configs [kb_project_id ] = (kb_task_project_id , kb_conf )
299-
300278 except Exception as e :
301279 logger .error (f"KB配置初始化失败: { str (e )} " , exc_info = True )
280+ if "vectorize_model" not in main_config .keys ():
281+ main_config ["vectorize_model" ] = vectorize_model
282+
283+ if vectorize_model :
284+ KAG_CONFIG .update_conf ({
285+ "vectorize_model" : vectorize_model
286+ })
287+ if main_config ["llm" ]:
288+ KAG_CONFIG .update_conf ({
289+ "llm" : main_config ["llm" ]
290+ })
302291 reporter_map = {
303292 "kag_thinker_pipeline" : "kag_open_spg_reporter"
304293 }
@@ -315,17 +304,15 @@ async def qa(task_id, query, project_id, host_addr, app_id, params={}):
315304
316305 try :
317306 await reporter .start ()
318- if use_pipeline == "index_pipeline" :
319- answer = await do_index_pipeline (query , main_config , reporter )
320- else :
321- answer = await do_qa_pipeline (
322- use_pipeline ,
323- query ,
324- main_config ,
325- reporter ,
326- task_id = task_id ,
327- kb_project_ids = kb_project_ids ,
328- )
307+ answer = await do_qa_pipeline (
308+ use_pipeline ,
309+ query ,
310+ main_config ,
311+ reporter ,
312+ task_id = task_id ,
313+ kb_project_ids = kb_project_ids ,
314+ )
315+
329316 if answer :
330317 reporter .add_report_line ("answer" , "Final Answer" , answer , "FINISH" )
331318
0 commit comments