LlamaIndex项目中的SimpleDirectoryReader使用指南

LlamaIndex项目中的SimpleDirectoryReader使用指南

【免费下载链接】llama_index LlamaIndex(前身为GPT Index)是一个用于LLM应用程序的数据框架 【免费下载链接】llama_index 项目地址: https://gitcode.com/GitHub_Trending/ll/llama_index

概述

在LlamaIndex项目中,SimpleDirectoryReader是一个简单而强大的工具,用于从本地文件系统加载各种格式的文档数据。作为数据加载的基础组件,它为开发者提供了便捷的文档处理入口,特别适合快速原型开发和小规模数据处理场景。

核心功能特性

多格式文件支持

SimpleDirectoryReader内置支持多种常见文档格式,通过文件扩展名自动识别并处理:

  • 办公文档:Word(.docx)、PowerPoint(.ppt/.pptx)、Hangul(.hwp)
  • 电子书:EPUB(.epub)
  • 结构化数据:CSV(.csv)
  • 编程相关:Jupyter Notebook(.ipynb)、Markdown(.md)
  • 多媒体:JPEG(.jpeg/.jpg)、PNG(.png)、MP3/MP4
  • 其他格式:PDF(.pdf)、MBOX邮箱归档(.mbox)

值得注意的是,JSON文件建议使用专门的JSON加载器处理,这是出于性能和功能专业化的考虑。

基础使用方法

基本加载方式

最简单的使用方式是加载整个目录下的文件:

from llama_index.core import SimpleDirectoryReader

reader = SimpleDirectoryReader(input_dir="data/")
documents = reader.load_data()

并行处理优化

对于包含大量文件的目录,可以使用多进程并行加载提升效率:

documents = reader.load_data(num_workers=4)

注意:由于操作系统差异,Windows用户可能无法获得与Linux/MacOS用户相同的性能提升。

高级配置选项

目录遍历控制

# 递归读取子目录
reader = SimpleDirectoryReader(input_dir="data/", recursive=True)

文件筛选机制

  1. 指定特定文件
reader = SimpleDirectoryReader(input_files=["data/file1.pdf", "data/file2.docx"])
  1. 排除特定文件
reader = SimpleDirectoryReader(input_dir="data/", exclude=["temp/", "backup/"])
  1. 按扩展名过滤
reader = SimpleDirectoryReader(input_dir="data/", required_exts=[".pdf", ".docx"])
  1. 数量限制
reader = SimpleDirectoryReader(input_dir="data/", num_files_limit=100)

编码设置

reader = SimpleDirectoryReader(input_dir="data/", encoding="gb2312")

元数据处理

默认元数据字段

每个加载的文档都会自动附加包含以下信息的元数据字典:

  • file_path:完整文件路径
  • file_name:文件名(含扩展名)
  • file_type:MIME类型
  • file_size:文件大小(字节)
  • 时间戳信息(创建、修改、访问时间)

自定义元数据

def custom_metadata(file_path):
    return {
        "custom_field": "value",
        "file_size": os.path.getsize(file_path)
    }

reader = SimpleDirectoryReader(
    input_dir="data/",
    file_metadata=custom_metadata
)

扩展功能

支持新文件类型

通过实现BaseReader接口可以扩展支持新的文件格式:

class CustomFileReader(BaseReader):
    def load_data(self, file, extra_info=None):
        # 实现自定义解析逻辑
        return [Document(text=parsed_content)]

reader = SimpleDirectoryReader(
    input_dir="data/",
    file_extractor={".custom": CustomFileReader()}
)

远程文件系统支持

通过fsspec协议可以连接各种远程存储系统:

from s3fs import S3FileSystem

s3_fs = S3FileSystem(key="your-key", secret="your-secret")
reader = SimpleDirectoryReader(
    input_dir="your-bucket",
    fs=s3_fs,
    recursive=True
)

最佳实践建议

  1. 生产环境考虑:对于生产环境,建议评估LlamaHub中更专业的Reader实现

  2. 性能优化

    • 大文件目录使用num_workers参数
    • 合理设置num_files_limit避免内存溢出
  3. 错误处理

    • 添加异常捕获处理损坏文件
    • 对非UTF-8编码文件显式指定编码
  4. 元数据利用

    • 充分利用自动生成的文件元数据
    • 考虑添加业务相关的自定义元数据

SimpleDirectoryReader作为LlamaIndex生态中的数据入口组件,通过灵活的配置选项和扩展能力,为开发者提供了处理本地文档的强大工具集。

【免费下载链接】llama_index LlamaIndex(前身为GPT Index)是一个用于LLM应用程序的数据框架 【免费下载链接】llama_index 项目地址: https://gitcode.com/GitHub_Trending/ll/llama_index

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值