From f818fa5eca223270f0656e0455c338ec1f2fac88 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 09 六月 2026 10:04:49 +0800
Subject: [PATCH] ``` refactor(knowledge-base): 重构RAG向量检索功能的文件关联和异步处理

---
 src/main/java/com/ruoyi/ai/service/impl/KnowledgeRagServiceImpl.java |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/ruoyi/ai/service/impl/KnowledgeRagServiceImpl.java b/src/main/java/com/ruoyi/ai/service/impl/KnowledgeRagServiceImpl.java
index 751c427..e0c264e 100644
--- a/src/main/java/com/ruoyi/ai/service/impl/KnowledgeRagServiceImpl.java
+++ b/src/main/java/com/ruoyi/ai/service/impl/KnowledgeRagServiceImpl.java
@@ -46,13 +46,15 @@
     private static final int CHUNK_OVERLAP = 100;
 
     @Override
-    @Async
+    @Async("threadPoolTaskExecutor")
     public void processVectorAsync(Long vectorId) {
+        log.info("寮�濮嬪紓姝ュ悜閲忓寲澶勭悊: vectorId={}, thread={}", vectorId, Thread.currentThread().getName());
         processVector(vectorId);
     }
 
     @Override
     public void processVector(Long vectorId) {
+        log.info("寮�濮嬪鐞嗗悜閲忓寲: vectorId={}", vectorId);
         KnowledgeBaseVector vector = knowledgeBaseVectorService.getById(vectorId);
         if (vector == null) {
             log.error("鍚戦噺璁板綍涓嶅瓨鍦�: {}", vectorId);
@@ -61,30 +63,38 @@
 
         try {
             // 鏇存柊鐘舵�佷负澶勭悊涓�
+            log.info("鏇存柊鐘舵�佷负澶勭悊涓�: vectorId={}", vectorId);
             knowledgeBaseVectorService.updateVectorStatus(vectorId,
                     KnowledgeBaseVector.STATUS_PROCESSING, null, null);
 
             // 鑾峰彇鏂囦欢鍐呭
+            log.info("鑾峰彇鏂囦欢淇℃伅: storageBlobId={}", vector.getStorageBlobId());
             StorageBlob blob = storageBlobService.getById(vector.getStorageBlobId());
             if (blob == null) {
                 throw new RuntimeException("鏂囦欢涓嶅瓨鍦�: " + vector.getStorageBlobId());
             }
 
             File file = getFile(blob);
+            log.info("鏂囦欢璺緞: {}, 鏄惁瀛樺湪: {}", file.getAbsolutePath(), file.exists());
 
             // 鐩存帴璇诲彇鏂囦欢鍐呭锛屼笉浣跨敤 MultipartFile 鍖呰
+            log.info("鎻愬彇鏂囦欢鍐呭: fileName={}", vector.getFileName());
             String content = extractFileContent(file, vector.getFileName(), blob.getContentType());
+            log.info("鏂囦欢鍐呭闀垮害: {}", content != null ? content.length() : 0);
 
             if (content == null || content.trim().isEmpty()) {
                 throw new RuntimeException("鏂囦欢鍐呭涓虹┖");
             }
 
             // 鏂囨湰鍒囩墖
+            log.info("寮�濮嬫枃鏈垏鐗�");
             List<TextSegment> chunks = splitText(content, vector);
+            log.info("鍒囩墖瀹屾垚锛屽叡 {} 涓潡", chunks.size());
 
             // 鎵归噺鐢熸垚宓屽叆鍚戦噺骞跺瓨鍌�
             int chunkCount = 0;
             for (TextSegment chunk : chunks) {
+                log.debug("澶勭悊绗� {} 涓潡", chunkCount + 1);
                 Embedding embedding = embeddingModel.embed(chunk).content();
                 embeddingStore.add(embedding, chunk);
                 chunkCount++;

--
Gitblit v1.9.3