办学质量监测教学评价系统
ageerle
2025-05-19 57693059a1c86ed32a53982d736bc0e89df10860
Merge pull request #91 from xingjisen/main

fix: 自动上传向量时间改为三分钟;修复根据条件删除向量数据报错问题;
已修改2个文件
27 ■■■■■ 文件已修改
ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/VectorStoreServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/knowledge/KnowledgeInfoServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/VectorStoreServiceImpl.java
@@ -131,7 +131,31 @@
        createSchema(kid,modelName);
        // 根据条件删除向量数据
        Filter simpleFilter = new IsEqualTo("kid", kid);
        embeddingStore.removeAll(simpleFilter);
        removeByFilter(simpleFilter);
    }
    public void removeByFilter(Filter filter) {
        List<Float> dummyVector = new ArrayList<>();
        // TODO 模型维度
        int dimension = 1024;
        for (int i = 0; i < dimension; i++) {
            dummyVector.add(0.0f);
        }
        Embedding dummyEmbedding = Embedding.from(dummyVector);
        EmbeddingSearchRequest request = EmbeddingSearchRequest.builder()
                .queryEmbedding(dummyEmbedding)
                .filter(filter)
                .maxResults(10000)
                .build();
        // 搜索
        List<String> idsToDelete = embeddingStore.search(request)
                .matches().stream()
                .map(EmbeddingMatch::embeddingId)
                .collect(Collectors.toList());
        // 删除
        if (!idsToDelete.isEmpty()) {
            embeddingStore.removeAll(idsToDelete);
        }
    }
    @Override
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/knowledge/KnowledgeInfoServiceImpl.java
@@ -405,4 +405,5 @@
          .set(KnowledgeAttach::getVectorStatus, DealStatus.STATUS_10)
          .eq(KnowledgeAttach::getVectorStatus, DealStatus.STATUS_40));
  }
    @Scheduled(fixedDelay = 180000) // 3分钟执行一次
}