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 例:
PyPDFLoaderJSONLoaderDocx2txtLoaderUnstructuredFileLoaderPandasDataFrameLoader
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 → LLMPDF を使った例:
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 として返します。