diff --git a/src/chat/knowledge/qa_manager.py b/src/chat/knowledge/qa_manager.py index 678aa4190..587775755 100644 --- a/src/chat/knowledge/qa_manager.py +++ b/src/chat/knowledge/qa_manager.py @@ -50,7 +50,7 @@ class QAManager: # 过滤阈值 # 考虑动态阈值:当存在显著数值差异的结果时,保留显著结果;否则,保留所有结果 relation_search_res = dyn_select_top_k(relation_search_res, 0.5, 1.0) - if relation_search_res[0][1] < global_config.lpmm_knowledge.qa_relation_threshold: + if not relation_search_res or relation_search_res[0][1] < global_config.lpmm_knowledge.qa_relation_threshold: # 未找到相关关系 logger.debug("未找到相关关系,跳过关系检索") relation_search_res = [] @@ -106,6 +106,11 @@ class QAManager: processed_result = await self.process_query(question) if processed_result is not None: query_res = processed_result[0] + # 检查查询结果是否为空 + if not query_res: + logger.debug("知识库查询结果为空,可能是知识库中没有相关内容") + return None + knowledge = [ ( self.embed_manager.paragraphs_embedding_store.store[res[0]].str, diff --git a/src/chat/knowledge/utils/dyn_topk.py b/src/chat/knowledge/utils/dyn_topk.py index eb40ef3a8..5304934f0 100644 --- a/src/chat/knowledge/utils/dyn_topk.py +++ b/src/chat/knowledge/utils/dyn_topk.py @@ -5,6 +5,10 @@ def dyn_select_top_k( score: List[Tuple[Any, float]], jmp_factor: float, var_factor: float ) -> List[Tuple[Any, float, float]]: """动态TopK选择""" + # 检查输入列表是否为空 + if not score: + return [] + # 按照分数排序(降序) sorted_score = sorted(score, key=lambda x: x[1], reverse=True)