diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java index 0332c1a52..6dd2b114c 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java @@ -517,9 +517,16 @@ public class ConversationServiceImpl implements ConversationService { // 2. 遍历处理每个文档 for (KnowledgeDocumentsDO document : documentList) { ParagraphHitRateWordVO rateWordVO = processDocument(document, chatReqVO, knowledgeBase); - words.add(rateWordVO); + if (rateWordVO!=null){ + words.add(rateWordVO); + } + } + if (CollectionUtils.isEmpty(words)){ + paragraphHitRateListVO.setWordList(Collections.emptyList()); + paragraphHitRateListVO.setGroupId(""); + }else { + paragraphHitRateListVO.setWordList(words); } - paragraphHitRateListVO.setWordList(words); // 请求结果添加到 Redis,查询段落命中率 String redisKey = String.format("%s:%s", KNOWLEDGE_DOCUMENTS_REDIS_KEY, chatReqVO.getUuid()); @@ -567,7 +574,11 @@ public class ConversationServiceImpl implements ConversationService { log.info("[KnowledgeBase] 知识库请求结果:{}", response); paragraphHitRateListVO.setDocumentName(document.getDocumentName()); - paragraphHitRateListVO.setParagraphHitRate(parseEmbeddingResponse(response, knowledgeBase, chatReqVO.getUuid())); + List rateVOS = parseEmbeddingResponse(response, knowledgeBase, chatReqVO.getUuid()); + if (CollectionUtils.isNotEmpty(rateVOS)){ + return null; + } + paragraphHitRateListVO.setParagraphHitRate(rateVOS); } catch (Exception e) { log.warn("{} 文档[{}]处理异常: {}", "[KnowledgeBase]", document.getId(), e.getMessage()); // 单个文档失败不影响整体流程 @@ -616,6 +627,10 @@ public class ConversationServiceImpl implements ConversationService { String rateResult = df.format(rate); log.info("{} 命中率: {}", "[KnowledgeBase]", rateResult); + if (StringUtils.isBlank(rateResult)||Double.parseDouble(rateResult)<=0.0){ + return Collections.emptyList(); + } + if (StringUtils.isNotBlank(pageContent)) { knowledgeBase.append("\n[知识库内容] ").append(pageContent); log.info("{} 添加知识内容,长度: {}", "[KnowledgeBase]", pageContent.length());