mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 02:08:43 +08:00 
			
		
		
		
	【优化】AI 知识库: 从url下载文档资源
This commit is contained in:
		| @@ -10,5 +10,5 @@ import org.apache.ibatis.annotations.Mapper; | |||||||
|  * @author xiaoxin |  * @author xiaoxin | ||||||
|  */ |  */ | ||||||
| @Mapper | @Mapper | ||||||
| public interface AiKnowledgeBaseMapper extends BaseMapperX<AiKnowledgeDO> { | public interface AiKnowledgeMapper extends BaseMapperX<AiKnowledgeDO> { | ||||||
| } | } | ||||||
| @@ -1,6 +1,7 @@ | |||||||
| package cn.iocoder.yudao.module.ai.service.knowledge; | package cn.iocoder.yudao.module.ai.service.knowledge; | ||||||
|  |  | ||||||
| import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||||
|  | import cn.hutool.http.HttpUtil; | ||||||
| import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||||||
| import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||||||
| import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||||||
| @@ -17,7 +18,7 @@ import org.springframework.ai.reader.tika.TikaDocumentReader; | |||||||
| import org.springframework.ai.tokenizer.TokenCountEstimator; | import org.springframework.ai.tokenizer.TokenCountEstimator; | ||||||
| import org.springframework.ai.transformer.splitter.TokenTextSplitter; | import org.springframework.ai.transformer.splitter.TokenTextSplitter; | ||||||
| import org.springframework.ai.vectorstore.RedisVectorStore; | import org.springframework.ai.vectorstore.RedisVectorStore; | ||||||
| import org.springframework.beans.factory.annotation.Value; | import org.springframework.core.io.ByteArrayResource; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| import org.springframework.transaction.annotation.Transactional; | import org.springframework.transaction.annotation.Transactional; | ||||||
|  |  | ||||||
| @@ -46,17 +47,14 @@ public class AiKnowledgeDocumentServiceImpl implements AiKnowledgeDocumentServic | |||||||
|     private RedisVectorStore vectorStore; |     private RedisVectorStore vectorStore; | ||||||
|  |  | ||||||
|  |  | ||||||
|     // TODO xiaoxin 临时测试用,后续删 |  | ||||||
|     @Value("classpath:/webapp/test/Fel.pdf") |  | ||||||
|     private org.springframework.core.io.Resource data; |  | ||||||
|  |  | ||||||
|     // TODO 芋艿:需要 review 下,代码格式; |     // TODO 芋艿:需要 review 下,代码格式; | ||||||
|     @Override |     @Override | ||||||
|     @Transactional(rollbackFor = Exception.class) |     @Transactional(rollbackFor = Exception.class) | ||||||
|     public Long createKnowledgeDocument(AiKnowledgeDocumentCreateReqVO createReqVO) { |     public Long createKnowledgeDocument(AiKnowledgeDocumentCreateReqVO createReqVO) { | ||||||
|         // TODO xiaoxin 后续从 url 加载 |         // 1.1 下载文档 | ||||||
|         TikaDocumentReader loader = new TikaDocumentReader(data); |         String url = createReqVO.getUrl(); | ||||||
|         // 1.1 加载文档 |         TikaDocumentReader loader = new TikaDocumentReader(downloadFile(url)); | ||||||
|  |         // 1.2 加载文档 | ||||||
|         List<Document> documents = loader.get(); |         List<Document> documents = loader.get(); | ||||||
|         Document document = CollUtil.getFirst(documents); |         Document document = CollUtil.getFirst(documents); | ||||||
|         // TODO @xin:是不是不存在,就抛出异常呀;厚泽 return 呀; |         // TODO @xin:是不是不存在,就抛出异常呀;厚泽 return 呀; | ||||||
| @@ -86,4 +84,14 @@ public class AiKnowledgeDocumentServiceImpl implements AiKnowledgeDocumentServic | |||||||
|         return documentId; |         return documentId; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     private org.springframework.core.io.Resource downloadFile(String url) { | ||||||
|  |         try { | ||||||
|  |             byte[] bytes = HttpUtil.downloadBytes(url); | ||||||
|  |             return new ByteArrayResource(bytes); | ||||||
|  |         } catch (Exception e) { | ||||||
|  |             log.error("[downloadFile][url({}) 下载失败]", url, e); | ||||||
|  |             throw new RuntimeException(e); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.AiKnowledgeCreat | |||||||
| import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.AiKnowledgeUpdateMyReqVO; | import cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.AiKnowledgeUpdateMyReqVO; | ||||||
| import cn.iocoder.yudao.module.ai.dal.dataobject.knowledge.AiKnowledgeDO; | import cn.iocoder.yudao.module.ai.dal.dataobject.knowledge.AiKnowledgeDO; | ||||||
| import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatModelDO; | import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatModelDO; | ||||||
| import cn.iocoder.yudao.module.ai.dal.mysql.knowledge.AiKnowledgeBaseMapper; | import cn.iocoder.yudao.module.ai.dal.mysql.knowledge.AiKnowledgeMapper; | ||||||
| import cn.iocoder.yudao.module.ai.service.model.AiChatModelService; | import cn.iocoder.yudao.module.ai.service.model.AiChatModelService; | ||||||
| import jakarta.annotation.Resource; | import jakarta.annotation.Resource; | ||||||
| import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||||
| @@ -29,7 +29,7 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService { | |||||||
|     private AiChatModelService chatModalService; |     private AiChatModelService chatModalService; | ||||||
|  |  | ||||||
|     @Resource |     @Resource | ||||||
|     private AiKnowledgeBaseMapper knowledgeBaseMapper; |     private AiKnowledgeMapper knowledgeBaseMapper; | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public Long createKnowledgeMy(AiKnowledgeCreateMyReqVO createReqVO, Long userId) { |     public Long createKnowledgeMy(AiKnowledgeCreateMyReqVO createReqVO, Long userId) { | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user
	 xiaoxin
					xiaoxin