mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-23 07:41:53 +08:00
【优化】AI 知识库: 从url下载文档资源
This commit is contained in:
parent
ed2296e4c7
commit
024109dac9
@ -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.
Loading…
Reference in New Issue
Block a user