Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Azure OpenAI Service 「on your data」 で独自データを使ったチャットを実現する

こんにちは、igaです。
先日は台風の影響が出る前に出かけられて、リフレッシュできました。


今回は、Azure OpenAIとチャットする際に、独自データを使用してみます。
独自データの使用(原文の表記はon your data)は、2023年8月現在パブリックプレビューとして利用できる機能です。

techcommunity.microsoft.com

独自データの使用(以降、on your dataと表記します)により、例えば企業内ドキュメントやFAQをAzure OpenAIに検索させることで、ユーザーからのチャットでの問い合わせに対して企業内ドキュメントやFAQを検索した結果をAzure OpenAIがチャットの応答として返すことができるようになります。

今回は、on your dataを利用するまでの流れを試したいと思います。

on your dataのポイント

on your dataを利用するには、以下の条件があります。

項目 条件
デプロイされたモデル gpt-35-turbo
gpt-4
対応しているファイル形式 txt
md
html
Microsoft Word
Microsoft PowerPoint
PDF

また、記事執筆時点では、Pythonのライブラリがon your dataに対応していないようです。そのため、利用する際はREST APIを直接呼び出す必要があります。
REST APIの仕様は以下になります。
learn.microsoft.com


上記の他に、「Private Endpointを経由したアクセスは申請が必要」というものがあります。
(公式サイトの記述)
これは、Azure OpenAIからアクセスする、データを格納しているAzure Cognitive Searchにアクセス制限を行っている場合、on your dataで利用するためには申請が必要となります。
2023年8月のアップデート前は、「Private Endpointを経由したアクセスは非対応」となっていましたが、申請によりPrivate Endpointを経由したアクセスに対応できるようになりました。
Private Endpointを経由したアクセスに関しては、別の記事で検証しようと思います。

on your dataの利用手順

Azure OpenAIでon your dataを利用するには、Azure OpenAIで条件に合ったモデルをデプロイしておきます。
今回、on your dataのデータとしてIPAが公開している「安全なウェブサイトの作り方」を使用します。
www.ipa.go.jp

Azure OpenAI Studio から「Bring your own data」を選択するか、「Chat playground」を選択してから「Add your data」を選択します。
今回は、「Bring your own data」を選択した手順を説明します。

利用できるデータソース

使用できるデータソースは以下の3つになります。

No 選択項目 説明
1 Azure Cognitive Search データが格納されたAzure Cognitive Searchを指定
2 Azure Blob Storage データが格納されたAzure Blob Storageを指定
3 Upload files ローカルに存在するファイルをアップロードして、
Azure Cognitive SearchとAzure Blog Storageに格納

このうち、「Azure Blob Storage」「Upload files」を選択した場合にも、Azure Cognitive Searchは必要になります。

データソースの準備

まずは、「Select data source」でon your dataを格納するデータソースを選択します。
今回は、ローカルにあるPDFファイルを使用するため、「Upload files」を選択します。

「Upload files」を選択すると、アップロードしたファイル内容を格納するための、Azure Blob storageとAzure Cognitive Searchを選択するように求められます。
まだAzure Blob storageとAzure Cognitive Searchを作成していない場合は、「Create a new ~~ resource」のリンクから作成することが可能です。

ロールの割り当て

作成したAzure OpenAI、Azure Blob Storage、Azure Cognitive Searchの各リソースに対して、ロールの割り当てを行う必要があります。
Using your data with Azure OpenAI Service - Azure OpenAI | Microsoft Learn

対象リソース 割り当てロール(和名) 割り当てロール(英名)
Azure OpenAI (和名なし) Cognitive Services OpenAI Contributor
Azure Blob Storage ストレージ BLOB データ共同作成者 Storage Blob Data Contributor
Azure Cognitive Search 検索インデックス データ共同作成者 Search Index Data Contributor

データソースの選択

作成したAzure Blob storageとAzure Cognitive Searchの名前をドロップダウンから選択して、Azure Cognitive Searchのインデックス名を入力します。
「I acknowledge that connecting to an Azure Cognitive Search account will incur usage to my account.」にチェックをつけて「次へ」を選択します。

ファイルをアップロードする画面から、ローカルにあるファイルをファイル選択ダイアログから選択するか、ファイルをドラッグアンドドロップすると、リストにファイルが追加されます。

「Upload files」のボタンをクリックすると、選択したファイルのStateが「Pending」から「Uploaded」に代わり、「次へ」ボタンが有効になります。
「次へ」を選択すると、「Data management」画面に遷移します。

Data management画面

特に変更できないので、そのまま「次へ」を選択します。

最終確認

これまでに入力した内容が合っているかを確認して、「保存して閉じる」を選択するとon your dataの準備が開始されます。

on your dataの準備が完了すると、検索先のData source、 Search Resource、Indexが表示されます。

on your dataを利用したチャット

on your dataに含まれる内容の問い合わせ

ここでは、 Azure OpenAI Studio のChat playgroundを利用してチャットの確認をしてみます。
まずは、on your dataに含まれる、「SQLインジェクションの脅威と対策」という内容を質問してみます。

on your dataに含まれる内容を要約して返してくれました。

on your dataに含まれない内容の問い合わせ

続いて、on your dataに含まれない、「お勧め観光スポット」について質問してみます。

on your dataには含まれていませんが、それらしい回答が返ってきました。

今度は質問内容に「データがなければないことを回答する」という条件を付けました。

条件をつけることで「データが含まれていない」という結果が返ってきました。
これは、「Add your data」で「Limit responses to your data content」にチェックをつけているため、問い合わせの回答を検索するのにon your dataに制限しています。
そのため、on your dataに含まれない情報は検索しても見つからない、という回答になります。

on your data に限らない回答

今度は、「Add your data」で「Limit responses to your data content」のチェックをOFFにして、先ほどと同じ質問をしてみます。

まずは、on your dataに含まれている、「SQLインジェクションの脅威と対策」という内容を質問してみます。

on your dataだけを検索している時に比べると、具体的な記述が減りました。

では、on your dataに含まれていない、「お勧め観光スポット」について「データがなければないことを回答する」という条件を付けて質問してみます。

今度はおすすめスポットについての結果が返ってきました。

まとめ

今回、Azure OpenAIでon your dataを使ってみました。
同様の内容を、ChatGPTに対して検証した記事が以下になりますが、データ投入して検索可能にするために必要な手順を、ほとんどAzure OpenAIが肩代わりしてくれました。
acro-engineer.hatenablog.com

現在はプレビュー段階のため、正式リリースまでに仕様が変わる可能性もありますが、独自データを元にチャットが回答するのを簡単に実現できるのは良いですね。


Acroquest Technologyでは、キャリア採用を行っています。

  • ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
  • Elasticsearch等を使ったデータ収集/分析/可視化
  • マイクロサービス、DevOps、最新のOSSを利用する開発プロジェクト
  • 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。

Kaggle Grandmasterと一緒に働きたエンジニアWanted! - Acroquest Technology株式会社のデータサイエンティストの採用 - Wantedlywww.wantedly.com