From 57693059a1c86ed32a53982d736bc0e89df10860 Mon Sep 17 00:00:00 2001
From: ageerle <32251822+ageerle@users.noreply.github.com>
Date: 星期一, 19 五月 2025 09:21:35 +0800
Subject: [PATCH] Merge pull request #91 from xingjisen/main

---
 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/knowledge/KnowledgeInfoServiceImpl.java  |    1 +
 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/VectorStoreServiceImpl.java |   26 +++++++++++++++++++++++++-
 2 files changed, 26 insertions(+), 1 deletions(-)

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 7e1f6f9..917652c 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
@@ -131,7 +131,31 @@
         createSchema(kid,modelName);
         // 鏍规嵁鏉′欢鍒犻櫎鍚戦噺鏁版嵁
         Filter simpleFilter = new IsEqualTo("kid", kid);
-        embeddingStore.removeAll(simpleFilter);
+        removeByFilter(simpleFilter);
+    }
+
+    public void removeByFilter(Filter filter) {
+        List<Float> dummyVector = new ArrayList<>();
+        // TODO 妯″瀷缁村害
+        int dimension = 1024;
+        for (int i = 0; i < dimension; i++) {
+            dummyVector.add(0.0f);
+        }
+        Embedding dummyEmbedding = Embedding.from(dummyVector);
+        EmbeddingSearchRequest request = EmbeddingSearchRequest.builder()
+                .queryEmbedding(dummyEmbedding)
+                .filter(filter)
+                .maxResults(10000)
+                .build();
+        // 鎼滅储
+        List<String> idsToDelete = embeddingStore.search(request)
+                .matches().stream()
+                .map(EmbeddingMatch::embeddingId)
+                .collect(Collectors.toList());
+        // 鍒犻櫎
+        if (!idsToDelete.isEmpty()) {
+            embeddingStore.removeAll(idsToDelete);
+        }
     }
 
     @Override
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 89b6863..06ad06b 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
@@ -405,4 +405,5 @@
           .set(KnowledgeAttach::getVectorStatus, DealStatus.STATUS_10)
           .eq(KnowledgeAttach::getVectorStatus, DealStatus.STATUS_40));
   }
+    @Scheduled(fixedDelay = 180000) // 3鍒嗛挓鎵ц涓�娆�
 }

--
Gitblit v1.9.3