DocumentLoader(PDF, Web, Markdown などの取り込み)

LangChainにおける「DocumentLoader(ドキュメントローダー)」は、PDF、Webページ、Markdown、テキストファイルなど様々な形式のデータソースから文書を読み込み、構造化された情報(Documentオブジェクト)として統一的に扱えるようにするためのコンポーネントです。これはRetrieverやVectorStoreに文書を登録する前段階の重要な処理です。


DocumentLoaderとは何か

DocumentLoaderは、外部ソースから文書を読み込んでLangChain内部で扱いやすい形式(通常はテキスト + メタデータ)に変換します。

python
from langchain.document_loaders import PyPDFLoader loader = PyPDFLoader("sample.pdf") documents = loader.load()

このように、特定の形式に対応したローダーを使い、読み込まれた文書はDocumentオブジェクトのリストとして返されます。


主なDocumentLoaderの種類

LangChainでは以下のような形式に対応するローダーが提供されています:

フォーマット 使用するローダークラス 特徴
PDF PyPDFLoader, PDFMinerLoader, UnstructuredPDFLoaderなど ページ単位や全文での取り込みが可能
Webページ(HTML) WebBaseLoader, UnstructuredURLLoader URL指定による直接取得・解析
Markdown UnstructuredMarkdownLoader Markdownの構造(見出し、リストなど)を保持しつつ解析
テキストファイル TextLoader 単純なプレーンテキストを読み込み
Notion, Google Docs など API連携ローダー(例:NotionDBLoaderなど) 特定のサービスAPIを用いて取得

DocumentLoaderの内部処理の流れ

  1. データ取得:対象ソースからファイルまたはURLを取得

  2. パース処理:ファイル形式に応じた解析(PDFページ分割やHTMLタグ除去など)

  3. Document化:LangChainのDocument形式に変換(本文とメタデータを保持)

  4. 返却List[Document]として出力、後段のTextSplitterVectorStoreへ連携可能


メタデータの活用

読み込んだ文書には、以下のようなメタデータが付加されることが多く、検索やフィルタに活用されます:

  • ファイル名・URL

  • ページ番号(PDFなど)

  • 作成日・取得日

  • セクション情報(Markdownなど)

python
print(documents[0].metadata)

Retriever / VectorStoreとの連携

DocumentLoaderで読み込んだ文書は、通常は以下のように処理されます:

  1. TextSplitterで分割:文書を適切なチャンクに切り分ける

  2. Embeddingに変換:チャンクごとにベクトル化

  3. VectorStoreへ格納:検索やRetrieverに使用


具体例:PDFを読み込んでChromaへ登録

python
from langchain.document_loaders import PyPDFLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import Chroma # ドキュメント読み込み loader = PyPDFLoader("example.pdf") docs = loader.load() # 分割処理 splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) split_docs = splitter.split_documents(docs) # ベクトル化と登録 embeddings = OpenAIEmbeddings() vectorstore = Chroma.from_documents(split_docs, embedding=embeddings)

補足:Unstructuredドライバの活用

LangChainはUnstructured.ioライブラリと連携しており、PDF, Word, HTML, EML など複雑なフォーマットにも対応できます。

python
from langchain.document_loaders import UnstructuredFileLoader loader = UnstructuredFileLoader("sample.docx") docs = loader.load()

まとめ

  • DocumentLoaderはLangChainにおける文書の「入口」にあたる

  • 各種形式(PDF, Web, Markdown, etc.)に対応したローダーが多数用意されている

  • 読み込んだ文書は、VectorStore/RAGの入力として加工・活用可能

ChatGPT4o 生成日:2025/06/12