办学质量监测教学评价系统
ageerle
2025-05-08 980df20752f031460301cc1697a22757239a1ac9
feat: 支持milvus、qdrant向量库
已重命名1个文件
已修改3个文件
71 ■■■■ 文件已修改
ruoyi-modules-api/ruoyi-knowledge-api/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/VectorStoreService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/VectorStoreServiceImpl.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/knowledge/KnowledgeInfoServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-knowledge-api/pom.xml
@@ -47,20 +47,6 @@
            <version>1.0.79</version>
        </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>
            <groupId>dev.langchain4j</groupId>
            <artifactId>langchain4j</artifactId>
@@ -94,6 +80,29 @@
            <artifactId>langchain4j-ollama</artifactId>
        </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>
</project>
ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/VectorStoreService.java
@@ -19,7 +19,7 @@
    List<String> getQueryVector(QueryVectorBo queryVectorBo);
    void createSchema(String kid);
    void createSchema(String kid,String modelName);
    void removeByKidAndFid(String kid, String fid);
ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/VectorStoreServiceImpl.java
ÎļþÃû´Ó ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/WeaviateVectorStoreImpl.java ÐÞ¸Ä
@@ -11,6 +11,8 @@
import dev.langchain4j.store.embedding.EmbeddingStore;
import dev.langchain4j.store.embedding.filter.Filter;
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 jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
@@ -30,13 +32,13 @@
/**
 * Weaviate向量库管理
 * å‘量库管理
 * @author ageer
 */
@Service
@Slf4j
@RequiredArgsConstructor
public class WeaviateVectorStoreImpl implements VectorStoreService {
public class VectorStoreServiceImpl implements VectorStoreService {
    private EmbeddingStore<TextSegment> embeddingStore;
@@ -44,7 +46,8 @@
    @Override
    @PostConstruct
    public void createSchema(String kid) {
    public void createSchema(String kid,String modelName) {
        if(modelName.equals("weaviate")){
        String protocol = configService.getConfigValue("weaviate", "protocol");
        String host = configService.getConfigValue("weaviate", "host");
        String className = configService.getConfigValue("weaviate", "classname");
@@ -56,6 +59,25 @@
                .avoidDups(true)
                .consistencyLevel("ALL")
                .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
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/knowledge/KnowledgeInfoServiceImpl.java
@@ -160,7 +160,9 @@
                knowledgeInfo.setUid(LoginHelper.getLoginUser().getUserId());
            }
            baseMapper.insert(knowledgeInfo);
            vectorStoreService.createSchema(String.valueOf(knowledgeInfo.getId()));
            if (knowledgeInfo != null) {
                vectorStoreService.createSchema(String.valueOf(knowledgeInfo.getId()),bo.getVector());
            }
        }else {
            baseMapper.updateById(knowledgeInfo);
        }