From ea09421b0e42e0f4aaefa307055afc4fb48d7522 Mon Sep 17 00:00:00 2001
From: ageerle <ageerle@163.com>
Date: 星期五, 07 三月 2025 09:56:15 +0800
Subject: [PATCH] 增加知识库配置属性

---
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/ResourceLoader.java             |    4 
 ruoyi-admin/src/main/java/org/ruoyi/controller/KnowledgeController.java                                      |    2 
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/bo/KnowledgeInfoBo.java               |   46 +++++
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/KnowledgeAttachServiceImpl.java |   18 +
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/CodeTextSplitter.java            |    2 
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/IKnowledgeInfoService.java           |    6 
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/CharacterTextSplitter.java       |   43 +++-
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/KnowledgeInfo.java                    |   39 ++++
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/CsvFileLoader.java              |    2 
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/CodeFileLoader.java             |    4 
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/JsonFileLoader.java             |    2 
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/VectorizationWrapper.java   |    8 
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/EmbeddingServiceImpl.java       |    6 
 ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatConfigController.java        |    4 
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/PdfFileLoader.java              |    4 
 ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SseServiceImpl.java                   |   16 +
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/OpenAiVectorization.java    |   19 +
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/MarkdownTextSplitter.java        |    2 
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/KnowledgeInfoServiceImpl.java   |   48 +---
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/TextSplitter.java                |    9 
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/WeaviateVectorStore.java   |   37 ++-
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/VectorStoreWrapper.java    |   14 
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/EmbeddingService.java                |    2 
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/VectorStoreFactory.java    |   30 ++-
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/GithubLoader.java               |    2 
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/MarkDownFileLoader.java         |    4 
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/TextFileLoader.java             |    4 
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/WordLoader.java                 |    4 
 script/sql/update/update20250302.sql                                                                         |    1 
 ruoyi-admin/src/main/resources/application.yml                                                               |   30 ---
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/Vectorization.java          |    5 
 /dev/null                                                                                                    |   30 ---
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/MilvusVectorStore.java     |   29 +-
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/vo/KnowledgeInfoVo.java               |   45 +++++
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/FolderLoader.java               |    2 
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/TokenTextSplitter.java           |    2 
 ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/request/translation/TranslationRequest.java |    7 
 ruoyi-admin/src/main/resources/application-dev.yml                                                           |    2 
 38 files changed, 332 insertions(+), 202 deletions(-)

diff --git a/.editorconfig b/.editorconfig
deleted file mode 100644
index 25b312e..0000000
--- a/.editorconfig
+++ /dev/null
@@ -1,18 +0,0 @@
-# http://editorconfig.org
-root = true
-
-# 绌烘牸鏇夸唬Tab缂╄繘鍦ㄥ悇绉嶇紪杈戝伐鍏蜂笅鏁堟灉涓�鑷�
-[*]
-indent_style = space
-indent_size = 4
-charset = utf-8
-end_of_line = lf
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.{json,yml,yaml}]
-indent_size = 2
-
-[*.md]
-insert_final_newline = false
-trim_trailing_whitespace = false
diff --git a/ruoyi-admin/src/main/java/org/ruoyi/controller/KnowledgeController.java b/ruoyi-admin/src/main/java/org/ruoyi/controller/KnowledgeController.java
index 76e5996..1768a69 100644
--- a/ruoyi-admin/src/main/java/org/ruoyi/controller/KnowledgeController.java
+++ b/ruoyi-admin/src/main/java/org/ruoyi/controller/KnowledgeController.java
@@ -81,7 +81,7 @@
         List<Message> messages = chatRequest.getMessages();
         String content = messages.get(messages.size() - 1).getContent().toString();
         List<String> nearestList;
-        List<Double> queryVector = embeddingService.getQueryVector(content);
+        List<Double> queryVector = embeddingService.getQueryVector(content, chatRequest.getKid());
         nearestList = vectorStore.nearest(queryVector,chatRequest.getKid());
         for (String prompt : nearestList) {
             Message sysMessage = Message.builder().content(prompt).role(Message.Role.USER).build();
diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml
index 434c6f4..6608a60 100644
--- a/ruoyi-admin/src/main/resources/application-dev.yml
+++ b/ruoyi-admin/src/main/resources/application-dev.yml
@@ -27,7 +27,7 @@
           driverClassName: com.mysql.cj.jdbc.Driver
           url: jdbc:mysql://43.139.70.230:3306/ruoyi-ai?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
           username: ruoyi-ai
-          password: ruoyi-ai
+          password: eCaZ278N62k6fhYj
 
       hikari:
         # 鏈�澶ц繛鎺ユ睜鏁伴噺
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index bbaec24..2617356 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -310,11 +310,6 @@
 
   #  浼佷笟寰俊搴旂敤
 wechat:
-  #  鏄惁浣跨敤寰俊 true/false
-  enable: true
-  #  鐢熸垚鐨勭櫥褰曚簩缁寸爜璺緞 榛樿涓庨」鐩悓绾�
-  qrPath: "./"
-  #  浼佷笟寰俊搴旂敤
   cp:
     corpId:
     appConfigs:
@@ -323,28 +318,5 @@
         token:   ''
         aesKey: ''
 
-# 鐭ヨ瘑搴撻厤缃�
-chain:
-  split:
-    chunk:
-      endspliter: "<STOP>"
-      # 鍒嗗潡鏂囨湰澶у皬
-      size: 200
-      overlay: 30
-      qaspliter: "###"
-  # 鐭ヨ瘑搴撲腑妫�绱㈢殑鏉℃暟
-  limits: 5
-  vector:
-    model: 'text-embedding-3-small'
-    store:
-      type: weaviate
-      weaviate:
-        protocol: http
-        host: 127.0.0.1:6038
-        classname: LocalKnowledge
-      milvus:
-        host: 127.0.0.1
-        port: 19530
-        dimension: 1536
-        collection: LocalKnowledge
+
 
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/CodeFileLoader.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/CodeFileLoader.java
index 0ca7ea6..5a74978 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/CodeFileLoader.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/CodeFileLoader.java
@@ -31,7 +31,7 @@
         return stringBuffer.toString();
     }
     @Override
-    public List<String> getChunkList(String content){
-        return textSplitter.split(content);
+    public List<String> getChunkList(String content, String kid){
+        return textSplitter.split(content, kid);
     }
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/CsvFileLoader.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/CsvFileLoader.java
index 5bedf5b..cec04fe 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/CsvFileLoader.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/CsvFileLoader.java
@@ -10,7 +10,7 @@
     }
 
     @Override
-    public List<String> getChunkList(String content) {
+    public List<String> getChunkList(String content, String kid) {
         return null;
     }
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/FolderLoader.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/FolderLoader.java
index 4682fee..1bbbc7c 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/FolderLoader.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/FolderLoader.java
@@ -10,7 +10,7 @@
     }
 
     @Override
-    public List<String> getChunkList(String content) {
+    public List<String> getChunkList(String content, String kid) {
         return null;
     }
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/GithubLoader.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/GithubLoader.java
index ae86ac4..dd6b449 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/GithubLoader.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/GithubLoader.java
@@ -10,7 +10,7 @@
     }
 
     @Override
-    public List<String> getChunkList(String content) {
+    public List<String> getChunkList(String content, String kid) {
         return null;
     }
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/JsonFileLoader.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/JsonFileLoader.java
index 5cd1d6e..5c69389 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/JsonFileLoader.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/JsonFileLoader.java
@@ -10,7 +10,7 @@
     }
 
     @Override
-    public List<String> getChunkList(String content) {
+    public List<String> getChunkList(String content, String kid) {
         return null;
     }
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/MarkDownFileLoader.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/MarkDownFileLoader.java
index cecdf05..24d43ff 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/MarkDownFileLoader.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/MarkDownFileLoader.java
@@ -31,7 +31,7 @@
         return stringBuffer.toString();
     }
     @Override
-    public List<String> getChunkList(String content){
-        return textSplitter.split(content);
+    public List<String> getChunkList(String content, String kid){
+        return textSplitter.split(content, kid);
     }
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/PdfFileLoader.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/PdfFileLoader.java
index 83566de..0acf355 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/PdfFileLoader.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/PdfFileLoader.java
@@ -28,7 +28,7 @@
     }
 
     @Override
-    public List<String> getChunkList(String content) {
-        return characterTextSplitter.split(content);
+    public List<String> getChunkList(String content, String kid) {
+        return characterTextSplitter.split(content, kid);
     }
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/ResourceLoader.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/ResourceLoader.java
index 32f4130..9ef4b11 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/ResourceLoader.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/ResourceLoader.java
@@ -7,6 +7,8 @@
  * 璧勬簮杞藉叆
  */
 public interface ResourceLoader {
+
     String getContent(InputStream inputStream);
-    List<String> getChunkList(String content);
+
+    List<String> getChunkList(String content, String kid);
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/TextFileLoader.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/TextFileLoader.java
index a2e74fa..95b8929 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/TextFileLoader.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/TextFileLoader.java
@@ -31,7 +31,7 @@
         return stringBuffer.toString();
     }
     @Override
-    public List<String> getChunkList(String content){
-        return textSplitter.split(content);
+    public List<String> getChunkList(String content, String kid){
+        return textSplitter.split(content, kid);
     }
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/WordLoader.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/WordLoader.java
index 7b9d920..c31b9e6 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/WordLoader.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/WordLoader.java
@@ -30,8 +30,8 @@
     }
 
     @Override
-    public List<String> getChunkList(String content) {
-        return textSplitter.split(content);
+    public List<String> getChunkList(String content, String kid) {
+        return textSplitter.split(content, kid);
     }
 
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/retrieve/PromptRetrieverProperties.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/retrieve/PromptRetrieverProperties.java
deleted file mode 100644
index 3b62c6b..0000000
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/retrieve/PromptRetrieverProperties.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.ruoyi.knowledge.chain.retrieve;
-
-import lombok.Data;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-@Data
-@Component
-public class PromptRetrieverProperties {
-    /**
-     * 浠庣煡璇嗗簱涓绱㈢殑鏉℃暟锛宭imits 搴斿ぇ浜� num
-     */
-    @Value("${chain.limits}")
-    private int limits;
-
-}
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/CharacterTextSplitter.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/CharacterTextSplitter.java
index 12db513..cf86b34 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/CharacterTextSplitter.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/CharacterTextSplitter.java
@@ -1,7 +1,10 @@
 package org.ruoyi.knowledge.chain.split;
 
-import lombok.AllArgsConstructor;
+import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
+import org.ruoyi.knowledge.domain.vo.KnowledgeInfoVo;
+import org.ruoyi.knowledge.service.IKnowledgeInfoService;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Primary;
 import org.springframework.stereotype.Component;
 
@@ -10,38 +13,46 @@
 import java.util.List;
 
 @Component
-@AllArgsConstructor
 @Slf4j
 @Primary
-public class CharacterTextSplitter implements TextSplitter{
-    private final SplitterProperties splitterProperties;
+public class CharacterTextSplitter implements TextSplitter {
+
+    @Lazy
+    @Resource
+    private IKnowledgeInfoService knowledgeInfoService;
+
     @Override
-    public List<String> split(String content) {
+    public List<String> split(String content, String kid) {
+        // 浠庣煡璇嗗簱琛ㄤ腑鑾峰彇閰嶇疆
+        KnowledgeInfoVo knowledgeInfoVo = knowledgeInfoService.queryById(Long.valueOf(kid));
+        String knowledgeSeparator = knowledgeInfoVo.getKnowledgeSeparator();
+        int textBlockSize = knowledgeInfoVo.getTextBlockSize();
+        int overlapChar = knowledgeInfoVo.getOverlapChar();
         List<String> chunkList = new ArrayList<>();
-        if (content.contains(splitterProperties.getEndspliter())){
+        if (content.contains(knowledgeSeparator)) {
             // 鎸夎嚜瀹氫箟鍒嗛殧绗﹀垏鍒�
-            String[] chunks = content.split(splitterProperties.getEndspliter());
+            String[] chunks = content.split(knowledgeSeparator);
             chunkList.addAll(Arrays.asList(chunks));
-        }else {
+        } else {
             int indexMin = 0;
             int len = content.length();
             int i = 0;
             int right = 0;
             while (true) {
-                if (len > right ){
-                    int begin = i*splitterProperties.getSize() - splitterProperties.getOverlay();
-                    if (begin < indexMin){
+                if (len > right) {
+                    int begin = i * textBlockSize - overlapChar;
+                    if (begin < indexMin) {
                         begin = indexMin;
                     }
-                    int end = splitterProperties.getSize()*(i+1) + splitterProperties.getOverlay();
-                    if (end > len){
+                    int end = textBlockSize * (i + 1) + overlapChar;
+                    if (end > len) {
                         end = len;
                     }
-                    String chunk = content.substring(begin,end);
+                    String chunk = content.substring(begin, end);
                     chunkList.add(chunk);
                     i++;
-                    right = right + splitterProperties.getSize();
-                }else {
+                    right = right + textBlockSize;
+                } else {
                     break;
                 }
             }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/CodeTextSplitter.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/CodeTextSplitter.java
index e68d61c..209f5de 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/CodeTextSplitter.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/CodeTextSplitter.java
@@ -11,7 +11,7 @@
 @Slf4j
 public class CodeTextSplitter implements TextSplitter{
     @Override
-    public List<String> split(String content) {
+    public List<String> split(String content, String kid) {
         return null;
     }
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/MarkdownTextSplitter.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/MarkdownTextSplitter.java
index 5c44781..89ea653 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/MarkdownTextSplitter.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/MarkdownTextSplitter.java
@@ -11,7 +11,7 @@
 @Slf4j
 public class MarkdownTextSplitter implements TextSplitter{
     @Override
-    public List<String> split(String content) {
+    public List<String> split(String content, String kid) {
         return null;
     }
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/SplitterProperties.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/SplitterProperties.java
deleted file mode 100644
index d0d9f5f..0000000
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/SplitterProperties.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.ruoyi.knowledge.chain.split;
-
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-@Data
-@Component
-@ConfigurationProperties(prefix = "chain.split.chunk")
-public class SplitterProperties {
-    /**
-     * 鍒嗘鏍囪瘑绗�
-     */
-    private String endspliter;
-
-    /**
-     * 鎻愰棶鍒嗘鏍囪瘑绗�
-     */
-    private String qaspliter;
-
-    /**
-     * 鍒嗗潡鏂囨湰澶у皬
-     */
-    private int size;
-
-    /**
-     * 鐩搁偦鍧椾箣闂撮噸鍙犵殑瀛楃鏁�(閬垮厤杈圭晫淇℃伅涓㈠け)
-     */
-    private int overlay;
-}
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/TextSplitter.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/TextSplitter.java
index 5d3d71b..86b3aaf 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/TextSplitter.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/TextSplitter.java
@@ -7,5 +7,12 @@
  */
 public interface TextSplitter {
 
-    List<String> split(String content);
+    /**
+     * 鏂囨湰鍒囧垎
+     *
+     * @param content 鏂囨湰鍐呭
+     * @param kid     鐭ヨ瘑搴搃d
+     * @return 鍒囧垎鍚庣殑鏂囨湰鍒楄〃
+     */
+    List<String> split(String content, String kid);
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/TokenTextSplitter.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/TokenTextSplitter.java
index dedc631..696f261 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/TokenTextSplitter.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/TokenTextSplitter.java
@@ -11,7 +11,7 @@
 @Slf4j
 public class TokenTextSplitter implements TextSplitter{
     @Override
-    public List<String> split(String content) {
+    public List<String> split(String content, String kid) {
         return null;
     }
 }
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 2ac0143..0f2d0ba 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
@@ -1,5 +1,6 @@
 package org.ruoyi.knowledge.chain.vectorizer;
 
+import jakarta.annotation.Resource;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -8,7 +9,10 @@
 
 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.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
@@ -20,8 +24,9 @@
 @RequiredArgsConstructor
 public class OpenAiVectorization implements Vectorization {
 
-    @Value("${chain.vector.model}")
-    private String embeddingModel;
+    @Lazy
+    @Resource
+    private IKnowledgeInfoService knowledgeInfoService;
 
     @Getter
     private OpenAiStreamClient openAiStreamClient;
@@ -29,12 +34,12 @@
     private final ChatConfig chatConfig;
 
     @Override
-    public List<List<Double>> batchVectorization(List<String> chunkList) {
+    public List<List<Double>> batchVectorization(List<String> chunkList, String kid) {
         openAiStreamClient = chatConfig.getOpenAiStreamClient();
-
+        KnowledgeInfoVo knowledgeInfoVo = knowledgeInfoService.queryById(Long.valueOf(kid));
         Embedding embedding = Embedding.builder()
             .input(chunkList)
-            .model(embeddingModel)
+            .model(knowledgeInfoVo.getVectorModel())
             .build();
         EmbeddingResponse embeddings = openAiStreamClient.embeddings(embedding);
         List<List<Double>> vectorList = new ArrayList<>();
@@ -50,10 +55,10 @@
     }
 
     @Override
-    public List<Double> singleVectorization(String chunk) {
+    public List<Double> singleVectorization(String chunk, String kid) {
         List<String> chunkList = new ArrayList<>();
         chunkList.add(chunk);
-        List<List<Double>> vectorList = batchVectorization(chunkList);
+        List<List<Double>> vectorList = batchVectorization(chunkList, kid);
         return vectorList.get(0);
     }
 
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/Vectorization.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/Vectorization.java
index c770a16..1c25dde 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/Vectorization.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/Vectorization.java
@@ -6,6 +6,7 @@
  * 鍚戦噺鍖�
  */
 public interface Vectorization {
-    List<List<Double>> batchVectorization(List<String> chunkList);
-    List<Double> singleVectorization(String chunk);
+    List<List<Double>> batchVectorization(List<String> chunkList, String kid);
+
+    List<Double> singleVectorization(String chunk, String kid);
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/VectorizationWrapper.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/VectorizationWrapper.java
index 1522148..e41797f 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/VectorizationWrapper.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/VectorizationWrapper.java
@@ -15,14 +15,14 @@
 
     private final VectorizationFactory vectorizationFactory;
     @Override
-    public List<List<Double>> batchVectorization(List<String> chunkList) {
+    public List<List<Double>> batchVectorization(List<String> chunkList, String kid) {
         Vectorization embedding = vectorizationFactory.getEmbedding();
-        return embedding.batchVectorization(chunkList);
+        return embedding.batchVectorization(chunkList, kid);
     }
 
     @Override
-    public List<Double> singleVectorization(String chunk) {
+    public List<Double> singleVectorization(String chunk, String kid) {
         Vectorization embedding = vectorizationFactory.getEmbedding();
-        return embedding.singleVectorization(chunk);
+        return embedding.singleVectorization(chunk, kid);
     }
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/MilvusVectorStore.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/MilvusVectorStore.java
index 74bef6f..c083ef4 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/MilvusVectorStore.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/MilvusVectorStore.java
@@ -19,8 +19,10 @@
 import io.milvus.response.QueryResultsWrapper;
 import io.milvus.response.SearchResultsWrapper;
 import jakarta.annotation.PostConstruct;
+import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.ruoyi.common.core.service.ConfigService;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
@@ -32,26 +34,27 @@
 @Slf4j
 public class MilvusVectorStore implements VectorStore{
 
-
-    @Value("${chain.vector.store.milvus.host}")
-    private String milvusHost;
-    @Value("${chain.vector.store.milvus.port}")
-    private Integer milvausPort;
-
-    @Value("${chain.vector.store.milvus.dimension}")
-    private Integer dimension;
-
-    @Value("${chain.vector.store.milvus.collection}")
-    private String collectionName;
-
+    private volatile Integer dimension;
+    private volatile String collectionName;
     private MilvusServiceClient milvusServiceClient;
+
+    @Resource
+    private ConfigService configService;
+
+    @PostConstruct
+    public void loadConfig() {
+        this.dimension = Integer.parseInt(configService.getConfigValue("milvus", "dimension"));
+        this.collectionName = configService.getConfigValue("milvus", "collection");
+    }
 
     @PostConstruct
     public void init(){
+        String milvusHost = configService.getConfigValue("milvus", "host");
+        String milvausPort = configService.getConfigValue("milvus", "port");
         milvusServiceClient = new MilvusServiceClient(
                 ConnectParam.newBuilder()
                         .withHost(milvusHost)
-                        .withPort(milvausPort)
+                        .withPort(Integer.parseInt(milvausPort))
                         .withDatabaseName("default")
                         .build()
         );
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/VectorStoreFactory.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/VectorStoreFactory.java
index 3478229..ae6e73c 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/VectorStoreFactory.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/VectorStoreFactory.java
@@ -1,29 +1,37 @@
 package org.ruoyi.knowledge.chain.vectorstore;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
+import org.ruoyi.knowledge.domain.KnowledgeInfo;
+import org.ruoyi.knowledge.domain.vo.KnowledgeInfoVo;
+import org.ruoyi.knowledge.mapper.KnowledgeInfoMapper;
 import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 @Component
 @Slf4j
+@RequiredArgsConstructor
 public class VectorStoreFactory {
-
-    @Value("${chain.vector.store.type}")
-    private String type;
 
     private final WeaviateVectorStore weaviateVectorStore;
 
     private final MilvusVectorStore milvusVectorStore;
 
-    public VectorStoreFactory(WeaviateVectorStore weaviateVectorStore, MilvusVectorStore milvusVectorStore) {
-        this.weaviateVectorStore = weaviateVectorStore;
-        this.milvusVectorStore = milvusVectorStore;
-    }
+    private final  KnowledgeInfoMapper knowledgeInfoMapper;
 
-    public VectorStore getVectorStore(){
-        if ("weaviate".equals(type)){
+    public VectorStore getVectorStore(String kid){
+        KnowledgeInfoVo knowledgeInfoVo = knowledgeInfoMapper.selectVoOne(
+                new LambdaQueryWrapper<KnowledgeInfo>().eq(KnowledgeInfo::getKid,kid)
+        );
+        String vectorModel = knowledgeInfoVo.getVector();
+        if ("weaviate".equals(vectorModel)){
             return weaviateVectorStore;
-        }else if ("milvus".equals(type)){
+        }else if ("milvus".equals(vectorModel)){
             return milvusVectorStore;
         }
         return null;
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/VectorStoreWrapper.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/VectorStoreWrapper.java
index 2c0a732..eb6b1f4 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/VectorStoreWrapper.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/VectorStoreWrapper.java
@@ -16,43 +16,43 @@
     private final VectorStoreFactory vectorStoreFactory;
     @Override
     public void storeEmbeddings(List<String> chunkList, List<List<Double>> vectorList, String kid, String docId, List<String> fidList) {
-        VectorStore vectorStore = vectorStoreFactory.getVectorStore();
+        VectorStore vectorStore = vectorStoreFactory.getVectorStore(kid);
         vectorStore.storeEmbeddings(chunkList, vectorList,  kid,  docId, fidList);
     }
 
     @Override
     public void removeByDocId(String kid, String docId) {
-        VectorStore vectorStore = vectorStoreFactory.getVectorStore();
+        VectorStore vectorStore = vectorStoreFactory.getVectorStore(kid);
         vectorStore.removeByDocId(kid,docId);
     }
 
     @Override
     public void removeByKid(String kid) {
-        VectorStore vectorStore = vectorStoreFactory.getVectorStore();
+        VectorStore vectorStore = vectorStoreFactory.getVectorStore(kid);
         vectorStore.removeByKid(kid);
     }
 
     @Override
     public List<String> nearest(List<Double> queryVector, String kid) {
-        VectorStore vectorStore = vectorStoreFactory.getVectorStore();
+        VectorStore vectorStore = vectorStoreFactory.getVectorStore(kid);
         return vectorStore.nearest(queryVector,kid);
     }
 
     @Override
     public List<String> nearest(String query, String kid) {
-        VectorStore vectorStore = vectorStoreFactory.getVectorStore();
+        VectorStore vectorStore = vectorStoreFactory.getVectorStore(kid);
         return vectorStore.nearest(query, kid);
     }
 
     @Override
     public void newSchema(String kid) {
-        VectorStore vectorStore = vectorStoreFactory.getVectorStore();
+        VectorStore vectorStore = vectorStoreFactory.getVectorStore(kid);
         vectorStore.newSchema(kid);
     }
 
     @Override
     public void removeByKidAndFid(String kid, String fid) {
-        VectorStore vectorStore = vectorStoreFactory.getVectorStore();
+        VectorStore vectorStore = vectorStoreFactory.getVectorStore(kid);
         vectorStore.removeByKidAndFid(kid, fid);
     }
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/WeaviateVectorStore.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/WeaviateVectorStore.java
index 335e4ed..8895a25 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/WeaviateVectorStore.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/WeaviateVectorStore.java
@@ -22,10 +22,15 @@
 import io.weaviate.client.v1.schema.model.Property;
 import io.weaviate.client.v1.schema.model.Schema;
 import io.weaviate.client.v1.schema.model.WeaviateClass;
+import jakarta.annotation.PostConstruct;
+import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
-import org.ruoyi.knowledge.chain.retrieve.PromptRetrieverProperties;
+import org.ruoyi.common.core.service.ConfigService;
+import org.ruoyi.knowledge.domain.vo.KnowledgeInfoVo;
+import org.ruoyi.knowledge.service.IKnowledgeInfoService;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -37,18 +42,23 @@
 @Slf4j
 public class WeaviateVectorStore implements VectorStore{
 
-    @Value("${chain.vector.store.weaviate.protocol}")
-    private String protocol;
-    @Value("${chain.vector.store.weaviate.host}")
-    private String host;
+    private volatile String protocol;
+    private volatile String host;
+    private volatile String className;
 
-    @Value("${chain.vector.store.weaviate.classname}")
-    private String className;
+    @Lazy
+    @Resource
+    private IKnowledgeInfoService knowledgeInfoService;
 
-    private final PromptRetrieverProperties promptRetrieverProperties;
+    @Lazy
+    @Resource
+    private ConfigService configService;
 
-    public WeaviateVectorStore(PromptRetrieverProperties promptRetrieverProperties) {
-        this.promptRetrieverProperties = promptRetrieverProperties;
+    @PostConstruct
+    public void loadConfig() {
+        this.protocol =  configService.getConfigValue("weaviate", "protocol");
+        this.host = configService.getConfigValue("weaviate", "host");
+        this.className = configService.getConfigValue("weaviate", "classname");
     }
 
     public WeaviateClient getClient(){
@@ -309,11 +319,12 @@
                 .vector(vf)
                 .distance(1.6f) // certainty = 1f - distance /2f
                 .build();
+        KnowledgeInfoVo knowledgeInfoVo = knowledgeInfoService.queryById(Long.valueOf(kid));
         Result<GraphQLResponse> result = client.graphQL().get()
                 .withClassName(className + kid)
                 .withFields(contentField,_additional)
                 .withNearVector(nearVector)
-                .withLimit(promptRetrieverProperties.getLimits())
+                .withLimit(knowledgeInfoVo.getRetrieveLimit())
                 .run();
         LinkedTreeMap<String,Object> t = (LinkedTreeMap<String, Object>) result.getResult().getData();
         LinkedTreeMap<String,ArrayList<LinkedTreeMap>> l = (LinkedTreeMap<String, ArrayList<LinkedTreeMap>>) t.get("Get");
@@ -342,12 +353,12 @@
                 .concepts(new String[]{ query })
                 .distance(1.6f) // certainty = 1f - distance /2f
                 .build();
-
+        KnowledgeInfoVo knowledgeInfoVo = knowledgeInfoService.queryById(Long.valueOf(kid));
         Result<GraphQLResponse> result = client.graphQL().get()
                 .withClassName(className + kid)
                 .withFields(contentField,_additional)
                 .withNearText(nearText)
-                .withLimit(promptRetrieverProperties.getLimits())
+                .withLimit(knowledgeInfoVo.getRetrieveLimit())
                 .run();
         LinkedTreeMap<String,Object> t = (LinkedTreeMap<String, Object>) result.getResult().getData();
         LinkedTreeMap<String,ArrayList<LinkedTreeMap>> l = (LinkedTreeMap<String, ArrayList<LinkedTreeMap>>) t.get("Get");
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/KnowledgeInfo.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/KnowledgeInfo.java
index 0d9b51e..fb8407d 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/KnowledgeInfo.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/KnowledgeInfo.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import jakarta.validation.constraints.NotBlank;
 import lombok.Data;
 
 import java.io.Serial;
@@ -44,6 +45,11 @@
     private String kname;
 
     /**
+     * 鐭ヨ瘑搴撳悕绉�
+     */
+    private String share;
+
+    /**
      * 鎻忚堪
      */
     private String description;
@@ -59,5 +65,38 @@
      */
     private Date createTime;
 
+    /**
+     * 鐭ヨ瘑鍒嗛殧绗�
+     */
+    private String knowledgeSeparator;
 
+    /**
+     * 鎻愰棶鍒嗛殧绗�
+     */
+    private String questionSeparator;
+
+    /**
+     * 閲嶅彔瀛楃鏁�
+     */
+    private Integer overlapChar;
+
+    /**
+     * 鐭ヨ瘑搴撲腑妫�绱㈢殑鏉℃暟
+     */
+    private Integer retrieveLimit;
+
+    /**
+     * 鏂囨湰鍧楀ぇ灏�
+     */
+    private Integer textBlockSize;
+
+    /**
+     * 鍚戦噺搴�
+     */
+    private String vector;
+
+    /**
+     * 鍚戦噺妯″瀷
+     */
+    private String vectorModel;
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/bo/KnowledgeInfoBo.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/bo/KnowledgeInfoBo.java
index bea7b25..b606d82 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/bo/KnowledgeInfoBo.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/bo/KnowledgeInfoBo.java
@@ -44,10 +44,56 @@
     private String kname;
 
     /**
+     * 鐭ヨ瘑搴撳悕绉�
+     */
+    @NotBlank(message = "鏄惁鍏紑鐭ヨ瘑搴�")
+    private String share;
+
+    /**
      * 鎻忚堪
      */
     @NotBlank(message = "鎻忚堪涓嶈兘涓虹┖")
     private String description;
 
+    /**
+     * 鐭ヨ瘑鍒嗛殧绗�
+     */
+    @NotBlank(message = "鐭ヨ瘑鍒嗛殧绗︿笉鑳戒负绌�")
+    private String knowledgeSeparator;
 
+    /**
+     * 鎻愰棶鍒嗛殧绗�
+     */
+    @NotBlank(message = "鎻愰棶鍒嗛殧绗︿笉鑳戒负绌�")
+    private String questionSeparator;
+
+    /**
+     * 閲嶅彔瀛楃鏁�
+     */
+    @NotNull(message = "閲嶅彔瀛楃鏁颁笉鑳戒负绌�")
+    private Integer overlapChar;
+
+    /**
+     * 鐭ヨ瘑搴撲腑妫�绱㈢殑鏉℃暟
+     */
+    @NotNull(message = "鐭ヨ瘑搴撲腑妫�绱㈢殑鏉℃暟涓嶈兘涓虹┖")
+    private Integer retrieveLimit;
+
+    /**
+     * 鏂囨湰鍧楀ぇ灏�
+     */
+    @NotNull(message = "鏂囨湰鍧楀ぇ灏忎笉鑳戒负绌�")
+    private Integer textBlockSize;
+
+    /**
+     * 鍚戦噺搴�
+     */
+    @NotBlank(message = "鍚戦噺搴撲笉鑳戒负绌�")
+    private String vector;
+
+    /**
+     * 鍚戦噺妯″瀷
+     */
+    @NotBlank(message = "鍚戦噺妯″瀷涓嶈兘涓虹┖")
+    private String vectorModel;
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/vo/KnowledgeInfoVo.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/vo/KnowledgeInfoVo.java
index c541a82..a47b5d6 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/vo/KnowledgeInfoVo.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/vo/KnowledgeInfoVo.java
@@ -48,10 +48,55 @@
     private String kname;
 
     /**
+     * 鐭ヨ瘑搴撳悕绉�
+     */
+    private String share;
+
+    /**
      * 鎻忚堪
      */
     @ExcelProperty(value = "鎻忚堪")
     private String description;
 
+    /**
+     * 鐭ヨ瘑鍒嗛殧绗�
+     */
+    @ExcelProperty(value = "鐭ヨ瘑鍒嗛殧绗�")
+    private String knowledgeSeparator;
 
+    /**
+     * 鎻愰棶鍒嗛殧绗�
+     */
+    @ExcelProperty(value = "鎻愰棶鍒嗛殧绗�")
+    private String questionSeparator;
+
+    /**
+     * 閲嶅彔瀛楃鏁�
+     */
+    @ExcelProperty(value = "閲嶅彔瀛楃鏁�")
+    private Integer overlapChar;
+
+    /**
+     * 鐭ヨ瘑搴撲腑妫�绱㈢殑鏉℃暟
+     */
+    @ExcelProperty(value = "鐭ヨ瘑搴撲腑妫�绱㈢殑鏉℃暟")
+    private Integer retrieveLimit;
+
+    /**
+     * 鏂囨湰鍧楀ぇ灏�
+     */
+    @ExcelProperty(value = "鏂囨湰鍧楀ぇ灏�")
+    private Integer textBlockSize;
+
+    /**
+     * 鍚戦噺搴�
+     */
+    @ExcelProperty(value = "鍚戦噺搴�")
+    private String vector;
+
+    /**
+     * 鍚戦噺妯″瀷
+     */
+    @ExcelProperty(value = "鍚戦噺妯″瀷")
+    private String vectorModel;
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/EmbeddingService.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/EmbeddingService.java
index 739c7e6..a4dd30d 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/EmbeddingService.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/EmbeddingService.java
@@ -10,7 +10,7 @@
 
     void removeByKid(String kid);
 
-    List<Double> getQueryVector(String query);
+    List<Double> getQueryVector(String query, String kid);
 
     void createSchema(String kid);
 
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/IKnowledgeInfoService.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/IKnowledgeInfoService.java
index 0c1b090..121f8fb 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/IKnowledgeInfoService.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/IKnowledgeInfoService.java
@@ -55,4 +55,10 @@
      * 鍒犻櫎鐭ヨ瘑搴�
      */
     void removeKnowledge(String id);
+
+    /**
+     * 妫�鏌ユ槸鍚︽湁鍒犻櫎鏉冮檺
+     * @param knowledgeInfoList 鐭ヨ瘑鍒楄〃
+     */
+    void check(List<KnowledgeInfoVo> knowledgeInfoList);
 }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/EmbeddingServiceImpl.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/EmbeddingServiceImpl.java
index 8850311..73503a4 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/EmbeddingServiceImpl.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/EmbeddingServiceImpl.java
@@ -24,7 +24,7 @@
      */
     @Override
     public void storeEmbeddings(List<String> chunkList, String kid, String docId,List<String> fidList) {
-        List<List<Double>> vectorList = vectorization.batchVectorization(chunkList);
+        List<List<Double>> vectorList = vectorization.batchVectorization(chunkList, kid);
         vectorStore.storeEmbeddings(chunkList,vectorList,kid,docId,fidList);
     }
 
@@ -39,8 +39,8 @@
     }
 
     @Override
-    public List<Double> getQueryVector(String query) {
-        List<Double> queryVector = vectorization.singleVectorization(query);
+    public List<Double> getQueryVector(String query, String kid) {
+        List<Double> queryVector = vectorization.singleVectorization(query,kid);
         return queryVector;
     }
 
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/KnowledgeAttachServiceImpl.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/KnowledgeAttachServiceImpl.java
index 07812d4..9bea5dd 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/KnowledgeAttachServiceImpl.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/KnowledgeAttachServiceImpl.java
@@ -4,16 +4,21 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
+import org.ruoyi.common.core.domain.model.LoginUser;
 import org.ruoyi.common.core.utils.MapstructUtils;
 import org.ruoyi.common.core.utils.StringUtils;
 import org.ruoyi.common.mybatis.core.page.PageQuery;
 import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.common.satoken.utils.LoginHelper;
 import org.ruoyi.knowledge.domain.KnowledgeAttach;
 import org.ruoyi.knowledge.domain.bo.KnowledgeAttachBo;
 import org.ruoyi.knowledge.domain.vo.KnowledgeAttachVo;
+import org.ruoyi.knowledge.domain.vo.KnowledgeInfoVo;
 import org.ruoyi.knowledge.mapper.KnowledgeAttachMapper;
 import org.ruoyi.knowledge.mapper.KnowledgeFragmentMapper;
+import org.ruoyi.knowledge.mapper.KnowledgeInfoMapper;
 import org.ruoyi.knowledge.service.IKnowledgeAttachService;
+import org.ruoyi.knowledge.service.IKnowledgeInfoService;
 import org.springframework.stereotype.Service;
 
 import java.util.Collection;
@@ -34,6 +39,11 @@
     private final KnowledgeAttachMapper baseMapper;
 
     private final KnowledgeFragmentMapper fragmentMapper;
+
+    private final KnowledgeInfoMapper knowledgeInfoMapper;
+
+    private final IKnowledgeInfoService knowledgeInfoService;
+
 
     /**
      * 鏌ヨ鐭ヨ瘑搴撻檮浠�
@@ -117,8 +127,12 @@
 
     @Override
     public void removeKnowledgeAttach(String kid) {
-        HashMap<String, Object> map = new HashMap<>();
-        map.put("kid", kid);
+        LoginUser loginUser = LoginHelper.getLoginUser();
+        Map<String,Object> map = new HashMap<>();
+        map.put("kid",kid);
+        List<KnowledgeInfoVo> knowledgeInfoList = knowledgeInfoMapper.selectVoByMap(map);
+        knowledgeInfoService.check(knowledgeInfoList);
+
         baseMapper.deleteByMap(map);
         fragmentMapper.deleteByMap(map);
     }
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/KnowledgeInfoServiceImpl.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/KnowledgeInfoServiceImpl.java
index 0f2b842..3bd9390 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/KnowledgeInfoServiceImpl.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/KnowledgeInfoServiceImpl.java
@@ -1,16 +1,16 @@
 package org.ruoyi.knowledge.service.impl;
 
 import cn.hutool.core.util.RandomUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.github.ollama4j.OllamaAPI;
-import io.github.ollama4j.exceptions.OllamaBaseException;
 import io.github.ollama4j.models.chat.OllamaChatMessageRole;
 import io.github.ollama4j.models.chat.OllamaChatRequestBuilder;
 import io.github.ollama4j.models.chat.OllamaChatRequestModel;
 import io.github.ollama4j.models.chat.OllamaChatResult;
 import lombok.RequiredArgsConstructor;
+import org.ruoyi.common.core.domain.model.LoginUser;
 import org.ruoyi.common.core.utils.MapstructUtils;
 import org.ruoyi.common.core.utils.StringUtils;
 import org.ruoyi.common.mybatis.core.page.PageQuery;
@@ -21,8 +21,6 @@
 import org.ruoyi.knowledge.domain.KnowledgeAttach;
 import org.ruoyi.knowledge.domain.KnowledgeFragment;
 import org.ruoyi.knowledge.domain.KnowledgeInfo;
-import org.ruoyi.knowledge.domain.bo.KnowledgeAttachBo;
-import org.ruoyi.knowledge.domain.bo.KnowledgeFragmentBo;
 import org.ruoyi.knowledge.domain.bo.KnowledgeInfoBo;
 import org.ruoyi.knowledge.domain.req.KnowledgeInfoUploadRequest;
 import org.ruoyi.knowledge.domain.vo.KnowledgeInfoVo;
@@ -30,14 +28,11 @@
 import org.ruoyi.knowledge.mapper.KnowledgeFragmentMapper;
 import org.ruoyi.knowledge.mapper.KnowledgeInfoMapper;
 import org.ruoyi.knowledge.service.EmbeddingService;
-import org.ruoyi.knowledge.service.IKnowledgeAttachService;
-import org.ruoyi.knowledge.service.IKnowledgeFragmentService;
 import org.ruoyi.knowledge.service.IKnowledgeInfoService;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
-import java.time.LocalDateTime;
 import java.util.*;
 
 /**
@@ -88,12 +83,13 @@
     }
 
     private LambdaQueryWrapper<KnowledgeInfo> buildQueryWrapper(KnowledgeInfoBo bo) {
-        Map<String, Object> params = bo.getParams();
         LambdaQueryWrapper<KnowledgeInfo> lqw = Wrappers.lambdaQuery();
         lqw.eq(StringUtils.isNotBlank(bo.getKid()), KnowledgeInfo::getKid, bo.getKid());
         lqw.eq(bo.getUid() != null, KnowledgeInfo::getUid, bo.getUid());
         lqw.like(StringUtils.isNotBlank(bo.getKname()), KnowledgeInfo::getKname, bo.getKname());
         lqw.eq(StringUtils.isNotBlank(bo.getDescription()), KnowledgeInfo::getDescription, bo.getDescription());
+        // 鏌ヨ鍏紑鐨勭煡璇嗗簱
+        lqw.or(wrapper -> wrapper.eq(KnowledgeInfo::getShare, "1"));
         return lqw;
     }
 
@@ -151,7 +147,7 @@
         List<String> fids = new ArrayList<>();
         try {
             content = resourceLoader.getContent(file.getInputStream());
-            chunkList = resourceLoader.getChunkList(content);
+            chunkList = resourceLoader.getChunkList(content, kid);
             for (int i = 0; i < chunkList.size(); i++) {
                 String fid = RandomUtil.randomString(16);
                 fids.add(fid);
@@ -179,6 +175,8 @@
 
         Map<String,Object> map = new HashMap<>();
         map.put("kid",id);
+        List<KnowledgeInfoVo> knowledgeInfoList = baseMapper.selectVoByMap(map);
+        check(knowledgeInfoList);
         // 鍒犻櫎鐭ヨ瘑搴�
         baseMapper.deleteByMap(map);
         // 鍒犻櫎闄勪欢鍜岀煡璇嗙墖娈�
@@ -188,31 +186,13 @@
         embeddingService.removeByKid(id);
     }
 
-    /**
-     * 灏嗘枃鏈潡杞崲涓洪璁粌鏁版嵁
-     * @param chunk 瑙f瀽鏂囨湰鍧�
-     */
-    public String convertTextBlockToPretrainData(String chunk){
-            String host = "http://localhost:11434/";
-            OllamaAPI ollama = new OllamaAPI(host);
-            OllamaChatRequestBuilder builder = OllamaChatRequestBuilder.getInstance("qwen2.5:7b");
-            // 璁剧疆瓒呮椂鏃堕棿
-            ollama.setRequestTimeoutSeconds(100);
-            // create first user question
-            String json = "instruction:鐢ㄦ埛鎸囦护,鏍规嵁璇箟鎻愬彇涓�涓叧閿瘝;input:鐢ㄦ埛杈撳叆,鏍规嵁璇箟鎻愬彇澶氫釜鍏抽敭璇�;output:杈撳嚭鏂囨湰鍐呭";
-
-            OllamaChatRequestModel requestModel = builder.withMessage
-                (OllamaChatMessageRole.USER, "鏂囨湰锛�"+chunk+"鐞嗚В鏂囨湰鍐呭锛屽苟涓斿皢鏂囨湰鍐呭杞崲涓�:"+json+",杈撳嚭JSON鏍煎紡锛屼笉瑕佸寘鍚叾浠栨棤鍏冲唴瀹�,鍐呴儴浣跨敤鏃犻渶鑴辨晱")
-            .build();
-
-            // start conversation with model
-            OllamaChatResult chatResult = null;
-            try {
-                chatResult = ollama.chat(requestModel);
-            } catch (Exception e) {
-                System.out.println("瑙f瀽澶辫触!");
+    @Override
+    public void check(List<KnowledgeInfoVo> knowledgeInfoList){
+        LoginUser loginUser = LoginHelper.getLoginUser();
+        for (KnowledgeInfoVo knowledgeInfoVo : knowledgeInfoList) {
+            if(!knowledgeInfoVo.getUid().equals(loginUser.getUserId())){
+                throw new SecurityException("鏉冮檺涓嶈冻");
             }
-            return chatResult.getResponse();
+        }
     }
-
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatConfigController.java
index 4af2348..a77a0d3 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatConfigController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/ChatConfigController.java
@@ -36,8 +36,8 @@
      */
     @GetMapping("/list")
     @SaCheckPermission("system:config:list")
-    public List<ChatConfigVo> list(ChatConfigBo bo) {
-        return chatConfigService.queryList(bo);
+    public R<List<ChatConfigVo>> list(ChatConfigBo bo) {
+        return R.ok(chatConfigService.queryList(bo));
     }
 
     /**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/request/translation/TranslationRequest.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/request/translation/TranslationRequest.java
index 5148f34..04fa785 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/request/translation/TranslationRequest.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/request/translation/TranslationRequest.java
@@ -22,13 +22,8 @@
     private String model;
 
     /**
-     * 婧愯瑷�
-     */
-    private String  sourceLanguage;
-
-    /**
      * 鐩爣璇█
      */
-    private String  targetLanguage;
+    private String targetLanguage;
 
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SseServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SseServiceImpl.java
index 7ada900..e2f02b5 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SseServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SseServiceImpl.java
@@ -553,7 +553,21 @@
 
         List<Message> messageList = new ArrayList<>();
 
-        Message sysMessage = Message.builder().role(Message.Role.SYSTEM).content("浣滀负鑻辨眽缈昏瘧锛屾偍鐨勪换鍔℃槸鍑嗙‘鍦板湪涓ょ璇█涔嬮棿缈昏瘧鏂囨湰銆傜炕璇戞椂锛岃娉ㄦ剰涓婁笅鏂囷紝鍑嗙‘瑙i噴鎴愯鍜岃皻璇�傚鏋滆繛缁敹鍒板涓嫳鏂囧崟璇嶏紝璇烽粯璁ゅ皢鍏剁炕璇戞垚涓枃鍙ュ瓙銆備絾濡傛灉鍓嶉潰鏈�'phrase:鈥欙紝鍒欏簲缈昏瘧涓虹煭璇�;濡傛灉鏈�'norma!:'锛屽垯缈昏瘧涓哄涓棤鍏崇殑鍗曡瘝銆傛偍鐨勭炕璇戝簲鎺ヨ繎姣嶈鑰呯殑姘村钩锛屽苟鑰冭檻鐢ㄦ埛瑕佹眰鐨勭壒瀹氳瑷�椋庢牸鎴栬姘斻�傞伩鍏嶄娇鐢ㄥ啋鐘�ц瘝姹囷紝蹇呰鏃剁敤x鏇挎崲銆傛彁渚涚炕璇戞椂锛岃鐢ㄤ腑鏂囪В閲婃瘡鍙ヨ瘽鐨勬椂鎬併�佷粠鍙ャ�佷富璇�佽皳璇�佸璇�佺壒娈婄煭璇拰璋氳瀵逛簬闇�瑕佺炕璇戠殑鐭鎴栧崟璇嶏紝璇锋彁渚涙潵婧�(璇嶅吀)銆傚鏋滆姹傜炕璇戝涓煭璇紝璇风敤|绗﹀彿鍒嗛殧銆傝璁颁綇:鎮ㄦ槸鑻辨眽缈昏瘧锛屼笉鏄眽姹夌炕璇戞垨鑻辫嫳缈昏瘧銆傛彁浜ゅ墠璇蜂粩缁嗘鏌ュ拰淇绛旀,鍥炲鎺у埗鍦�50瀛椾互鍐�").build();
+        Message sysMessage = Message.builder().role(Message.Role.SYSTEM).content("浣犳槸涓�鍚嶇炕璇戣�佸笀\n" +
+            "\n" +
+            "璇峰皢鐢ㄦ埛杈撳叆璇嶈缈昏瘧鎴恵" + translationRequest.getTargetLanguage() + "}\n" +
+            "\n" +
+            "璁╂垜浠竴姝ヤ竴姝ユ潵鎬濊�僜n" +
+            "==绀轰緥杈撳嚭==\n" +
+            "**缈昏瘧** : <杩欓噷鏄剧ず缈昏瘧鎴愯嫳璇殑缁撴灉>\n" +
+            "\n" +
+            "**閫犲彞** : What's the weather like today? Use the 'Weather Query' plugin to find out instantly! <閫犱竴涓嫳璇彞瀛�>\n" +
+            "\n" +
+            "**鍚屼箟璇�** : Add-on銆丒xtension銆丮odule  <杩欓噷鏄剧ず1-3涓嫳鏂囩殑鍚屼箟璇�>\n" +
+            "\n" +
+            "==绀轰緥缁撴潫==\n" +
+            "\n" +
+            "娉ㄦ剰锛氳涓ユ牸鎸夌ず渚嬭繘琛岃緭鍑�").build();
         messageList.add(sysMessage);
         Message message = Message.builder().role(Message.Role.USER).content(translationRequest.getPrompt()).build();
         messageList.add(message);
diff --git a/script/sql/update/update20250302.sql b/script/sql/update/update20250302.sql
new file mode 100644
index 0000000..b3aa42b
--- /dev/null
+++ b/script/sql/update/update20250302.sql
@@ -0,0 +1 @@
+ALTER TABLE `knowledge_info` ADD COLUMN `share` tinyint(4) NULL DEFAULT NULL COMMENT '鏄惁鍏紑鐭ヨ瘑搴擄紙0 鍚� 1鏄級' AFTER `kname`;

--
Gitblit v1.9.3