LangChain 文档加载详解
LangChain 文档加载详解
·
文章目录
LangChain 文档加载详解
本文介绍如何使用 LangChain 加载外部文档,包括文本文件和 PDF 文件。
1. 环境准备
# 安装 langchain-community
!pip install langchain-community -i https://pypi.tuna.tsinghua.edu.cn/simple
# 验证安装
!pip show langchain-community
知识点:langchain-community 是 LangChain 的社区贡献模块,提供了丰富的文档加载器支持。
2. 加载文本文件 (TextLoader)
2.1 代码解析
from langchain_community.document_loaders import TextLoader
loader = TextLoader("./demo.txt", encoding="utf-8")
docs = loader.load()
| 参数 | 说明 |
|---|---|
"./demo.txt" |
文件路径(相对路径) |
encoding="utf-8" |
字符编码,避免中文乱码 |
2.2 知识点:Document 对象
loader.load() 返回一个 Document 对象列表,每个 Document 包含:
| 属性 | 说明 |
|---|---|
page_content |
文档的文本内容 |
metadata |
元数据(来源、行数等) |
2.3 访问文档内容
# 访问第一个文档的文本内容
print(docs[0].page_content)
3. 加载 PDF 文件 (PyPDFLoader)
3.1 安装依赖
!pip install pypdf
知识点:pypdf 是一个纯 Python 编写的 PDF 处理库,无需外部依赖。
3.2 代码解析
from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader("./论文介绍.pdf")
docs = loader.load()
3.3 与 TextLoader 的对比
| 特性 | TextLoader | PyPDFLoader |
|---|---|---|
| 支持格式 | .txt | |
| 返回内容 | 完整文本 | 按页分割 |
| 元数据 | 文件路径 | 页码、来源文件 |
3.4 访问文档内容
# 查看第一页的内容
print(docs[0].page_content)
4. 完整代码示例
# ========== 加载文本文件 ==========
from langchain_community.document_loaders import TextLoader
loader = TextLoader("./demo.txt", encoding="utf-8")
docs = loader.load()
print(docs[0].page_content)
# ========== 加载 PDF 文件 ==========
from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader("./论文介绍.pdf")
docs = loader.load()
print(docs[0].page_content)
结果:

5. 更多文档加载器
LangChain 支持多种文档格式:
| 加载器 | 用途 |
|---|---|
CSVLoader |
加载 CSV 文件 |
UnstructuredHTMLLoader |
加载 HTML 文件 |
JSONLoader |
加载 JSON 文件 |
PythonLoader |
加载 Python 文件 |
MarkdownLoader |
加载 Markdown 文件 |
# 示例:加载 CSV
from langchain_community.document_loaders import CSVLoader
loader = CSVLoader("./data.csv")
docs = loader.load()
6. 常见问题
Q1: 中文乱码怎么办?
# 指定正确的编码
loader = TextLoader("./file.txt", encoding="utf-8") # 推荐
loader = TextLoader("./file.txt", encoding="gbk") # 中文 Windows
Q2: 大型 PDF 加载慢?
PyPDFLoader 按页加载,可使用 lazy_load() 逐页加载:
for page in loader.lazy_load():
print(page.page_content)
Q3: 如何获取元数据?
docs = loader.load()
print(docs[0].metadata) # 查看元数据字典
更多推荐




所有评论(0)