news 2026/6/10 15:51:41

【LangChain】—— Document Loaders文档加载器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【LangChain】—— Document Loaders文档加载器

LangChain文档加载器全解析:类型汇总+手把手实操教程

在LangChain开发中,文档加载是数据接入的第一步,也是最基础的核心环节——无论你是搭建知识库问答、实现文档总结,还是做文本分析类应用,都需要先通过「文档加载器」将本地文件、网页、数据库等各类数据源,转换成LangChain可识别的标准Document对象(包含page_content内容和metadata元数据)。

之前有很多同学问我,LangChain到底有多少种文档加载器?不同格式的文件该怎么正确加载?今天就结合实操,把LangChain文档加载器的类型、用法一次性讲透,全程附可直接复制运行的代码,新手也能快速上手。

一、LangChain文档加载器分类(按数据源划分)

LangChain的文档加载器全部集成在langchain-community包中(旧版在langchain包内),核心按「数据源类型」可分为5大类,每类对应常用场景和具体加载器,用表格整理更清晰,方便大家按需查找:

分类常用加载器适用场景关键备注
本地文件格式(最常用)TextLoaderTXT纯文本文件轻量高效,需指定编码避免中文乱码
PyPDFLoaderPDF文件轻量优先,每页生成1个Document对象
PDFPlumberLoaderPDF文件(复杂格式)可提取表格、精准定位文本,依赖pdfplumber
Docx2txtLoader/DocxLoaderWord(.docx)文档前者简单易用,后者支持提取样式
CSVLoaderCSV表格文件每行生成1个Document,可自定义分隔符
ExcelLoaderExcel(.xls/.xlsx)文件依赖pandas、openpyxl,支持多工作表
UnstructuredFileLoader多格式通用(TXT/PDF/DOCX/MD等)新手首选,无需区分文件格式,依赖unstructured
网页/网络资源WebBaseLoader任意网页内容加载基于BeautifulSoup,可解析网页结构
YoutubeLoaderYouTube视频内容提取字幕或语音转文字,依赖pytube
WikipediaLoader维基百科页面内容可按标题、URL加载,支持多语言
云服务/远程存储S3LoaderAWS S3存储桶文件需配置AWS密钥,支持批量加载
GoogleDriveLoader谷歌云盘文件/文件夹需授权,支持文档、表格等多种格式
NotionLoaderNotion数据库/页面需Notion API密钥,支持批量同步
数据库SQLDatabaseLoader关系型数据库(MySQL/PostgreSQL等)执行SQL查询,将结果转为Document
MongoDBLoaderMongoDB文档数据库支持按条件查询,批量加载文档
特殊类型AudioLoader音频文件(MP3/WAV等)需配合ASR模型(如Whisper)转文字
CodeLoader代码文件(Python/Java等)支持语法解析,保留代码结构

二、实操教程:手把手加载各类文件(LangChain最新版)

核心前提:LangChain最新版(v0.1+)将文档加载器迁移到了langchain-community包中,所以第一步必须安装核心依赖,后续按需安装对应文件格式的依赖即可。

前置准备:安装核心依赖

# 核心包(必装):包含所有文档加载器pipinstalllangchain langchain-community# 按需安装文件格式依赖(根据自己要加载的文件选择)pipinstallpypdf# PDF加载(PyPDFLoader)pipinstallpdfplumber# PDF复杂加载(PDFPlumberLoader)pipinstallpython-docx# Word文档加载pipinstallpandas openpyxl# Excel/CSV加载pipinstallunstructured# 通用加载器(UnstructuredFileLoader)pipinstallbeautifulsoup4# 网页加载(WebBaseLoader)pipinstallpytube# YouTube视频加载

示例1:加载TXT文件(最简单,新手入门)

TXT文件是最基础的格式,加载无需复杂配置,重点注意指定编码(utf-8),避免中文乱码。

fromlangchain_community.document_loadersimportTextLoader# 1. 初始化加载器:指定文件路径和编码loader=TextLoader(file_path="test.txt",# 替换成你的TXT文件路径encoding="utf-8"# 中文文件必加,避免乱码)# 2. 加载文件:返回Document对象列表(TXT只有1个对象)documents=loader.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# 1. 初始化加载器(替换成你的PDF路径)loader=PyPDFLoader("test.pdf")# 2. 加载文件:每页1个Document,返回列表documents=loader.load()# 查看结果print("=== PDF加载结果 ===")print(f"PDF总页数:{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:加载Word(DOCX)文件

两种加载器可选:Docx2txtLoader(简单,无需关注样式)、DocxLoader(复杂,可提取字体、段落样式),新手用前者即可。

fromlangchain_community.document_loadersimportDocx2txtLoader# 1. 初始化加载器(替换成你的DOCX路径)loader=Docx2txtLoader("test.docx")# 2. 加载文件:整个Word文档生成1个Document对象documents=loader.load()# 查看结果print("=== Word加载结果 ===")print("文档内容(前300字):",documents[0].page_content[:300])

示例4:加载CSV/Excel表格文件

CSV用CSVLoader,Excel用ExcelLoader,两者用法类似,重点可自定义编码、分隔符(CSV)、工作表(Excel)。

# 示例4.1:加载CSV文件fromlangchain_community.document_loadersimportCSVLoader loader=CSVLoader(file_path="test.csv",encoding="utf-8",delimiter=",",# 分隔符,默认逗号,Excel导出的CSV可用csv_args={"quotechar":'"'}# 可选,处理字段包含引号的情况)documents=loader.load()# 每行1个Document对象print("=== CSV加载结果 ===")print(f"CSV总行数:{len(documents)}")print("第一行内容:",documents[0].page_content)# 示例4.2:加载Excel文件fromlangchain_community.document_loadersimportExcelLoader loader=ExcelLoader(file_path="test.xlsx",sheet_name="Sheet1"# 指定工作表,默认第一个工作表)documents=loader.load()# 每行1个Document对象print("=== Excel加载结果 ===")print(f"Excel总行数:{len(documents)}")print("第一行内容:",documents[0].page_content)

示例5:通用加载器(新手福音,多格式适配)

如果不想区分文件格式,不管是PDF、DOCX还是TXT,直接用UnstructuredFileLoader,一行代码切换文件路径即可,适合多格式混合的场景。

fromlangchain_community.document_loadersimportUnstructuredFileLoader# 支持PDF/DOCX/TXT/MD等,只需替换文件路径loader=UnstructuredFileLoader(file_path="test.pdf",# 换成test.docx、test.txt也能正常加载encoding="utf-8")documents=loader.load()print("=== 通用加载器结果 ===")print("文件内容(前200字):",documents[0].page_content[:200])

补充:加载后的数据处理(必学技巧)

加载后的documents是Document对象列表,若文件过大(如几百页PDF),直接使用会导致后续模型处理超时,建议进行「文档分割」,保持上下文连贯的同时,控制单篇内容长度。

fromlangchain_text_splittersimportCharacterTextSplitter# 初始化文本分割器text_splitter=CharacterTextSplitter(chunk_size=500,# 每个分片500个字符(可调整)chunk_overlap=50# 分片间重叠50个字符,保持上下文连贯)# 分割加载后的文档split_docs=text_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最新版(v0.1+),若使用旧版,需调整导入路径(旧版从langchain导入,新版从langchain_community导入),避免报错。

如果大家在实操中遇到具体问题,欢迎在评论区留言,后续会补充更多特殊场景的加载技巧~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 14:24:47

Qwen图像编辑整合工具V1227|AI人物换装+姿势迁移+九宫格分镜+批量处理+NSFW防护解除

温馨提示:文末有联系方式【产品名称焕新解读】 Qwen图像编辑整合工具V1227——专为创作者打造的一站式AI视觉处理平台,深度融合人物形象定制、动态姿态复刻与高效批量生成能力,覆盖从单帧精修到多场景脚本化输出的完整工作流。【核心功能全面…

作者头像 李华
网站建设 2026/6/10 14:16:35

行业报告:阿里速卖通成“美国大赢家”,消费者持续追捧

1月28日消息,互联网数据分析机构Similarweb发布2026年度Digital 100报告。阿里旗下跨境电商平台速卖通AliExpress在美国、英国、德国、澳洲等多个发达国家市场均跻身综合平台增速前10。差异化的品牌策略和坚定的本地化投入,成为其在高竞争、高门槛市场持…

作者头像 李华
网站建设 2026/6/10 14:21:12

计算机等级考试(二级WPS)---第5章:公共基础知识---第4节:软件工程基础

目录 壹、知识点汇总 一、算法基础(必记,第2节) 1. 算法的定义 2. 算法的基本特征(4个,缺一不可) 3. 算法的复杂度(高频考点) 二、数据结构基础(必记,第2节) 1. 数据结构的定义 2. 数据结构的分类(按逻辑结构) 三、线性表(核心考点,第2节) 1. 线性表…

作者头像 李华
网站建设 2026/5/30 13:46:07

MySQL 对前N条数据求和的优化方案(含完整示例)

在数据分析场景中,我们经常需要计算分组数据中排名前N的记录的合计值。本文将详细介绍在MySQL中实现这一需求的几种方法,并对比它们的性能差异。 一、基础需求场景 假设我们有一个销售数据表sales_data,结构如下: CREATE TABLE…

作者头像 李华
网站建设 2026/6/10 14:22:12

【计算机毕业设计案例】基于Android二手图书交易系统设计基于Android的旧物交易平台的设计与实现(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华