Amazon Web Services ブログ

企業データ×生成 AI ! アクロクエストの DocCollector と Amazon Bedrock で実現する Box 内データ活用

生成 AI は企業の業務効率化やイノベーション創出の鍵として注目を集めています。生成 AI は単体で利用することも可能ですが、企業が保有する多様なデータと組み合わせることで生成 AI の真価が発揮されます。このため、企業内の重要文書やデータを適切に管理し、AI 環境と連携させることが重要となっています。

日本において、クラウドストレージサービスとして Box が広く利用されています。株式会社アイ・ティ・アールの調査によると、Box は国内コンテンツ・コラボレーション市場のベンダー別売上金額シェアで2年連続1位を獲得しています。さらに2023年度の業種別市場シェア予測では、製造、金融、通信、サービス、建設、公共・公益という主要6業種でシェア1位を達成しています。

企業データと生成 AI を組み合わせるにはいくつかアプローチがありますが、代表的な手法として RAG (Retrieval Augmented Generation; 検索拡張生成) があります。実際、筆者がお客様とお話しする中でも、Box 内のドキュメントを RAG で活用したいという相談をいただくことがあります。

AWS のインテリジェントエンタープライズサーチサービスの Amazon Kendra や、生成 AI アシスタントアプリケーションの Amazon Q Business はさまざまなデータソースに接続できるコネクターを用意しており、それぞれ Box コネクターを準備しています。一方、Box 内のドキュメントを RAG のために利用可能な形で AWS に取り込むことに特化したソリューションとして、アクロクエストテクノロジー株式会社が開発した DocCollector が注目されています。DocCollector は、Box に保存されているドキュメントを、そのアクセス権限を保持したまま AWS 環境に同期することができます。

本記事では、Box 内のデータを DocCollector を利用して AWS に取り込み、生成 AI アプリケーション開発のためのサービスである Amazon Bedrock を活用した RAG システムを構築する具体的な方法について解説します。なお、本記事の執筆に当たってアクロクエストテクノロジーの鈴木貴典様と古賀匠様のご協力もいただいています。

DocCollector とは

「DocCollector」とは、外部クラウドストレージのドキュメントを AWS に連携させ、生成 AI と組み合わせた RAG 構成をすばやく構築させるためのドキュメント同期ソリューションです。

doccollector with kendra

Amazon Kendra と同期させた場合の構成

doccollector with opensearch

Amazon Bedrock Knowledge Basesと同期させた場合の構成

現在 Box に対応しており、RAG の検索エンジンとしての Amazon Kendra や、RAG システム構築のマネージドサービスである Amazon Bedrock Knowledge Bases との連携が可能です。Box とのドキュメント同期を、効率よく実施できるようにするため、以下のような機能を備えています。

  • 同期対象のファイル一覧出力
  • ファイル全体同期
  • ファイル差分同期
  • ユーザー指定での同期
  • 同期対象のフィルタリング
  • 外部共有ファイルの同期有無の指定
  • ユーザー権限同期
  • グループ権限同期

これらの機能により、Box に大量のドキュメントが登録されている場合でも、必要なファイルのみに絞って効率的に同期することが可能です。また、アクセス権限を同期させることも可能なため、RAG で検索処理が行われた際に、Box 上のアクセス権限を元に、表示させるドキュメントを制限することも可能です。

加えて、お客様の AWS アカウント内に本ソリューションを構築して動作するため、ドキュメントが外部の環境を経由したり、保持されたりすることがないため、セキュアに運用することができます。

DocCollector はアクロクエストテクノロジーが支援した大阪市高速電気軌道株式会社 (Osaka Metro) 様の事例でも活用されています。

DocCollector と Amazon Bedrock を利用した RAG システムの構築

DocCollector を利用して Box のドキュメントを Amazon Kendra に同期させ、さらに、Amazon Bedrock を利用した RAG システムの構築例を説明します。

今回は、単にドキュメントを同期するだけではなく、Box のアクセス権限 (Access Control List; ACL) も同期し、RAG で利用されるドキュメントを、ユーザー毎にアクセス制御できるようにします。RAG でのドキュメントのアクセス制御は、企業内ではニーズが多い内容であり、DocCollector を利用することで、そのようなことも実現可能となります。

前提条件

Boxからドキュメント同期を行うには、以下の内容が必要となります。

  • Box Enterprise 以上のプラン
  • Box の開発者コンソールにおける Box アプリの作成、および、その JWT 認証ファイル

RAG システム構築の流れ

以下のような流れで、DocCollector でドキュメントを同期し、Amazon Kendra と Amazon Bedrock を組み合わせた RAG システムの構築を行います。

  1. Box のファイル準備
  2. Amazon Kendra のインデックス作成/カスタムデータソースの登録
  3. DocCollector の構築
  4. DocCollector での Box ドキュメント同期
  5. Amazon Kendra でのドキュメント同期結果の確認
  6. Amazon Bedrock を利用した RAG 処理の実現

1. Box のファイル準備

最初に、サンプルとして、以下のような構成で Box にドキュメントが登録されているとします。アクセス権限の確認をするために、フォルダによってアクセスできるユーザーを設定しています。

Box 内のファイル構成

Box 内のファイル構成

Box 内のファイル構成 (DX 推進部門)

Box 内のファイル構成 (DX 推進部門)

Box 内のファイル構成 (開発部門)

Box 内のファイル構成 (開発部門)

2. Amazon Kendra のインデックス作成/カスタムデータソースの登録

Amazon Kendra のインデックスを作成し、それに対して、カスタムデータソースを登録します。DocCollector の構築の際に、このカスタムデータソースに DocCollector を紐づけることで、Box 内のドキュメントを Amazon Kendra に同期できるようになります。

Amazon Kendra インデックス作成

Amazon Kendra インデックス作成

Amazon Kendra カスタムデータソース登録

Amazon Kendra カスタムデータソース登録

3. DocCollector の構築

まず、DocCollector を自社の AWS アカウントにセットアップします。DocCollector は、アクロクエストテクノロジーから提供されます。DocCollector の AWS Batch の構成は、AWS Cloud Development Kit (CDK) で自動構築されます。

DocCollector の構築

DocCollector の構築

AWS Batch のジョブとして DocCollector を登録した様子は以下の通りです。

DocCollector の AWS Batch ジョブ登録

DocCollector の AWS Batch ジョブ登録

※ Box への接続情報は、AWS Batch のパラメータとして指定します。

4. DocCollector での Box ドキュメント同期

DocCollector を用いて Box 上のドキュメントを AWS に同期させます。

同期処理は、先ほど構築した AWS Batch のジョブを実行するだけです。ジョブが正常に終了したら、ドキュメントの同期が完了しています。同期処理の詳細については、Amazon CloudWatch Logs から確認できます。

DocCollector の AWS Batch ジョブ実行の結果

DocCollector の AWS Batch ジョブ実行の結果

5. Amazon Kendraでのドキュメント同期結果の確認

Amazon Kendra のインデックスやデータソースの詳細を見ると、正常に同期が完了し、9個のファイルがすべて同期できたことが確認できます。

Amazon Kendra インデックス (同期後)

Amazon Kendra インデックス (同期後)

Amazon Kendra データソース (同期後)

Amazon Kendra データソース (同期後)

また、Amazon Kendra の検索コンソールから、検索を行ってみます。ここでは、それぞれのドキュメントが適切に同期されているかを確認するため、管理者権限のもとで検索します。ユーザーのアクセス権限による影響の差分は次のセクションで確認します。

Amazon Kendra 検索コンソール (開発部門のドキュメント)


Amazon Kendra 検索コンソール (開発部門のドキュメント)

Amazon Kendra 検索コンソール (DX 推進部門のドキュメント)

Amazon Kendra 検索コンソール (DX 推進部門のドキュメント)

アクセス権限が指定されている、「開発部門」フォルダ内のドキュメントも、「DX推進部門」フォルダ内のドキュメントも、どちらの内容も検索できていることが確認できました。

定期的に、DocCollector のバッチジョブを実行することで、ドキュメントの内容は最新化されます。Amazon EventBridge Scheduler などを利用して、定期実行されるようにしておくと良いでしょう。

6. Amazon Bedrock を利用した RAG 処理の実現

Amazon Bedrock と Amazon Kendra を組み合わせた RAG システムの場合、以下のような処理の流れになります。

RAG の処理の流れ

RAG の処理の流れ

AWS が OSS として公開している「Generative AI Use Cases JP (GenU)」でも、上記の構成で RAG システムを構築できますが、今回、Box のアクセス権限に基づいたドキュメント検索を確認するため、アクロクエストテクノロジー社が提供している、エンタープライズ向け生成 AI アシスタントである「AcroChatAI」を利用して、動作確認を行います。ここでは、以下のような制御が正常に行われているかを確認します。

  1. userA に対しては、「DX 推進部門」のドキュメントだけが検索に利用され、「開発部門」のドキュメントは検索に利用されない。
  2. userB に対しては、「開発部門」のドキュメントだけが検索に利用され、「DX 推進部門」のドキュメントは検索に利用されない。
  3. userC に対しては、「DX 推進部門」のドキュメントも「開発部門」のドキュメントも検索に利用される。

まずは (1) の「userA」での操作を確認します。「DX 推進部門」のドキュメントを元にした情報は問合せできていますが、「開発部門」のドキュメントを元にした情報は問合せ結果が出力されません。

DX 推進部門所属の userA の検索結果 (1)

DX 推進部門所属の userA の検索結果 (1)

DX 推進部門所属の userA の検索結果 (2)

DX 推進部門所属の userA の検索結果 (2)

次に (2) の「userB」での操作を確認します。「開発部門」のドキュメントを元にした情報は問合せできていますが、「DX 推進部門」のドキュメントを元にした情報は問合せ結果が出力されません。

開発部門所属の userB の検索結果

開発部門所属の userB の検索結果 (1)

開発部門所属の userB の検索結果 (2)

開発部門所属の userB の検索結果 (2)

最後に (3) の「userC」での操作を確認します。今度は、どちらのドキュメントの内容も問合せできています。

両方のフォルダにアクセスできる userC の検索結果 (1)

両方のフォルダにアクセスできる userC の検索結果 (1)

両方のフォルダにアクセスできる userC の検索結果 (2)

両方のフォルダにアクセスできる userC の検索結果 (2)

このように、DocCollector を利用すると、Boxのドキュメントを同期させるだけではなく、Amazon Kendra のアクセス制御機能とも連携し、RAG で利用されるドキュメントを、ユーザー毎に制御することが可能になることが確認できました。

今回は、シンプルな Box の構成でしたが、一部のドキュメントに限定して同期したり、ファイル差分で同期したりと、DocCollector には、効率よく Box のドキュメントを同期できる機能が備わっています。

まとめ

本記事では、アクロクエストテクノロジーが提供する DocCollector を利用して、Box のドキュメントとアクセス権限を Amazon Kendra に同期させ、そこから Amazon Bedrock を利用した RAG システムを実現しました。

これにより、企業は、クラウドストレージサービスとして Box を利用しつつ、その内容を、AWS 上で RAG システムとして活用することができるようになります。

また、今回は Amazon Kendra との連携でしたが、DocCollector は、Amazon Bedrock Knowledge Bases との連携にも対応しています。また、生成 AI アシスタントの Amazon Q Business にも今後対応する予定です。DocCollector を活用することで、Box と連携可能な RAG システムを簡単に構築できるようになります。

参考情報

 


著者について

KazukiMotohashi本橋 和貴 (Kazuki Motohashi / @kmotohas) は、AWS Japan の機械学習スペシャリストソリューションアーキテクトです。AWS の AI/ML サービスのお客様に対する技術的な支援を行いながら市場開拓を推進しています。好きなサービスは Amazon Bedrock と Amazon SageMaker です。週末は子供と屋内遊園地で遊ぶのが習慣になっています。博士 (理学)。

TakanoriSuzuki鈴木貴典 (Takanori Suzuki / @takanorig) は、アクロクエストテクノロジー株式会社のシニアテクニカルアーキテクトです。お客様へのクラウドを活用したシステムのご提案や、開発・構築などのコンサルティングを実施しています。サーバーレス・アーキテクチャ推しなので、Amazon Bedrock はもちろん、AWS Lambda 他、サーバーレス系サービスを多用しています。こう見えて (?)、甘党なんですが、最近は健康を意識して控えめにしています。

TakumiKoga古賀匠 (Takumi Koga) は、アクロクエストテクノロジー株式会社のクラウド開発エンジニアです。主に、AI/ML サービスを活用したクラウドシステムの開発・構築を得意としています。特に最近は LLMOps に興味があり、生成 AI をどう活用/運用するかを考えています。趣味はサッカープレミアリーグ観戦で、応援しているチームが勝つと、週明けはテンションが高くなります。