こんにちは、igaです。
先日は台風の影響が出る前に出かけられて、リフレッシュできました。
今回は、Azure OpenAIとチャットする際に、独自データを使用してみます。
独自データの使用(原文の表記はon your data)は、2023年8月現在パブリックプレビューとして利用できる機能です。
独自データの使用(以降、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 |
また、記事執筆時点では、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