news 2026/5/8 7:00:08

【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/5/5 4:00:54

单片机编程软件很简单(九),Keil单片机编程软件高级调试技巧

单片机编程软件必不可少,近来文章中,小编主要为大家讲解Keil单片机编程软件。上篇中,主要阐述了Keil单片机编程软件的辅助功能。而在本文中,将介绍Keil单片机编程软件的高级调试技巧。如果你对单片机编程软件存在一定兴趣&#xf…

作者头像 李华
网站建设 2026/5/5 3:59:37

动态规划(Dynamic Programming)完全解读:从理论到实践

动态规划是一种解决复杂问题的艺术,它将大问题拆解为小问题,通过保存子问题的解来避免重复计算,最终实现高效求解。本文将带你深入理解动态规划的核心理念和实践技巧。 一、什么是动态规划? 动态规划(Dynamic Programming,简称DP) 是一种解决多阶段决策过程最优化问题的…

作者头像 李华
网站建设 2026/5/5 5:00:31

双碳+24小时分时综合能源系统低碳优化调度(用Matlab+Yalmip+Cplex)

双碳24小时分时综合能源系统低碳优化调度(用MatlabYalmip+Cplex) 包含新能源消纳、热电联产、电锅炉、储能电池、天然气、碳捕集CCS、计及碳交易市场等综合元素,实现系统总运行成本最小 包括购电成本、购气成本、碳交易成本、运维…

作者头像 李华
网站建设 2026/5/5 5:00:29

七.model输出介绍

import torch from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM model_dir rD:\pyprojecgt\flaskProject\langchainstudy\modelscope\gpt2-chinese-cluecorpussmall # 创建模型和分词器 model AutoModelForCausalLM.from_pretrained(model_dir) toke…

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

VirtualBox(轻量级虚拟机软件)

VirtualBox是由Oracle公司开发的一款开源的虚拟机软件,可以在一台物理机上运行多个虚拟的操作系统。用户可以 软件功能 支持多种操作系统:VirtualBox支持安装和运行多种操作系统,包括Windows、Linux、Mac OS等。 虚拟硬件支持:Vi…

作者头像 李华
网站建设 2026/5/5 5:41:33

小程序计算机毕设之基于Android二手生活用品交易系统设计基于Android的旧物交易平台的设计与实现(完整前后端代码+说明文档+LW,调试定制等)

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

作者头像 李华