核心内容摘要
别让“写得太好”成了你的论文原罪——百考通「降重+降AI」,专治学术“过度完美症”
LangChain文档加载器全解析类型汇总手把手实操教程在LangChain开发中文档加载是数据接入的第一步也是最基础的核心环节——无论你是搭建知识库问答、实现文档
总结还是做文本分析类应用都需要先通过「文档加载器」将本地文件、网页、数据库等各类数据源转换成LangChain可识别的标准Document对象包含page_content内容和metadata元数据。
之前有很多同学问我LangChain到底有多少种文档加载器不同格式的文件该怎么正确加载今天就结合实操把LangChain文档加载器的类型、用法一次性讲透全程附可直接复制运行的代码新手也能快速上手。
LangChain文档加载器分类按数据源划分LangChain的文档加载器全部集成在langchain-community包中旧版在langchain包内核心按「数据源类型」可分为5大类每类对应常用场景和具体加载器用表格整理更清晰方便大家按需查找分类常用加载器适用场景关键备注本地文件格式最常用TextLoaderTXT纯文本文件轻量高效需指定编码避免中文乱码PyPDFLoaderPDF文件轻量优先每页生成1个Document对象PDFPlumberLoaderPDF文件复杂格式可提取表格、精准定位文本依赖pdfplumberDocx2txtLoader/DocxLoaderWord.docx文档前者简单易用后者支持提取样式CSVLoaderCSV表格文件每行生成1个Document可自定义分隔符ExcelLoaderExcel.xls/.xlsx文件依赖pandas、openpyxl支持多工作表UnstructuredFileLoader多格式通用TXT/PDF/DOCX/MD等新手首选无需区分文件格式依赖unstructured网页/网络资源WebBaseLoader任意网页内容加载基于BeautifulSoup可解析网页结构YoutubeLoaderYouTube视频内容提取字幕或语音转文字依赖pytubeWikipediaLoader维基百科页面内容可按标题、URL加载支持多语言云服务/远程存储S3LoaderAWS S3存储桶文件需配置AWS密钥支持批量加载GoogleDriveLoader谷歌云盘文件/文件夹需授权支持文档、表格等多种格式NotionLoaderNotion数据库/页面需Notion API密钥支持批量同步数据库SQLDatabaseLoader关系型数据库MySQL/PostgreSQL等执行SQL查询将结果转为DocumentMongoDBLoaderMongoDB文档数据库支持按条件查询批量加载文档特殊类型AudioLoader音频文件MP3/WAV等需配合ASR模型如Whisper转文字CodeLoader代码文件Python/Java等支持语法解析保留代码结构
实操教程手把手加载各类文件LangChain最新版核心前提LangChain最新版v
1将文档加载器迁移到了langchain-community包中所以第一步必须安装核心依赖后续按需安装对应文件格式的依赖即可。
前置准备安装核心依赖# 核心包必装包含所有文档加载器pipinstalllangchain langchain-community# 按需安装文件格式依赖根据自己要加载的文件选择pipinstallpypdf# PDF加载PyPDFLoaderpipinstallpdfplumber# PDF复杂加载PDFPlumberLoaderpipinstallpython-docx# Word文档加载pipinstallpandas openpyxl# Excel/CSV加载pipinstallunstructured# 通用加载器UnstructuredFileLoaderpipinstallbeautifulsoup4# 网页加载WebBaseLoaderpipinstallpytube# YouTube视频加载示例1加载TXT文件最简单新手入门TXT文件是最基础的格式加载无需复杂配置重点注意指定编码utf-8避免中文乱码。
fromlangchain_community.document_loadersimportTextLoader#
初始化加载器指定文件路径和编码loaderTextLoader(file_pathtest.txt,# 替换成你的TXT文件路径encodingutf-8# 中文文件必加避免乱码)#
加载文件返回Document对象列表TXT只有1个对象documentsloader.load()# 查看加载结果print( TXT加载结果 )print(文本内容前200字,documents[0].page_content[:200])print(元数据文件信息,documents[0].metadata)# 包含文件路径、编码等示例2加载PDF文件最常用场景推荐使用PyPDFLoader轻量如果PDF有表格、复杂排版改用PDFPlumberLoader。
注意PDF每页会生成1个Document对象方便后续按页处理。
fromlangchain_community.document_loadersimportPyPDFLoader#
初始化加载器替换成你的PDF路径loaderPyPDFLoader(test.pdf)#
加载文件每页1个Document返回列表documentsloader.load()# 查看结果print( PDF加载结果 )print(fPDF总页数{len(documents)})print(第1页内容前300字,documents[0].page_content[:300])# 若PDF有表格改用PDFPlumberLoader# from langchain_community.document_loaders import PDFPlumberLoader# loader PDFPlumberLoader(test.pdf)# documents loader.load()示例3加载WordDOCX文件两种加载器可选Docx2txtLoader简单无需关注样式、DocxLoader复杂可提取字体、段落样式新手用前者即可。
fromlangchain_community.document_loadersimportDocx2txtLoader#
初始化加载器替换成你的DOCX路径loaderDocx2txtLoader(test.docx)#
加载文件整个Word文档生成1个Document对象documentsloader.load()# 查看结果print( Word加载结果 )print(文档内容前300字,documents[0].page_content[:300])示例4加载CSV/Excel表格文件CSV用CSVLoaderExcel用ExcelLoader两者用法类似重点可自定义编码、分隔符CSV、工作表Excel。
# 示例
1加载CSV文件fromlangchain_community.document_loadersimportCSVLoader loaderCSVLoader(file_pathtest.csv,encodingutf-8,delimiter,,# 分隔符默认逗号Excel导出的CSV可用csv_args{quotechar:}# 可选处理字段包含引号的情况)documentsloader.load()# 每行1个Document对象print( CSV加载结果 )print(fCSV总行数{len(documents)})print(第一行内容,documents[0].page_content)# 示例
2加载Excel文件fromlangchain_community.document_loadersimportExcelLoader loaderExcelLoader(file_pathtest.xlsx,sheet_nameSheet1# 指定工作表默认第一个工作表)documentsloader.load()# 每行1个Document对象print( Excel加载结果 )print(fExcel总行数{len(documents)})print(第一行内容,documents[0].page_content)示例5通用加载器新手福音多格式适配如果不想区分文件格式不管是PDF、DOCX还是TXT直接用UnstructuredFileLoader一行代码切换文件路径即可适合多格式混合的场景。
fromlangchain_community.document_loadersimportUnstructuredFileLoader# 支持PDF/DOCX/TXT/MD等只需替换文件路径loaderUnstructuredFileLoader(file_pathtest.pdf,# 换成test.docx、test.txt也能正常加载encodingutf-
documentsloader.load()print( 通用加载器结果 )print(文件内容前200字,documents[0].page_content[:200])补充加载后的数据处理必学技巧加载后的documents是Document对象列表若文件过大如几百页PDF直接使用会导致后续模型处理超时建议进行「文档分割」保持上下文连贯的同时控制单篇内容长度。
fromlangchain_text_splittersimportCharacterTextSplitter# 初始化文本分割器text_splitterCharacterTextSplitter(chunk_size500,# 每个分片500个字符可调整chunk_overlap50# 分片间重叠50个字符保持上下文连贯)# 分割加载后的文档split_docstext_splitter.split_documents(documents)print(f分割前文档数{len(documents)})print(f分割后文档数{len(split_docs)})print(分割后第一个分片,split_docs[0].page_content)
三、
常见问题避坑技巧中文乱码所有加载器都指定encoding“utf-8”若仍乱码尝试encoding“gbk”适配Windows系统导出的文件。
PDF加载失败检查是否安装pypdf依赖复杂PDF加密、扫描件需先解密或OCR识别LangChain不直接支持OCR需先借助Tesseract等工具转文字。
依赖冲突若安装后报错尝试升级依赖pip install --upgrade langchain langchain-community或指定兼容版本。
批量加载若需加载多个同类型文件如多个PDF可使用DirectoryLoader遍历文件夹无需逐个初始化加载器。
四、
总结LangChain文档加载器的核心优势的是「统一接口多源适配」——无论数据源是本地文件、网页还是数据库都能通过相同的load()方法加载转换成标准Document对象为后续的文本处理、模型调用提供统一格式。
对于新手来说优先掌握「本地文件加载」和「通用加载器」就能覆盖80%的开发场景后续有网页、数据库等需求再针对性学习对应加载器即可。
最后提醒所有代码均基于LangChain最新版v
1若使用旧版需调整导入路径旧版从langchain导入新版从langchain_community导入避免报错。
如果大家在实操中遇到具体问题欢迎在评论区留言后续会补充更多特殊场景的加载技巧~