From deefb6cc0ba855f5d607c6321862ddcdc49e27aa Mon Sep 17 00:00:00 2001
From: lindaxia <147299771+lindaxiaproject@users.noreply.github.com>
Date: 星期一, 26 五月 2025 22:45:18 +0800
Subject: [PATCH] Merge branch 'main' of https://github.com/ageerle/ruoyi-ai

---
 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/chat/ChatMessageController.java       |    6 ---
 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/chat/ChatSessionController.java       |    6 ---
 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/VectorStoreService.java          |    5 --
 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/knowledge/KnowledgeInfoServiceImpl.java  |   22 ++++------
 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/VectorStoreServiceImpl.java |   46 ++++-------------------
 5 files changed, 18 insertions(+), 67 deletions(-)

diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/VectorStoreService.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/VectorStoreService.java
index be445b9..8d23272 100644
--- a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/VectorStoreService.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/VectorStoreService.java
@@ -17,10 +17,7 @@
 
     void createSchema(String kid,String modelName);
 
-    void removeByKid(String kid,String modelName);
+    void removeById(String id,String modelName);
 
-    void removeByDocId(String kid,String docId,String modelName);
-
-    void removeByKidAndFid(String kid, String fid,String modelName);
 
 }
diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/VectorStoreServiceImpl.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/VectorStoreServiceImpl.java
index e115542..282c2b6 100644
--- a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/VectorStoreServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/VectorStoreServiceImpl.java
@@ -9,8 +9,6 @@
 import dev.langchain4j.store.embedding.EmbeddingMatch;
 import dev.langchain4j.store.embedding.EmbeddingSearchRequest;
 import dev.langchain4j.store.embedding.EmbeddingStore;
-import dev.langchain4j.store.embedding.filter.Filter;
-import dev.langchain4j.store.embedding.filter.comparison.IsEqualTo;
 import dev.langchain4j.store.embedding.weaviate.WeaviateEmbeddingStore;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
@@ -22,9 +20,7 @@
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
  * 鍚戦噺搴撶鐞�
@@ -40,6 +36,7 @@
 
     private EmbeddingStore<TextSegment> embeddingStore;
 
+
     @Override
     public void createSchema(String kid, String modelName) {
         String protocol = configService.getConfigValue("weaviate", "protocol");
@@ -48,7 +45,7 @@
         embeddingStore = WeaviateEmbeddingStore.builder()
                 .scheme(protocol)
                 .host(host)
-                .objectClass(className + kid)
+                .objectClass(className+kid)
                 .scheme(protocol)
                 .avoidDups(true)
                 .consistencyLevel("ALL")
@@ -61,14 +58,9 @@
         EmbeddingModel embeddingModel = getEmbeddingModel(storeEmbeddingBo.getEmbeddingModelName(),
                 storeEmbeddingBo.getApiKey(), storeEmbeddingBo.getBaseUrl());
         List<String> chunkList = storeEmbeddingBo.getChunkList();
-        for (int i = 0; i < chunkList.size(); i++) {
-            Map<String, Object> dataSchema = new HashMap<>();
-            dataSchema.put("kid", storeEmbeddingBo.getKid());
-            dataSchema.put("docId", storeEmbeddingBo.getDocId());
-            dataSchema.put("fid", storeEmbeddingBo.getFids().get(i));
-            Embedding embedding = embeddingModel.embed(chunkList.get(i)).content();
-            TextSegment segment = TextSegment.from(chunkList.get(i));
-            segment.metadata().putAll(dataSchema);
+        for (String s : chunkList) {
+            Embedding embedding = embeddingModel.embed(s).content();
+            TextSegment segment = TextSegment.from(s);
             embeddingStore.add(embedding, segment);
         }
     }
@@ -78,13 +70,10 @@
         createSchema(queryVectorBo.getKid(), queryVectorBo.getVectorModelName());
         EmbeddingModel embeddingModel = getEmbeddingModel(queryVectorBo.getEmbeddingModelName(),
                 queryVectorBo.getApiKey(), queryVectorBo.getBaseUrl());
-        // Filter simpleFilter = new IsEqualTo("kid", queryVectorBo.getKid());
         Embedding queryEmbedding = embeddingModel.embed(queryVectorBo.getQuery()).content();
         EmbeddingSearchRequest embeddingSearchRequest = EmbeddingSearchRequest.builder()
                 .queryEmbedding(queryEmbedding)
                 .maxResults(queryVectorBo.getMaxResults())
-                // 娣诲姞杩囨护鏉′欢
-                //       .filter(simpleFilter)
                 .build();
         List<EmbeddingMatch<TextSegment>> matches = embeddingStore.search(embeddingSearchRequest).matches();
         List<String> results = new ArrayList<>();
@@ -94,29 +83,10 @@
 
 
     @Override
-    public void removeByKid(String kid, String modelName) {
-        createSchema(kid, modelName);
+    public void removeById(String id, String modelName) {
+        createSchema(id, modelName);
         // 鏍规嵁鏉′欢鍒犻櫎鍚戦噺鏁版嵁
-        Filter simpleFilter = new IsEqualTo("kid", kid);
-        embeddingStore.removeAll(simpleFilter);
-    }
-
-    @Override
-    public void removeByDocId(String kid, String docId, String modelName) {
-        createSchema(kid, modelName);
-        // 鏍规嵁鏉′欢鍒犻櫎鍚戦噺鏁版嵁
-        Filter simpleFilterByDocId = new IsEqualTo("docId", docId);
-        embeddingStore.removeAll(simpleFilterByDocId);
-    }
-
-    @Override
-    public void removeByKidAndFid(String kid, String fid, String modelName) {
-        createSchema(kid, modelName);
-        // 鏍规嵁鏉′欢鍒犻櫎鍚戦噺鏁版嵁
-        Filter simpleFilterByKid = new IsEqualTo("kid", kid);
-        Filter simpleFilterFid = new IsEqualTo("fid", fid);
-        Filter simpleFilterByAnd = Filter.and(simpleFilterFid, simpleFilterByKid);
-        embeddingStore.removeAll(simpleFilterByAnd);
+        embeddingStore.remove(id);
     }
 
     /**
diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/chat/ChatMessageController.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/chat/ChatMessageController.java
index b46ec86..660d70a 100644
--- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/chat/ChatMessageController.java
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/chat/ChatMessageController.java
@@ -40,7 +40,6 @@
     /**
      * 鏌ヨ鑱婂ぉ娑堟伅鍒楄〃
      */
-    @SaCheckPermission("system:message:list")
     @GetMapping("/list")
     public TableDataInfo<ChatMessageVo> list(ChatMessageBo bo, PageQuery pageQuery) {
         return chatMessageService.queryPageList(bo, pageQuery);
@@ -49,7 +48,6 @@
     /**
      * 瀵煎嚭鑱婂ぉ娑堟伅鍒楄〃
      */
-    @SaCheckPermission("system:message:export")
     @Log(title = "鑱婂ぉ娑堟伅", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(ChatMessageBo bo, HttpServletResponse response) {
@@ -62,7 +60,6 @@
      *
      * @param id 涓婚敭
      */
-    @SaCheckPermission("system:message:query")
     @GetMapping("/{id}")
     public R<ChatMessageVo> getInfo(@NotNull(message = "涓婚敭涓嶈兘涓虹┖")
                                      @PathVariable Long id) {
@@ -72,7 +69,6 @@
     /**
      * 鏂板鑱婂ぉ娑堟伅
      */
-    @SaCheckPermission("system:message:add")
     @Log(title = "鑱婂ぉ娑堟伅", businessType = BusinessType.INSERT)
     @RepeatSubmit()
     @PostMapping()
@@ -84,7 +80,6 @@
     /**
      * 淇敼鑱婂ぉ娑堟伅
      */
-    @SaCheckPermission("system:message:edit")
     @Log(title = "鑱婂ぉ娑堟伅", businessType = BusinessType.UPDATE)
     @RepeatSubmit()
     @PutMapping()
@@ -97,7 +92,6 @@
      *
      * @param ids 涓婚敭涓�
      */
-    @SaCheckPermission("system:message:remove")
     @Log(title = "鑱婂ぉ娑堟伅", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
     public R<Void> remove(@NotEmpty(message = "涓婚敭涓嶈兘涓虹┖")
diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/chat/ChatSessionController.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/chat/ChatSessionController.java
index 74766bc..cef4ad0 100644
--- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/chat/ChatSessionController.java
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/chat/ChatSessionController.java
@@ -41,7 +41,6 @@
     /**
      * 鏌ヨ浼氳瘽绠$悊鍒楄〃
      */
-    @SaCheckPermission("system:session:list")
     @GetMapping("/list")
     public TableDataInfo<ChatSessionVo> list(ChatSessionBo bo, PageQuery pageQuery) {
         if(!LoginHelper.isLogin()){
@@ -56,7 +55,6 @@
     /**
      * 瀵煎嚭浼氳瘽绠$悊鍒楄〃
      */
-    @SaCheckPermission("system:session:export")
     @Log(title = "浼氳瘽绠$悊", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(ChatSessionBo bo, HttpServletResponse response) {
@@ -69,7 +67,6 @@
      *
      * @param id 涓婚敭
      */
-    @SaCheckPermission("system:session:query")
     @GetMapping("/{id}")
     public R<ChatSessionVo> getInfo(@NotNull(message = "涓婚敭涓嶈兘涓虹┖")
                                      @PathVariable Long id) {
@@ -79,7 +76,6 @@
     /**
      * 鏂板浼氳瘽绠$悊
      */
-    @SaCheckPermission("system:session:add")
     @Log(title = "浼氳瘽绠$悊", businessType = BusinessType.INSERT)
     @RepeatSubmit()
     @PostMapping()
@@ -92,7 +88,6 @@
     /**
      * 淇敼浼氳瘽绠$悊
      */
-    @SaCheckPermission("system:session:edit")
     @Log(title = "浼氳瘽绠$悊", businessType = BusinessType.UPDATE)
     @RepeatSubmit()
     @PutMapping()
@@ -105,7 +100,6 @@
      *
      * @param ids 涓婚敭涓�
      */
-    @SaCheckPermission("system:session:remove")
     @Log(title = "浼氳瘽绠$悊", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
     public R<Void> remove(@NotEmpty(message = "涓婚敭涓嶈兘涓虹┖")
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 08d2ed4..4a04827 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
@@ -177,13 +177,11 @@
   @Transactional(rollbackFor = Exception.class)
   public void removeKnowledge(String id) {
     Map<String,Object> map = new HashMap<>();
-    map.put("kid",id);
-    List<KnowledgeInfoVo> knowledgeInfoList = baseMapper.selectVoByMap(map);
-    check(knowledgeInfoList);
-    // 鍒犻櫎鍚戦噺搴撲俊鎭�
-//    knowledgeInfoList.forEach(knowledgeInfoVo -> {
-//      vectorStoreService.removeByKid(String.valueOf(knowledgeInfoVo.getId()),knowledgeInfoVo.getVectorModelName());
-//    });
+    KnowledgeInfo knowledgeInfo = baseMapper.selectById(id);
+    check(knowledgeInfo);
+    map.put("kid",knowledgeInfo.getKid());
+    // 鍒犻櫎鍚戦噺鏁版嵁
+    vectorStoreService.removeById(String.valueOf(knowledgeInfo.getId()),knowledgeInfo.getVectorModelName());
     // 鍒犻櫎闄勪欢鍜岀煡璇嗙墖娈�
     fragmentMapper.deleteByMap(map);
     attachMapper.deleteByMap(map);
@@ -256,14 +254,12 @@
   /**
    * 妫�鏌ョ敤鎴锋槸鍚︽湁鍒犻櫎鐭ヨ瘑搴撴潈闄�
    *
-   * @param knowledgeInfoList 鐭ヨ瘑搴撳垪琛�
+   * @param knowledgeInfo 鐭ヨ瘑搴�
    */
-  public void check(List<KnowledgeInfoVo> knowledgeInfoList) {
+  public void check( KnowledgeInfo knowledgeInfo) {
     LoginUser loginUser = LoginHelper.getLoginUser();
-    for (KnowledgeInfoVo knowledgeInfoVo : knowledgeInfoList) {
-      if (!knowledgeInfoVo.getUid().equals(loginUser.getUserId())) {
-        throw new SecurityException("鏉冮檺涓嶈冻");
-      }
+    if (!knowledgeInfo.getUid().equals(loginUser.getUserId())) {
+      throw new SecurityException("鏉冮檺涓嶈冻");
     }
   }
 

--
Gitblit v1.9.3