nodejs langchain 文件分割

langchain 文件分割

安装langchain包

  npm i langchain

代码示例

 const { RecursiveCharacterTextSplitter } = require("langchain/text_splitter");
 const { PDFLoader } = require("langchain/document_loaders/fs/pdf");
 const { TextLoader } = require("langchain/document_loaders/fs/text");
 const { DocxLoader } = require("langchain/document_loaders/fs/docx");
 const { EPubLoader } = require("langchain/document_loaders/fs/epub");
    documentClassification(filepath, mimeType) {
        if (!filepath) throw new Error(`路径出现问题:${filepath}`)
        let loader = null;
        switch (mimeType) {
            case 'pdf':
                loader = new PDFLoader(filepath)
                break; 
            case 'epub':
                loader = new EPubLoader(filepath)
                break;
            case 'txt':
                loader = new TextLoader(filepath)
                break;
            case 'docx':
                loader = new DocxLoader(filepath)
                break;
            default:
                break;
        }
        if (!loader) throw new Error(`无法解析的类型:${mimeType}`)
        return loader;
    }
    //文档读取
     /**
     * 上传资料分割 
     * @param {String}  filepath 文件路径
     * @param {String}  filename 文件名称
     * @returns {Object} 上传状态
     */
 async documentReading( { filepath, filename, }) { 
       let mimeType = filepath.split('.')[1];
        console.log('文件类型', mimeType)
        //初始化分割文档分割工具
        const splitter = new RecursiveCharacterTextSplitter({
            chunkSize: 1000  //分割大小
        });
        // 加载
        const loader = documentClassification(filepath, mimeType);
        const docs = await loader.load(); 
        // 分割
        const splitterDocs = await splitter.splitDocuments(docs);
        console.log( '文档分割完成');
        return { splitterDocs, useTokens: splitterDocs.length * 1000 }
    }
     module.exports = documentReading
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值