Shikata Ga Nai

Private? There is no such things.

第50回:LangGraphって何?RAGをもっと賢くする技術

Hello there, ('ω')ノ

RAGがもっと「賢く、柔軟に」なるには?

RAG(検索拡張型生成)は非常にパワフルな仕組みですが、複雑な処理をしようとすると限界も見えてきます。

たとえば:

  • 「複数のデータを順番に処理してまとめてほしい」
  • 「答えが見つからなければ、もう一度検索してほしい」
  • 「途中でユーザーに確認を取りながら対話したい」

…といったマルチステップ・分岐あり・再実行ありの処理になると、従来のRAGだけではうまく制御しきれません。

そこで登場するのが、LangGraph(ランググラフ)です!


💡 LangGraphとは?

LangGraphは、LangChainチームが開発した新しいフレームワークで、
「AIエージェントの思考や処理を、状態遷移(ステートマシン)として制御できる」のが特徴です。


🔁 簡単に言えば…

従来のLangChainが「一本道のレール」で処理を進めるイメージだとすれば、
LangGraphは「分岐や繰り返しがある地図(グラフ)」で、AIに柔軟な行動をさせられるようになります。


🧠 RAG × LangGraph でできること


✅ ① 条件付きでRAGを再実行(ループ処理)

例:「検索結果に十分な情報がない場合、別のクエリで再検索する」
➡ 情報が足りないと判断したら、自動的に再検索!


✅ ② ステップごとに判断しながら生成

例:「質問を受けたら → 何を調べるか決める → RAGで取得 → 出力内容を整形」
➡ RAGを挟みながら、目的に沿って段階的に処理


✅ ③ ユーザーとのやりとりをはさむ

例:「途中で“この内容でいいですか?”と確認をとる → OKなら次へ進む」
➡ 対話の中でフローを変えられる、“会話型ワークフローAI”に!


📊 LangGraph の全体構成イメージ

[質問受け取り]
       ↓
[質問の分類]
 → Aなら [RAG検索A] → [要約]
 → Bなら [RAG検索B] → [確認] → [出力]
       ↑
     (再検索あり)

➡ 各ノード(ステップ)に対して、何をするか/次にどこへ進むかをロジックで制御できます。


🔧 LangGraph × RAG の構築ステップ(シンプル版)


✅ 1. ノード(ステップ)を定義

def classify_question(state):
    # 質問内容からRAG or ユーザー確認の判断
    return state

def run_rag(state):
    # RAG検索+生成
    return state

✅ 2. 遷移(エッジ)を設計

edges = {
    "start": classify_question,
    "rag_needed": run_rag,
    "user_check": confirm_with_user,
    "done": finish,
}

✅ 3. LangGraphでワークフロー化

from langgraph.graph import StateGraph

graph = StateGraph()
graph.add_node("start", classify_question)
graph.add_node("rag_needed", run_rag)
...
graph.set_entry_point("start")
graph.set_finish_point("done")
workflow = graph.compile()

➡ これで、「柔軟でルールベースなRAGフロー」が完成!


🧭 どんな業務に使える?

業務例 LangGraphの活用ポイント
社内レポート作成 要素分解 → 情報取得 → 整形 → ユーザー確認
IT問合せ対応 「不足情報あり」なら再質問 → 完全な回答へ
規定の自動案内 質問内容から対象ドキュメントを判断し分岐処理
ワークフロー自動化 条件に応じて異なるプロンプト・データを使用可能

✅ LangGraphが向いているRAGの特徴

向いているケース 内容
複数の処理ステップがある 例:調査 → 要約 → 提案
条件分岐が多い 例:質問内容によって異なる検索パスを使いたい
同じ処理を繰り返す必要がある 例:情報が不十分なら再検索
ユーザーと対話しながら進めたい 例:途中で「OKですか?」と聞きたい

🎯 まとめ:LangGraphは「考えて動けるRAG」をつくる鍵!

  • LangGraphは、従来のRAGでは難しかった柔軟な処理制御・条件分岐・対話的フローを可能にする
  • 複数のノード(ステップ)をつなげて、AIの思考と動きを“見える化”&“制御”できる
  • 今後のRAG活用は、「ただ答えるAI」から「プロセスを組み立てるAI」へ!

Best regards, (^^ゞ