PDF, Web, CSVを使ったナレッジベース構築

LLMフレームワークLlamaIndexにおける「PDF、Web、CSVを使ったナレッジベース構築」は、異なる形式のデータソースから情報を収集・前処理し、それらを統合して検索拡張生成(RAG)やチャットボットに活用する実践的なプロジェクトです。以下では、その構築手順を詳しく説明します。


概要

複数の異なるフォーマット(PDF文書、Webページ、CSVファイル)から情報を読み込み、それらを統一されたナレッジベースに変換し、LLMを活用した情報検索や対話のベースとする構成です。LlamaIndexでは、以下の3つの処理ステップで構築されます。

  1. データの取り込み(Ingestion)

  2. インデックスの構築(Indexing)

  3. クエリ応答・検索(Querying)


1. データの取り込み(Ingestion)

a. PDFファイルの取り込み

python
from llama_index.readers.file import PDFReader pdf_reader = PDFReader() documents_pdf = pdf_reader.load_data(file_path="sample.pdf")

PDFのページごとにテキストを抽出して、LlamaIndexのDocumentに変換します。

b. Webページの取り込み

python
from llama_index.readers.web import SimpleWebPageReader web_reader = SimpleWebPageReader() documents_web = web_reader.load_data(urls=["https://example.com"])

WebページのHTMLを取得して、本文を抽出・整形します。

c. CSVファイルの取り込み

python
from llama_index.readers.file import CSVReader csv_reader = CSVReader() documents_csv = csv_reader.load_data(file_path="data.csv")

CSVファイルは行ごとに1つの文書(Document)として取り扱われます。


2. インデックスの構築(Indexing)

すべてのDocumentオブジェクトを統合し、Vector Storeなどに基づいたインデックスを作成します。

python
from llama_index import VectorStoreIndex all_documents = documents_pdf + documents_web + documents_csv index = VectorStoreIndex.from_documents(all_documents)

VectorStoreIndexのほか、ListIndex, KeywordTableIndex, TreeIndexなどの形式も選択可能です。


3. クエリ応答・検索(Querying)

構築したインデックスに対して自然言語クエリを送信し、関連情報を抽出します。

python
query_engine = index.as_query_engine() response = query_engine.query("CSVとPDFに含まれる共通項目は?") print(response)

このように、異なるデータソースの内容を一体化したナレッジベースから、高度な質問応答が可能になります。


応用例

  • 社内ナレッジベース:マニュアル(PDF)、社内Wiki(Web)、顧客情報(CSV)などを一元化。

  • FAQボット:製品マニュアルやサポート情報を取り込み、チャットで自然言語応答を実現。

  • レポート生成:CSVデータと業務文書を結合し、要約やレポート生成に活用。


注意点

  • 各データ形式に応じてText Splitterを調整することが重要です。

  • 大量データを扱う場合は、分割処理やストレージ管理(FAISSやPineconeなど)との統合が推奨されます。

  • セマンティック検索の精度は、インデックスの設計と前処理(クリーニングや正規化)に依存します。

ChatGPT4o 生成日:2025/06/14