当前位置: 首页 > news >正文

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 SimpleDirectoryReaderreader = 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"]  # 备选编码
)

http://www.xdnf.cn/news/356473.html

相关文章:

  • vue数据可视化开发常用库
  • OpenCV播放摄像头视频
  • LeetCode 热题 100_编辑距离(94_72_中等_C++)(动态规划)
  • Rust 官方文档:人话版翻译指南
  • 高拟人化客服机器人显著提升用户接受度
  • zst-2001 历年真题 UML
  • 首版次软件测试的内容有哪些?首版次软件质量影响因素是什么?
  • IAR无法显示文件列表(即workspace)
  • RabbitMQ-高级特性1
  • WebRTC流媒体传输协议RTP点到点传输协议介绍,WebRTC为什么使用RTP协议传输音视频流?
  • 第十六节:图像形态学操作-顶帽与黑帽变换
  • java 多核,多线程,分布式 并发编程的现状 :从本身的jdk ,到 spring ,到其它第三方。
  • 【网络入侵检测】基于源码分析Suricata的IP分片重组
  • 深度学习基础--目标检测常见算法简介(R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN、SSD、YOLO)
  • OpenCV计算机视觉实战(4)——计算机视觉核心技术全解析
  • Spring,SpringMVC,SpringBoot,SpringCloud的区别
  • Modbus RTU 详解 + FreeMODBUS移植(附项目源码)
  • 『Python学习笔记』ubuntu解决matplotlit中文乱码的问题!
  • Node.js数据抓取技术实战示例
  • 2025.05.08-得物春招算法岗-第三题
  • BLURRR剪辑软件免费版:创意剪辑,轻松上手,打造个性视频
  • 高效管理钉钉收款单数据集成到MySQL的技术方案
  • 用Python监控金价并实现自动提醒!附完整源码
  • TCP/IP协议的体系结构
  • Faiss 索引深度解析:从基础到实战
  • 驱动-互斥锁
  • 窗口函数row_number() OVER()对每个组内的行按照特定条件进行编号
  • 40. 组合总和 II
  • c++:迭代器(Iterator)
  • 【软件测试】测试用例的设计方法