Skip to content

LangChain Document Loader をはじめよう:ステップバイステップガイド(2025年版)

Updated on

LangChain は 2023 年以降、急速に進化してきました。Retrieval-Augmented Generation(RAG)を試している人、チャットベースのアプリケーションを作っている人、外部の知識を LLM パイプラインに統合したい人にとって、Document Loader は今や最重要コンポーネントの 1 つです。

このガイドでは、2025 年時点での 最新かつ正確でモダンな LangChain Document Loader の仕組み、正しい使い方、そしてそれを土台にした実用的なアプリケーションの作り方を解説します。


LangChain とは?

LangChain は、次のようなツールを使って LLM ベースのアプリケーションを構築するためのフレームワークです。

  • Document Loaders
  • Text Splitters
  • Vector Stores
  • Retrievers
  • Runnables & LCEL (LangChain Expression Language)

モダンな LangChain(0.1–0.2+)では、アプリケーション構築のパイプラインは次のようになります。

Load → Split → Embed → Store → Retrieve → Generate

Document Loader は一番最初のステップ、
現実世界のコンテンツを LLM に扱いやすい “Document” オブジェクトへ変換する部分 を担当します。


LangChain Document Loader とは?

LangChain の Document は、次の 2 つのフィールドを持ちます。

{
  "page_content": "<raw text>",
  "metadata": {...}
}

Document Loader は、ファイル・URL・API・PDF・CSV・YouTube 字幕などの外部ソースを、Document オブジェクトのリストに変換します。

例: .txt ファイルを読み込む

from langchain_community.document_loaders import TextLoader
 
loader = TextLoader("./data/sample.txt")
docs = loader.load()

結果:

{
    "page_content": "Welcome to LangChain!",
    "metadata": { "source": "./data/sample.txt" }
}

LangChain における Document Loader の種類

LangChain には数多くの Loader が用意されていますが、大きく分けて 3 つのカテゴリに分類できます。


1. Transform Loader(ローカルファイル形式)

構造化/非構造化ファイルを読み込む Loader です。

CSV の例(モダンな import)

from langchain_community.document_loaders import CSVLoader
 
loader = CSVLoader("./data/data.csv")
docs = loader.load()

各 CSV の行が 1 つの Document になります。

その他の Transform Loader 例:

  • PyPDFLoader
  • JSONLoader
  • Docx2txtLoader
  • UnstructuredFileLoader
  • PandasDataFrameLoader

2. 公開データセット / Web サービス用 Loader

オンラインソースから直接テキストを取得する Loader です。

Wikipedia の例

from langchain_community.document_loaders import WikipediaLoader
 
loader = WikipediaLoader("Machine_learning")
docs = loader.load()

3. 非公開 / 認証が必要なソース用 Loader

次のような社内サービス向けに使われます。

  • 社内 API
  • 社内 CMS
  • SQL データベース
  • SharePoint
  • Slack
  • Gmail

これらは認証情報が必要で、多くの場合カスタム Loader を実装します。


モダンな RAG パイプラインにおける Document Loader の役割

Document Loader は 生テキストを読み込むだけ のコンポーネントです。
次のことは しません:

  • embedding の生成
  • “chain” の作成
  • “memory vector” の作成

(ここはよくある誤解です。)

正しいパイプラインは次の通りです。

Loader → Splitter → Embeddings → Vector Store → Retriever → LLM

PDF を使った例:

from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
 
loader = PyPDFLoader("file.pdf")
docs = loader.load()
 
splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
chunks = splitter.split_documents(docs)
 
embeddings = OpenAIEmbeddings()
db = Chroma.from_documents(chunks, embeddings)

モダンな LangChain Document Loader のユースケース

例 1: インデックス作成のためにファイルを読み込み & チャンク化

from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
 
loader = TextLoader("article.txt")
docs = loader.load()
 
splitter = RecursiveCharacterTextSplitter(
    chunk_size=800, chunk_overlap=150
)
chunks = splitter.split_documents(docs)

例 2: CSV を取り込んでデータ理解に使う

from langchain_community.document_loaders import CSVLoader
 
loader = CSVLoader("data.csv")
docs = loader.load()
 
for doc in docs:
    print(doc.page_content)

例 3: YouTube 字幕を読み込む(2025 年版の正しいやり方)

from langchain_community.document_loaders import YoutubeLoader
 
loader = YoutubeLoader.from_youtube_url(
    "https://www.youtube.com/watch?v=O5nskjZ_GoI",
    add_video_info=True
)
docs = loader.load()

トークナイザやモデルを自分で扱う必要はありません — LangChain はテキストの読み込み部分だけを担当します。


例 4: Pandas DataFrame → Documents に変換

from langchain_community.document_loaders import DataFrameLoader
 
loader = DataFrameLoader(dataframe, page_content_column="text")
docs = loader.load()

LangChain Document Loader の実用的な活用例

以下に、役立つモダンなサンプルを 3 つ紹介します。


ChatGPT スタイルの PDF QA アプリを作る(モダン RAG)

from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_community.vectorstores import Chroma
 
# 1. Load
pages = PyPDFLoader("./SpaceX.pdf").load()
 
# 2. Split
splitter = RecursiveCharacterTextSplitter(chunk_size=1000, overlap=150)
chunks = splitter.split_documents(pages)
 
# 3. Embed & store
db = Chroma.from_documents(chunks, OpenAIEmbeddings())
 
# 4. Ask questions
retriever = db.as_retriever()
llm = ChatOpenAI(model="gpt-4.1")
 
from langchain.chains import RetrievalQA
qa = RetrievalQA.from_chain_type(llm, retriever=retriever)
 
qa.run("Summarize the mission in 3 bullet points.")

YouTube Transcript QA アプリを作る

loader = YoutubeLoader.from_youtube_url(url)
docs = loader.load()
 
chunks = RecursiveCharacterTextSplitter.from_tiktoken_encoder().split_documents(docs)
db = Chroma.from_documents(chunks, OpenAIEmbeddings())
 
qa.run("Explain the main argument of this video")

Web サイト QA チャットボットを作る(Sitemap 経由)

from langchain_community.document_loaders.sitemap import SitemapLoader
 
loader = SitemapLoader("https://docs.chainstack.com/sitemap.xml")
docs = loader.load()

PDF / YouTube と同じように、chunk → embed → retrieve → chat のパイプラインを実行します。


まとめ

LangChain Document Loader は、あらゆる RAG ワークフローの土台となる存在です。これを使うことで、次のことが可能になります。

  • さまざまなソースからデータを読み込む
  • テキストを一貫した Document 形式に正規化する
  • 検索・取得に適したデータセットを構築する
  • 自前のコンテンツに対するチャット・要約・QA を実現する

最新の Loader と 2025 年時点の正しい LangChain パターンを押さえておけば、PDF・Web サイト・YouTube 動画・CSV などを土台に、強力な AI アプリケーションを構築できます。


FAQ

LangChain Document Loader とは何ですか?
Document Loader は、ファイル・URL・API などのソースを LangChain の Document オブジェクトに変換し、後続の処理で利用できるようにするコンポーネントです。

Document Loader は embedding や index を作りますか?
いいえ。Loader は 生テキストを読み込むだけ です。Embedding の生成やインデックス作成は別のステップです。

PDF にはどの Loader を使うべきですか?
PyPDFLoader が、LangChain におけるテキスト抽出に最も信頼できる選択肢です。

YouTube Loader はどのように動作しますか?
YouTube の API やコミュニティ字幕を使って transcript を取得し、そのテキストを 1 つの Document として返します。