LlamaIndex 第六篇 SimpleDirectoryReader

SimpleDirectoryReader 是将本地文件数据加载到 LlamaIndex 的最简单方式。虽然在实际生产场景中,您更可能需要使用 LlamaHub 提供的多种数据读取器(Reader),但 SimpleDirectoryReader 无疑是快速入门的理想选择。

支持的文件类型

默认情况下,SimpleDirectoryReader 会尝试读取所有文件,并将其视为纯文本处理。除普通文本外,它还明确支持以下文件类型(通过文件扩展名自动识别):

  • .csv - comma-separated values

  • .docx - Microsoft Word

  • .epub - EPUB ebook format

  • .hwp - Hangul Word Processor

  • .ipynb - Jupyter Notebook

  • .jpeg, .jpg - JPEG image

  • .mbox - MBOX email archive

  • .md - Markdown

  • .mp3, .mp4 - audio and video

  • .pdf - Portable Document Format

  • .png - Portable Network Graphics

  • .ppt, .pptm, .pptx - Microsoft PowerPoint

您可能会注意到这里缺少 JSON 文件类型——针对 JSON 格式,我们推荐使用专用的 JSON Loader 工具。

基本的用法

最基本的用法是传入一个 input_dir 参数,系统将自动加载该目录下所有支持的文件类型:

from llama_index.core import SimpleDirectoryReader

reader = SimpleDirectoryReader(input_dir="path/to/directory")
documents = reader.load_data()

子目录读取功能说明

默认情况下,SimpleDirectoryReader 仅读取目录顶层的文件。如需读取子目录中的文件,需设置参数 recursive=True

SimpleDirectoryReader(input_dir="path/to/directory", recursive=True)

文件加载迭代处理

您还可以使用 iter_data() 方法在文件加载时进行迭代处理:

reader = SimpleDirectoryReader(input_dir="path/to/directory", recursive=True)
all_docs = []
for docs in reader.iter_data():
    # <do something with the documents per file>
    all_docs.extend(docs)
文件加载限制机制

除了加载目录中的所有文件,您还可以直接传入文件路径列表进行选择性加载:

# 通过明确路径列表加载特定文件
selected_files = [
    '/data/reports/Q1.pdf',
    '/data/notes/meeting.docx'
]
reader = SimpleDirectoryReader(
    input_files=selected_files  # 关键参数
)

或者,您可以通过 exclude 参数指定需要排除的文件路径列表:

reader = SimpleDirectoryReader(
    input_dir="./project_docs",
    exclude=[
        "temp/backup.pdf",      # 特定文件排除
        "drafts/",              # 整个目录排除
        "*.tmp"                # 通配符模式排除
    ]
)

您还可以通过设置 required_exts 参数,指定仅加载特定扩展名的文件:

reader = SimpleDirectoryReader(
    input_dir="./documents",
    required_exts=[".pdf", ".docx", ".pptx"],  # 白名单扩展名
    exclude=[".~lock.*"]  # 可搭配黑名单使用
)

您可以通过设置 num_files_limit 参数来限制最大文件加载数量:

reader = SimpleDirectoryReader(
    input_dir="./big_data",
    num_files_limit=1000,  # 最多加载1000个文件
    file_ordering="modified_desc"  # 按修改时间降序优先加载
)
指定文件编码

SimpleDirectoryReader 默认要求文件采用 UTF-8 编码,但您可以通过 encoding 参数自定义编码格式:

reader = SimpleDirectoryReader(
    input_dir="./text_data",
    encoding="utf-8",  # 默认编码
    fallback_encodings=["gbk", "iso-8859-1"]  # 备选编码
)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值