From d9c3de660aceb7636335e4397b9ab66d1c25000d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=8C=AF?= Date: Thu, 16 Apr 2026 21:18:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=99=BA=E8=B0=B1=E5=90=91?= =?UTF-8?q?=E9=87=8F=E6=A8=A1=E5=9E=8B=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../embed/impl/ZhipuAiEmbeddingProvider.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/ZhipuAiEmbeddingProvider.java 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 new file mode 100644 index 00000000..f7f6a048 --- /dev/null +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/embed/impl/ZhipuAiEmbeddingProvider.java @@ -0,0 +1,48 @@ +package org.ruoyi.service.embed.impl; + + + +import dev.langchain4j.community.model.zhipu.ZhipuAiEmbeddingModel; +import dev.langchain4j.data.embedding.Embedding; +import dev.langchain4j.data.segment.TextSegment; +import dev.langchain4j.model.embedding.EmbeddingModel; +import dev.langchain4j.model.output.Response; +import org.ruoyi.common.chat.domain.vo.chat.ChatModelVo; +import org.ruoyi.enums.ModalityType; +import org.ruoyi.service.embed.BaseEmbedModelService; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Set; + +/** + * @Author:yang + * @Date: + * @Description: 智谱AI嵌入模型 + */ +@Component("zhipu") +public class ZhipuAiEmbeddingProvider implements BaseEmbedModelService { + protected ChatModelVo chatModelVo; + + @Override + public void configure(ChatModelVo config) { + this.chatModelVo = config; + } + + @Override + public Set getSupportedModalities() { + return Set.of(ModalityType.TEXT); + } + + @Override + public Response> embedAll(List textSegments) { + EmbeddingModel model = ZhipuAiEmbeddingModel.builder() + .baseUrl(chatModelVo.getApiHost()) + .apiKey(chatModelVo.getApiKey()) + .model(chatModelVo.getModelName()) + .dimensions(chatModelVo.getModelDimension()) + .build(); + + return model.embedAll(textSegments); + } +}