feat: 添加阿里向量模型

This commit is contained in:
evo
2025-12-07 22:32:42 +08:00
parent a041acfdbb
commit 1087f86259
6 changed files with 50 additions and 11 deletions

View File

@@ -84,7 +84,7 @@ public class ChatModel extends BaseEntity {
/**
* 模型供应商
*/
private String ProviderName;
private String providerName;
/**
* 备注

View File

@@ -88,7 +88,7 @@ public class ChatModelBo extends BaseEntity {
/**
* 模型供应商
*/
private String ProviderName;
private String providerName;
/**
* 备注

View File

@@ -103,7 +103,7 @@ public class ChatModelVo implements Serializable {
* 模型供应商
*/
@ExcelProperty(value = "模型供应商")
private String ProviderName;
private String providerName;
/**
* 备注

View File

@@ -9,7 +9,9 @@ import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.stream.Collectors;
@Component
@AllArgsConstructor
@@ -19,17 +21,14 @@ public class TextFileLoader implements ResourceLoader {
@Override
public String getContent(InputStream inputStream) {
StringBuffer stringBuffer = new StringBuffer();
try (InputStreamReader reader = new InputStreamReader(inputStream, "UTF-8");
String stringBuffer = "";
try (InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
BufferedReader bufferedReader = new BufferedReader(reader)) {
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuffer.append(line).append("\n");
}
stringBuffer = bufferedReader.lines().collect(Collectors.joining());
} catch (IOException e) {
e.printStackTrace();
}
return stringBuffer.toString();
return stringBuffer;
}
@Override

View File

@@ -1,8 +1,17 @@
package org.ruoyi.embedding.impl;
import dev.langchain4j.community.model.dashscope.QwenEmbeddingModel;
import dev.langchain4j.data.embedding.Embedding;
import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.model.output.Response;
import org.ruoyi.domain.vo.ChatModelVo;
import org.ruoyi.embedding.model.ModalityType;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Set;
/**
* @Author: Robust_H
* @Date: 2025-09-30-下午3:00
@@ -11,4 +20,31 @@ import org.springframework.stereotype.Component;
@Component("alibailian")
public class AliBaiLianBaseEmbedProvider extends OpenAiEmbeddingProvider {
private ChatModelVo chatModelVo;
@Override
public void configure(ChatModelVo config) {
this.chatModelVo = config;
}
@Override
public Set<ModalityType> getSupportedModalities() {
return Set.of();
}
@Override
public Response<List<Embedding>> embedAll(List<TextSegment> textSegments) {
return QwenEmbeddingModel.builder()
// todo 测试 后面要改
// .baseUrl(chatModelVo.getApiHost())
.apiKey(chatModelVo.getApiKey())
.modelName(chatModelVo.getModelName())
.dimension(1024)
// .dimension(chatModelVo.getDimension())
.build()
.embedAll(textSegments);
}
}

View File

@@ -254,7 +254,7 @@ public class KnowledgeInfoServiceImpl implements IKnowledgeInfoService {
check(knowledgeInfo);
map.put("kid", knowledgeInfo.getKid());
// 删除向量数据
vectorStoreService.removeById(String.valueOf(knowledgeInfo.getId()), knowledgeInfo.getVectorModelName());
vectorStoreService.removeById(knowledgeInfo.getKid(), knowledgeInfo.getVectorModelName());
// 删除附件和知识片段
fragmentMapper.deleteByMap(map);
attachMapper.deleteByMap(map);
@@ -337,6 +337,10 @@ public class KnowledgeInfoServiceImpl implements IKnowledgeInfoService {
*/
public void check(KnowledgeInfo knowledgeInfo) {
LoginUser loginUser = LoginHelper.getLoginUser();
// 超级管理员可以删除所有知识库
if (Long.valueOf(1).equals(loginUser.getUserId())) {
return;
}
if (!knowledgeInfo.getUid().equals(loginUser.getUserId())) {
throw new SecurityException("权限不足");
}