>100 Views
August 12, 26
スライド概要
はじめまして、yukikoと申します。 IT教育支援や、DX推進が可能です。 ◆ スキル LPIC レベル2 AI / Python Splunk BI(データ可視化・分析) ◆ その他 新卒・未経験の学生向けに、エンジニア転職を応援する資料を趣味で作成しています。 もしよろしければご活用ください。
うさうさ研修工房 テクニカル・ブリーフィング RAG × LangChain × LangGraph 入門 生成AIが「調べて」「組み立てて」「答えを出す」までの仕組みを、 3つの技術の役割に分けてやさしく理解する Understanding Retrieval-Augmented Generation and Agent Orchestration — Grounded in Peer-Reviewed Research and Official Documentation 文系出身エンジニア・新人研修 向け解説資料 For engineers from non-technical (liberal-arts) backgrounds うさうさ研修工房|Usausa Training Workshop
AGENDA 本日学ぶこと 07 LangChain と LangGraph の使い分け 08 3者を統合したアーキテクチャ 09 まとめと参考文献 What We Will Cover Today 01 なぜRAGが必要か どちらを、いつ、なぜ使うか 実務で動く RAGエージェントの全体像 LLMの限界とハルシネーション問題 02 RAGの仕組み 03 LangChainとは 04 LangChainでRAGを組む Load→Split→Embed→Store→Retrieve→Generate 本資料の情報ソース 05 LangGraphとは ・LangChain / LangGraph 公式ドキュメント( docs.langchain.com) 状態を持つエージェントのオーケストレーション基盤 ・Lewis et al. (2020) NeurIPS — RAG原論文 06 LangGraphの核となる概念 検索 (Retrieval)と生成 (Generation)の融合 査読済み論文・公式ドキュメント一覧 LLMアプリ開発のための部品ライブラリ ・関連の査読済みサーベイ論文( arXiv / ACL / EMNLP 等) State / Node / Edge によるグラフ設計 RAG × LangChain × LangGraph 02
01 · WHY RAG LLM単体 vs RAGを用いた LLM なぜ今、 RAGが必要なのか 質問 LLM(学習知識のみ) User question Parametric memory only The Problem RAG Was Built to Solve ① 知識のカットオフ問題 × 古い /不確かな回答 Outdated or hallucinated LLMは学習時点までの知識しか持たない ② ハルシネーション(幻覚) もっともらしい誤情報を自信満々に生成してしまう ③ 社内・専門知識の欠如 質問 検索 → LLM User question Retrieve then generate 非公開データや最新情報には答えられない RAGは、外部知識ベースからの「検索」をLLMの「生成」プロセスに組み込むことで、 外部知識ベース External KB ○ 根拠ある最新回答 Grounded, up-to-date これらの限界を補う仕組みとして2020年に提案されました。 REFERENCE Lewis et al. (2020) “Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks,” NeurIPS 33, pp.9459–9474. RAG × LangChain × LangGraph 公式ソース arxiv.org/abs/2005.11401 03
01 · MECHANISM RAGパイプライン RAGの仕組み:検索と生成の融合 ユーザーの質問 Query How Retrieval-Augmented Generation Works ① Retriever(検索器) Vector similarity search ① 検索(Retrieval) 質問を埋め込みベクトル化し、類似度の高い文書を知識ベースから取得 ② 拡張(Augmentation) 知識ベース (ベクトル DB) Vector store ② Augmentation(文脈統合) Query + retrieved docs → prompt 取得した文書を質問と一緒にプロンプトへ組み込む ③ 生成(Generation) ③ Generator(LLM) e.g. GPT / Claude / Gemini LLMが根拠付きの文脈から回答を生成する 根拠付きの回答 Grounded answer REFERENCE Lewis et al. (2020) NeurIPS; retriever component follows Karpukhin et al. (2020) “Dense Passage Retrieval,” EMNLP. RAG × LangChain × LangGraph 公式ソース arxiv.org/abs/2005.11401 ・ arxiv.org/abs/2004.04906 04
01 · COMPONENTS RAGを構成する 3つの要素 形式的な定義 D R G Documents Retriever Generator The Three Core Components of a RAG System 文書データベース D 検索対象となる社内文書・マニュアル・FAQなど 検索器 Retriever R q(質問) → R_k(q) = argtop-k sim(q, d) response = G( q , R_k(q) ) コサイン類似度などで上位k件を取得(Karpukhin et al., 2020) 生成器 Generator G なぜ「柔軟」なのか 取得文脈をもとに回答を生成する言語モデル ・D を更新 → 再学習せずに最新知識へ この3要素は独立して交換可能で、再学習なしにDBやLLMを差し替えられる柔軟な ・R を差し替え → 検索精度を独立して改善 アーキテクチャが RAG の強みです。 ・G を交換 → LLMプロバイダの変更が容易 REFERENCE “RAG's distinctive feature is its flexible architecture…” Xu et al. (2024) arXiv:2402.16893, on Lewis et al. (2020). RAG × LangChain × LangGraph 公式ソース arxiv.org/abs/2402.16893 05
02 · LANGCHAIN LangChain の主要コンポーネント LangChainとは何か Models Prompts LLM / Chat モデル呼び出し プロンプトテンプレート管理 Retrievers Tools ベクトルDB等からの検索 外部API・関数呼び出し Memory Chains / Agents 会話履歴・状態の保持 上記を連結して実行 A Composable Toolkit for LLM Applications LLMアプリ開発のための「部品」ライブラリ モデル・プロンプト・検索・ツールを共通インターフェースで接続 既製のエージェント構成を提供 手早くLLM×ツールのアプリを組み立てられる高レベルAPI LangGraph上に構築されている 内部でLangGraphの永続実行・ストリーミング機能を利用 REFERENCE “LangChain agents are built on top of LangGraph in order to provide durable execution…” — reference.langchain.com/python/langgraph RAG × LangChain × LangGraph 公式ソース docs.langchain.com 06
02 · LANGCHAIN × RAG 6ステップ・パイプライン LangChainでRAGを実装する流れ 1. Load 2. Split 3. Embed 読み込み 分割 ベクトル化 6. Generate 5. Retrieve 4. Store 生成 検索 保存 Building a RAG Pipeline with LangChain Document Loaders PDF・Webページ・DBなど多様なソースを読み込み Text Splitters 文書を検索に適したチャンクへ分割 Embeddings 回答( Answer) チャンクをベクトルへ変換 Grounded response to the user Vector Stores ベクトルを保存・インデックス化 インデックス作成(オフライン) vs 検索・生成(オンライン) この6ステップは LangChain 公式ドキュメントの RAG チュートリアルで示されている標準 的な構成です。 1〜4(Load/Split/Embed/Store)は事前にバッチ実行し、 5〜6(Retrieve/Generate)はユーザー質問のたびに実行します。 REFERENCE docs.langchain.com — “Retrieval Augmented Generation (RAG)” official tutorial, LangChain Python documentation. RAG × LangChain × LangGraph 公式ソース docs.langchain.com/oss/python/deepagents/rag 07
03 · LANGGRAPH LangChain と LangGraph の関係 LangGraphとは何か LangChain Components & prebuilt agents A Low-Level Orchestration Runtime for Agents 土台として利用 状態を持つ・長時間動くエージェントの基盤 LangGraph 決定的な処理とLLM駆動の処理を同じグラフ上で自由に組み合わせられる Durable execution runtime (Pregel-inspired) 低レベル・高い制御性 アプリの要件どおりに正確に振る舞うエージェントを設計可能 永続実行・ストリーミング・人の介入(HITL) 障害を越えて継続し、長時間ジョブにも対応 使い分けの目安(公式ドキュメントより) LangChain を使う場面: 既製のエージェント構成で素早く構築したいとき LangGraph を使う場面: 決定的な処理とエージェント処理の混在、 高いカスタマイズ性、細かなレイテンシ制御が 必要な高度な要件のとき REFERENCE “LangGraph is a low-level orchestration framework and runtime for building… long-running, stateful agents.” docs.langchain.com/oss/python/langgraph/overview RAG × LangChain × LangGraph 公式ソース docs.langchain.com/oss/python/langgraph/overview 08
03 · CORE CONCEPTS グラフ構造のイメージ LangGraphの核となる 3概念 START State, Node, and Edge Node A:検索 State(状態) retrieve() グラフ全体で共有される型付きデータ。更新は不変(イミュータブル)に処理される Node B:条件分岐 Node(ノード) route_by_confidence() ループ(再検索) 処理単位。関数やLLM呼び出しなどを表す1つのステップ Edge(エッジ) ノード間の遷移。条件分岐・ループも表現できる Node C:回答生成 Node D:再検索 generate() re-retrieve() END REFERENCE LangGraph state updates use immutable data structures; each update creates a new version rather than mutating state. RAG × LangChain × LangGraph 公式ソース reference.langchain.com/python/langgraph 09
04 · COMPARISON 比較表 LangChain と LangGraph の使い分け 観点 LangChain LangGraph 抽象度 高レベル(既製部品) 低レベル(詳細制御) 向いている場面 素早いプロトタイプ 複雑・長時間の本番運用 状態管理 Memory機能で補助 State/Graphでネイティブ管理 LangChainの部品をLangGraphのノードとして組み込む構成が多い 制御構造 直線的な Chain中心 分岐・ループを自在に設計 小さく始めて、必要に応じて低レベル化 典型ユーザー まず動かしたい開発者 本番の信頼性が要る開発者 Choosing the Right Layer for the Job 両者は対立関係ではない LangGraphが基盤、LangChainがその上の高レベルAPI 併用が一般的 まずLangChainの既製エージェントで試し、要件が複雑化したらLangGraphで書き直す REFERENCE “LangGraph… integrates seamlessly with any LangChain product…” — github.com/langchain-ai/langgraph RAG × LangChain × LangGraph 公式ソース github.com/langchain-ai/langgraph 10
05 · INTEGRATION 3者を統合したアーキテクチャ 統合アーキテクチャ図 LangGraph(オーケストレーション:状態・分岐・ループ) ユーザー入力 RAG + LangChain + LangGraph in Practice RAG=知識を取ってくる「仕組み」 LangChain(部品: Retriever / Prompt / LLM) 検索と生成を組み合わせる設計思想 Retriever Vector DB LLM RAG knowledge LangChain=それを組み立てる「部品」 Retriever・Embedding・LLM呼び出しの共通部品群 回答ドラフト(ツール呼び出し含む) LangGraph=全体を制御する「頭脳」 Draft answer / tool calls 状態管理・分岐・ループでエージェントとして稼働させる基盤 不十分 →再検索 条件分岐:十分な根拠か? confidence check node REFERENCE “This agent combines LangGraph workflow management with your RAG tools… chain multiple tool calls together.” RAG × LangChain × LangGraph 公式ソース www.langchain.com/langgraph 11
まとめ 参考文献 References Key Takeaways [1] Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. Advances in Neural Information Processing Systems (NeurIPS), 33, 9459–9474. RAGは「検索」で外部知識を補い、LLM単体の限界(幻覚・知識カットオフ)を克 [2] 服する枠組み(Lewis et al., 2020) Karpukhin, V. et al. (2020). Dense Passage Retrieval for Open-Domain Question Answering. Proceedings of EMNLP. [3] Shuster, K. et al. (2021). Retrieval Augmentation Reduces Hallucination in Conversation. Findings of ACL: EMNLP 2021. LangChainはRAGを組み立てるための共通部品ライブラリ [4] Xu, S. et al. (2024). The Good and The Bad: Exploring Privacy Issues in Retrieval-Augmented Generation (RAG). arXiv:2402.16893. LangGraphはState/Node/Edgeで、分岐・ループを含む複雑なエージェントを制 御する低レベル基盤 [5] LangChain Inc. LangGraph Overview. Official documentation — docs.langchain.com/oss/python/langgraph/overview 実務では3者を重ねて使う:RAG=設計思想/LangChain=部品 [6] LangChain Inc. LangGraph Reference. reference.langchain.com/python/langgraph /LangGraph=制御 [7] LangChain Inc. langgraph-ai/langgraph repository. github.com/langchain-ai/langgraph うさうさ研修工房| Usausa Training Workshop