news 2026/3/27 17:11:03

【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/3/27 17:06:56

计算机毕业设计之jsp基于SSM的家庭理财系统设计与实现

近年来,科技飞速发展,在经济全球化的背景之下,互联网技术将进一步提高社会综合发展的效率和速度,互联网技术也会涉及到各个领域,而家庭理财系统在网络背景下有着无法忽视的作用。信息管理系统的开发是一个不断优化的过…

作者头像 李华
网站建设 2026/3/27 11:29:07

Nodejs+vue小区车位物业管理系统app 微信小程序

文章目录 系统概述核心功能模块技术架构安全与性能优化 --nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 系统概述 Node.js与Vue.js结合开发的小区车位物业管理系统,通过微信小程序提供便捷的移动端服务…

作者头像 李华
网站建设 2026/3/27 8:01:56

亲测好用10个AI论文工具,本科生轻松搞定论文写作!

亲测好用10个AI论文工具,本科生轻松搞定论文写作! AI 工具如何让论文写作更轻松? 在当今学术环境中,AI 工具已经成为大学生撰写论文的重要助手。无论是内容生成、逻辑梳理还是语言润色,这些工具都能显著提升写作效率…

作者头像 李华
网站建设 2026/3/16 4:42:13

【课程设计/毕业设计】基于微信小程序+SpringBoot的线上超市管理系统设计和实现基于小程序+springboot商城系统设计与实现【附源码、数据库、万字文档】

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

作者头像 李华
网站建设 2026/3/15 13:39:50

计算机毕业设计|基于springboot + vue员工信息管理系统(源码+数据库+文档)

员工信息管理 目录 基于springboot vue员工信息管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue员工信息管理系统 一、前言 博主介绍&…

作者头像 李华