チュートリアル

LangChainエージェント実践チュートリアル:ゼロから作るRAG検索ボット

AIエージェントガイド編集部公開: 2026-04-05更新: 2026-04-05読了時間: 約15分

LangChainは、LLMを活用したアプリケーション開発で最も広く使われている フレームワークの一つです。特にRAG(Retrieval-Augmented Generation:検索拡張生成) パターンと組み合わせることで、自社データに基づいた正確な回答を返すAIエージェントを 構築できます。本チュートリアルでは、環境構築からデプロイまでを実践的に解説します。

1. LangChainとRAGの基礎知識

LangChainは、LLM(大規模言語モデル)と外部データソース・ツールを 連携させるためのPython/TypeScriptフレームワークです。 単純なプロンプト送信だけでなく、チェーン(Chain)やエージェント(Agent)といった 抽象化レイヤーを提供し、複雑なワークフローを構築できます。

🔥 LangChainエコシステムの規模

LangChainはPythonとTypeScriptの両方をサポートし、 多数のインテグレーションを持つ巨大なエコシステムを形成しています。 ドキュメントDBからAPIまで幅広い連携先が用意されています。

GitHub Stars
100k+

RAG(検索拡張生成)は、LLMが回答を生成する前に関連ドキュメントを検索し、 そのコンテキストを含めて回答させるアーキテクチャです。 これにより、LLMの学習データに含まれない自社固有の情報に基づいた 正確な回答が可能になり、ハルシネーション(事実と異なる回答)を大幅に減らせます。

2. 開発環境のセットアップ

まずは必要なパッケージをインストールし、APIキーを設定します。 Python 3.9以上の環境を前提とします。

setup.sh
# 仮想環境の作成とパッケージインストール python -m venv .venv source .venv/bin/activate pip install langchain langchain-openai pip install chromadb # ベクトルDB pip install pypdf # PDFローダー # 環境変数の設定 export OPENAI_API_KEY="your-api-key-here"
パッケージ役割備考
langchainコアフレームワークチェーン・エージェントの構築基盤
langchain-openaiLLM連携OpenAI APIとの統合モジュール
chromadbベクトルDBドキュメントの埋め込み保存・検索
pypdfデータローダーPDFファイルのテキスト抽出

ℹ️ APIキーの管理について

APIキーは環境変数または.envファイルで管理し、ソースコードに直接記載しないでください。 python-dotenvパッケージを使えば、.envファイルから自動読み込みが可能です。 .gitignoreに.envを追加することも忘れずに。

3. RAG検索ボットを構築する

ここからが本題です。PDFドキュメントを読み込み、ベクトルDBに格納し、 ユーザーの質問に対して関連情報を検索して回答するRAGボットを実装します。

rag_bot.py
from langchain_openai import ChatOpenAI, OpenAIEmbeddings from langchain.document_loaders import PyPDFLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.vectorstores import Chroma from langchain.chains import RetrievalQA # 1. ドキュメントの読み込みと分割 loader = PyPDFLoader("company_docs.pdf") docs = loader.load() splitter = RecursiveCharacterTextSplitter( chunk_size=1000, chunk_overlap=200 ) chunks = splitter.split_documents(docs) # 2. ベクトルDBへの格納 vectorstore = Chroma.from_documents( chunks, OpenAIEmbeddings() ) # 3. RAGチェーンの構築 qa_chain = RetrievalQA.from_chain_type( llm=ChatOpenAI(model="gpt-4"), retriever=vectorstore.as_retriever() ) # 4. 質問への回答 result = qa_chain.invoke("社内の有給休暇制度について教えてください")

AIスキルを身につけて業務を自動化しよう

プログラミング未経験からでも、AIエージェント開発・業務自動化のスキルを習得できるスクールを厳選しました。

おすすめのAIスクールを見る

4. 実運用に向けた改善テクニック

基本的なRAGボットが動いたら、精度と安定性を向上させるための 改善を加えていきましょう。

⚠️ チャンクサイズとオーバーラップの調整が精度を左右する

ドキュメントの分割方法は検索精度に大きく影響します。 チャンクサイズが大きすぎると関連性の低い情報が混入し、 小さすぎると文脈が失われます。自社のドキュメント特性に合わせて chunk_size(500〜2000)とchunk_overlap(100〜300)を 実験的に調整してください。

主な改善ポイントとしては、(1) Hybrid Search(キーワード検索 + ベクトル検索の併用) の導入、(2) Re-ranking(検索結果の再順位付け)、 (3) メタデータフィルタリング(部署・日付による絞り込み)、 (4) ストリーミング出力によるUX向上が挙げられます。 LangSmithなどのオブザーバビリティツールを導入し、 検索精度のモニタリングを継続的に行うことで、品質を維持・向上できます。

Share this article

📚 関連記事