知识库

This commit is contained in:
ire 2025-02-11 10:53:27 +08:00
parent 7cbe08a892
commit 974aaaf632
8 changed files with 76 additions and 21 deletions

View File

@ -25,4 +25,6 @@ public class ChatReqVO {
private String uuid;
@Schema(description = "系统提示语")
private String systemPrompt;
@Schema(description = "知识库id")
private Long knowledgeId;
}

View File

@ -108,5 +108,7 @@ public class LLMBackendProperties {
*/
private String embed;
private String embedQuery;
private String checkFileList;
}

View File

@ -1,47 +1,44 @@
package cn.iocoder.yudao.module.llm.service.conversation;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.http.HttpUtils;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.llm.controller.admin.application.vo.ApplicationRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.application.vo.ApplicationSaveReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.conversation.vo.ChatReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.conversation.vo.ChatRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.conversation.vo.ConversationPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.conversation.vo.ConversationSaveReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.datarefluxdata.vo.DataRefluxDataSaveReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.PromptTemplatesRespVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.basemodel.BaseModelDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.conversation.ConversationDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.knowledgedocuments.KnowledgeDocumentsDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelservice.ModelServiceDO;
import cn.iocoder.yudao.module.llm.dal.mysql.conversation.ConversationMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.knowledgedocuments.KnowledgeDocumentsMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.modelservice.ModelServiceMapper;
import cn.iocoder.yudao.module.llm.framework.backend.config.LLMBackendProperties;
import cn.iocoder.yudao.module.llm.service.application.ApplicationService;
import cn.iocoder.yudao.module.llm.service.basemodel.BaseModelService;
import cn.iocoder.yudao.module.llm.service.datarefluxdata.DataRefluxDataService;
import cn.iocoder.yudao.module.llm.service.http.ModelService;
import cn.iocoder.yudao.module.llm.service.http.vo.ModelCompletionsReqVO;
import cn.iocoder.yudao.module.llm.service.http.vo.ModelCompletionsRespVO;
import cn.iocoder.yudao.module.llm.service.http.vo.TextToImageReqVo;
import cn.iocoder.yudao.module.llm.service.http.vo.TextToImageRespVo;
import cn.iocoder.yudao.module.llm.service.http.vo.*;
import cn.iocoder.yudao.module.llm.service.prompttemplates.PromptTemplatesService;
import com.alibaba.excel.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.TimeUnit;
import cn.iocoder.yudao.module.llm.controller.admin.conversation.vo.*;
import cn.iocoder.yudao.module.llm.dal.dataobject.conversation.ConversationDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.llm.dal.mysql.conversation.ConversationMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.*;
import static cn.iocoder.yudao.module.llm.service.http.ModelService.DEFAULT_MODEL_ID;
import static cn.iocoder.yudao.module.llm.service.http.ModelService.PRIVATE_MODEL_ID;
/**
* 大模型对话记录 Service 实现类
@ -68,6 +65,10 @@ public class ConversationServiceImpl implements ConversationService {
private ApplicationService applicationService;
@Resource
private PromptTemplatesService promptTemplatesService;
@Resource
private KnowledgeDocumentsMapper knowledgeDocumentsMapper;
@Resource
private LLMBackendProperties llmBackendProperties;
// 聊天会话历史记录缓存Key
private final static String CHAT_HIStORY_REDIS_KEY = "llm:chat:history";
@ -203,6 +204,18 @@ public class ConversationServiceImpl implements ConversationService {
messages.add(message);
//如果知识库id不为null先去调用知识库
if(chatReqVO.getKnowledgeId() != null && chatReqVO.getKnowledgeId() != 0){
LambdaQueryWrapper<KnowledgeDocumentsDO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(KnowledgeDocumentsDO::getKnowledgeBaseId,chatReqVO.getKnowledgeId());
List<KnowledgeDocumentsDO> fileList = knowledgeDocumentsMapper.selectList(queryWrapper);
for (KnowledgeDocumentsDO knowledgeDocumentsDO : fileList) {
Long id = knowledgeDocumentsDO.getId();
KnowledgeRagEmbedQueryVO knowledgeRagEmbedQueryVO = new KnowledgeRagEmbedQueryVO();
knowledgeRagEmbedQueryVO.setFile_id(id.toString());
knowledgeRagEmbedQueryVO.setQuery(chatReqVO.getPrompt());
String result = HttpUtils.post(llmBackendProperties.getEmbedQuery(), null, JSON.toJSONString(knowledgeRagEmbedQueryVO));
}
}
ModelCompletionsReqVO modelCompletionsReqVO = new ModelCompletionsReqVO();
modelCompletionsReqVO.setMessages(messages);

View File

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.llm.service.http.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* @Description 知识库向量查询
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString(callSuper = true)
public class KnowledgeRagEmbedQueryVO {
/**
* 文件id
*/
private String file_id;
/**
* 文件名
*/
private String query;
/**
* 文件流
*/
private Integer k = 1;
}

View File

@ -250,7 +250,9 @@ public class ModelServiceServiceImpl implements ModelServiceService {
@Override
public List<ModelServiceDO> getModelServiceList() {
return modelServiceMapper.selectList();
LambdaQueryWrapper<ModelServiceDO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ModelServiceDO::getStatus,1);
return modelServiceMapper.selectList(queryWrapper);
}
@Override

View File

@ -283,9 +283,11 @@ llm:
text_to_image: http://36.103.199.104:5123/generate-image
check_file_list: http://36.103.199.104:5123/llm/finetuning/checkpoints?model_name=
# 知识库向量嵌入
embed: http://36.103.199.104:8123/embed
# 知识库查询
embed_query: http://36.103.199.104:8123/query
--- #################### iot相关配置 TODO 芋艿:再瞅瞅 ####################
iot:
emq:

View File

@ -325,6 +325,8 @@ llm:
text_to_image: http://36.103.199.104:5123/generate-image
# 知识库向量嵌入
embed: http://36.103.199.104:8123/embed
# 知识库查询
embed_query: http://36.103.199.104:8123/query
check_file_list: http://36.103.199.104:5123/llm/finetuning/checkpoints?model_name=

View File

@ -325,6 +325,8 @@ llm:
text_to_image: http://36.133.1.230:5123/generate-image
# 知识库向量嵌入
embed: http://36.103.199.104:8123/embed
# 知识库查询
embed_query: http://36.103.199.104:8123/query
check_file_list: http://36.103.199.104:5123/llm/finetuning/checkpoints?model_name=