AI

Azure OpenAI Service “on your data” でChatGPTに自社データを組み込む

セキュリティチームの ぐっちー です。Azure OpenAI Service において新しくパブリックプレビューが開始された「on your data 機能」を使ってChatGPTに自社データを組み込む方法を紹介したいと思います。

3行サマリー

  • 従来、ChatGPTに自社データを組み込むためには、APIを使った開発が必要であり、開発を専門としない人間が片手間で実施するには難易度の高いものでした。
  • 新しく登場したAzure OpenAI Service「on your data 機能」を使うと、GUI上での簡単な操作で自社データをChatGPTに組み込むことができるようになりました。
  • 精度を高めるには、データセットの整備やPrompt engineeringをキッチリ実施していく必要があり、依然としてそれらは難易度が高いですが、ChatGPTのビジネス活用に大きな前進をもたらしたアップデートだと筆者は考えています。
ご注意
  • 今回の手順にはパブリックプレビュー中の機能が含まれます。
  • 現時点ではAzure Cognitive Searchのセマンティックサーチは英語のみの対応です。(セマンティック検索はAzure Cognitive Searchのオプションで、検索エンジンがユーザーの意図や目的を汲み取って検索結果を生成しようとする手法です。)[1]
  • 以下の状態を前提としています。
    • Azure OpenAI Serviceはセットアップ済みであること。
    • Azure OpenAI Service、Azure Cognitive Search、Azure Blob Storageを操作する権限が割当たっている事。

ChatGPTがそこまで企業で使われない訳

ChatGPTは、OpenAIによって開発された生成AI/大規模言語モデル(LLM)であり、今、世界中で注目を集めているのは言うまでもありません。ビジネスの現場でも一部では活用は始まってはいます。しかし、広く様々な現場に目を向けると、ChatGPTのビジネスへの活用はまだまだ限定的であり、お試し期間が続いているケースが多い様に思います。

それには様々な要因が考えられますが、ここでは「正確性・具体性」という要因を取り上げたいと思います。ChatGPTは、抽象的なものを生成することには非常に適しており、アイデア出しや壁打ちなどで活用する人はよく見かけます。一方、具体的事象や決定的な事象について尋ねると「不正確で適当なことを、それっぽく、あたかもそれ正しいように」しか回答してくれません。これでは、企業がビジネス上の課題を解決するために利用しても、必ずしも良い結果をもたらさないと考えています。

典型的な事例としては、ニューヨークの連邦裁判所で審理中の民事訴訟で、弁護士がChatGPTを使って作成した準備書面に、実在しない6件の判例が含まれていた事例が有名です。[2] このように、ChatGPTの回答は不正確なことがあり、今のまま業務で広く活用すると、逆に業務の足枷になる懸念があります。

自社データを組み込んで正確性と実用性向上を目指したかった

次に考えつく事としては、ChatGPTに自社データを組み込んで正確性と実用性向上を目指すという取り組みです。自社のデータを基準にしているので、自社のビジネスに活用しやすく、さらに正確性も通常よりは高いという結果が期待されます。

そのようにChatGPTに自社データを組み込む流れは前々から注目はされていたものの、実装にはAPIや複数のサービスを組み合わせたアプリ開発が必要となります。Github等に手順が公開されており、経験を積んだアプリ開発エンジニアならできなくもないものでしたが、情シスが忙しい通常業務の中、片手間で構築できるような代物ではありませんでした。

そんな中、登場したのがAzure OpenAI Service の「on your data機能」です。これは、自社データの組込みの難易度を格段に楽にしたものです。Azure等の他のサービスとシームレスに連携し、Azure OpenAI Serviceを強化してくれます。

想定ユースケース

今回、想定するケースは社内規定を参照しながら問い合わせに回答するChatGPTを作成します。会社が大きくなればなるほど、守るべき規定(ルール)も増えて行きますが、ユーザーがそれらの情報に容易にアクセスできるようになることを目指します。

注意

とは言っても当社の本物の規定をAIに噛ませて利用したら怒られそう検証のスピード感が落ちそうだったので、公共機関等が無料公開しているセキュリティ規定サンプルを「仮想 社内規定」として活用しました。
同じ様なことを試したいたい方は、「セキュリティ規定サンプル」とGoogleで検索してみると良いと思います。ただし、公開されている文章であっても、その文章の利用許諾等は確認の上、利用する様にしてください。例えば、JNSAさんが公表しているサンプルでは「出典・参考を明記すれば引用・加工が可能」と記載されていたりしますので、今回はそちらを加工した上で利用させていただきました。[3] また、Azure OpenAIではインプットしたデータは学習に利用されません。[4]

また、今回はAzure Blob Storageに規定類を格納しておき、質問をするとChatGPTで格納した規定類の中から関連する項目をAzure Cognitive Searchを使って検索し、検索結果を踏まえてユーザーに回答するという構成としました。ちなみに、Azure Cognitive Search は、Microsoftが提供するクラウド検索サービスであり、API等を使ってアプリケーションに検索機能を組み込むことができるものです。[5]

組込みデータの準備(Azure Blob Storage)

まずは、Azure Cognitive Searchのリソースの作成をします。

次に、組込みデータを準備し、Azureに格納します。Azureストレージアカウントを作成し、そこからContainerを立ち上げて規定類を格納します。作成したContainerの名前は後ほど使うので控えておきましょう。

Azure Cognitive Search で検索用のインデックス作成

続いて、格納したデータをAzure Cognitive Searchと接続し、検索可能な状態とします。ストレージアカウントの[Azure search]から先ほど作成したCognitive Searchのリソースを選択して、接続してください。尚、[Add cognitive skills] 等は今回設定をしておりません。

OpenAIモデルのデプロイとCognitive Searchとの接続

最後に、OpenAIモデルをデプロイし、Cognitive Searchとの接続します。Azure AI StudioでAIモデルのデプロイを行います。現時点で”on your data”に対応しているモデルは、ChatGPT (gpt-35-turbo)とGPT4となっておりますので、そのどちらかを選択してください。デプロイが終わったら[Chat]のタブの[Add your data]からデータを接続します。

先ほど作成したCognitive Searchのリソースを指定して接続します。Data Field mappingなどを適切に実施すると精度が上がりますが、検証目的なら設定は適当でも動作します。

動作確認

ここからは動作確認をします。まずは以下の様な質問をします。

あなたは社内のセキュリティ担当です。一般ユーザーから以下の質問をいただきましたので、回答をよろしくお願いします。

## 質問
社外にファイルを送信したいのですが、どのように実施すればいいですか?

## 条件
– 社内規定を参照して回答してください。
– 出典を明記してください。

すると以下のような回答が得られました。内容自体は社内規定(サンプル)を参照されており、正確な回答であったかと思います。一方、今回はデータセット(規定)をPDFのまま、ストレージにぶち込んで、特に精度を高めるための加工等は行わなかったので、出典の出方は綺麗な出方となってません。ここから、データをただ繋げただけでは、本番での利用は厳しいのではということがわかります。

社外にファイルを送信する場合は、社内規定に従って実施する必要があります。社内規定によると、社外にファイルを送信する場合は、社内のファイル転送サービスを使用する必要があります。社内のファイル転送サービスには、社外のユーザーにファイルを送信するための機能があります。社外のユーザーにファイルを送信する場合は、社内のファイル転送サービスを使用してください。 1

続いて以下の様な質問をします。

あなたは社内のセキュリティ担当です。一般ユーザーから以下の質問をいただきましたので、回答をよろしくお願いします。

## 質問
外部委託する際にはどのような点に気をつけなければいけないですか?

## 条件
– 社内規定を参照して回答してください。
– 出典を明記してください。
– 出典が見つからない場合はわからないと回答してください。

すると以下のような回答が得られました。こちらも、内容自体は規定(サンプル)を参照されており、非常に正確なものとなっています。

外部委託する際には、以下の点に気をつける必要があります。

  1. 委託先の信頼性を確認すること。 1
  2. 委託先に対して、秘密保持契約を締結すること。 2
  3. 委託先に対して、情報漏洩防止のための適切なセキュリティ対策を実施すること。 3
  4. 委託先に対して、契約書に明記された範囲を超えた情報の取り扱いを禁止すること。 4

    社内規定によると、外部委託する際には、上記の点に気をつける必要があります。 5

ここに関して、4つのポイントで綺麗にまとめられているのはいい点だったものの、実際の規定には4つ以外にも気をつけるべきポイントが記載されており、ユーザーが4つだけを守ればいいと誤認してしまう恐れがあるかと思いました。この辺に関してはPrompt engineeringの領域にはなってきますが、Promptを工夫することで、解消できないかが今後の課題です。

感想や今後の課題

「自社データとの接続」が格段に楽になった

冒頭から再三行ってはいますが、「自社データとの接続」が格段に楽になったのは言うまでもありません。僕は開発等を専門にしているわけではなく、ほとんどの業務時間をセキュリティ関連の取り組み(セキュリティも広いですが、ポリシー策定等がメイン)に捧げている人間ですが、こんな人間でも数時間足らずで自社データとChatGPTとの接続が可能となりました。

精度を出すためのデータセットの準備などは引き続き難易度が高い

一方で、「接続しただけ」では、ビジネスで活用するのは厳しいのではとも感じました。回答の正確性や具体性は格段に上がりましたが、出典の見やすさや、ユーザーがミスリードしないための取り組み等に関しては、継続して考える余地があります。ただ、データ接続の手順が簡素化されたことで、よりデータセットの準備等に時間を注げるようになったのではと思います。

作成したモデルを活用するのも楽になった

作成したモデルをAPIやGUIで活用するのも簡単にできます。特にGUIの部分は大きなアップデートとなるので、別ブログにしました。そちらも見ていただけると嬉しいです。

おわりに

個人的には企業で生成AIを活用するならば、OpenAI社のChatGPTではなくAzure OpenAI Service 一択なのではと思わせるような神アップデートだと思いました(注意:ここは完全に個人見解というか感想です)。また今後、この機能を活用した事例等を紹介するイベント等を計画しているので、イベントが公開されたら是非そちらの方にも参加していただけたら嬉しいです。

注釈

  1. Azure Cognitive Search でのセマンティック検索 https://learn.microsoft.com/ja-jp/azure/search/semantic-search-overview
  2. 米弁護士がChatGPTで作成した裁判書類にミス、実在しない判例6件 「二度と頼らない」 https://www.itmedia.co.jp/news/articles/2306/01/news073.html
  3. 報告書の転載・引用連絡 https://www.jnsa.org/aboutus/information/quote.html
  4. GPT搭載の「Azure OpenAI Service」セキュリティから見る https://blog.cloudnative.co.jp/16682/
  5. Azure Cognitive Search とは

出典・参考文献

関連ブログ・関連サイト

ぐっち

コンサル会社にてISO27017やISMAP等のセキュリティ規格案件を経験した後、クラティブに入社。セキュリティチーム所属ですが、最近は生成AI等を使ったシステムの開発や導入をやっています。趣味はダンス(Soul, Lock, Waack)です。