reactor:【AI 大模型】优化消息发送后,读取文档的逻辑,避免 N 次读取
This commit is contained in:
parent
3e8596ee4b
commit
04b8aa0422
|
@ -30,9 +30,9 @@ public interface AiKnowledgeSegmentMapper extends BaseMapperX<AiKnowledgeSegment
|
||||||
.orderByDesc(AiKnowledgeSegmentDO::getId));
|
.orderByDesc(AiKnowledgeSegmentDO::getId));
|
||||||
}
|
}
|
||||||
|
|
||||||
default List<AiKnowledgeSegmentDO> selectListByVectorIds(List<String> vectorIdList) {
|
default List<AiKnowledgeSegmentDO> selectListByVectorIds(List<String> vectorIds) {
|
||||||
return selectList(new LambdaQueryWrapperX<AiKnowledgeSegmentDO>()
|
return selectList(new LambdaQueryWrapperX<AiKnowledgeSegmentDO>()
|
||||||
.in(AiKnowledgeSegmentDO::getVectorId, vectorIdList)
|
.in(AiKnowledgeSegmentDO::getVectorId, vectorIds)
|
||||||
.orderByDesc(AiKnowledgeSegmentDO::getId));
|
.orderByDesc(AiKnowledgeSegmentDO::getId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -121,11 +121,11 @@ public class AiChatMessageServiceImpl implements AiChatMessageService {
|
||||||
String newContent = chatResponse.getResult().getOutput().getText();
|
String newContent = chatResponse.getResult().getOutput().getText();
|
||||||
chatMessageMapper.updateById(new AiChatMessageDO().setId(assistantMessage.getId()).setContent(newContent));
|
chatMessageMapper.updateById(new AiChatMessageDO().setId(assistantMessage.getId()).setContent(newContent));
|
||||||
// 3.4 响应结果
|
// 3.4 响应结果
|
||||||
|
Map<Long, AiKnowledgeDocumentDO> documentMap = knowledgeDocumentService.getKnowledgeDocumentMap(
|
||||||
|
convertSet(knowledgeSegments, AiKnowledgeSegmentSearchRespBO::getDocumentId));
|
||||||
List<AiChatMessageRespVO.KnowledgeSegment> segments = BeanUtils.toBean(knowledgeSegments,
|
List<AiChatMessageRespVO.KnowledgeSegment> segments = BeanUtils.toBean(knowledgeSegments,
|
||||||
AiChatMessageRespVO.KnowledgeSegment.class,
|
AiChatMessageRespVO.KnowledgeSegment.class, segment -> {
|
||||||
segment -> {
|
AiKnowledgeDocumentDO document = documentMap.get(segment.getDocumentId());
|
||||||
AiKnowledgeDocumentDO document = knowledgeDocumentService
|
|
||||||
.getKnowledgeDocument(segment.getDocumentId());
|
|
||||||
segment.setDocumentName(document != null ? document.getName() : null);
|
segment.setDocumentName(document != null ? document.getName() : null);
|
||||||
});
|
});
|
||||||
return new AiChatMessageSendRespVO()
|
return new AiChatMessageSendRespVO()
|
||||||
|
@ -172,12 +172,13 @@ public class AiChatMessageServiceImpl implements AiChatMessageService {
|
||||||
// 处理知识库的返回,只有首次才有
|
// 处理知识库的返回,只有首次才有
|
||||||
List<AiChatMessageRespVO.KnowledgeSegment> segments = null;
|
List<AiChatMessageRespVO.KnowledgeSegment> segments = null;
|
||||||
if (StrUtil.isEmpty(contentBuffer)) {
|
if (StrUtil.isEmpty(contentBuffer)) {
|
||||||
segments = BeanUtils.toBean(knowledgeSegments, AiChatMessageRespVO.KnowledgeSegment.class,
|
Map<Long, AiKnowledgeDocumentDO> documentMap = TenantUtils.executeIgnore(() ->
|
||||||
segment -> TenantUtils.executeIgnore(() -> {
|
knowledgeDocumentService.getKnowledgeDocumentMap(
|
||||||
AiKnowledgeDocumentDO document = knowledgeDocumentService
|
convertSet(knowledgeSegments, AiKnowledgeSegmentSearchRespBO::getDocumentId)));
|
||||||
.getKnowledgeDocument(segment.getDocumentId());
|
segments = BeanUtils.toBean(knowledgeSegments, AiChatMessageRespVO.KnowledgeSegment.class, segment -> {
|
||||||
|
AiKnowledgeDocumentDO document = documentMap.get(segment.getDocumentId());
|
||||||
segment.setDocumentName(document != null ? document.getName() : null);
|
segment.setDocumentName(document != null ? document.getName() : null);
|
||||||
}));
|
});
|
||||||
}
|
}
|
||||||
// 响应结果
|
// 响应结果
|
||||||
String newContent = chunk.getResult() != null ? chunk.getResult().getOutput().getText() : null;
|
String newContent = chunk.getResult() != null ? chunk.getResult().getOutput().getText() : null;
|
||||||
|
|
|
@ -67,13 +67,6 @@ public interface AiKnowledgeDocumentService {
|
||||||
*/
|
*/
|
||||||
void updateKnowledgeDocumentStatus(AiKnowledgeDocumentUpdateStatusReqVO reqVO);
|
void updateKnowledgeDocumentStatus(AiKnowledgeDocumentUpdateStatusReqVO reqVO);
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新文档检索次数(增加 +1)
|
|
||||||
*
|
|
||||||
* @param ids 文档编号列表
|
|
||||||
*/
|
|
||||||
void updateKnowledgeDocumentRetrievalCountIncr(Collection<Long> ids);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除文档
|
* 删除文档
|
||||||
*
|
*
|
||||||
|
|
|
@ -161,14 +161,6 @@ public class AiKnowledgeDocumentServiceImpl implements AiKnowledgeDocumentServic
|
||||||
knowledgeSegmentService.deleteKnowledgeSegmentByDocumentId(id);
|
knowledgeSegmentService.deleteKnowledgeSegmentByDocumentId(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateKnowledgeDocumentRetrievalCountIncr(Collection<Long> ids) {
|
|
||||||
if (CollUtil.isEmpty(ids)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
knowledgeDocumentMapper.updateRetrievalCountIncr(ids);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AiKnowledgeDocumentDO validateKnowledgeDocumentExists(Long id) {
|
public AiKnowledgeDocumentDO validateKnowledgeDocumentExists(Long id) {
|
||||||
AiKnowledgeDocumentDO knowledgeDocument = knowledgeDocumentMapper.selectById(id);
|
AiKnowledgeDocumentDO knowledgeDocument = knowledgeDocumentMapper.selectById(id);
|
||||||
|
|
Loading…
Reference in New Issue