ドキュメントAI rokadoc のエンタープライズ対応 〜チーム利用とエージェントワークフローへの進化〜

こんにちは。イノベーションセンター Generative AI チームの小川です。 今回は、私たちのチームで開発しているドキュメントAI「rokadoc」が、エンタープライズでの利用に向けてどのように進化しているのかを紹介します。

本記事では、ドキュメントAIである rokadoc のエンタープライズ対応について、チーム利用やエージェントワークフローなどの新機能と、その裏側の仕組みを紹介します。

変換精度を支える技術要素は「生成AI向けのドキュメント変換技術 rokadoc 〜高い精度をどのように実現しているのか〜」で紹介していますので、こちらもぜひご参照ください。

rokadoc とは

rokadoc は「AIの力で埋もれた情報を価値あるものに」というコンセプトの元で開発している、ドキュメントAIです。 rokadoc では PDF や Microsoft Office のドキュメントをアップロードすると、生成AIで扱いやすい構造化されたデータへ変換し、その結果に基づいたチャットでの質問応答ができます。

パブリックベータ版の公開以降、多くの方に利用していただく中で、「チームで使いたい」「社内システムと連携させたい」「もっと複雑な検索をさせたい」といった、組織での本格利用を見据えた要望を多くいただくようになりました。 これらに応えるため、rokadoc は個人で使う変換ツールから、組織で使うドキュメントAIプラットフォームへと進化を続けています。

本記事では、その中から以下の4つを紹介します。

  • 非構造化ドキュメントを構造化する変換処理と、それを支える Prefect による非同期パイプライン
  • スペース機能とユーザー管理によるグループごとの利用
  • RAG から進化した、エージェントを設定可能なワークフロー
  • APIキーによる外部システム連携

非構造化ドキュメントを構造化する変換処理

まず、rokadoc の中核である変換処理について、あらためて全体像を紹介します。

実際の業務で使われるドキュメントの多くは、図表・グラフ・写真・縦書きテキストなどが混在した「非構造化データ」です。 これをそのまま AI エージェントに渡しても、レイアウトの情報や図表の意味を正しく読み取れず、調査の途中で誤った情報を拾ったり、根拠のあいまいな回答を返したりする原因になります。 エージェントが自律的にドキュメントを検索・参照しながら調査する時代になった今こそ、その土台となるデータの質が回答の質を左右します。

rokadoc は、アップロードされたドキュメントを以下のような多段の処理にかけることで、元の情報を可能な限り保持した構造化データへと変換します。

  1. ドキュメントの受付とページ分割(Office ファイルは PDF へ変換してから処理)
  2. レイアウト解析による、テキスト・図・表などの領域と読み順の推定
  3. AI-OCR によるテキストの読み取り(縦書き・横書きの混在にも対応)
  4. 表解析による、セル結合を含む表構造の復元
  5. 画像解析による、グラフや図の内容を捉えたキャプションテキストの生成
  6. 各解析結果のマージと、ページ・要素単位で構造化された JSON データの生成

変換結果は、ページごとの Markdown 相当のテキストと、読み順付きの要素情報を持つ構造化データとなります。 この構造がそのまま後段の検索のチャンク単位になっており、「どのページの、どの段落・図表に基づいた回答なのか」という根拠の提示にもつながっています。

それぞれの解析処理の詳細は前回の記事で紹介していますので、興味のある方はそちらもご覧ください。

Prefect による非同期の変換処理

エンタープライズでの利用では、部署単位で大量のドキュメントが一斉にアップロードされることも珍しくありません。 数百ページのドキュメントが同時に多数投入されても安定して処理を続けるために、rokadoc の変換処理はワークフローオーケストレーションツールである Prefect を用いた非同期パイプラインとして実装されています。

ステージごとのパイプライン分割

前述の変換処理は、ステージによって必要とするリソースが大きく異なります。 ページ分割は CPU と I/O が中心、レイアウト解析や AI-OCR は GPU が中心、画像解析のキャプション生成は画像を理解できる生成AI(Vision LLM。画像入力に対応した大規模言語モデル)の API 呼び出しが中心、といった具合です。

そこで rokadoc では、変換処理をステージごとに独立した Prefect のフローとして分割し、それぞれを別々のワークプールで実行しています。 あるステージの処理が詰まっても他のステージのジョブ投入に影響せず、負荷の高いステージだけを独立してスケールさせられる構成です。

GPU を遊ばせないための最適化

変換パイプラインでは、限られた GPU リソースを最大限活用するために、以下のような最適化を行っています。

  • ページ単位の並列処理: 1つのドキュメントをページ単位のタスクへ展開し、複数ページを並列に解析します
  • バッチ推論: レイアウト解析やテキスト行検出は複数ページをまとめて GPU に投入し、推論のスループットを高めています
  • 同時実行制御: GPU を使う推論区間だけ Prefect の同時実行制限で枠を確保し、CPU 処理や結果保存の間は枠を解放することで、GPU の待ち時間を最小化しています
  • 結果のキャッシュ: 解析結果は変換ジョブ・ページ単位でキャッシュされ、リトライや再実行の際に完了済みの処理をスキップできます

障害時の自己回復

長時間の変換ジョブでは、途中でワーカーが落ちるといった事態も想定しなくてはなりません。 各タスクには自動リトライが設定されているほか、ハートビートが途絶えたフローを検知して自動で再スケジュールする仕組みを備えており、ワーカーの復帰後に処理が自動で再開されます。 前述のキャッシュと組み合わせることで、再実行時も完了済みのページはスキップされ、途中から効率よく処理を続けられます。

また、GPU を使う解析サービスやワーカーは負荷に応じてオートスケールし、利用の少ない時間帯にはスケールインすることで、性能とコストのバランスを取っています。

スペース機能とユーザー管理によるチーム利用

エンタープライズでの利用において、変換や検索の精度と同じくらい重要なのが「誰が、どの範囲のドキュメントを使えるのか」という管理です。 rokadoc では、スペースという単位でドキュメント・チャット・専門知識をまとめて管理し、チームや部署ごとの利用を実現しています。

スペースの種類

スペースには以下の3種類があります。

  • 個人スペース: 自分だけが利用できるスペース。他のユーザーからは見えません
  • プライベートスペース: 部署やチームでの共有向けのスペース。スペースIDとパスワードを知っているメンバーだけが参加できます
  • パブリックスペース: アカウントを持つ全ユーザーへ公開されるスペース

ドキュメントはスペースをまたいで参照されないため、「この部署の資料はこのスペースだけ」という情報の分離を自然に実現できます。

ロールによる権限管理

スペースのメンバーには、以下の3つのロールを割り当てられます。

  • 管理者: スペースの設定・削除、メンバーとロールの管理、スペース内のチャット履歴の確認、外部連携の設定など、スペース全体の管理が可能
  • 編集者: ドキュメントの追加・削除・タグ付けと、チャットでの利用が可能
  • 閲覧者: ドキュメントの閲覧とチャットでの利用のみ可能

たとえば「ドキュメントの管理は情報システム部門が行い、各メンバーは閲覧者として検索・質問だけを行う」といった、組織の運用に合わせた使い分けができます。 また管理者はスペース内のチャット履歴を確認できるため、メンバーがどのような質問をしているのか、ナレッジとしてどう活用されているのかを把握するのにも役立ちます。

さらにエンタープライズ版では、Box などの外部データソースとスペースを連携させ、指定したフォルダーのドキュメントを定期的に自動同期する機能も提供しています。 日々更新される社内ドキュメントを、手動アップロードなしで rokadoc に取り込み続けられます。

Entra ID などの IdP と連携したシングルサインオン

組織で利用する上では、「誰がログインできるのか」という認証の管理も欠かせません。 rokadoc は標準的な認証プロトコルである OIDC(OpenID Connect)に対応しており、Microsoft Entra ID をはじめとする組織の IdP(Identity Provider)と連携したシングルサインオン(SSO)を構成できます。

利用者は普段使っている社内アカウントでそのまま rokadoc にログインでき、新たなパスワードを覚える必要がありません。 また認証を既存の ID 基盤へ集約することで、多要素認証といった組織の認証ポリシーをそのまま適用できます。 IdP 側でアカウントを停止すれば rokadoc にもログインできなくなるため、「退職者のアカウントが使える状態で残り続ける」といったリスクも避けられます。

デプロイ先の環境に合わせて、Entra ID との直接連携のほか、すでに運用している外部 IdP との連携も選択できます。

RAG から進化した、エージェントを設定可能なワークフロー

rokadoc のチャットは、当初は「質問のたびにドキュメントを検索して回答する」というシンプルな RAG(Retrieval-Augmented Generation、検索拡張生成)でした。 しかし実際の業務の質問は多様で、雑談のように検索が不要なもの、1回の検索では足りず多段の調査が必要なもの、決まった手順で処理したい定型業務などが混在します。

そこで現在の rokadoc では、チャットの挙動そのものをユーザーがワークフローとして設計できるようになっています。

プリセットによる検索方法の切り替え

チャットの挙動はプリセットとして管理されており、標準で以下の2つを提供しています。

  • 通常検索: 質問のたびに必ずドキュメントを検索して回答する、標準的な RAG の挙動
  • スマート検索: 複数回の検索と AI の推論を組み合わせ、複雑な質問にも多段の調査で回答する挙動

標準プリセットはコピーして自分用にカスタマイズでき、作成したプリセットをプライベートスペースやパブリックスペースに保存すればメンバー全員が同じ挙動のチャットを利用できます。

ワークフローエディタによるプリセットの設計

プリセットの実体は、用意されたノードと呼ばれる機能を組み合わせて構築するワークフローです。 ワークフロー設定の画面では、以下のようなノードを自由に接続してチャットの挙動を設計できます。

  • アシスタント: 役割を与えた汎用エージェント。サブエージェントを追加して役割を分担させることも可能
  • 検索エージェント: 必ずドキュメントを検索するエージェント。自律的に検索を繰り返す深掘り調査も可能
  • AI条件分岐: 会話の内容を AI が判断し、フローを YES / NO で分岐
  • ユーザー入力待ち / 自動応答: 対話の途中でユーザーの確認を挟む、あるいは定型応答を返す
  • Slack通知: ワークフローの結果を Slack へ通知

さらに各エージェントには、使用モデルや指示(Instruction)に加えて、ツールを付与できます。 意味に基づいて検索する「ベクトル検索」、型番やエラーコードなどキーワードの完全一致に強い「ドキュメント全文検索」、検索対象の資料を把握する「ドキュメント一覧取得」などのツールを付与すると、エージェントが質問の内容に応じてそれらを使い分けます。 検索件数(Top K。上位何件を取得するか)やタグによるドキュメントの絞り込み、参照する専門知識といった検索の細かい調整も可能です。

たとえば次のような使い方ができます。

  • AI条件分岐で「検索が必要な質問か」を判定し、必要なときだけ検索エージェントを動かす
  • タグフィルターで対象を「設計書」だけに絞った検索エージェントと、「議事録」だけに絞った検索エージェントを直列につなぎ、観点別に調査させる
  • 調査結果の要約を毎回 Slack のチャンネルへ通知する定型ワークフローを組む

固定的な RAG では難しかった「業務に合わせた検索の組み立て」を、コードを書かずに実現できるのがポイントです。

APIキーによる外部システム連携

最後に、rokadoc を外部のシステムへ組み込むための鍵となる、APIキー管理機能を紹介します。

rokadoc の変換・検索・エージェント実行といった機能は、すべて API として提供されています。 アカウントメニューの「APIキー管理」から、用途ごとに名前を付けて APIキーを発行でき、不要になったキーや漏えいが疑われるキーは即座に無効化できます。

発行したAPIキーを使えば、たとえば以下のような連携が可能です。

  • 社内の既存 RAG システムのドキュメント取り込み処理として、rokadoc の変換 API を利用する
  • 社内ポータルやチャットボットのバックエンドとして、rokadoc の検索・RAG API を呼び出す
  • ワークフローとして設計したエージェントを、API 経由で他システムから実行する

APIキーにはプランに応じたレート制限が設定されており、エンタープライズ版では契約内容に応じてレート制限の上限を調整できます。

おわりに

本記事では、ドキュメントAI rokadoc のエンタープライズ対応として、変換処理の概要と Prefect による非同期パイプライン、スペース機能によるチーム利用、エージェントを設定できるワークフロー、APIキーによる外部連携を紹介しました。

rokadoc は「ドキュメント変換技術」から始まりましたが、現在は組織のドキュメント活用を支えるプラットフォームへと進化を続けています。 パブリックベータ版は公開されていますので、興味のある方はお試しください。

またチームでの本格的な利用や、オンプレミス環境・外部データソース連携などエンタープライズ版に興味を持っていただけた方は、rokadocお問い合わせフォームからお問い合わせください。

それでは皆さん、お読みいただきありがとうございました。