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