mirror of
https://gitcode.com/ageerle/ruoyi-ai.git
synced 2026-04-17 13:53:41 +00:00
feat: 支持milvus、qdrant向量库
This commit is contained in:
@@ -47,20 +47,6 @@
|
|||||||
<version>1.0.79</version>
|
<version>1.0.79</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- milvus java sdk -->
|
|
||||||
<!-- <dependency>-->
|
|
||||||
<!-- <groupId>io.milvus</groupId>-->
|
|
||||||
<!-- <artifactId>milvus-sdk-java</artifactId>-->
|
|
||||||
<!-- <version>2.3.2</version>-->
|
|
||||||
<!-- </dependency>-->
|
|
||||||
|
|
||||||
<!-- <dependency>-->
|
|
||||||
<!-- <groupId>io.weaviate</groupId>-->
|
|
||||||
<!-- <artifactId>client</artifactId>-->
|
|
||||||
<!-- <version>4.0.0</version>-->
|
|
||||||
<!-- </dependency>-->
|
|
||||||
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>dev.langchain4j</groupId>
|
<groupId>dev.langchain4j</groupId>
|
||||||
<artifactId>langchain4j</artifactId>
|
<artifactId>langchain4j</artifactId>
|
||||||
@@ -94,6 +80,29 @@
|
|||||||
<artifactId>langchain4j-ollama</artifactId>
|
<artifactId>langchain4j-ollama</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>dev.langchain4j</groupId>
|
||||||
|
<artifactId>langchain4j-milvus</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.testcontainers</groupId>
|
||||||
|
<artifactId>milvus</artifactId>
|
||||||
|
<version>1.19.6</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>dev.langchain4j</groupId>
|
||||||
|
<artifactId>langchain4j-qdrant</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.testcontainers</groupId>
|
||||||
|
<artifactId>qdrant</artifactId>
|
||||||
|
<version>1.19.6</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public interface VectorStoreService {
|
|||||||
|
|
||||||
List<String> getQueryVector(QueryVectorBo queryVectorBo);
|
List<String> getQueryVector(QueryVectorBo queryVectorBo);
|
||||||
|
|
||||||
void createSchema(String kid);
|
void createSchema(String kid,String modelName);
|
||||||
|
|
||||||
void removeByKidAndFid(String kid, String fid);
|
void removeByKidAndFid(String kid, String fid);
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ import dev.langchain4j.store.embedding.EmbeddingSearchRequest;
|
|||||||
import dev.langchain4j.store.embedding.EmbeddingStore;
|
import dev.langchain4j.store.embedding.EmbeddingStore;
|
||||||
import dev.langchain4j.store.embedding.filter.Filter;
|
import dev.langchain4j.store.embedding.filter.Filter;
|
||||||
import dev.langchain4j.store.embedding.filter.comparison.IsEqualTo;
|
import dev.langchain4j.store.embedding.filter.comparison.IsEqualTo;
|
||||||
|
import dev.langchain4j.store.embedding.milvus.MilvusEmbeddingStore;
|
||||||
|
import dev.langchain4j.store.embedding.qdrant.QdrantEmbeddingStore;
|
||||||
import dev.langchain4j.store.embedding.weaviate.WeaviateEmbeddingStore;
|
import dev.langchain4j.store.embedding.weaviate.WeaviateEmbeddingStore;
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@@ -30,13 +32,13 @@ import java.util.Map;
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Weaviate向量库管理
|
* 向量库管理
|
||||||
* @author ageer
|
* @author ageer
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class WeaviateVectorStoreImpl implements VectorStoreService {
|
public class VectorStoreServiceImpl implements VectorStoreService {
|
||||||
|
|
||||||
private EmbeddingStore<TextSegment> embeddingStore;
|
private EmbeddingStore<TextSegment> embeddingStore;
|
||||||
|
|
||||||
@@ -44,7 +46,8 @@ public class WeaviateVectorStoreImpl implements VectorStoreService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void createSchema(String kid) {
|
public void createSchema(String kid,String modelName) {
|
||||||
|
if(modelName.equals("weaviate")){
|
||||||
String protocol = configService.getConfigValue("weaviate", "protocol");
|
String protocol = configService.getConfigValue("weaviate", "protocol");
|
||||||
String host = configService.getConfigValue("weaviate", "host");
|
String host = configService.getConfigValue("weaviate", "host");
|
||||||
String className = configService.getConfigValue("weaviate", "classname");
|
String className = configService.getConfigValue("weaviate", "classname");
|
||||||
@@ -56,6 +59,25 @@ public class WeaviateVectorStoreImpl implements VectorStoreService {
|
|||||||
.avoidDups(true)
|
.avoidDups(true)
|
||||||
.consistencyLevel("ALL")
|
.consistencyLevel("ALL")
|
||||||
.build();
|
.build();
|
||||||
|
}else if(modelName.equals("milvus")){
|
||||||
|
String uri = configService.getConfigValue("milvus", "host");
|
||||||
|
String collection = configService.getConfigValue("milvus", "collection");
|
||||||
|
String dimension = configService.getConfigValue("milvus", "dimension");
|
||||||
|
this.embeddingStore = MilvusEmbeddingStore.builder()
|
||||||
|
.uri(uri)
|
||||||
|
.collectionName(collection+kid)
|
||||||
|
.dimension(Integer.parseInt(dimension))
|
||||||
|
.build();
|
||||||
|
}else if(modelName.equals("qdrant")){
|
||||||
|
String host = configService.getConfigValue("qdrant", "host");
|
||||||
|
String port = configService.getConfigValue("qdrant", "port");
|
||||||
|
String collectionName = configService.getConfigValue("qdrant", "collectionName");
|
||||||
|
this.embeddingStore = QdrantEmbeddingStore.builder()
|
||||||
|
.host(host)
|
||||||
|
.port(Integer.parseInt(port))
|
||||||
|
.collectionName(collectionName)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -160,7 +160,9 @@ public class KnowledgeInfoServiceImpl implements IKnowledgeInfoService {
|
|||||||
knowledgeInfo.setUid(LoginHelper.getLoginUser().getUserId());
|
knowledgeInfo.setUid(LoginHelper.getLoginUser().getUserId());
|
||||||
}
|
}
|
||||||
baseMapper.insert(knowledgeInfo);
|
baseMapper.insert(knowledgeInfo);
|
||||||
vectorStoreService.createSchema(String.valueOf(knowledgeInfo.getId()));
|
if (knowledgeInfo != null) {
|
||||||
|
vectorStoreService.createSchema(String.valueOf(knowledgeInfo.getId()),bo.getVector());
|
||||||
|
}
|
||||||
}else {
|
}else {
|
||||||
baseMapper.updateById(knowledgeInfo);
|
baseMapper.updateById(knowledgeInfo);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user