LangChainにおける「DocumentLoader(ドキュメントローダー)」は、PDF、Webページ、Markdown、テキストファイルなど様々な形式のデータソースから文書を読み込み、構造化された情報(Documentオブジェクト)として統一的に扱えるようにするためのコンポーネントです。これはRetrieverやVectorStoreに文書を登録する前段階の重要な処理です。
DocumentLoaderとは何か
DocumentLoaderは、外部ソースから文書を読み込んでLangChain内部で扱いやすい形式(通常はテキスト + メタデータ)に変換します。
このように、特定の形式に対応したローダーを使い、読み込まれた文書はDocumentオブジェクトのリストとして返されます。
主なDocumentLoaderの種類
LangChainでは以下のような形式に対応するローダーが提供されています:
| フォーマット | 使用するローダークラス | 特徴 |
|---|---|---|
PyPDFLoader, PDFMinerLoader, UnstructuredPDFLoaderなど |
ページ単位や全文での取り込みが可能 | |
| Webページ(HTML) | WebBaseLoader, UnstructuredURLLoader |
URL指定による直接取得・解析 |
| Markdown | UnstructuredMarkdownLoader |
Markdownの構造(見出し、リストなど)を保持しつつ解析 |
| テキストファイル | TextLoader |
単純なプレーンテキストを読み込み |
| Notion, Google Docs など | API連携ローダー(例:NotionDBLoaderなど) |
特定のサービスAPIを用いて取得 |
DocumentLoaderの内部処理の流れ
-
データ取得:対象ソースからファイルまたはURLを取得
-
パース処理:ファイル形式に応じた解析(PDFページ分割やHTMLタグ除去など)
-
Document化:LangChainの
Document形式に変換(本文とメタデータを保持) -
返却:
List[Document]として出力、後段のTextSplitterやVectorStoreへ連携可能
メタデータの活用
読み込んだ文書には、以下のようなメタデータが付加されることが多く、検索やフィルタに活用されます:
-
ファイル名・URL
-
ページ番号(PDFなど)
-
作成日・取得日
-
セクション情報(Markdownなど)
Retriever / VectorStoreとの連携
DocumentLoaderで読み込んだ文書は、通常は以下のように処理されます:
-
TextSplitterで分割:文書を適切なチャンクに切り分ける -
Embeddingに変換:チャンクごとにベクトル化 -
VectorStoreへ格納:検索やRetrieverに使用
具体例:PDFを読み込んでChromaへ登録
補足:Unstructuredドライバの活用
LangChainはUnstructured.ioライブラリと連携しており、PDF, Word, HTML, EML など複雑なフォーマットにも対応できます。
まとめ
-
DocumentLoaderはLangChainにおける文書の「入口」にあたる -
各種形式(PDF, Web, Markdown, etc.)に対応したローダーが多数用意されている
-
読み込んだ文書は、VectorStore/RAGの入力として加工・活用可能
ChatGPT4o 生成日:2025/06/12