mirror of
https://gitcode.com/ageerle/ruoyi-ai.git
synced 2026-03-13 20:53:42 +08:00
Merge pull request #247 from MuSan-Li/feature_20251207_add_ali_emb
feat: 添加阿里向量模型
This commit is contained in:
@@ -84,7 +84,7 @@ public class ChatModel extends BaseEntity {
|
||||
/**
|
||||
* 模型供应商
|
||||
*/
|
||||
private String ProviderName;
|
||||
private String providerName;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
|
||||
@@ -88,7 +88,7 @@ public class ChatModelBo extends BaseEntity {
|
||||
/**
|
||||
* 模型供应商
|
||||
*/
|
||||
private String ProviderName;
|
||||
private String providerName;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
|
||||
@@ -103,7 +103,7 @@ public class ChatModelVo implements Serializable {
|
||||
* 模型供应商
|
||||
*/
|
||||
@ExcelProperty(value = "模型供应商")
|
||||
private String ProviderName;
|
||||
private String providerName;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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("权限不足");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user