特性 CSVLoader JSONLoader TextLoader PyPDFLoader
核心定位 加载CSV表格文件,默认每行数据生成一个独立的Document 加载JSON文件,通过 jq_schema 灵活提取特定字段的内容 加载.txt.md等纯文本文件,将整个文件作为一个Document 加载PDF文件,默认按页拆分,每页生成一个Document
输出结构 每行一个Document:
page_content: "列名1: 值1\n列名2: 值2..."
metadata{'source': '...', 'row': 行号}
根据schema提取,
page_content: 指定字段内容
metadata{'source': '...'}
整个文件一个Document:
page_content: 全文内容
metadata{'source': '...'}
每页一个Document:
page_content: 页面文本
metadata{'source': '...', 'page': 页码}
关键参数 csv_argsdelimiter(分隔符)、quotechar(引号)、fieldnames(自定义列名) jq_schema必填,指定JSON路径
content_key: 指定哪个字段作为page_content
encoding: 指定编码(如'utf-8'),处理中文文件时必须设置 mode"page"(默认,按页)或"single"(合并)
extract_images: 设为True可提取图片文字(需OCR库)
依赖库 Python内置csv模块,无需额外安装 jq,需运行 pip install jq 无依赖 pypdf,需运行 pip install pypdf
主要用途 处理结构化数据,如Excel导出的表格,适合RAG中构建结构化知识库 处理API返回数据或嵌套JSON配置,适合需要精确提取特定字段内容的场景 处理项目README、代码文件或任何无格式文本,最简单直接的文本加载方式 处理学术论文、合同、报告等多页文档,适合需要保留页码信息的场景

1. CSVLoader – 处理表格文件

用途:读取 CSV 文件,默认将每一行数据转换为一个独立的 Document。
关键参数csv_args 字典,里面可以设置 delimiter(分隔符)、quotechar(引号)、fieldnames(自定义列名)等。
依赖:Python 内置 csv,无需额外安装。

from langchain_community.document_loaders import CSVLoader

loader = CSVLoader(
    file_path="./data/students.csv",          # CSV 文件路径
    csv_args={
        "delimiter": ",",                     # 列分隔符(英文逗号)
        "quotechar": '"',                     # 字段引号字符
        "fieldnames": ["姓名", "年龄", "性别", "爱好"]  # 可选:自定义列名
    },
    encoding="utf-8",                         # 中文必须指定编码
)

docs = loader.load()                          # 加载所有文档
for doc in docs:
    print(doc.page_content)                   # 每行内容:列名:值\n...
    print(doc.metadata)                       # {'source': '...', 'row': 行号}

2. JSONLoader – 解析结构化 JSON

用途:从 JSON 文件中按 jq_schema 提取内容,通常每个匹配项生成一个 Document。
关键参数jq_schema(必填,指定 JSON 路径),content_key(可选,指定哪个字段作为 page_content)。
依赖:需要安装 jq 库:

pip install jq

from langchain_community.document_loaders import JSONLoader

# 假设 data.json 内容如下:
# {
#   "students": [
#     {"name": "王梓涵", "age": 25, "hobby": "吃饭,rap"},
#     {"name": "刘若曦", "age": 22, "hobby": "睡觉,rap"}
#   ]
# }

loader = JSONLoader(
    file_path="./data/data.json",
    jq_schema=".students[]",          # 提取 students 数组中的每个元素
    content_key="name",                # 将 name 字段作为 page_content(可选)
    text_content=False                 # 设为 True 则整个对象转为字符串
)

docs = loader.load()
for doc in docs:
    print(doc.page_content)            # 如果是 content_key,则输出对应字段的值
    print(doc.metadata)                # 元数据默认包含 source 和 seq_num

3. TextLoader – 加载纯文本文件

用途:读取 .txt.md 等文本文件,将整个文件内容作为一个 Document。
关键参数encoding(编码,中文文件必须设为 utf-8)。
依赖:无。

from langchain_community.document_loaders import TextLoader

loader = TextLoader(
    file_path="./data/readme.txt",
    encoding="utf-8"                    # 防止乱码
)

docs = loader.load()                    # 返回列表,只有一个元素
doc = docs[0]
print(doc.page_content)                 # 整个文件内容
print(doc.metadata)                     # {'source': './data/readme.txt'}

4. PyPDFLoader – 加载 PDF 文档

用途:读取 PDF 文件,默认按页拆分,每页生成一个 Document。
关键参数mode"page" 按页,"single" 合并为单个 Document),extract_images(需 OCR 库,用于扫描件)。
依赖:需要安装 pypdf。

pip install pypdf
from langchain_community.document_loaders import PyPDFLoader

loader = PyPDFLoader(
    file_path="./data/report.pdf",
    mode="page",                         # 默认按页,也可设为 "single" 合并
    # extract_images=True                # 提取图片中的文字(需额外OCR库)
)

docs = loader.lazy_load()                     # 每页一个 Document
for doc in docs:
    print(doc)

小结

加载器 输入格式 输出单位 典型场景
CSVLoader .csv 每行 表格数据、用户信息
JSONLoader .json 按 jq 规则提取 API 响应、配置文件
TextLoader .txt/.md 整个文件 文档、代码、纯文本笔记
PyPDFLoader .pdf 默认每页 学术论文、合同、多页文档
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐