知识库初始化
This commit is contained in:
@@ -4,7 +4,6 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.bouncycastle.jcajce.provider.asymmetric.EXTERNAL;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.boot.CommandLineRunner;
|
||||
@@ -14,6 +13,7 @@ import org.xyzh.api.ai.dto.TbKnowledge;
|
||||
import org.xyzh.api.ai.service.KnowledgeService;
|
||||
import org.xyzh.api.system.service.SysConfigService;
|
||||
import org.xyzh.common.core.domain.ResultDomain;
|
||||
import org.xyzh.common.utils.id.IdUtil;
|
||||
|
||||
/**
|
||||
* @description 初始化客服系统必须的8个知识库,4个内部知识库,4个外部知识库,运行结束即销毁
|
||||
@@ -44,16 +44,13 @@ public class KnowledgeInit {
|
||||
List<TbKnowledge> knowledges = buildKnowledgeConfigs();
|
||||
int successCount = 0;
|
||||
int skipCount = 0;
|
||||
|
||||
for (TbKnowledge knowledge : knowledges) {
|
||||
if (checkKnowledgeExists(knowledge)) {
|
||||
logger.info("知识库已存在,跳过: {}", knowledge.getTitle());
|
||||
for(TbKnowledge knowledge : knowledges){
|
||||
if(!checkKnowledgeExists(knowledge.getKnowledgeId())){
|
||||
if(createKnowledge(knowledge)){
|
||||
successCount++;
|
||||
}
|
||||
}else{
|
||||
skipCount++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (createKnowledge(knowledge)) {
|
||||
successCount++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,6 +63,18 @@ public class KnowledgeInit {
|
||||
*/
|
||||
private List<TbKnowledge> buildKnowledgeConfigs() {
|
||||
List<TbKnowledge> knowledges = new ArrayList<>();
|
||||
// 从数据库获取知识库配置默认信息
|
||||
TbKnowledge baseKnowledge = new TbKnowledge();
|
||||
baseKnowledge.setDifyIndexingTechnique(sysConfigService.getStringConfig("dify.knowledge.indexing.tchnique"));
|
||||
baseKnowledge.setEmbeddingModel(sysConfigService.getStringConfig("dify.knowledge.embedding.model"));
|
||||
baseKnowledge.setEmbeddingModelProvider(sysConfigService.getStringConfig("dify.knowledge.embedding.model.provider"));
|
||||
baseKnowledge.setRerankingEnable(sysConfigService.getBooleanConfig("dify.knowledge.reranking.enable"));
|
||||
baseKnowledge.setRerankModel(sysConfigService.getStringConfig("dify.knowledge.rerank.model"));
|
||||
baseKnowledge.setRerankModelProvider(sysConfigService.getStringConfig("dify.knowledge.rerank.model.provider"));
|
||||
baseKnowledge.setRetrievalTopK(sysConfigService.getIntConfig("dify.knowledge.retrieval.top.k"));
|
||||
baseKnowledge.setRetrievalScoreThreshold(sysConfigService.getDoubleConfig("dify.knowledge.retrieval.score.threshold"));
|
||||
|
||||
|
||||
// 外部知识库
|
||||
TbKnowledge outerDevOperKnowledge = new TbKnowledge();
|
||||
outerDevOperKnowledge.setKnowledgeId("workcase_outer_device_operate");
|
||||
@@ -125,12 +134,29 @@ public class KnowledgeInit {
|
||||
knowledges.add(innerServChatKnowledge);
|
||||
|
||||
// 统一设置dify知识库相关参数,并设置service为workcase
|
||||
for(TbKnowledge knowledge: knowledges){
|
||||
knowledge.setService(SERVICE_WORKCASE);
|
||||
knowledge.setOptsn(IdUtil.getOptsn());
|
||||
// 从baseKnowledge同步知识库默认配置
|
||||
knowledge.setDifyIndexingTechnique(baseKnowledge.getDifyIndexingTechnique());
|
||||
knowledge.setEmbeddingModel(baseKnowledge.getEmbeddingModel());
|
||||
knowledge.setEmbeddingModelProvider(baseKnowledge.getEmbeddingModelProvider());
|
||||
knowledge.setRerankingEnable(baseKnowledge.getRerankingEnable());
|
||||
knowledge.setRerankModel(baseKnowledge.getRerankModel());
|
||||
knowledge.setRerankModelProvider(baseKnowledge.getRerankModelProvider());
|
||||
knowledge.setRetrievalTopK(baseKnowledge.getRetrievalTopK());
|
||||
knowledge.setRetrievalScoreThreshold(baseKnowledge.getRetrievalScoreThreshold());
|
||||
}
|
||||
|
||||
return knowledges;
|
||||
}
|
||||
|
||||
private boolean checkKnowledgeExists(TbKnowledge knowledge){
|
||||
return true;
|
||||
private boolean checkKnowledgeExists(String knowledgeId){
|
||||
ResultDomain<TbKnowledge> knowledge = knowledgeService.getKnowledgeById(knowledgeId);
|
||||
if(knowledge.getSuccess() && knowledge.getData() != null){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -138,7 +164,7 @@ public class KnowledgeInit {
|
||||
*/
|
||||
private boolean createKnowledge(TbKnowledge knowledge) {
|
||||
|
||||
ResultDomain<TbKnowledge> result = knowledgeService.createKnowledge(knowledge);
|
||||
ResultDomain<TbKnowledge> result = knowledgeService.createKnowledgeInternal(knowledge);
|
||||
|
||||
if (result.getSuccess()) {
|
||||
logger.info("创建知识库成功: {} [{}]", knowledge.getTitle(), knowledge.getCategory());
|
||||
|
||||
Reference in New Issue
Block a user