介绍
文件加载器是 LangChain 中承接「原始文件」与「大模型/向量库」的核心组件,所有加载器均继承自 BaseLoader,核心目标是将不同格式、来源的文件/数据,统一转换为包含 page_content(文本内容)和 metadata(元数据,如文件路径、页码、行号)的 Document 对象,适配后续的检索、问答、分析等场景。
为什么需要用到文件加载器
文件加载器的本质是 打通“外部文件”和“大模型”的桥梁
大模型本身 无法直接读取 CSV/PDF/Word/网页等文件,必须通过加载器将这些文件转换成大模型能理解的 Document 文本格式,因此只要涉及“大模型处理非内置数据”,就需要用到文件加载器。
1. 知识库问答(RAG )
这是文件加载器最核心、最广泛的使用场景,也是企业落地大模型的主流方式。
需要把 PDF/Word/Excel 等手册/文档转换成 Document,再存入向量库,大模型通过检索这些文件内容回答问题,而非依赖自身训练数据。
业务场景:
- 企业内部文档问答(如员工问“公司报销政策”,大模型从内部 Word/PDF 手册中找答案);
- 产品手册问答(用户问“某功能怎么用”,大模型从产品 PDF 手册中提取答案);
- 法律/医疗文档问答(律师问“某条款的解释”,大模型从法律条文 PDF 中检索);
2. 结构化数据分析
CSV/Excel/数据库数据是结构化的,加载器能将其转换成大模型可理解的文本格式,同时保留行/列/字段等元数据,方便大模型解析和计算。
业务场景:
- 销售数据问答(用户问“2026年2月华东地区销售额”,大模型从 CSV/Excel 销售报表中计算答案);
- 财务报表分析(财务人员用自然语言问“季度利润环比增长多少”,大模型加载 Excel 财务表并分析);
- 数据库数据问答(运营问“近7天新增用户数”,大模型通过 SQLLoader 执行 SQL 并返回结果);
3. 多格式文件汇总与总结
需要统一处理 PDF/PPT/Word/网页等不同格式的文件,转换成标准化的 Document 文本,再让大模型整合、总结内容。
业务场景:
- 会议资料总结(加载 PPT/Word/录音(WhisperLoader 转文字),生成会议纪要);
- 多文件报告生成(加载多个 CSV/Excel/Word,自动生成月度运营报告);
- 网页资讯汇总(加载多个行业网页,生成每日行业动态);
4. 代码分析与智能编程
CodeLoader/PythonLoader 能按函数/类拆分代码,保留语法结构,让大模型精准理解代码逻辑,而非单纯的文本匹配。
业务场景:
- 代码问答助手(加载本地 Python/Java 代码文件,回答“某函数的功能”“这段代码有什么bug”);
- 开源项目解读(通过 GitHubLoader 加载开源仓库代码,生成项目文档/使用教程);
- 代码重构建议(加载旧代码文件,让大模型给出重构方案);
5. 快速原型开发与测试
无需手动解析文件格式(如写代码读 PDF/Excel),加载器封装了所有解析逻辑,开箱即用,大幅降低开发成本。
业务场景:
- 验证大模型对某类文件的处理能力(比如快速加载一个 CSV,测试问答效果);
- 临时处理少量文件(比如加载一个 PDF,让大模型提取关键信息);
6. 本地/云端文件的批量处理
批量加载不同格式/不同存储位置的文件,统一转换成 Document,便于后续批量入库、检索、分析。
业务场景:
- 本地知识库构建(通过 DirectoryLoader 批量加载文件夹下的所有文档,存入向量库);
- 云存储文件处理(通过 AmazonS3Loader/AzureBlobLoader 加载云端存储的海量文件,做内容检索);
- 历史日志分析(加载 JSON/CSV 格式的系统日志,让大模型排查异常、分析用户行为);
7. 多媒体内容处理(音视频/图片)
将非文本的音视频/图片转换成文本格式,让大模型能处理这类多媒体内容。
业务场景:
- 语音笔记问答(通过 WhisperLoader 将录音转文字,回答“我在笔记里提了什么需求”);
- 图片内容解读(通过 ImageCaptionLoader 生成图片描述,回答“这张产品图片展示了什么功能”);
- 视频字幕分析(加载视频音频流,转文字后分析视频内容);
不需要 文件加载器的场景
- 仅使用大模型的内置知识回答通用问题(如“地球的半径是多少”);
- 仅处理用户输入的纯文本对话,无需接入外部文件;
- 自行编写代码解析文件(如用 pandas 读 CSV 后直接传给大模型),无需 LangChain 生态的标准化处理;
- 直接调用大模型的 API 生成内容(如写文案、写代码),无外部文件输入。
文件加载器介绍
1. 表格类加载器(结构化数据)
| 加载器名称 | 核心功能 | 应用场景 |
|---|---|---|
| CSVLoader | 解析 CSV 文件,支持指定列、自定义文本格式,按行生成 Document | 轻量表格数据问答(如销售报表、用户清单)、本地小型结构化数据处理 |
| ExcelLoader | 解析 Excel(.xlsx/.xls)文件,支持多工作表、跳过行、指定列,适配复杂单元格 | 企业级表格分析(带公式/合并单元格的财务报表、运营数据)、多工作表数据汇总 |
| JSONLoader | 解析 JSON/JSONL 文件,支持按 JSONPath/jq 语法提取指定字段 | 接口返回数据解析、日志文件分析、结构化 JSON 数据问答 |
2. 纯文本类加载器(无格式文本)
| 加载器名称 | 核心功能 | 应用场景 |
|---|---|---|
| TextLoader | 加载纯文本文件(.txt/.md/.py/.sh 等),支持指定编码,整文件/按行生成 Document | 本地笔记解析、代码文件初步加载、Markdown 文档内容提取 |
| UnstructuredFileLoader | 通用文本提取器,自动识别文件类型(txt/md/pdf/docx 等),提取纯文本并保留基础格式 | 格式不固定的文件处理、多类型文件统一提取文本、快速原型开发 |
3. 办公文档类加载器(企业常用)
| 加载器名称 | 核心功能 | 应用场景 |
|---|---|---|
| PyPDFLoader/PDFPlumberLoader | 解析 PDF 文件,按页生成 Document,保留页码元数据,支持大文件分批加载 | PDF 合同解析、学术论文问答、电子书内容检索、批量 PDF 内容汇总 |
| Docx2txtLoader/UnstructuredWordDocumentLoader | 解析 Word(.docx)文件,提取文本和段落结构,保留基础格式 | 企业报告分析、合同条款检索、办公文档问答、Word 知识库构建 |
| PowerPointLoader | 解析 PPT/PPTX 文件,按幻灯片分页生成 Document,提取文本和图片描述 | PPT 课件问答、演示文稿内容总结、企业培训材料检索 |
4. 代码类加载器(开发者专用)
| 加载器名称 | 核心功能 | 应用场景 |
|---|---|---|
| PythonLoader/CodeLoader | 解析代码文件(Python/Java/JS 等),按函数/类/模块拆分 Document,保留语法结构 | 代码问答助手、开源项目分析、代码注释提取、智能编程提示 |
| GitHubLoader | 加载 GitHub 仓库/指定文件,支持分支、路径筛选,适配开源代码库 | 基于开源项目的问答、代码仓库内容检索、开源文档自动汇总 |
5. 网页/网络类加载器(线上数据)
| 加载器名称 | 核心功能 | 应用场景 |
|---|---|---|
| WebBaseLoader | 加载网页内容,自动去除广告/导航等冗余信息,提取正文 | 网页内容总结、行业资讯爬取、网页知识库构建、官网内容问答 |
| URLLoader | 批量加载多个 URL 文本内容,支持基础请求配置(超时、头信息) | 多网页批量内容汇总、资讯聚合分析、批量网页正文提取 |
6. 数据库类加载器(结构化数据对接)
| 加载器名称 | 核心功能 | 应用场景 |
|---|---|---|
| SQLLoader | 执行 SQL 查询,将数据库查询结果转换为 Document,支持主流数据库(MySQL/PostgreSQL/SQLite) | 数据库数据自然语言问答、结构化数据可视化分析、企业业务数据检索 |
| MongoDBLoader | 解析 MongoDB 文档数据,支持按集合/筛选条件提取数据 | 非结构化 MongoDB 数据问答、云原生文档数据库内容检索 |
7. 多媒体类加载器(音视频/图片)
| 加载器名称 | 核心功能 | 应用场景 |
|---|---|---|
| WhisperLoader | 加载音频文件(mp3/wav/m4a 等),通过 Whisper 模型将语音转文字 | 语音笔记问答、会议录音总结、音频内容检索、视频字幕提取 |
| ImageCaptionLoader | 加载图片文件,通过图像模型生成文本描述,转换为 Document | 图片内容问答、图文知识库构建、商品图片描述提取 |
8. 特殊场景加载器
| 加载器名称 | 核心功能 | 应用场景 |
|---|---|---|
| DirectoryLoader | 批量加载指定目录下的所有文件,支持按文件后缀筛选 | 本地文件夹全量文档入库、多文件批量处理、本地知识库初始化 |
| AmazonS3Loader | 加载 AWS S3 存储桶中的文件,支持按前缀/后缀筛选 | 云存储文件问答、海量云文件批量处理、AWS 生态下的文档检索 |
| AzureBlobLoader | 加载 Azure Blob 存储中的文件,适配微软云生态 | 微软云文档管理、云原生应用数据加载、Azure 生态下的内容检索 |
通用方法
__init__() - 初始化配置
所有加载器的初始化方法,用于指定「数据源」和「解析规则」,是使用加载器的第一步。
通用配置项(不同加载器的共性参数):
- 数据源:
file_path(本地文件)、url(网页)、db_uri(数据库)等; - 编码/格式:
encoding(文本编码,如 utf-8/gbk)、csv_args/pdf_args(格式专属解析参数); - 筛选规则:
glob(批量文件筛选)、select_columns(表格列筛选)等。
核心特点:
- 所有加载器必用,仅参数不同,但核心逻辑都是「指定要加载的内容+怎么解析」;
- 配置决定了加载器的行为(如加载哪些列、是否跳过空行、网页是否提取正文)。
load() - 基础同步加载
一次性同步加载文件/数据的全部内容,返回标准化的 List[Document](每个 Document 包含 page_content 文本内容 + metadata 元数据)。
使用场景:
- 小文件处理(如几MB的PDF、几十行的CSV、短篇文本);
- 快速验证效果(如加载一个文件测试大模型问答);
- 数据量小、对内存无压力的场景。
核心特点:
- 最简单、最常用,开箱即用;
- 所有加载器的基础能力,无例外;
- 缺点:大文件加载会一次性占用大量内存,可能导致溢出。
lazy_load() - 分批同步加载
返回一个生成器(generator),分批加载文件/数据,每次仅加载少量内容并返回 Document,而非一次性加载全部。
使用场景:
- 大文件处理(如几百MB的PDF、几十万行的CSV、长篇Word);
- 批量文件加载(如通过
DirectoryLoader加载整个文件夹); - 内存敏感场景(如低配服务器、嵌入式设备)。
核心特点:
- 内存友好,避免大文件加载导致的内存溢出;
- 所有加载器均支持,哪怕是小文件也会返回仅含一批的生成器;
- 可逐批处理(如加载一批、入库一批),适配海量数据场景。
load_and_split() - 加载+拆分一体化
先调用 load() 加载全部内容,再自动通过「文本分割器」将大 Document 拆分成适配大模型上下文窗口的小片段。
使用场景:
- RAG 知识库构建(核心场景):拆分长文本,避免单段文本超过大模型上下文限制;
- 长篇文档处理(如万字PDF、长篇小说);
核心特点:
- 整合「加载+拆分」两步操作,简化开发流程;
- 即使个别加载器未直接实现,也可手动组合
load()+ 文本分割器(如RecursiveCharacterTextSplitter)实现等效效果。
使用原则
| 场景 | 首选方法 | 核心逻辑 |
|---|---|---|
| 小文件/快速验证 | __init__() + load() |
简单直接,一步到位 |
| 大文件/批量数据 | __init__() + lazy_load() |
分批加载,内存友好 |
| RAG 知识库构建 | __init__() + load_and_split() |
加载+拆分,适配大模型上下文 |
总结
- 专用优先:明确文件格式时,优先选对应格式的专用加载器(如 CSV 用 CSVLoader),精准度和元数据保留更好;
- 通用兜底:格式不固定/多格式混合时,用 UnstructuredFileLoader 统一处理;
- 场景适配:大文件选分批加载、云数据选云存储加载器、数据库选 SQL/MongoDB 加载器;
- 核心统一:所有加载器输出均为
Document对象,可无缝接入向量库、大模型问答链,无需适配底层格式差异。