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 getKnowledgePage(AiKnowledgePageReqVO pageReqVO) { return mapper.selectPage(pageReqVO); } @Override public List getEnabledKnowledgeList() { return mapper.selectListByStatus(CommonStatusEnum.ENABLE.getStatus()); } }