From c4fc1e6fcfafb6ae4397d433e1ca9d23e4bd252c Mon Sep 17 00:00:00 2001 From: evo <446796145@qq.com> Date: Tue, 21 Jul 2026 09:35:07 +0800 Subject: [PATCH] =?UTF-8?q?fix(rag):=20=E9=9A=94=E7=A6=BB=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E5=AE=9E=E4=BE=8B=E5=B9=B6=E4=BF=AE=E6=AD=A3=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/ruoyi/factory/EmbeddingModelFactory.java | 15 ++++++++++++--- .../org/ruoyi/factory/RerankModelFactory.java | 14 ++++++++++++-- .../embed/impl/AliBaiLianBaseEmbedProvider.java | 1 + .../impl/AliBaiLianMultiEmbeddingProvider.java | 1 + .../embed/impl/MinimaxEmbeddingProvider.java | 1 + .../embed/impl/OllamaEmbeddingProvider.java | 1 + .../embed/impl/OpenAiEmbeddingProvider.java | 1 + .../embed/impl/SiliconFlowEmbeddingProvider.java | 1 + .../embed/impl/ZhipuAiEmbeddingProvider.java | 1 + .../rerank/impl/AliBaiLianRerankModelService.java | 1 + .../impl/SiliconFlowRerankModelService.java | 1 + .../rerank/impl/ZhiPuRerankModelService.java | 1 + 12 files changed, 34 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/factory/EmbeddingModelFactory.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/factory/EmbeddingModelFactory.java index b123e6bb..19ef4337 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/factory/EmbeddingModelFactory.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/factory/EmbeddingModelFactory.java @@ -77,13 +77,22 @@ public class EmbeddingModelFactory { /** * 刷新模型缓存 - * 根据给定的嵌入模型ID从缓存中移除对应的模型 + * 根据给定的嵌入模型ID解析模型名称后,从缓存中移除对应的模型 * * @param embeddingModelId 嵌入模型的唯一标识ID */ public void refreshModel(Long embeddingModelId) { - // 从模型缓存中移除指定ID的模型 - modelCache.remove(embeddingModelId); + ChatModelVo modelConfig = chatModelService.queryById(embeddingModelId); + if (modelConfig != null) { + modelCache.remove(modelConfig.getModelName()); + } + } + + /** + * 按模型名称刷新缓存 + */ + public void refreshModelByName(String embeddingModelName) { + modelCache.remove(embeddingModelName); } /** diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/factory/RerankModelFactory.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/factory/RerankModelFactory.java index 2b9ff9fe..62ede6ef 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/factory/RerankModelFactory.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/factory/RerankModelFactory.java @@ -55,12 +55,22 @@ public class RerankModelFactory { /** * 刷新模型缓存 - * 根据给定的模型ID从缓存中移除对应的模型 + * 根据给定的模型ID解析模型名称后,从缓存中移除对应的模型 * * @param modelId 模型的唯一标识ID */ public void refreshModel(Long modelId) { - modelCache.remove(modelId); + ChatModelVo modelConfig = chatModelService.queryById(modelId); + if (modelConfig != null) { + modelCache.remove(modelConfig.getModelName()); + } + } + + /** + * 按模型名称刷新缓存 + */ + public void refreshModelByName(String modelName) { + modelCache.remove(modelName); } /** diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/AliBaiLianBaseEmbedProvider.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/AliBaiLianBaseEmbedProvider.java index 01709e45..68292d5e 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/AliBaiLianBaseEmbedProvider.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/AliBaiLianBaseEmbedProvider.java @@ -19,6 +19,7 @@ import java.util.Set; * @Description: 阿里百炼基础嵌入模型(兼容openai) */ @Component("alibailian") +@org.springframework.context.annotation.Scope("prototype") public class AliBaiLianBaseEmbedProvider extends OpenAiEmbeddingProvider { private ChatModelVo chatModelVo; diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/AliBaiLianMultiEmbeddingProvider.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/AliBaiLianMultiEmbeddingProvider.java index 38cc7323..78447a47 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/AliBaiLianMultiEmbeddingProvider.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/AliBaiLianMultiEmbeddingProvider.java @@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit; * 实现了MultiModalEmbedModelService接口,提供文本、图像和视频的嵌入向量生成服务 */ @Component("bailianMultiModel") +@org.springframework.context.annotation.Scope("prototype") @Slf4j public class AliBaiLianMultiEmbeddingProvider implements MultiModalEmbedModelService { private final OkHttpClient okHttpClient; diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/MinimaxEmbeddingProvider.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/MinimaxEmbeddingProvider.java index 4d2dbec5..c92ac2b8 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/MinimaxEmbeddingProvider.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/MinimaxEmbeddingProvider.java @@ -12,6 +12,7 @@ import org.springframework.stereotype.Component; * @date 2026/3/21 */ @Component("minimax") +@org.springframework.context.annotation.Scope("prototype") public class MinimaxEmbeddingProvider extends OpenAiEmbeddingProvider { } diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/OllamaEmbeddingProvider.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/OllamaEmbeddingProvider.java index 905b9e73..502347bf 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/OllamaEmbeddingProvider.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/OllamaEmbeddingProvider.java @@ -19,6 +19,7 @@ import java.util.Set; * @Description: Ollama嵌入模型 */ @Component("ollama") +@org.springframework.context.annotation.Scope("prototype") public class OllamaEmbeddingProvider implements BaseEmbedModelService { private ChatModelVo chatModelVo; diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/OpenAiEmbeddingProvider.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/OpenAiEmbeddingProvider.java index 6c583f6f..ea7f1d99 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/OpenAiEmbeddingProvider.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/OpenAiEmbeddingProvider.java @@ -19,6 +19,7 @@ import java.util.Set; * @Description: OpenAi嵌入模型 */ @Component("openai") +@org.springframework.context.annotation.Scope("prototype") public class OpenAiEmbeddingProvider implements BaseEmbedModelService { protected ChatModelVo chatModelVo; diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/SiliconFlowEmbeddingProvider.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/SiliconFlowEmbeddingProvider.java index 0c0dd326..4e593b54 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/SiliconFlowEmbeddingProvider.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/SiliconFlowEmbeddingProvider.java @@ -9,6 +9,7 @@ import org.springframework.stereotype.Component; * @Description: 硅基流动(兼容 OpenAi) */ @Component("siliconflow") +@org.springframework.context.annotation.Scope("prototype") public class SiliconFlowEmbeddingProvider extends OpenAiEmbeddingProvider { } diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/ZhipuAiEmbeddingProvider.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/ZhipuAiEmbeddingProvider.java index f7f6a048..275c0b82 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/ZhipuAiEmbeddingProvider.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/ZhipuAiEmbeddingProvider.java @@ -21,6 +21,7 @@ import java.util.Set; * @Description: 智谱AI嵌入模型 */ @Component("zhipu") +@org.springframework.context.annotation.Scope("prototype") public class ZhipuAiEmbeddingProvider implements BaseEmbedModelService { protected ChatModelVo chatModelVo; diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/rerank/impl/AliBaiLianRerankModelService.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/rerank/impl/AliBaiLianRerankModelService.java index a7975bf8..18531a50 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/rerank/impl/AliBaiLianRerankModelService.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/rerank/impl/AliBaiLianRerankModelService.java @@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit; */ @Slf4j @Component("qianwenRerank") +@org.springframework.context.annotation.Scope("prototype") public class AliBaiLianRerankModelService implements RerankModelService { private final OkHttpClient okHttpClient; diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/rerank/impl/SiliconFlowRerankModelService.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/rerank/impl/SiliconFlowRerankModelService.java index 49c5aecf..2aedd017 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/rerank/impl/SiliconFlowRerankModelService.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/rerank/impl/SiliconFlowRerankModelService.java @@ -25,6 +25,7 @@ import java.util.concurrent.TimeUnit; */ @Slf4j @Component("siliconflowRerank") +@org.springframework.context.annotation.Scope("prototype") public class SiliconFlowRerankModelService implements RerankModelService { private static final String DEFAULT_BASE_URL = "https://api.siliconflow.cn/v1/rerank"; diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/rerank/impl/ZhiPuRerankModelService.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/rerank/impl/ZhiPuRerankModelService.java index 54054091..e0f7d8b3 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/rerank/impl/ZhiPuRerankModelService.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/rerank/impl/ZhiPuRerankModelService.java @@ -28,6 +28,7 @@ import java.util.concurrent.TimeUnit; */ @Slf4j @Component("zhipuRerank") +@org.springframework.context.annotation.Scope("prototype") public class ZhiPuRerankModelService implements RerankModelService { private final OkHttpClient okHttpClient;