From 1087f86259d9ab5fe9182590b8966db799da45f1 Mon Sep 17 00:00:00 2001 From: evo <446796145@qq.com> Date: Sun, 7 Dec 2025 22:32:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E9=98=BF=E9=87=8C?= =?UTF-8?q?=E5=90=91=E9=87=8F=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/ruoyi/domain/ChatModel.java | 2 +- .../java/org/ruoyi/domain/bo/ChatModelBo.java | 2 +- .../java/org/ruoyi/domain/vo/ChatModelVo.java | 2 +- .../ruoyi/chain/loader/TextFileLoader.java | 13 ++++--- .../impl/AliBaiLianBaseEmbedProvider.java | 36 +++++++++++++++++++ .../knowledge/KnowledgeInfoServiceImpl.java | 6 +++- 6 files changed, 50 insertions(+), 11 deletions(-) diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatModel.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatModel.java index 8e313eec..8eaeb4d2 100644 --- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatModel.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatModel.java @@ -84,7 +84,7 @@ public class ChatModel extends BaseEntity { /** * 模型供应商 */ - private String ProviderName; + private String providerName; /** * 备注 diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatModelBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatModelBo.java index 1a50f234..c149449a 100644 --- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatModelBo.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatModelBo.java @@ -88,7 +88,7 @@ public class ChatModelBo extends BaseEntity { /** * 模型供应商 */ - private String ProviderName; + private String providerName; /** * 备注 diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatModelVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatModelVo.java index 28c88379..40e43d11 100644 --- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatModelVo.java +++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatModelVo.java @@ -103,7 +103,7 @@ public class ChatModelVo implements Serializable { * 模型供应商 */ @ExcelProperty(value = "模型供应商") - private String ProviderName; + private String providerName; /** * 备注 diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/TextFileLoader.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/TextFileLoader.java index a9d84e11..7a3de89c 100644 --- a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/TextFileLoader.java +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/TextFileLoader.java @@ -9,7 +9,9 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.util.List; +import java.util.stream.Collectors; @Component @AllArgsConstructor @@ -19,17 +21,14 @@ public class TextFileLoader implements ResourceLoader { @Override public String getContent(InputStream inputStream) { - StringBuffer stringBuffer = new StringBuffer(); - try (InputStreamReader reader = new InputStreamReader(inputStream, "UTF-8"); + String stringBuffer = ""; + try (InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8); BufferedReader bufferedReader = new BufferedReader(reader)) { - String line; - while ((line = bufferedReader.readLine()) != null) { - stringBuffer.append(line).append("\n"); - } + stringBuffer = bufferedReader.lines().collect(Collectors.joining()); } catch (IOException e) { e.printStackTrace(); } - return stringBuffer.toString(); + return stringBuffer; } @Override diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/embedding/impl/AliBaiLianBaseEmbedProvider.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/embedding/impl/AliBaiLianBaseEmbedProvider.java index 30bbad2a..ee5584ca 100644 --- a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/embedding/impl/AliBaiLianBaseEmbedProvider.java +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/embedding/impl/AliBaiLianBaseEmbedProvider.java @@ -1,8 +1,17 @@ package org.ruoyi.embedding.impl; +import dev.langchain4j.community.model.dashscope.QwenEmbeddingModel; +import dev.langchain4j.data.embedding.Embedding; +import dev.langchain4j.data.segment.TextSegment; +import dev.langchain4j.model.output.Response; +import org.ruoyi.domain.vo.ChatModelVo; +import org.ruoyi.embedding.model.ModalityType; import org.springframework.stereotype.Component; +import java.util.List; +import java.util.Set; + /** * @Author: Robust_H * @Date: 2025-09-30-下午3:00 @@ -11,4 +20,31 @@ import org.springframework.stereotype.Component; @Component("alibailian") public class AliBaiLianBaseEmbedProvider extends OpenAiEmbeddingProvider { + + private ChatModelVo chatModelVo; + + @Override + public void configure(ChatModelVo config) { + this.chatModelVo = config; + } + + @Override + public Set getSupportedModalities() { + return Set.of(); + } + + @Override + public Response> embedAll(List textSegments) { + return QwenEmbeddingModel.builder() + // todo 测试 后面要改 +// .baseUrl(chatModelVo.getApiHost()) + .apiKey(chatModelVo.getApiKey()) + .modelName(chatModelVo.getModelName()) + + .dimension(1024) +// .dimension(chatModelVo.getDimension()) + .build() + .embedAll(textSegments); + } + } diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/knowledge/KnowledgeInfoServiceImpl.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/knowledge/KnowledgeInfoServiceImpl.java index 40fab0b2..cb2ae77e 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/knowledge/KnowledgeInfoServiceImpl.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/knowledge/KnowledgeInfoServiceImpl.java @@ -254,7 +254,7 @@ public class KnowledgeInfoServiceImpl implements IKnowledgeInfoService { check(knowledgeInfo); map.put("kid", knowledgeInfo.getKid()); // 删除向量数据 - vectorStoreService.removeById(String.valueOf(knowledgeInfo.getId()), knowledgeInfo.getVectorModelName()); + vectorStoreService.removeById(knowledgeInfo.getKid(), knowledgeInfo.getVectorModelName()); // 删除附件和知识片段 fragmentMapper.deleteByMap(map); attachMapper.deleteByMap(map); @@ -337,6 +337,10 @@ public class KnowledgeInfoServiceImpl implements IKnowledgeInfoService { */ public void check(KnowledgeInfo knowledgeInfo) { LoginUser loginUser = LoginHelper.getLoginUser(); + // 超级管理员可以删除所有知识库 + if (Long.valueOf(1).equals(loginUser.getUserId())) { + return; + } if (!knowledgeInfo.getUid().equals(loginUser.getUserId())) { throw new SecurityException("权限不足"); }