package cn.iocoder.yudao.module.ai.service.knowledge;
|
|
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.knowledge.AiKnowledgePageReqVO;
|
import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.knowledge.AiKnowledgeSaveReqVO;
|
import cn.iocoder.yudao.module.ai.dal.dataobject.knowledge.AiKnowledgeDO;
|
import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiModelDO;
|
import cn.iocoder.yudao.module.ai.dal.mysql.knowledge.AiKnowledgeMapper;
|
import cn.iocoder.yudao.module.ai.enums.model.AiModelTypeEnum;
|
import cn.iocoder.yudao.module.ai.service.model.AiModelService;
|
import jakarta.annotation.Resource;
|
import org.springframework.stereotype.Service;
|
|
import java.util.List;
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.module.ai.enums.ErrorCodeConstants.*;
|
|
@Service
|
public class AiKnowledgeServiceImpl implements AiKnowledgeService {
|
|
@Resource
|
private AiKnowledgeMapper mapper;
|
@Resource
|
private AiModelService modelService;
|
|
@Override
|
public Long createKnowledge(AiKnowledgeSaveReqVO createReqVO) {
|
AiModelDO embeddingModel = modelService.validateModel(createReqVO.getEmbeddingModelId());
|
if (!AiModelTypeEnum.EMBEDDING.getType().equals(embeddingModel.getType())) {
|
throw exception(MODEL_USE_TYPE_ERROR);
|
}
|
AiKnowledgeDO knowledge = BeanUtils.toBean(createReqVO, AiKnowledgeDO.class);
|
knowledge.setEmbeddingModel(embeddingModel.getModel());
|
if (knowledge.getTopK() == null) knowledge.setTopK(3);
|
if (knowledge.getSimilarityThreshold() == null) knowledge.setSimilarityThreshold(0.7);
|
mapper.insert(knowledge);
|
return knowledge.getId();
|
}
|
|
@Override
|
public void updateKnowledge(AiKnowledgeSaveReqVO updateReqVO) {
|
validateKnowledgeExists(updateReqVO.getId());
|
AiModelDO embeddingModel = modelService.validateModel(updateReqVO.getEmbeddingModelId());
|
if (!AiModelTypeEnum.EMBEDDING.getType().equals(embeddingModel.getType())) {
|
throw exception(MODEL_USE_TYPE_ERROR);
|
}
|
AiKnowledgeDO knowledge = BeanUtils.toBean(updateReqVO, AiKnowledgeDO.class);
|
knowledge.setEmbeddingModel(embeddingModel.getModel());
|
mapper.updateById(knowledge);
|
}
|
|
@Override
|
public void deleteKnowledge(Long id) {
|
validateKnowledgeExists(id);
|
mapper.deleteById(id);
|
}
|
|
@Override
|
public AiKnowledgeDO getKnowledge(Long id) {
|
return mapper.selectById(id);
|
}
|
|
@Override
|
public AiKnowledgeDO validateKnowledgeExists(Long id) {
|
AiKnowledgeDO knowledge = mapper.selectById(id);
|
if (knowledge == null) throw exception(KNOWLEDGE_NOT_EXISTS);
|
return knowledge;
|
}
|
|
@Override
|
public AiKnowledgeDO validateKnowledge(Long id) {
|
AiKnowledgeDO knowledge = validateKnowledgeExists(id);
|
if (CommonStatusEnum.isDisable(knowledge.getStatus())) throw exception(KNOWLEDGE_NOT_EXISTS);
|
return knowledge;
|
}
|
|
@Override
|
public PageResult<AiKnowledgeDO> getKnowledgePage(AiKnowledgePageReqVO pageReqVO) {
|
return mapper.selectPage(pageReqVO);
|
}
|
|
@Override
|
public List<AiKnowledgeDO> getEnabledKnowledgeList() {
|
return mapper.selectListByStatus(CommonStatusEnum.ENABLE.getStatus());
|
}
|
|
}
|