diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/OpenAiVectorization.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/OpenAiVectorization.java index f15c4927..bc82dbff 100644 --- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/OpenAiVectorization.java +++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/OpenAiVectorization.java @@ -11,6 +11,8 @@ import org.ruoyi.common.chat.entity.embeddings.EmbeddingResponse; import org.ruoyi.common.chat.openai.OpenAiStreamClient; import org.ruoyi.knowledge.domain.vo.KnowledgeInfoVo; import org.ruoyi.knowledge.service.IKnowledgeInfoService; +import org.ruoyi.system.domain.SysModel; +import org.ruoyi.system.service.ISysModelService; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @@ -31,6 +33,9 @@ public class OpenAiVectorization implements Vectorization { @Lazy @Resource private LocalModelsVectorization localModelsVectorization; + @Lazy + @Resource + private ISysModelService sysModelService; @Getter private OpenAiStreamClient openAiStreamClient; @@ -40,9 +45,18 @@ public class OpenAiVectorization implements Vectorization { @Override public List> batchVectorization(List chunkList, String kid) { List> vectorList; - openAiStreamClient = chatConfig.getOpenAiStreamClient(); // 获取知识库信息 KnowledgeInfoVo knowledgeInfoVo = knowledgeInfoService.queryById(Long.valueOf(kid)); + if(knowledgeInfoVo == null){ + log.warn("知识库不存在:请查检ID {}",kid); + vectorList=new ArrayList<>(); + vectorList.add(new ArrayList<>()); + return vectorList; + } + SysModel sysModel = sysModelService.selectModelByName(knowledgeInfoVo.getVectorModel()); + String apiHost= sysModel.getApiHost(); + String apiKey= sysModel.getApiKey(); + openAiStreamClient = chatConfig.createOpenAiStreamClient(apiHost,apiKey); Embedding embedding = buildEmbedding(chunkList, knowledgeInfoVo); EmbeddingResponse embeddings = openAiStreamClient.embeddings(embedding); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysModelServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysModelServiceImpl.java index 9ed3bd1f..d48ac6de 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysModelServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysModelServiceImpl.java @@ -63,6 +63,7 @@ public class SysModelServiceImpl implements ISysModelService { lqw.like(StringUtils.isNotBlank(bo.getModelShow()), SysModel::getModelShow, bo.getModelShow()); lqw.eq(StringUtils.isNotBlank(bo.getModelDescribe()), SysModel::getModelDescribe, bo.getModelDescribe()); lqw.eq(StringUtils.isNotBlank(bo.getModelType()), SysModel::getModelType, bo.getModelType()); + lqw.eq(StringUtils.isNotBlank(bo.getCategory()), SysModel::getCategory, bo.getCategory()); return lqw; }