SimpleDirectoryReaderによる読み込み

LlamaIndexにおける「データの取り込みと前処理」フェーズにおいて、SimpleDirectoryReaderは非常に基本的かつ重要なコンポーネントです。このクラスは、ローカルのディレクトリ内にあるファイル(例:テキストファイルやPDFなど)を読み込み、LlamaIndexが内部で扱える**Documentオブジェクト**へと変換する役割を担います。

以下では、SimpleDirectoryReaderの役割、動作、使い方について詳しく説明します。


1. SimpleDirectoryReaderの概要

SimpleDirectoryReaderは、LlamaIndexにおけるデータ取り込みの入り口です。指定されたディレクトリ内のドキュメントファイルを一括して読み取り、各ファイルの内容をLlamaIndexのDocument形式に変換して返します。

このクラスは以下の処理を自動で行います:

  • 指定されたフォルダ内のファイルを走査

  • 拡張子に応じたパーサーで内容を読み取り(例:.txt, .pdf, .docx など)

  • メタデータ(ファイル名、パスなど)を含むDocumentとして返却


2. 基本的な使い方

python
from llama_index import SimpleDirectoryReader # フォルダからドキュメントを読み込む documents = SimpleDirectoryReader("data").load_data()

上記の例では、data/というディレクトリにあるファイルを読み込んで、documentsリストにDocumentオブジェクトとして格納します。


3. 内部の処理フロー

  1. ファイル探索
    指定されたディレクトリの中のすべてのファイルを再帰的に走査します。

  2. ファイルタイプごとの読み取り処理
    拡張子に応じて適切なパーサーが選ばれます(例:.txtはテキスト読み込み、.pdfはPDFリーダーを使用)。

  3. Documentオブジェクトの生成
    読み込んだテキスト内容とファイルのメタデータを使って、LlamaIndexの内部構造であるDocumentを構築します。


4. 主な引数とオプション

SimpleDirectoryReaderは以下のような引数を取ることができます:

  • input_dir:読み込むディレクトリのパス

  • recursive:サブディレクトリも再帰的に読むか(デフォルトはFalse

  • required_exts:対象とする拡張子のリスト(例:[".txt", ".md"]

  • exclude_hidden:隠しファイルを無視するか(デフォルトはTrue

例:

python
reader = SimpleDirectoryReader( input_dir="data", recursive=True, required_exts=[".txt", ".md"], exclude_hidden=True ) documents = reader.load_data()

5. 注意点

  • 非対応形式のファイルはスキップされます。

  • すべてのファイルはメモリ上に読み込まれるため、大容量ファイルには注意が必要です。

  • 必要に応じてカスタムのファイルリーダーを登録することも可能です(拡張性あり)。


6. 活用例

読み込んだドキュメントは、そのままIndexVectorStoreに渡すことで、検索や生成のためのベースとなります。

python
from llama_index import VectorStoreIndex index = VectorStoreIndex.from_documents(documents) query_engine = index.as_query_engine() response = query_engine.query("この文書は何について書かれていますか?") print(response)

まとめ

SimpleDirectoryReaderは、LlamaIndexでドキュメント指向のアプリケーションを構築する際に、最初に使われるデータ取り込みツールです。簡便でありながら拡張性もあり、様々なファイル形式に対応しています。これにより、ユーザーはローカルファイルのコンテンツを容易にLLM対応の知識ベースへと変換できます。

ChatGPT4o 生成日:2025/06/14