Commit 024109dac9237d06766daf8f1aa0e5347b5bf361

Authored by xiaoxin
1 parent ed2296e4

【优化】AI 知识库: 从url下载文档资源

yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/knowledge/AiKnowledgeBaseMapper.java renamed to yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/knowledge/AiKnowledgeMapper.java
... ... @@ -10,5 +10,5 @@ import org.apache.ibatis.annotations.Mapper;
10 10 * @author xiaoxin
11 11 */
12 12 @Mapper
13   -public interface AiKnowledgeBaseMapper extends BaseMapperX<AiKnowledgeDO> {
  13 +public interface AiKnowledgeMapper extends BaseMapperX<AiKnowledgeDO> {
14 14 }
... ...
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/AiKnowledgeDocumentServiceImpl.java
1 1 package cn.iocoder.yudao.module.ai.service.knowledge;
2 2  
3 3 import cn.hutool.core.collection.CollUtil;
  4 +import cn.hutool.http.HttpUtil;
4 5 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
5 6 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
6 7 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
... ... @@ -17,7 +18,7 @@ import org.springframework.ai.reader.tika.TikaDocumentReader;
17 18 import org.springframework.ai.tokenizer.TokenCountEstimator;
18 19 import org.springframework.ai.transformer.splitter.TokenTextSplitter;
19 20 import org.springframework.ai.vectorstore.RedisVectorStore;
20   -import org.springframework.beans.factory.annotation.Value;
  21 +import org.springframework.core.io.ByteArrayResource;
21 22 import org.springframework.stereotype.Service;
22 23 import org.springframework.transaction.annotation.Transactional;
23 24  
... ... @@ -46,17 +47,14 @@ public class AiKnowledgeDocumentServiceImpl implements AiKnowledgeDocumentServic
46 47 private RedisVectorStore vectorStore;
47 48  
48 49  
49   - // TODO xiaoxin 临时测试用,后续删
50   - @Value("classpath:/webapp/test/Fel.pdf")
51   - private org.springframework.core.io.Resource data;
52   -
53 50 // TODO 芋艿:需要 review 下,代码格式;
54 51 @Override
55 52 @Transactional(rollbackFor = Exception.class)
56 53 public Long createKnowledgeDocument(AiKnowledgeDocumentCreateReqVO createReqVO) {
57   - // TODO xiaoxin 后续从 url 加载
58   - TikaDocumentReader loader = new TikaDocumentReader(data);
59   - // 1.1 加载文档
  54 + // 1.1 下载文档
  55 + String url = createReqVO.getUrl();
  56 + TikaDocumentReader loader = new TikaDocumentReader(downloadFile(url));
  57 + // 1.2 加载文档
60 58 List<Document> documents = loader.get();
61 59 Document document = CollUtil.getFirst(documents);
62 60 // TODO @xin:是不是不存在,就抛出异常呀;厚泽 return 呀;
... ... @@ -86,4 +84,14 @@ public class AiKnowledgeDocumentServiceImpl implements AiKnowledgeDocumentServic
86 84 return documentId;
87 85 }
88 86  
  87 + private org.springframework.core.io.Resource downloadFile(String url) {
  88 + try {
  89 + byte[] bytes = HttpUtil.downloadBytes(url);
  90 + return new ByteArrayResource(bytes);
  91 + } catch (Exception e) {
  92 + log.error("[downloadFile][url({}) 下载失败]", url, e);
  93 + throw new RuntimeException(e);
  94 + }
  95 + }
  96 +
89 97 }
... ...
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/AiKnowledgeServiceImpl.java
... ... @@ -7,7 +7,7 @@ import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.AiKnowledgeCreat
7 7 import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.AiKnowledgeUpdateMyReqVO;
8 8 import cn.iocoder.yudao.module.ai.dal.dataobject.knowledge.AiKnowledgeDO;
9 9 import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatModelDO;
10   -import cn.iocoder.yudao.module.ai.dal.mysql.knowledge.AiKnowledgeBaseMapper;
  10 +import cn.iocoder.yudao.module.ai.dal.mysql.knowledge.AiKnowledgeMapper;
11 11 import cn.iocoder.yudao.module.ai.service.model.AiChatModelService;
12 12 import jakarta.annotation.Resource;
13 13 import lombok.extern.slf4j.Slf4j;
... ... @@ -29,7 +29,7 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService {
29 29 private AiChatModelService chatModalService;
30 30  
31 31 @Resource
32   - private AiKnowledgeBaseMapper knowledgeBaseMapper;
  32 + private AiKnowledgeMapper knowledgeBaseMapper;
33 33  
34 34 @Override
35 35 public Long createKnowledgeMy(AiKnowledgeCreateMyReqVO createReqVO, Long userId) {
... ...
yudao-module-ai/yudao-spring-boot-starter-ai/src/main/resources/webapp/test/Fel.pdf deleted
No preview for this file type