モデル / データセット
GiovanniPasq/agentic-rag-for-dummies avatar
GiovanniPasq/agentic-rag-for-dummies

agentic-rag-for-dummies: LangGraphで組むAgentic RAGの学習用リポジトリを読む

A modular Agentic RAG built with LangGraph — learn Retrieval-Augmented Generation Agents in minutes.

スター 4,166フォーク 531Jupyter NotebookMIT
GitHub

ひと目でわかる

これは何?
LangGraph、Qdrant、Ollamaを前提に、階層インデックスとマルチエージェント検索をノートブックとモジュール構成の両方で示すMITライセンスの教材。学習用途としては筋が通っているが、本番運用に持ち込む前に確認すべき境界もはっきりしている。
誰に向いている?
Agentic RAGの部品がどう繋がるかを手元で動かしながら理解したい個人や小規模チームには向いている。逆に、認証・権限管理・SLAを備えた検索基盤を今すぐ必要としている用途には向かない。
商用利用できる?
できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 17 日前です。
何の言語で書かれている?
主に Jupyter Notebook です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

このリポジトリが埋めようとしている穴

RAGの入門記事は、埋め込みベクトルを作って類似検索をかけ、その結果をプロンプトに詰める、という一本道の説明で終わりがちである。検索結果が的外れだったときに問いを書き直す、曖昧な質問をユーザーに聞き返す、複数の論点を含む質問を分割して並列に調べる、といった制御は範囲外になりやすい。agentic-rag-for-dummiesは、その制御部分をLangGraphのグラフとして書き下し、動くコードとして読める形にした教材である。READMEは「Most RAG tutorials show basic concepts but lack guidance on building modular, agent-driven systems」と述べ、学習資料と拡張可能なアーキテクチャの両方を提供することを狙いとして挙げている。対象読者は、RAGの基本は知っているがエージェント的な検索制御をどう組むかで止まっている開発者、あるいはLangGraphの実例を一つ通して読みたい人である。

親チャンクと子チャンクを分ける階層インデックス

検索精度と文脈量は普通トレードオフになる。小さく刻めば狙った箇所に当たりやすいが、LLMに渡す文脈は痩せる。大きく刻めば文脈は豊かだが、検索の当たりは鈍る。このリポジトリは文書を二度分割して両方を取る。まずMarkdownの見出し(H1、H2、H3)を境界として大きなParentチャンクを作り、そこから固定長の小さなChildチャンクを派生させる。検索はChildに対して行い、ヒットしたChildに対応するParentを引いて回答生成に渡す、という流れである。したがってインデックス側にはChildからParentへの対応関係を保持する必要があり、ベクトルストアにはQdrantを使う構成が示されている。この方式は文書構造が見出しで整理されているMarkdownや、そこから変換したPDFに向く。逆に、見出しのない議事録やチャットログのように構造の薄い素材では、Parentの切り方が機械的になり、階層化の利点は小さくなる。READMEはPDFからMarkdownへの変換やチャンクの検査を別プロジェクトChunkyに委ねており、このリポジトリ自身は変換ツールを抱えていない。

4段階のクエリ処理とMap-Reduce型の並列検索

READMEが示す処理の流れは、User Query → Conversation Summary → Query Rewriting → Query Clarification → Parallel Agent Reasoning → Aggregation → Final Response である。第1段階では会話の要約と直近の履歴を保持し、履歴を無制限に積み増さずに文脈を保つ。第2段階では「How do I update it?」を「How do I update SQL?」に直すような参照解決、複数論点の分割、不明瞭な入力の検出、検索向けの書き換えを行い、必要なら人間の入力待ちで停止する。ここがhuman-in-the-loopの実装点であり、LangGraphの割り込み機構に依存する部分でもある。第3段階ではサブクエリごとにエージェントのサブグラフを並列に起動する。READMEの例では「What is JavaScript? What is Python?」が2つの並列エージェントになる。各エージェントはChildを検索し、Parentを取得し、結果が不十分なら再検索し、重複取得を避けるために文脈を圧縮し、検索予算を使い切ったら緩やかに縮退する。第4段階で各エージェントの応答を1つの回答に集約する。注目すべきは、検索予算という上限が明示されている点で、これは暴走を止める設計上の制約である。同時に、予算の値や縮退時の具体的な挙動はREADMEの記述からは読み取れない。

Ollama前提のセットアップと差し替え可能な範囲

動くアプリはOllamaを既定とする。READMEの例ではまずOllamaを導入し、granite4.1:8bを取得する。コマンドは ollama pull granite4.1:8b、Python側は langchain_ollama の ChatOllama に model="granite4.1:8b"、temperature=0、seed=42 を渡す形が示されている。ツール呼び出しと指示追従の信頼性のため、8B以上のモデルを選ぶよう警告があり、小さいモデルは検索指示を無視したり幻覚を出したりしうるとされている。クラウド側はOpenAI、Anthropic、Googleの例が同梱され、チャットモデルの初期化部分を差し替える同じパターンで任意のLangChain対応プロバイダに広げられると説明されている。埋め込みモデル、PDF変換、エージェントのワークフローも独立して適応可能とされ、これがモジュラーを名乗る根拠になっている。ただしモデル名は頻繁に変わるため、デプロイ前に各プロバイダの公式ドキュメントで最新の識別子を確認するよう注記がある。学習用途ではColabのバッジから notebooks/agentic_rag.ipynb を直接開ける導線も用意されている。

この構成が向かない場面

第一に、検索基盤としての運用機能は対象外である。認証、ユーザーごとのアクセス制御、監査ログ、レート制限といった要素はREADMEの機能表に現れない。社内文書を不特定多数に検索させる用途にそのまま置くのは無理がある。第二に、クエリ明確化はユーザーへの問い返しでグラフを止める設計であり、バッチ処理や無人パイプラインには馴染まない。曖昧な入力を自動で処理したいなら、この割り込みを外すか別の経路に変える必要がある。第三に、並列エージェントはサブクエリごとにLLM呼び出しと検索を発生させる。ローカルの8Bモデルを1台のマシンで動かす前提では、並列度を上げるほど待ち時間が伸びる可能性があり、READMEにはこの並列度を制御する設定項目の記述がない。第四に、評価はRAGASメトリクスによる取得品質と回答品質の評価が挙げられているが、READMEの範囲では具体的な評価手順や閾値までは示されていない。改善の効果を数値で追いたいなら、評価まわりは自分で組み立てる前提で読むほうがよい。

代替としての素のLangChain検索チェーンとの違い

比較対象として素直なのは、LangChainのRetrievalQAのような単発の検索チェーンである。あちらは質問をそのまま埋め込み、ベクトルストアから上位k件を取り、プロンプトに詰めて1回生成する。分岐もループもなく、失敗したときの回復手段はプロンプト調整か取得件数の変更に限られる。agentic-rag-for-dummiesは同じ検索の前後に判断を挟む。検索前に問いを書き換え、必要なら人間に聞き返し、複数論点なら分割して並列に走らせ、検索後には結果の十分性を判定して再検索し、それでも足りなければ縮退する。代償は明確で、1回の回答あたりのLLM呼び出し回数とレイテンシが増え、グラフの状態管理とデバッグの対象も増える。単純なFAQ検索のように質問が短く一意で、外したときの損害が小さい用途では、素のチェーンのほうが安く速い。逆に、質問が会話の流れに依存する、あるいは1つの質問に複数の論点が混ざる場面では、この追加の制御が効いてくる。どちらを選ぶかは、レイテンシの予算と質問の複雑さの分布で決まる。

ライセンスと保守の見取り図

ライセンスはMITで、リポジトリはアーカイブされておらず、既定ブランチはmainである。直近のリリースはv2.3が2026年6月21日、v2.2が2026年6月10日、v2.1が2026年4月1日で、四半期から数か月の間隔で版が上がっている。MITである以上、コードの改変と再配布は緩い条件で可能だが、同梱される可能性のある第三者コンポーネント、具体的にはLangGraph、LangChain、Qdrant、Ollama、そして各クラウドプロバイダのクライアントはそれぞれ別のライセンスを持つ。ここは本記事の範囲では各ライブラリの条件を確認していないため、配布物に含める前に個別に確認が必要である。以下は法的助言ではない。保守コストの観点では、依存の中心がLangGraphとLangChainであり、この2つはAPIの変化が比較的速い。README自身が「Model names change frequently」と注意しているとおり、モデル識別子の陳腐化は避けにくい。学習教材として読む分には更新頻度は利点だが、これを土台に長期運用するなら、依存バージョンを固定し、LangGraphの破壊的変更を追う前提でスケジュールを確保しておく必要がある。

編集部の結論

Agentic RAGの部品がどう繋がるかを手元で動かしながら理解したい個人や小規模チームには向いている。逆に、認証・権限管理・SLAを備えた検索基盤を今すぐ必要としている用途には向かない。導入前に確認すべきは、notebooks/agentic_rag.ipynbの実行に必要なPython 3.11以降とLangGraph 1.2以降が揃っているか、Qdrantをローカルで動かすのかクラウドを使うのか、そして採用するチャットモデルがgranite4.1:8bのような8B以上のサイズかどうかの3点である。

公式情報源

  1. GiovanniPasq/agentic-rag-for-dummies on GitHub
  2. Issues
  3. License: MIT
  4. README
  5. Releases
コミュニティノート

コミュニティノート