From c24ba59bb5fc09ee4f993e8d54fe84b3b0a53492 Mon Sep 17 00:00:00 2001 From: feelshana <151412598@qq.com> Date: Thu, 29 May 2025 16:57:38 +0800 Subject: [PATCH] =?UTF-8?q?(fix)(common)=E8=AE=B0=E5=BF=86=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E4=B8=AD=E6=9B=B4=E6=96=B0sql=EF=BC=8C=E5=90=AF?= =?UTF-8?q?=E7=94=A8->=E5=BE=85=E5=AE=9A=EF=BC=8C=E5=BE=85=E5=AE=9A->?= =?UTF-8?q?=E5=90=AF=E7=94=A8=E5=90=91=E9=87=8F=E5=BA=93=E4=B8=8D=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chat/server/service/impl/MemoryServiceImpl.java | 10 +++++++--- .../common/service/impl/EmbeddingServiceImpl.java | 9 ++++----- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/MemoryServiceImpl.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/MemoryServiceImpl.java index b28e6336a..1cdbcd6f3 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/MemoryServiceImpl.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/MemoryServiceImpl.java @@ -65,12 +65,16 @@ public class MemoryServiceImpl implements MemoryService, CommandLineRunner { ChatMemoryDO chatMemoryDO = chatMemoryRepository.getMemory(chatMemoryUpdateReq.getId()); boolean hadEnabled = MemoryStatus.ENABLED.toString().equals(chatMemoryDO.getStatus().trim()); - if (MemoryStatus.ENABLED.equals(chatMemoryUpdateReq.getStatus()) && !hadEnabled) { + + if (MemoryStatus.ENABLED.equals(chatMemoryUpdateReq.getStatus())) { + // Update the latest SQL/Schema to vector DB once memory is enabled + chatMemoryDO.setS2sql(chatMemoryUpdateReq.getS2sql()); + chatMemoryDO.setDbSchema(chatMemoryUpdateReq.getDbSchema()); enableMemory(chatMemoryDO); - } else if (MemoryStatus.DISABLED.equals(chatMemoryUpdateReq.getStatus()) && hadEnabled) { + } else if ((MemoryStatus.DISABLED.equals(chatMemoryUpdateReq.getStatus())||MemoryStatus.PENDING.equals(chatMemoryUpdateReq.getStatus())) && hadEnabled) { + // Remove from vector DB when transitioning: launched→disabled OR enabled→pending disableMemory(chatMemoryDO); } - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(ChatMemoryDO::getId, chatMemoryDO.getId()); if (Objects.nonNull(chatMemoryUpdateReq.getStatus())) { diff --git a/common/src/main/java/com/tencent/supersonic/common/service/impl/EmbeddingServiceImpl.java b/common/src/main/java/com/tencent/supersonic/common/service/impl/EmbeddingServiceImpl.java index 9bd6563aa..b5694e26a 100644 --- a/common/src/main/java/com/tencent/supersonic/common/service/impl/EmbeddingServiceImpl.java +++ b/common/src/main/java/com/tencent/supersonic/common/service/impl/EmbeddingServiceImpl.java @@ -49,11 +49,10 @@ public class EmbeddingServiceImpl implements EmbeddingService { try { EmbeddingModel embeddingModel = ModelProvider.getEmbeddingModel(); Embedding embedding = embeddingModel.embed(question).content(); - boolean existSegment = - existSegment(collectionName, embeddingStore, query, embedding); - if (existSegment) { - continue; - } + MetadataFilterBuilder filterBuilder = + new MetadataFilterBuilder(TextSegmentConvert.QUERY_ID); + Filter filter = filterBuilder.isEqualTo(TextSegmentConvert.getQueryId(query)); + embeddingStore.removeAll(filter); embeddingStore.add(embedding, query); cache.put(TextSegmentConvert.getQueryId(query), true); } catch (Exception e) {