LLM アプリは『プロンプト+RAG+ツール』で組み立てる
RAG は LLM の知識限界を補い、LangChain は LLM アプリの構築フレームワークとして広く使われています。本記事では編集部の視点で、設計と実装を公開情報をもとに整理します。AIエンジニアロードマップ もご参考に。
RAG の基本構成
(1) ドキュメント取込:PDF/Markdown/Web。(2) チャンク分割:500〜2000トークン目安。(3) Embedding 生成:OpenAI/Cohere/オープン。(4) ベクトル DB 保存:Pinecone/Weaviate/Qdrant 等。(5) 類似検索 → プロンプト挿入 → LLM。Elasticsearch 実践 もご参考に。
LangChain の主要モジュール
(1) Document Loaders:データ取込。(2) Text Splitters:チャンク分割。(3) Embeddings:ベクトル化。(4) Vector Stores:DB ラッパー。(5) Chains/Agents:処理パイプライン。
チャンク戦略
(1) RecursiveCharacterTextSplitter:基本。(2) セマンティックチャンキング:意味単位。(3) オーバーラップ:100〜200トークン。(4) メタデータ保持:source/page。(5) マルチモーダル:画像/表対応。質の高いチャンクが品質を決めます。
検索精度の改善
(1) ハイブリッド検索:BM25 + Vector。(2) Reranker:Cohere Rerank 等。(3) HyDE:仮想回答での検索。(4) Multi-query:複数クエリ生成。(5) フィルタ:メタデータでの絞り込み。
本番運用のポイント
(1) レイテンシ:1秒以内目標。(2) コスト管理:トークン数最小化。(3) キャッシュ:同質問の再利用。(4) 監視:精度・コスト・レイテンシ。(5) 評価:RAG 専用ベンチマーク。Observability 実践 も合わせて。
セキュリティ
(1) Prompt Injection 対策。(2) 個人情報マスキング。(3) 権限ベースのドキュメント分離。(4) 出力フィルタリング。(5) 監査ログ:誰が何を質問したか。Webセキュリティ実践 もご参考に。
失敗しがちなパターン
(1) チャンク粒度ミス:検索精度低下。(2) 無闇な全文ベクトル化:コスト爆発。(3) 監視なしで品質劣化。(4) Prompt Injection 放置。(5) LangChain 依存度高すぎ:将来移行困難。対策は、(1)タスク別調整、(2)選別ベクトル化、(3)RAGEval等、(4)入力検証、(5)抽象化レイヤー、です。