LangChainドキュメントローダーの使い方

PDF、マークダウン、PPT、DOCファイルにLangChain Document Loadersを使用する方法は? この記事を読んで学びましょう!

Anakin AIを無料で利用開始

LangChainドキュメントローダーの使い方

Start for free
目次

URL(Uniform Resource Locator)の変換を次のように行ってください:

https://anakin.ai/apps/keyword

または

https://anakin.ai/blog/keyword

https://anakin.ai/ja-jp/apps/keyword

https://anakin.ai/ja-jp/blog/keyword

以下はHTMLコードです:

LangChainは、言語モデルを活用したアプリケーションの開発に役立つ強力なフレームワークです。その主な機能の1つは、さまざまなタイプのドキュメントをロードして処理する能力であり、質問応答、要約、情報検索などのタスクには欠かせません。この包括的なガイドでは、LangChainドキュメントローダーを使用して、さまざまなファイル形式とデータソースで作業する方法を探ります。

💡
制限なしでClaude 3.5 Sonnetをお試しになりたいですか?

すべてのAIモデルにアクセスできるオールインワン価格タグを備えたAIプラットフォームをお探しですか?

それなら、Anakin AIを見逃すことはできません!

Anakin AIは、ワークフローオートメーション向けのオールインワンプラットフォームで、使いやすいノーコードアプリビルダーで強力なAIアプリを作成できます。Llama 3、Claude、GPT-4、Uncensored LLMs、Stable Diffusionなどです。

Anakin AIで夢のアプリを数分で構築しましょう!

LangChainドキュメントローダーの紹介

LangChainドキュメントローダーは、さまざまなソースからのデータを取り込んで、言語モデルが簡単に使用できる形式に変換するために設計されています。これらのローダーは、CSV、HTML、JSON、Markdown、PDF、Microsoft Officeドキュメントなど、さまざまな種類のファイルをサポートしています。

特定のローダーに進む前に、環境をセットアップしましょう:

pip install langchain

それでは、LangChainで異なるドキュメントローダーを使用する方法を見ていきましょう。

1. CSV LangChainドキュメントローダー

カンマ区切り値(CSV)ファイルは、表形式のデータを保存するためによく使用されます。LangChainでは、CSVファイルを簡単に扱うためのCSVLoaderが提供されています。

LangChainドキュメントローダーでCSVLoaderを使用する方法

CSVLoaderの使用方法は次のとおりです:

from langchain.document_loaders import CSVLoader

# ローダーを初期化する
loader = CSVLoader(file_path="path/to/your/file.csv")

# ドキュメントをロードする
documents = loader.load()

# 最初のドキュメントを表示する
print(documents[0].page_content)

デフォルトでは、CSVファイルの各行が個別のドキュメントになります。各ドキュメントのコンテンツは、行のキーと値のペアの文字列表現です。

LangChainドキュメントローダーでCSVパースをカスタマイズする方法

追加の引数を渡すことで、CSVのパース方法をカスタマイズすることができます:

loader = CSVLoader(
    file_path="path/to/your/file.csv",
    csv_args={
        "delimiter": ",",
        "quotechar": '"',
        "fieldnames": ["column1", "column2", "column3"]
    }
)

これにより、区切り文字、引用符、列名を明示的に指定することができます。

2. HTML LangChainドキュメントローダー

HTMLコンテンツのロードには、LangChainでは複数のオプションが用意されています。人気のある2つのオプション、UnstructuredHTMLLoaderとBSHTMLLoaderを見てみましょう。

LangChainドキュメントローダーでUnstructuredHTMLLoaderを使用する方法

このローダーは、Unstructuredライブラリを使用してHTMLをパースします:

from langchain.document_loaders import UnstructuredHTMLLoader

loader = UnstructuredHTMLLoader("path/to/your/file.html")
data = loader.load()

print(data[0].page_content[:300])

LangChainドキュメントローダーでBSHTMLLoaderを使用する方法

BSHTMLLoaderは、Beautiful Soupを使用してHTMLをパースします:

from langchain.document_loaders import BSHTMLLoader

loader = BSHTMLLoader("path/to/your/file.html")
data = loader.load()

print(data[0].page_content[:300])

BSHTMLLoaderはテキストコンテンツを抽出し、ページのタイトルをメタデータに保存します。

3. JSON LangChainドキュメントローダー

JSON(JavaScript Object Notation)は、人気のあるデータ形式です。LangChainは、JSONファイルを扱うためのJSONLoaderを提供しています。

LangChainドキュメントローダーでJSONLoaderの基本的な使用方法

JSONLoaderの単純な使用例は次のとおりです:

from langchain.document_loaders import JSONLoader
import json

# サンプルのJSONデータ
data = [
    {"text": "Hello, world!", "number": 42},
    {"text": "LangChain is awesome", "number": 100}
]

# JSONをファイルに書き込む
with open("sample.json", "w") as f:
    json.dump(data, f)

# ローダーを初期化して使用する
loader = JSONLoader(
    file_path="sample.json",
    jq_schema='.[]',
    text_content=False
)

documents = loader.load()

for doc in documents:
    print(doc.page_content)
    print(doc.metadata)
    print("---")

この例では、JSON配列内の各オブジェクトを個別のドキュメントとしてロードしています。

LangChainドキュメントローダーでの高度なJSONパース

JQのようなスキーマを使用して特定のフィールドを抽出できます:

loader = JSONLoader(
    file_path="sample.json",
    jq_schema='.[] | {text: .text, number: .number}',
    text_content=False
)

これにより、各オブジェクトから「text」と「number」フィールドのみを抽出できます。

4. Markdown LangChainドキュメントローダー

Markdownは、ドキュメント作成によく使用される軽量のマークアップ言語です。LangChainでは、Markdownファイルを扱うためのUnstructuredMarkdownLoaderが提供されています。

LangChainドキュメントローダーでUnstructuredMarkdownLoaderを使用する方法

UnstructuredMarkdownLoaderの使用方法は次のとおりです:

from langchain.document_loaders import UnstructuredMarkdownLoader

loader = UnstructuredMarkdownLoader("path/to/your/file.md")
data = loader.load()

print(data[0].page_content[:300])

このローダーはMarkdownコンテンツをパースし、一部の構造を保持したテキストを抽出します。

LangChainドキュメントローダーでの要素の保持

元のMarkdownの要素を保持したい場合は、「要素」モードを使用できます:

loader = UnstructuredMarkdownLoader("path/to/your/file.md", mode="elements")
data = loader.load()

for doc in data:
    print(doc.metadata['category'])
    print(doc.page_content[:100])
    print("---")

これにより、Markdownコンテンツが異なる要素(タイトル、説明文など)に分割され、メタデータに保持されます。

5. DOCX/XLSX/PPTX LangChainドキュメントローダー

LangChainでは、Word、Excel、PowerPointファイルなど、Microsoft Officeドキュメントの読み込みをサポートしています。

LangChainドキュメントローダーでのWordドキュメント

Wordドキュメントの場合、Docx2txtLoaderを使用できます:

from langchain.document_loaders import Docx2txtLoader

loader = Docx2txtLoader("path/to/your/document.docx")
data = loader.load()

print(data[0].page_content[:300])

LangChainドキュメントローダーでのExcelスプレッドシート

Excelファイルの場合、UnstructuredExcelLoaderを使用できます:

from langchain.document_loaders import UnstructuredExcelLoader

loader = UnstructuredExcelLoader("path/to/your/spreadsheet.xlsx")
data = loader.load()

print(data[0].page_content[:300])

LangChainドキュメントローダーでのPowerPointプレゼンテーション

PowerPointプレゼンテーションの場合、UnstructuredPowerPointLoaderを使用できます:

from langchain.document_loaders import UnstructuredPowerPointLoader

loader = UnstructuredPowerPointLoader("path/to/your/presentation.pptx")
data = loader.load()

print(data[0].page_content[:300])

6. PDF LangChainドキュメントローダー

PDFドキュメントは、フォーマットされたドキュメントを共有するために広く使用されています。LangChainでは、PyPDFLoaderやUnstructuredPDFLoaderなど、さまざまなPDFの読み込みオプションが提供されています。

LangChainドキュメントローダーでPyPDFLoaderを使用する方法

PyPDFLoaderの使用方法は次のとおりです:

from langchain.document_loaders import PyPDFLoader

loader = PyPDFLoader("path/to/your/file.pdf")
pages = loader.load_and_split()

for page in pages[:2]:  # 最初の2ページのコンテンツを表示
    print(page.page_content[:300])
    print("---")

このローダーはPDFの各ページを個別のドキュメントとして作成します。

LangChainドキュメントローダーでUnstructuredPDFLoaderを使用する方法

UnstructuredPDFLoaderでは、さまざまな要素の抽出など、より高度なパース機能が提供されています:

from langchain.document_loaders import UnstructuredPDFLoader

loader = UnstructuredPDFLoader("path/to/your/file.pdf", mode="elements")
data = loader.load()

for element in data[:5]:  # 最初の5つの要素を表示
    print(f"Type: {element.metadata['category']}")
    print(element.page_content[:100])
    print("---")

このローダーは、タイトル、テキストブロック、テーブルなど、PDFからさまざまな要素を抽出することができます。

LangChainドキュメントローダーの高度なテクニック

さまざまなドキュメントローダーの基本をカバーしたので、ドキュメント処理機能を強化するいくつかの高度なテクニックを見てみましょう。

LangChainドキュメントローダーで複数のローダーを組み合わせる方法

複数のソースや形式からドキュメントをロードする必要がある場合、LangChainではDirectoryLoaderを使用することで簡単に実現できます:

from langchain.document_loaders import DirectoryLoader, TextLoader, PDFLoader, CSVLoader

loader = DirectoryLoader(
    'path/to/directory',
    glob="**/*",
    loader_cls={
        ".txt": TextLoader,
        ".pdf": PDFLoader,
        ".csv": CSVLoader
    }
)

documents = loader.load()

このローダーは指定したディレクトリを再帰的に検索し、各ファイルタイプに適したローダーを使用します。

LangChainドキュメントローダーでのテキスト分割

長いドキュメントの場合、それをより小さなチャンクに分割することがしばしば役立ちます。LangChainでは、さまざまなテキスト分割方法が提供されています:

from langchain.text_splitter import RecursiveCharacterTextSplitter

text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200
)

split_docs = text_splitter.split_documents(documents)

これにより、ドキュメントが約1000文字のチャンクに分割され、チャンク間には200文字のオーバーラップが生じます。

LangChainドキュメントローダーでのメタデータの操作

ドキュメントのメタデータを追加または変更することができます:

from langchain.schema import Document

def add_source_to_metadata(doc):
    return Document(
        page_content=doc.page_content,
        metadata={**doc.metadata, "source": "custom_source"}
    )

processed_docs = [add_source_to_metadata(doc) for doc in documents]

これにより、各ドキュメントのメタデータに「source」フィールドが追加されます。

結論

LangChainドキュメントローダーは、さまざまな種類のドキュメントを言語モデルアプリケーションに取り込むための強力で柔軟な方法を提供しています。これらのローダーを効果的に使用する方法を理解することで、さまざまなデータソースを処理し分析することができる、より堅牢で多機能なAIパワードシステムを構築することができます。

常に最新情報や追加機能についてのLangChainドキュメントを確認するようにしてください。これらのローダーに慣れるにつれて、より複雑なドキュメント処理タスクを処理し、より洗練されたAIアプリケーションを作成することができるようになるでしょう。

💡
制限なしでClaude 3.5 Sonnetをお試しになりたいですか?

すべてのAIモデルにアクセスできるオールインワン価格タグを備えたAIプラットフォームをお探しですか?

それなら、Anakin AIを見逃すことはできません!

Anakin AIは、ワークフローオートメーション向けのオールインワンプラットフォームで、使いやすいノーコードアプリビルダーで強力なAIアプリを作成できます。Llama 3、Claude、GPT-4、Uncensored LLMs、Stable Diffusionなどです。

Anakin AIで夢のアプリを数分で構築しましょう!