From d18e307e10687ecdeacbec63935de262e5af0ae1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=A2=E7=BB=A7=E6=A3=AE?= <1933694610@qq.com> Date: Mon, 19 May 2025 00:45:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=87=AA=E5=8A=A8=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E5=90=91=E9=87=8F=E6=97=B6=E9=97=B4=E6=94=B9=E4=B8=BA=E4=B8=89?= =?UTF-8?q?=E5=88=86=E9=92=9F;=E4=BF=AE=E5=A4=8D=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E5=88=A0=E9=99=A4=E5=90=91=E9=87=8F=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/VectorStoreServiceImpl.java | 26 ++++++++++++++++++- .../knowledge/KnowledgeInfoServiceImpl.java | 1 + 2 files changed, 26 insertions(+), 1 deletion(-) 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 7e1f6f9b..917652c4 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 @@ public class VectorStoreServiceImpl implements VectorStoreService { createSchema(kid,modelName); // 根据条件删除向量数据 Filter simpleFilter = new IsEqualTo("kid", kid); - embeddingStore.removeAll(simpleFilter); + removeByFilter(simpleFilter); + } + + public void removeByFilter(Filter filter) { + List 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 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 89b68630..06ad06b6 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 @@ public class KnowledgeInfoServiceImpl implements IKnowledgeInfoService { .set(KnowledgeAttach::getVectorStatus, DealStatus.STATUS_10) .eq(KnowledgeAttach::getVectorStatus, DealStatus.STATUS_40)); } + @Scheduled(fixedDelay = 180000) // 3分钟执行一次 }