refactor(yudao-module-llm): 优化知识库文档处理逻辑

- 增加对 rateWordVO 和 words 列表的空值检查,避免空指针异常
- 在文档列表为空时,设置空的 wordList 和 groupId
- 优化 parseEmbeddingResponse 返回值处理,增加空值检查
- 添加对命中率结果的验证,避免无效值
This commit is contained in:
Liuyang 2025-03-08 10:13:21 +08:00
parent 95814e1f2b
commit 2d6d0bffe3

View File

@ -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<ParagraphHitRateVO> 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());