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