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