はじめに
こんにちは、外資系SIerでAIエンジニアをしている shuichiramen です。
最近まで某大手企業様向けに RAG(Retrieval-Augmented Generation) の導入と精度改善プロジェクトに携わっていました。
RAG改善案件に携わる中で感じた課題があります。これは最近話題のAIエージェントを現場に導入する際の課題にも通ずるものがあると感じています。
それは、明文化されていない暗黙知が多いことです。
RAGによって、社内ドキュメントをAIエージェントにただ与えるだけでは、業務に精通したエキスパートとのギャップを埋めることはできません。
たとえるなら、単なるRAGは新人社員が配属されて、すぐの状態。がんばって社内情報にアクセスする力はあるが、どこに正しい情報があるかわからない状態。また、前提知識がないため、集めても正しく使えない状態といえます。
こういった課題を整理するために、改めてRAGの課題に着目し、本当に使えるAIエージェントの構築のために必要な要素を以下のスライドまとめました。
説明スライド(Speaker Deck)
業務に精通したAIエージェントを作るために、今RAGを見直すべき理由
TL;DR
- 段階的推論(Agentic RAG) の導入
- 知識グラフ活用(GraphRAG)
- 知識グラフやRAGで用いるデータベースの自動更新・改善(KARMA)
これらを回すことで、 “新人レベル” だったAIエージェントを “実務エキスパートレベル” を目指すことが可能だと考えています。
まず、スライドで課題視しているのは以下です。
1. AS-IS:よくあるRAGの課題
社内 PoC でよく遭遇する課題は以下の 3 つでした。スライドの3ページ目でも “AS-IS” として整理しています。
例えるなら「資料室で必死に資料を探す新人」。働きぶりは健気でも、実務では頼れない 状態です。
2. TO-BE:“実務エキスパートレベル” へ育てる AI エージェント
スライド 4 ページ目の “TO-BE” に示した通り、目指すは 「育てる AI」。段階的推論・知識グラフ・自己学習の 3 点セットで、
“実務エキスパート”レベル のアウトプットを生むイメージです。
3. 解決策① 段階的推論(Agentic RAG )の導入
3-1. ReAct手法
- AIエージェントの手法としてReActが有名です。LangGraphを用いれば簡単に使用することができます。
from langgraph import create_react_agent, tool
@tool
def vectordb_search(query: str) -> str:
"""社内 VectorDB から検索し、最重要チャンクを返す"""
agent = create_react_agent(
tools=[vectordb_search],
llm="gpt-4o-mini",
max_iterations=5,
)
- ReAct で「思考→行動」を往復しながら、複数クエリ/複数検索ソースを自律的に横断。
- いわば「自分の頭で考え始めた新人」。まだ粗さはあるが段違いに頼れるようになります。
4. 解決策② 知識グラフ活用 (GraphRAG)
4-1. “どこに何があるか” を教える
新人を育てるには、業務に精通したエキスパートの知識が必要となります。
しかし、単に、マニュアルなどのドキュメントを新人に与えてもうまく使いこなしてくれません。そこで、ドキュメントの内容を構造化した知識グラフが役に立ちます。
知識グラフをRAGとして、AIエージェントに与える手法にはGraphRAGがあります。
GraphRAG では、知識グラフ 上の エンティティ間関係 を辿りながらベクトル検索を補完することが可能です。
GraphRAGには大きく2つのアプローチがあります。今回の検証ではデータ更新フローをメインにしたいのでベーシックなGraphRAGを採用しました。
- Microsoft GraphRAG:ノード間の関係性(コミュニティ構造)を分析し、クラスタ単位で要約・検索を行う。コミュニティ検出で抽象概念まで拾う高性能版。
- ベーシックなGraphRAG:ベクトル検索で見つけたノードを起点に、グラフ内の関連ノードをグラフ情報で補完検索します。軽量で導入容易、今回の要件に当てはまる。
GraphRAGとは?
- ナレッジグラフ(知識グラフ)を用いて、データ間の関係性を構造化された形で表現します。これにより、情報間のつながりを明確にし、LLMがより深い理解に基づいて回答を生成できるようになります
https://neo4j.com/blog/genai/graphrag-manifesto/
ユーザーが質問を投げてから回答するまでのイメージ
5. 解決策③ 継続的改善 — Prompt 最適化 & DB 自動改善
5‑1. Prompt 面:システムプロンプト最適化
AIエージェントを改善するアプローチとして、システムプロンプトの更新という点がよく議論されています。
例としては、APE(自動プロンプトエンジニアリング)やLangMem(AIエージェントの長期記憶を管理するライブラリ)などプロンプト最適化手法などが既に提案されているため、手始めに取り組みやすいかと思います。
APE:https://arxiv.org/abs/2211.01910
LangMem:https://github.com/langchain-ai/langmem
5‑2. データベース(DB) 面:KARMA でナレッジを自動更新
プロンプト最適化については前段でご紹介した手法が議論されている一方、RAG改善の面で必要なDBの更新に関してはあまり議論されていません。
そこで今回は、KARMAという論文に着目しました。
5-2-1. KARMA とは?
KARMA: Leveraging Multi-Agent LLMs for Automated Knowledge Graph Enrichment (2025-02)
(https://arxiv.org/html/2502.06472v1)
- LLMを活用したマルチエージェント・アーキテクチャで、ドキュメントから知識グラフ(KG)への知識抽出と統合を自動化する
- Ingestion / Extraction / Evaluator / Conflict-Resolver など複数エージェントが協働し、 知識グラフの自動更新をおこなう
5-2-2. KARMAを試してみた
上記KARMAには少しリッチな部分があるため、最低限の実装をするために軽量版KARMA (“Light KARMA”)作成しました。
Light KARMAの実装は以下のリポジトリにあります。
主要機能
- 自動エンティティ・リレーション抽出: LLM を使用してテキストからグラフ構造を抽出
- 信頼度評価システム: 信頼度(confidence_score)に基づく品質フィルタリング
- 競合解決メカニズム: 既存データとの類似性チェックと競合解決
- デュアルストレージ: Neo4j グラフ DB と Azure AI Search への同期格納
- ベクトル検索対応: 埋め込みベクトルによる類似性検索
構成
追加実装したいこと
- ユーザーフィードバックを取り入れる機構を入れる。
- UI で "👍 / 👎" ワンクリックすればフィードバックが次回閾値へ反映。
このようなプロセスで、RAG の 長期メモリ (DB) が自律的に最新化され、エンジニアは監視と閾値設計に集中できるようになります。
*実際に使えるレベルのものにするため、簡易実装のロジックは継続して改善予定です。
6. まとめ
本記事では、RAG を業務で本当に使える形に進化させるためのアプローチについて、実践的な視点から紹介しました。
従来のRAGでは、「情報は探せるが、業務には使えない」という“新人レベル”の状態にとどまりがちでした。これを打破するためには、段階的推論(Agentic RAG)で「思考する力」を持たせ、知識グラフ(GraphRAG)で「文脈理解と構造化された知識」を与え、さらにKARMAのような仕組みで「継続的に知識を自動更新」する環境が重要になります。
これらを組み合わせることで、AIエージェントは単なる情報検索ツールではなく、実務エキスパートに近い存在へと進化していきます。
AIを現場で本当に使える形にするには、“仕組み”だけでなく“育てる視点” が不可欠です。これからAIエージェントの導入・改善を検討する皆さまの一助となれば幸いです。
質問やフィードバック等、コメントいただけると励みになります