mirror of
https://gitcode.com/ageerle/ruoyi-ai.git
synced 2026-03-13 20:53:42 +08:00
refactor(vector): 简化createSchema接口参数并更新相关实现
移除createSchema方法中冗余的modelName参数 更新Milvus向量维度为2048以匹配新模型 添加对embeddingModelName参数的支持
This commit is contained in:
@@ -16,7 +16,7 @@ public interface VectorStoreService {
|
||||
|
||||
List<String> getQueryVector(QueryVectorBo queryVectorBo);
|
||||
|
||||
void createSchema(String vectorModelName, String kid,String modelName);
|
||||
void createSchema(String vectorModelName, String kid);
|
||||
|
||||
void removeById(String id,String modelName) throws ServiceException;
|
||||
|
||||
|
||||
@@ -35,10 +35,10 @@ public class VectorStoreServiceImpl implements VectorStoreService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createSchema(String vectorModelName, String kid, String modelName) {
|
||||
log.info("创建向量库schema: vectorModelName={}, kid={}, modelName={}", vectorModelName, kid, modelName);
|
||||
public void createSchema(String vectorModelName, String kid) {
|
||||
log.info("创建向量库schema: vectorModelName={}, kid={}, modelName={}", vectorModelName, kid);
|
||||
VectorStoreStrategy strategy = getCurrentStrategy();
|
||||
strategy.createSchema(vectorModelName, kid, modelName);
|
||||
strategy.createSchema(vectorModelName, kid);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -8,6 +8,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.ruoyi.common.core.config.VectorStoreProperties;
|
||||
import org.ruoyi.common.core.utils.StringUtils;
|
||||
|
||||
/**
|
||||
* 向量库策略抽象基类
|
||||
@@ -38,6 +39,13 @@ public abstract class AbstractVectorStoreStrategy implements VectorStoreStrategy
|
||||
.baseUrl(baseUrl)
|
||||
.modelName(modelName)
|
||||
.build();
|
||||
} else if (StringUtils.isNotEmpty(modelName)){
|
||||
embeddingModel = OpenAiEmbeddingModel.builder()
|
||||
.apiKey(apiKey)
|
||||
.baseUrl(baseUrl)
|
||||
.dimensions(2048)
|
||||
.modelName(modelName)
|
||||
.build();
|
||||
} else {
|
||||
throw new ServiceException("未找到对应向量化模型!");
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ public class MilvusVectorStoreStrategy extends AbstractVectorStoreStrategy {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createSchema(String vectorModelName, String kid, String modelName) {
|
||||
public void createSchema(String vectorModelName, String kid) {
|
||||
String url = vectorStoreProperties.getMilvus().getUrl();
|
||||
String collectionName = vectorStoreProperties.getMilvus().getCollectionname() + kid;
|
||||
|
||||
@@ -111,7 +111,7 @@ public class MilvusVectorStoreStrategy extends AbstractVectorStoreStrategy {
|
||||
fields.add(FieldType.newBuilder()
|
||||
.withName("vector")
|
||||
.withDataType(DataType.FloatVector)
|
||||
.withDimension(1024) // 根据实际embedding维度调整
|
||||
.withDimension(2048) // 根据实际embedding维度调整
|
||||
.build());
|
||||
|
||||
// 创建集合
|
||||
@@ -150,7 +150,7 @@ public class MilvusVectorStoreStrategy extends AbstractVectorStoreStrategy {
|
||||
|
||||
@Override
|
||||
public void storeEmbeddings(StoreEmbeddingBo storeEmbeddingBo) {
|
||||
createSchema(storeEmbeddingBo.getVectorModelName(), storeEmbeddingBo.getKid(), storeEmbeddingBo.getVectorModelName());
|
||||
createSchema(storeEmbeddingBo.getVectorModelName(), storeEmbeddingBo.getKid());
|
||||
|
||||
EmbeddingModel embeddingModel = getEmbeddingModel(storeEmbeddingBo.getEmbeddingModelName(),
|
||||
storeEmbeddingBo.getApiKey(), storeEmbeddingBo.getBaseUrl());
|
||||
@@ -216,7 +216,7 @@ public class MilvusVectorStoreStrategy extends AbstractVectorStoreStrategy {
|
||||
|
||||
@Override
|
||||
public List<String> getQueryVector(QueryVectorBo queryVectorBo) {
|
||||
createSchema(queryVectorBo.getVectorModelName(), queryVectorBo.getKid(), queryVectorBo.getVectorModelName());
|
||||
createSchema(queryVectorBo.getVectorModelName(), queryVectorBo.getKid());
|
||||
|
||||
EmbeddingModel embeddingModel = getEmbeddingModel(queryVectorBo.getEmbeddingModelName(),
|
||||
queryVectorBo.getApiKey(), queryVectorBo.getBaseUrl());
|
||||
@@ -243,6 +243,7 @@ public class MilvusVectorStoreStrategy extends AbstractVectorStoreStrategy {
|
||||
// 构建搜索参数
|
||||
SearchParam searchParam = SearchParam.newBuilder()
|
||||
.withCollectionName(collectionName)
|
||||
// 匹配方法
|
||||
.withMetricType(MetricType.L2)
|
||||
.withOutFields(Arrays.asList("text", "fid", "kid", "docId"))
|
||||
.withTopK(queryVectorBo.getMaxResults())
|
||||
|
||||
@@ -45,7 +45,7 @@ public class WeaviateVectorStoreStrategy extends AbstractVectorStoreStrategy {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createSchema(String vectorModelName, String kid, String modelName) {
|
||||
public void createSchema(String vectorModelName, String kid) {
|
||||
String protocol = vectorStoreProperties.getWeaviate().getProtocol();
|
||||
String host = vectorStoreProperties.getWeaviate().getHost();
|
||||
String className = vectorStoreProperties.getWeaviate().getClassname() + kid;
|
||||
@@ -84,7 +84,7 @@ public class WeaviateVectorStoreStrategy extends AbstractVectorStoreStrategy {
|
||||
|
||||
@Override
|
||||
public void storeEmbeddings(StoreEmbeddingBo storeEmbeddingBo) {
|
||||
createSchema(storeEmbeddingBo.getVectorModelName(), storeEmbeddingBo.getKid(), storeEmbeddingBo.getVectorModelName());
|
||||
createSchema(storeEmbeddingBo.getVectorModelName(), storeEmbeddingBo.getKid());
|
||||
EmbeddingModel embeddingModel = getEmbeddingModel(storeEmbeddingBo.getEmbeddingModelName(),
|
||||
storeEmbeddingBo.getApiKey(), storeEmbeddingBo.getBaseUrl());
|
||||
List<String> chunkList = storeEmbeddingBo.getChunkList();
|
||||
@@ -118,7 +118,7 @@ public class WeaviateVectorStoreStrategy extends AbstractVectorStoreStrategy {
|
||||
|
||||
@Override
|
||||
public List<String> getQueryVector(QueryVectorBo queryVectorBo) {
|
||||
createSchema(queryVectorBo.getVectorModelName(), queryVectorBo.getKid(), queryVectorBo.getVectorModelName());
|
||||
createSchema(queryVectorBo.getVectorModelName(), queryVectorBo.getKid());
|
||||
EmbeddingModel embeddingModel = getEmbeddingModel(queryVectorBo.getEmbeddingModelName(),
|
||||
queryVectorBo.getApiKey(), queryVectorBo.getBaseUrl());
|
||||
Embedding queryEmbedding = embeddingModel.embed(queryVectorBo.getQuery()).content();
|
||||
|
||||
@@ -237,8 +237,7 @@ public class KnowledgeInfoServiceImpl implements IKnowledgeInfoService {
|
||||
}
|
||||
baseMapper.insert(knowledgeInfo);
|
||||
if (knowledgeInfo != null) {
|
||||
vectorStoreService.createSchema(knowledgeInfo.getVectorModelName(),String.valueOf(knowledgeInfo.getId()),
|
||||
bo.getVectorModelName());
|
||||
vectorStoreService.createSchema(knowledgeInfo.getVectorModelName(),String.valueOf(knowledgeInfo.getId()));
|
||||
}
|
||||
} else {
|
||||
baseMapper.updateById(knowledgeInfo);
|
||||
@@ -322,6 +321,7 @@ public class KnowledgeInfoServiceImpl implements IKnowledgeInfoService {
|
||||
storeEmbeddingBo.setChunkList(chunkList);
|
||||
storeEmbeddingBo.setVectorModelName(knowledgeInfoVo.getVectorModelName());
|
||||
storeEmbeddingBo.setEmbeddingModelId(knowledgeInfoVo.getEmbeddingModelId());
|
||||
storeEmbeddingBo.setEmbeddingModelName(knowledgeInfoVo.getEmbeddingModelName());
|
||||
storeEmbeddingBo.setApiKey(chatModelVo.getApiKey());
|
||||
storeEmbeddingBo.setBaseUrl(chatModelVo.getApiHost());
|
||||
vectorStoreService.storeEmbeddings(storeEmbeddingBo);
|
||||
|
||||
Reference in New Issue
Block a user