Document Processing and Understanding (DPU) はGoogle Cloudがオープンソースで公開している、ドキュメント処理パイプラインとVertex AIを利用した文書検索WebUIの組み合わさったソリューションです。

Cloud Composerによる文書処理とデータストアへの投入のワークフローオーケストレーターと、それを検索しVertex AIによって要約を得るためのWebUIがTerraformでデプロイできるようになっています。

まだ先月作られたばかりのリポジトリですがバージョン1.1をデプロイして検証してみたので紹介します!

Contribute to GoogleCloudPlatform/document-processing-and-understanding development by creating an account on GitHub.

デプロイ手順

README.mdに沿って進めることで簡単にTerraformでデプロイを行うことができました。

Cloud Shellでデプロイできるのでそこでリポジトリをクローンしversion1.1に切り替えます。

cd <YOUR_REPOSITORY>/sample-deployments/composer-orchestrated-process
export PROJECT_ID="<your Google Cloud project id>"

リポジトリに入り対象のプロジェクトIDを変数に入れます。

scripts/pre_tf_setup.sh
terraform init

セットアップとTerraformの初期化を行います。

project_id                  = "<your Google Cloud project id>" # Your Google Cloud project ID.
region                      = "asia-northeast1" # The desired region for deploying resources (e.g., "us-central1", "europe-west1").
vertex_ai_data_store_region = "global" # The region for your Agent Builder Data Store, the possible values are ("global", "us", or "eu"). Choose a region the is align with you overal region of choice to avoid cross regional traffic.
iap_admin_account           = "******@iret.co.jp" # Account used for manage Oath brand and IAP
iap_access_domains          = ["domain:iret.co.jp"] # List of domains granted for IAP access to the web-ui (e.g., ["domain:google.com","domain:example.com"])
deploy_ui                   = true # Toggler for the Web-UI component, boolean value true or false. If the scripts/pre_tf_setup.sh failed to set the required org-policies set this variable to false.
webui_service_name          = "default" # set this to "default" for the first run and change it if you intend to have a different service name for your App.

設定ファイル(terraform.tfvars)を作成します。お使いの環境に合わせて内容は編集してください。

これでterraform applyを実行ししばらくすればデプロイ完了です。

利用手順

Cloud Storageバケットに文書ファイルをアップロード

terraform output gcs_input_bucket_name

このコマンドで文書をアップロードするためのCloud Storageバケット名を取得できます。
対象バケットに検索したい文書データをアップロードしましょう。

ドキュメントは以下の形式に対応しているようです。

  • Outlook (msg)
  • Excel(xlsx、xlsm)
  • PDF
  • html
  • TXT
  • 上記のサポートされているファイル形式のいずれかを含むzipファイル

ZipやOutlook、Excel形式はAgent Builderでの直接の検索はサポートされていない形式なのでこのソリューションの強みになりますね。

ワークフローを起動

terraform output composer_uri

このコマンドでCloud Composerに構成されたAirflowのURLを取得できます。

URLにアクセスしてrun_docs_processingのDAG(Directed Acyclic Graph)をトリガーします。

デフォルトの設定のままトリガーします。

ワークフローの処理過程を確認することができます。完了するのを待ちましょう。

Agent Builderで取り込まれたドキュメントを検索

terraform output agent_app_uri

このコマンドでワークフローによって取り込まれた文書データをデータストアに持つAgent Builder検索アプリを確認できます。

これだけでワークフローによる自動文書取込と、検索、要約結果を得ることができますが更にオプションでWebUIがついています。

WebUIによる利用

App EngineにデプロイされたStreamlitアプリケーションを利用することができます。

terraform output web_ui_uri

このコマンドでWebUIへのURLが取得できます。
WebUIにはIAP(Identity-Aware Proxy)で認証が設定されており、Googleログインによって認証されるので組織に閉じた利用が可能になります。

アクセスした結果がこちらStreamlitで構成されたシンプルな画面です。

取り込んでおいたサンプルのExcelファイルについて質問してみます。

サンプルの表形式データの中身が参照できていることがわかります。

スクロールすると実際のファイルの内容も確認することができます。

これとは別にファイルをブラウズする機能もついています。

まとめ

Document Processing and Understanding (DPU) は文書検索AIソリューションを構築するための実装例として面白いサンプルだと感じました!

実際に文書検索と生成AIを組み合わせたソリューションのニーズはとても高いと私も現場で肌で感じています。
しかし、社内の多様なデータソースとどのようにシームレスにつなげて、対応していない文書形式をどのように変換加工し、そしてどのようにセキュアにユーザーフレンドリーなUIで使えるかのところまでセットで考えなければ導入は思うように進みません。

Cloud Composerを使った取込やパース処理のオーケストレーション、App EngineとStreamlitをつかったセキュアでローコストなWebUIは一つのアプローチとして有用だと思いました。

まだリリースしたばかりで荒削りな面があるので今後のアップデートに期待です!