LangChain 文档加载器学习总结
目录概述
"25 langchain 内置组件和文档加载器" 这个目录主要介绍 LangChain 的文档加载器(Document Loaders),这是 LangChain 框架中用于将各种格式的数据源加载成统一 Document 对象的组件。
各文件知识点总结
1. markdown_loader_example.py
是什么: Markdown 文件专用加载器
有什么用: 将 .md 文件转换为 LangChain 可处理的 Document 对象
核心类: UnstructuredMarkdownLoader
示例代码:
python
from langchain_community.document_loaders import UnstructuredMarkdownLoader
loader = UnstructuredMarkdownLoader("./项目API资料.md")
documents = loader.load()
print(documents) # 查看 Document 对象
print(len(documents)) # 查看文档数量
print(documents[0].metadata) # 查看元数据2. Office文档.py
是什么: Microsoft Office 文档加载器集合
有什么用: 加载 Excel、Word、PPT 等常见 Office 文件
核心类:
UnstructuredExcelLoader- Excel 表格UnstructuredWordDocumentLoader- Word 文档UnstructuredPowerPointLoader- PowerPoint 演示文稿
示例代码:
python
from langchain_community.document_loaders import (
UnstructuredExcelLoader,
UnstructuredWordDocumentLoader,
UnstructuredPowerPointLoader
)
# PowerPoint 示例
ppt_loader = UnstructuredPowerPointLoader("./章节介绍.pptx", mode="elements")
ppt_document = ppt_loader.load()
print(ppt_document)
print(len(ppt_document))
print(ppt_document[0].metadata)重要参数:
mode="elements": 按元素分割文档(如按幻灯片、段落等)mode="single": 作为单个文档加载(默认)
3. URL网页加载器.py
是什么: 网页内容加载器
有什么用: 直接从 URL 抓取网页内容并转换为 Document 对象
核心类: WebBaseLoader
示例代码:
python
from langchain_community.document_loaders import WebBaseLoader
loader = WebBaseLoader("https://imooc.com")
documents = loader.load()
print(documents)
print(len(documents))
print(documents[0].metadata)特点:
- 自动处理 HTML 解析
- 提取网页主要文本内容
- metadata 中包含 URL 来源信息
4. 通用文件加载器.py
是什么: 通用文件加载器,支持多种文件格式
有什么用: 当不知道文件类型或需要统一处理时使用
核心类: UnstructuredFileLoader
示例代码:
python
from langchain_community.document_loaders import UnstructuredFileLoader
loader = UnstructuredFileLoader("./项目API资料.md")
documents = loader.load()
print(documents)
print(len(documents))
print(documents[0].metadata)适用场景:
- 文件类型不确定时
- 需要统一接口处理多种文件
- 快速原型开发
核心概念
Document 对象结构
所有加载器返回的 Document 对象包含两个主要属性:
python
Document(
page_content="文档的文本内容",
metadata={
"source": "文件路径或URL",
"file_path": "完整文件路径",
# 其他元数据...
}
)- page_content: 文档的实际文本内容
- metadata: 文档元数据(来源、类型、创建时间等)
加载器对比
| 加载器 | 适用文件类型 | 优势 | 使用场景 |
|---|---|---|---|
| UnstructuredMarkdownLoader | .md | 针对 Markdown 优化 | 技术文档、笔记 |
| UnstructuredExcelLoader | .xlsx, .xls | 表格数据处理 | 数据分析、报表 |
| UnstructuredWordDocumentLoader | .docx | Word 文档处理 | 正式文档、合同 |
| UnstructuredPowerPointLoader | .pptx | 按幻灯片分割 | 演示文稿处理 |
| WebBaseLoader | 网页 URL | 直接抓取网页 | 在线内容采集 |
| UnstructuredFileLoader | 通用 | 自动识别类型 | 不确定文件类型时 |
应用场景
这些文档加载器主要用于:
构建 RAG 系统(检索增强生成)
- 将各类文档加载到向量数据库
- 为 LLM 提供外部知识
知识库文档预处理
- 企业文档库搭建
- 智能问答系统
多源数据整合
- 统一处理不同格式的数据源
- 批量文档处理
向量数据库的数据准备
- 文档 Embedding 转换前的预处理
- 构建语义搜索索引
学习要点
- 选择合适的加载器可以大幅简化文档处理流程
- 注意
mode参数的使用(elements vs single) - metadata 信息对文档溯源很重要
- 加载后的文档通常需要配合 TextSplitter 进行分割