セキュリティチームのぐっちーです。Box Advent Calendar 2023の最終日ということで記事を書かせていただきます。Amazon Q For Business UseでRAG(Retrieval-Augmented Generation)アプリを構築し、「Boxデータと対話するような体験」を目指したというお話です。
- 本ブログの内容にはプレビュー中の内容が含まれます。
- 本ブログの内容は、2023年12月25日時点までの情報を元に作成しております。
Box検索では物足りない!Boxデータと対話したかった・・・
Boxをはじめとするクラウドストレージには検索窓が用意されています。しかし、それでは満足できない話をいろんなところで聞きます。ユーザは別にファイルを検索をしたかったわけではなく、「その先にある情報」や「その情報からのインサイト」を得たかったのあり、検索はその過程にすぎません。「ファイル」を出して欲しいときもあるかもしれませんが、ユーザーが真に求めているのはBoxのデータとの対話であり、欲しい「情報」をすぐに出してくれるような体験です。
一方で、「Boxデータとの対話」を実現するためにはコスト的にも技術的にもハードルがあり、仕方なく検索窓を使わざるを得ないというのが、今までの実情だったかと思います。(究極的には脳に直接届けたいですし、そのような研究も進んでいますが、2023年時点ではそれは夢物語です。)
Amazon Q (For Business Use) × Boxで情報探索体験を変える!?
生成AIの発展によって、それが少しずつ変わろうとしています。 RAG(Retrieval-Augmented Generation)を使えば、「Boxデータとの対話」しているような体験ができる可能性が出てきたのが最近かと思います。さまざまな生成AIの登場により、アーキテクチャーは様々考えられますが、 本日のブログでは、AWS re:Invent 2023 で発表された Amazon Q (For Business Use)1 2 を使ったアーキテクチャを紹介したいと思います。
まず、Amazon Q とは、AWSが提供する生成AIを活用したアシスタントサービス「群」です。Amazon Q の下に、いくつかのサービスがぶら下がっていますが、その中の一つが Amazon Q (For Business Use) です。これは、自社データを使ったサポートを行なってくれる生成AIアシスタントです。Amazon Q (For Business Use) は、自社内のシステムやSaaSと連携し、業務を支援してくれるチャットアシスタントを簡単に構築することができます。
構築方法
Box 開発者コンソールでキーの発行
Box 開発者コンソールでJWTリクエストに署名して認証するためのRSAキーペアを生成します。詳しい手順は Amazon Kendra と同様だったので、以下のブログを参考にしていただけたら幸いです。
https://aws.amazon.com/jp/blogs/news/getting-started-with-the-amazon-kendra-box-connector/
この鍵が流出すると、Boxのデータを全部抜かれるので、取り扱いには厳重な注意をしてください。
Amazon Q For Business Use の設定
次に、Amazon Q For Business Use の設定をしていきます。管理者権限でAWSのManagement Consoleにログインし、Amazon Qに遷移し[Get Started]をクリックします。サービスページで新しいアプリケーションを作成します。
名前はよしなにわかりやすい名前をつけます。roleは新規で作成した方がミスが少なくていいと思います。
Select retrieverではRetriever(検索サービス)の設定を行います。AWSの検索サービスであるKendraの既存のリソースを利用することもできますし、Amazon Q からNative Retrieverを設定することもできます。
Connect data sources画面で回答元となるデータをどこから取得するか選択します。
Boxの設定では先ほど取得した、RSAキーペアを設定します。今回は検証なので、アクセスコントロール等はオフの状態で利用しました。
設定が終わったら1番下の、[Finish]をクリックすると設定完了です。
動作確認・残課題
データを組み込んでないとき〜
データを組み込んでないときは、簡単な質問でも何も返してくれません。何を質問しても「ごめんなさい(意訳)」としか言わないあたりは徹底されているように思いました。
検索+生成で「Boxデータと対話する」体験
続いて、データを組み込んだ場合の体験です。今回はNISTの公開ドキュメントが含まれるBoxと接続してみて検証しました。
Can you tell me about ZeroTrust?
Zero trust (ZT) provides a collection of concepts and ideas designed to minimize uncertainty in enforcing accurate, least privilege per-request access decisions in information systems and services in the face of a network viewed as compromised. Zero trust architecture (ZTA) is an enterprise’s cybersecurity plan that utilizes zero trust concepts and encompasses component relationships, workflow planning, and access policies. Therefore, a zero trust enterprise is the network infrastructure (physical and virtual) and operational policies that are in place for an enterprise as a product of a zero trust architecture plan.
(翻訳:ゼロ トラスト (ZT) は、ネットワークが侵害されていると見なされる場合に、情報システムおよびサービスにおいてリクエストごとに正確かつ最小権限のアクセス決定を強制する際に不確実性を最小限に抑えるように設計された概念とアイデアのコレクションを提供します。 ゼロトラスト アーキテクチャ (ZTA) は、ゼロトラストの概念を利用し、コンポーネントの関係、ワークフロー計画、アクセス ポリシーを包含する企業のサイバーセキュリティ計画です。 したがって、ゼロ トラスト エンタープライズとは、ゼロ トラスト アーキテクチャ プランの製品として企業に導入されたネットワーク インフラストラクチャ (物理および仮想) および運用ポリシーです。)
英語のみ対応
残念ながら、現時点ではこのサービスは英語でのみ提供されています。ただ、裏側にあるであろう検索サービスであるKendraは日本語に対応していることから、日本語が対応するのもそう遅くはないのではと筆者は考えています。
アクセスコントロールもできそうだけど間に合わなかった
RAGをやる上で1番の心配事はアクセスコントロールです。本来アクセスしてはならない情報にアクセスしてしまったらインシデント以外の何者でもありません。アドベントカレンダーの公開日的に間に合わなかったのですが、Amazon QではBoxの権限を使ったアクセスコントロールができそうな設定があることを確認しています。IdPを用意したり、複数ユーザーを用意したりと検証が大変そうですが、来年早いうちに検証をしてみたいと思います。
回答精度はAmazon任せ
このAWSはIaaS・PaaSに分類されるサービスというイメージがあるかと思いますが、Amazon QとBoxの連携は、ほぼSaaS間連携のような手軽さを持っていました。それはいい面もありつつも、回答の精度向上は、ほとんどAmazon任せになってしまうかと思います。データの整理やクローリングの設定等で少しは調整可能ですが、生成AIライトユーザーをターゲットにしているようにも思えました。
APIのコール数には注意が必要
Box APIのコール数には注意が必要です。Boxコンテンツ数が多いほど、1回の実行あたりのAPIコール数が増加する傾向があるので、同期のタイミング等には注意しながら利用する必要があります。
別のアプローチ
今回はAmazon Qを使ったアプリをご紹介しましたが、BoxをデータソースとしたRAGアプリの構築方法はこれだけではありません。MS版やその他についても検証しているので、まとまり次第他ブログでご紹介したいと思います。
おわりに
少し前まではマイクロソフト・OpenAI一強だった生成AI領域ですが、最近はAWSやGoogleの追従が凄まじいですし、ユースケースによって適切なものを選定するという形になってきているかと思います。これからもお客様の課題や要望にお応えする最適な手段を探す旅を続けていきたいと思いますので、質問や要望等あればお気軽にお問い合わせいただけたら幸いです。
関連ブログ・関連サイト
- Box AIのブログ執筆中(書き上がっているのでそのうち出します)