はじめに
RAG(Retrieval-Augmented Generation)を本番運用しているチームから、繰り返し聞かれる質問があります。
「回答精度が安定しない。プロンプトは何度も調整した。何が悪いのか?」
多くの場合、原因はプロンプトでも Embedding モデルでもなく、もっと上流にあります。ドキュメント解析です。
一般的な RAG パイプラインは「解析 → チャンキング → Embedding → インデックス → 検索 → 生成」という流れを辿りますが、最上流の解析レイヤーで情報が欠落していれば、後工程でどれだけ精緻なチューニングをしても取り返せません。典型的な Garbage In, Garbage Out です。
ところが現状、この解析レイヤーの品質を「観測する」ための仕組みが十分に整っていません。既存の Studio UI で JSON レスポンスを眺めることはできます。しかし「モデル A とモデル B で、同じドキュメントのどこが、どう変わるのか」を構造レベルで比較しようとすると、途端に手作業の世界に入ります。
本記事では、この課題に対するアプローチとして、私が独自に開発した OSS の RAGOps Studio — for Document Intelligence / Content Understanding を紹介します。
RAGOps という視点
MLOps がモデルの品質を継続的に改善する仕組みであるように、RAGOps は RAG パイプライン全体の品質を継続的に改善する仕組みです。
RAGOps Studio シリーズは、この考え方を具体的なツールに落とし込んだものです。
| シリーズ | 対象レイヤー |
|---|---|
| RAGOps Studio — for Azure AI Search | 検索インデックスの品質(下流) |
| RAGOps Studio — for DI/CU(本記事) | ドキュメント解析の品質(上流) |
第一弾は検索インデックス側からの品質改善でした。第二弾の今回は、パイプラインの最上流 — Azure AI Document Intelligence (DI) と Content Understanding (CU) による解析結果そのもの — にフォーカスします。
解決する課題
ドキュメント解析の品質改善において、現場で実際にボトルネックになっているのは以下のような作業です。
1. モデル選定の手探り感
DI には 30 種のプリビルトモデル、CU には 47 種のプリビルトアナライザーがあります。プロジェクトの対象ドキュメントに対してどのモデルが最適かを判断するには、実際に解析して結果を比較するしかありません。しかし、既存の UI では結果を並べて構造的に比較する手段がありません。
2. オプション調整のイテレーション速度
ocrHighResolution を有効にしたら精度がどう変わるのか。formulas を ON にしたら数式が取れるようになるのか。試すたびに API を叩き、結果を JSON ファイルとしてローカルに保存しても、比較は目視です。このサイクルが遅いほど、最適な設定にたどり着くまでの時間が伸びます。
3. 抽出結果のブラックボックス化
JSON ビューアで座標値を読んでも、それが PDF 上のどこを指しているのかは直感的にわかりません。チャンクの切れ目がおかしい、テーブルのセル認識がずれている — こうした問題に気づくには、座標をビジュアルに重ねて確認する必要があります。
核となる 4 つのサイクル
RAGOps Studio の設計思想は「試す → 見る → 直す → 比較する」の反復です。
試す — デュアルサービス × 豊富なオプション
1 つの画面で DI と CU をワンクリックで切り替えられます。これは単なる UI の便利機能ではなく、同一ドキュメントに対して DI と CU の両方の解析結果を蓄積し、比較するための設計です。
DI 側では ocrHighResolution、formulas、barcodes、styleFont、ページ範囲指定、ロケール、出力形式(text / markdown)、query_fields といったオプションを UI から直接操作できます。
CU 側では、18 種の Processing Configuration パラメータのうち 16 種に対応。加えて、フィールドスキーマエディター(テーブルモード / JSON モード)を内蔵しており、prebuilt-image や prebuilt-audio のようなスキーマ必須アナライザーも UI 上で完結します。
見る — バウンディングボックスのビジュアルオーバーレイ
描画した PDF の上に、SVG によるバウンディングボックス(BBox)オーバーレイを10種類のモードで表示します。
- Lines / Words / Paragraphs / Figures / Formulas / Barcodes / Tables / Key-Value Pairs / Selection Marks
各 BBox はホバーでコンテンツテキストとロール情報をツールチップ表示し、クリックすると JSON ビューアの該当パスに自動ジャンプします。「この BBox が JSON のどの要素に対応しているか」を瞬時に追跡できます。
これは JSON を読む作業の代替です。「テーブルの3列目のセル認識がずれている」「段落の切れ目がページ境界で不自然に分割されている」こうした問題は、ビジュアルで見れば1秒で気づきます。JSON の座標値を頭の中で変換する必要はありません。
画像ファイル(JPEG, PNG, TIFF)も同じ SVG オーバーレイシステムで対応しています。
タブによる confidence の確認
結果パネルには 概要 / 項目 / Response JSON / Request JSON の 4 つのタブがあります。
中でも Items タブは、解析結果を折りたたみ式の階層ツリーとして表示します。DI の場合は Pages → Lines → Words、Paragraphs、Tables(HTML テーブルとして描画)、Key-Value Pairs、Figures、Styles、Documents/Fields がネストして展開されます。CU の場合は Contents → Fields がセクションごとにまとまり、各フィールドの横に confidence バッジが色分け表示されます。
これにより「このフィールドの抽出に、モデルはどの程度自信を持っているか」を一目で判断できます。信頼度の低いフィールドが赤で並んでいれば、そのモデルやオプションではそのドキュメントに対して精度が不足していることがすぐにわかります。フィールドをクリックすれば JSON ビューアの該当パスに直接ジャンプするため、生の値をすぐに検証できます。
構造階層の可視化 — Structure タブ
プレビュー領域には Structure タブがあり、解析結果の paragraphs と sections を 2D ツリービューで表示します。各ノードには title、sectionHeading、footnote、pageHeader、pageFooter といったロール情報が付与されます。
ドキュメントが「どのような構造で認識されているか」— 見出しの階層、セクションの区切り、ヘッダー・フッターの分離 — を俯瞰できるため、チャンキング戦略を考える際の重要な判断材料になります。「このセクション区切りが認識されていないから、チャンクが不自然に分割される」という問題の原因特定が、ツリーを見るだけで可能です。
直す — キャッシュによる高速イテレーション
すべての解析結果は「ファイルの SHA-256 + モデル ID + オプションの SHA-1 署名」をキーとして自動キャッシュされます。同一の入力に対しては API を呼ばずにキャッシュから即座に返すため、一度解析した結果の確認・比較・共有を待ち時間なしで何度でも繰り返せます。
キャッシュされた結果はライブラリ画面にカード形式で一覧表示され、同じファイルの異なる解析バリアント(異なるモデル、異なるオプション)をワンクリックで切り替えてロードできます。
比較する — セマンティック Diff
ここが RAGOps Studio の最も差別化されたポイントです。
ライブラリから複数のバリアントをチェックボックスで選択し、「Compare」を実行すると、結果を構造レベルで比較し、差分をハイライト表示します。
例えば:
-
prebuilt-layoutvsprebuilt-read— 同じ文書に対してどのモデルがより正確か -
ocrHighResolution: truevsfalse— 高解像度 OCR は実際にどの部分に効くのか - DI
prebuilt-layoutvs CUprebuilt-documentSearch— 2 つの異なるサービスの出力を直接比較
これにより、「感覚」ではなくデータに基づいてモデルとオプションを選定できるようになります。
業務シナリオデモ(ユーザータブ)
usertab/<lang>/ ディレクトリに HTML ファイルを配置するだけで、結果パネルにカスタムタブとして自動追加される機能があります。
同梱されているのは 3 つの業務シナリオデモ(静的 HTML モック)です。
| タブ | シナリオ |
|---|---|
| 🔤 文字バリデーション | OCR 誤認識、表記ゆれ、環境依存文字の検出 |
| 🏛️ FSA リスク判定 | AML/KYC 観点でのリスクアセスメント |
| ⚖️ 法的条項チェック | 契約書の必須条項漏れ、賠償上限未設定の検出 |
これらはあくまでデモ用のモックであり、実際の AI エージェント呼び出しは行いません。しかし「ドキュメント解析の先に、業務エージェントの出力がこう並ぶ」という世界観を、お客様に対して即座にデモできる点に価値があります。
おまけ: 3D Structure ビューア
RAGOps Studio には 3D Structure ビューアという機能があります。ドキュメントの解析要素(Lines、Tables、Figures...)が CSS 3D トランスフォームで空中に分解し、ドラッグで回転、スライダーで爆発度を調整できます。この機能を使えばドキュメント構造を視覚で理解できます。
実務では 1 ミリも使いません。 完全なジョーク機能です。
ただ、デモの場で見せると確実に「おおっ」と言われることでしょう。
将来的には
最近のドキュメント解析およびフィールド抽出では、画像認識能力の高い LLM や OCR 用に特別にチューニングされた LLM/SLM を用いることもあるかと思います。今後そうした新しい流れについても対応していきたいと思います。
あとは、RAGOps Studio — for Azure AI Search との連携ですかね。Azure AI Search にはドキュメントレイアウトスキルがありますから、スキルパイプラインのグラフキャンバス上から連携すると Cool かもしれません。
GitHub
- シリーズ第一弾: RAGOps Studio — for Azure AI Search
参考








