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 be445b99..8d232728 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 @@ public interface VectorStoreService { 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 e1155425..282c2b63 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.model.openai.OpenAiEmbeddingModel; 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.ruoyi.service.VectorStoreService; 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 @@ public class VectorStoreServiceImpl implements VectorStoreService { private EmbeddingStore embeddingStore; + @Override public void createSchema(String kid, String modelName) { String protocol = configService.getConfigValue("weaviate", "protocol"); @@ -48,7 +45,7 @@ public class VectorStoreServiceImpl implements VectorStoreService { embeddingStore = WeaviateEmbeddingStore.builder() .scheme(protocol) .host(host) - .objectClass(className + kid) + .objectClass(className+kid) .scheme(protocol) .avoidDups(true) .consistencyLevel("ALL") @@ -61,14 +58,9 @@ public class VectorStoreServiceImpl implements VectorStoreService { EmbeddingModel embeddingModel = getEmbeddingModel(storeEmbeddingBo.getEmbeddingModelName(), storeEmbeddingBo.getApiKey(), storeEmbeddingBo.getBaseUrl()); List chunkList = storeEmbeddingBo.getChunkList(); - for (int i = 0; i < chunkList.size(); i++) { - Map 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 @@ public class VectorStoreServiceImpl implements VectorStoreService { 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> matches = embeddingStore.search(embeddingSearchRequest).matches(); List results = new ArrayList<>(); @@ -94,29 +83,10 @@ public class VectorStoreServiceImpl implements VectorStoreService { @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 b46ec862..660d70ac 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 @@ public class ChatMessageController extends BaseController { /** * 查询聊天消息列表 */ - @SaCheckPermission("system:message:list") @GetMapping("/list") public TableDataInfo list(ChatMessageBo bo, PageQuery pageQuery) { return chatMessageService.queryPageList(bo, pageQuery); @@ -49,7 +48,6 @@ public class ChatMessageController extends BaseController { /** * 导出聊天消息列表 */ - @SaCheckPermission("system:message:export") @Log(title = "聊天消息", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(ChatMessageBo bo, HttpServletResponse response) { @@ -62,7 +60,6 @@ public class ChatMessageController extends BaseController { * * @param id 主键 */ - @SaCheckPermission("system:message:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { @@ -72,7 +69,6 @@ public class ChatMessageController extends BaseController { /** * 新增聊天消息 */ - @SaCheckPermission("system:message:add") @Log(title = "聊天消息", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @@ -84,7 +80,6 @@ public class ChatMessageController extends BaseController { /** * 修改聊天消息 */ - @SaCheckPermission("system:message:edit") @Log(title = "聊天消息", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() @@ -97,7 +92,6 @@ public class ChatMessageController extends BaseController { * * @param ids 主键串 */ - @SaCheckPermission("system:message:remove") @Log(title = "聊天消息", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R 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 74766bc1..cef4ad02 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 @@ public class ChatSessionController extends BaseController { /** * 查询会话管理列表 */ - @SaCheckPermission("system:session:list") @GetMapping("/list") public TableDataInfo list(ChatSessionBo bo, PageQuery pageQuery) { if(!LoginHelper.isLogin()){ @@ -56,7 +55,6 @@ public class ChatSessionController extends BaseController { /** * 导出会话管理列表 */ - @SaCheckPermission("system:session:export") @Log(title = "会话管理", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(ChatSessionBo bo, HttpServletResponse response) { @@ -69,7 +67,6 @@ public class ChatSessionController extends BaseController { * * @param id 主键 */ - @SaCheckPermission("system:session:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { @@ -79,7 +76,6 @@ public class ChatSessionController extends BaseController { /** * 新增会话管理 */ - @SaCheckPermission("system:session:add") @Log(title = "会话管理", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @@ -92,7 +88,6 @@ public class ChatSessionController extends BaseController { /** * 修改会话管理 */ - @SaCheckPermission("system:session:edit") @Log(title = "会话管理", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() @@ -105,7 +100,6 @@ public class ChatSessionController extends BaseController { * * @param ids 主键串 */ - @SaCheckPermission("system:session:remove") @Log(title = "会话管理", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R 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 08d2ed4e..4a048270 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 @@ public class KnowledgeInfoServiceImpl implements IKnowledgeInfoService { @Transactional(rollbackFor = Exception.class) public void removeKnowledge(String id) { Map map = new HashMap<>(); - map.put("kid",id); - List 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 @@ public class KnowledgeInfoServiceImpl implements IKnowledgeInfoService { /** * 检查用户是否有删除知识库权限 * - * @param knowledgeInfoList 知识库列表 + * @param knowledgeInfo 知识库 */ - public void check(List 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("权限不足"); } }