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 .pdf
返回内容 完整文本 按页分割
元数据 文件路径 页码、来源文件

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)  # 查看元数据字典
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐