フォーム読み込み中
2025年3月31日掲載
Azure OpenAIで独自のデータを用いる2つの方法を比較してみました。
この記事では
現在ChatGPTをはじめとした生成AIにより、対話形式でインターネット上の様々な情報を得られるようになりました。
そんな中で、「社内データを使って回答するチャットツールを作りたい」と考える方も多いかと思います。
それを実現する方法として、Azure OpenAIにはOn Your Data機能、File Search機能という2つの機能があります。
私は普段、Azureプロダクトの企画をしており、日ごろから構築を行っているクラウドエンジニアではありませんが、ユーザーに近い目線で、2つの機能を試して比較して、そのメリットや対応状況、適用に向いているシーンなどについて紹介していきます。
「Azure OpenAIの構築を正式に依頼する前にちょっと試してみたい」といったユーザーの方に役立つ情報があれば幸いです。
公式ドキュメント 「Azure OpenAI Service リソースを作成してデプロイする」の手順に従い、作業を進めます。
Azure AI Foundry ポータル画面でAzure OpenAIのモデルをデプロイします。今回はGPT 4oでやってみました。
Azure AI Foundry 画面で、チャットプレイグラウンドでモデルの指示を加えて質問をするだけでもWeb上の情報から回答を得ることができます。
今回は独自データから回答させたいので、「データを追加する」を選択する必要がありますが、まずはその下準備から順番に進めます。
追加するデータを準備していきます。今回は就業規則のサンプルを使います。手順は「クイック スタート: 独自のデータを使用して Azure OpenAI モデルとチャットする」の通りです。
まず読み込みたいファイルをストレージコンテナにアップロードします。
ここでは独自データへの接続とベクトル化を行います。ベクトル化では独自データを細かい文章(チャンク)に分割し、検索フレーズとどれくらい近い意味合いかを数値化することができます。これにより、単語やフレーズが完全一致していなくても必要な情報にたどり着きやすくなります。手順は「クイックスタート: Azure portal を使用してテキストと画像をベクトル化する」を参照してください。
ここで、ちょっとつまづいたのが、データのインポートとベクトル化が完了した後のことです。この処理が完了したら、インデクサーが作成されていることを確認します。インデクサーとはデータを読み取ってインデックス(指定した形式でコンテンツを格納する場所)に引き渡す仕組みです。
この時、処理が成功していることとエラーの有無を確認します。実はエラーが発生していたので、データを引き渡せていないことがありました。
私が試した際には、”Truncated extracted text to '524288' characters.”というエラーが出ていました。これはストレージアカウントにアップロードしたファイル1件あたりの文字数が多すぎるという意味なので、PDFファイルを分割してアップロードしなおしました。
インデックスの画面に戻り、検索窓にキーワードを入力してみます。キーワードに関連するチャンクを返してくれます。
Azure AI Foundry のチャットプレイグラウンド画面に戻って、データを追加してチャットしてみます。
これで独自データから回答を得られるようになりました!
デプロイボタンからWebアプリとして公開することもできます。
アプリ名やリージョンなどを指示通りに選択します。この時「Webアプリでチャット履歴を有効にする」を選択すると、アプリ画面で過去のチャットを振り返って確認することができます。(ただし、別途CosmosDBの課金が発生します。)
簡易的ではありますが、Webアプリとして使うことができました。
Azure AI Searchでのベクトル化の難易度が高く、エラーの調査などに時間がかかってしまいましたが、1週間程度で簡易的なWebアプリまで作成することができました。
今回は読み取りたいデータをAzure Blob Storageに格納しました。Azure Blob Storageは大容量のデータを投入できるため、大企業で組織全体のデータを活用したい場面などにも向いていると思います。
Azure OpenAIのデータソースとしてAzure AI Searchを使用する際は、Azure AI Searchのベーシック以上のプランが必要です。
東日本リージョンだと当ブログ公開時点で¥14,515.45/月かかり、File Search機能と比べて少し高い印象を受けました。
先ほどと同じようにAzure AI Foundry ポータル画面でAzure OpenAIのモデルをデプロイします。アシスタントプレイグラウンドを開きます。On Your Data機能のときと同じくGPT 4oでやってみました。
新しいアシスタントを作成し、「ファイル検索」をONにします。
今回はローカルから同じファイルをこの画面でアップロードするだけです。これだけでベクトル化完了なので、On Your Data機能と比べると簡単でした。
ファイルが追加されたことを確認して質問すると、与えた資料から回答を得ることができました。
On Your Data機能と比べて簡単かつスピーディーに独自データを用いたチャットのテストをすることができました。
ファイルをローカルから直接アップロードして取り込むため、大量データの利用より、特定のファイルで簡単に使いたいシーンに向いていると思います。
ただし、簡単にWebアプリを作成する機能はないので、Webアプリを作成したい場合は、別途設計・構築が必要になります。
また、File Search機能は「プレビュー」の機能です。正式リリースではないので、マイクロソフトのサポートを受けられない可能性があります。本格利用には慎重になったほうが良さそうです。
ここまで検証してみて、どのような場面でOn Your Data機能とFile Search機能が適しているかを表にまとめました。
On Your Data機能 | File Search機能 | |
|---|---|---|
RAG機能実装の難易度 | Blob Storage、Al Searchとの接続が必要でやや難易度が高い | Azure OpenAIリソースに直接ファイルアップロード可能で比較的容易 |
| Webアプリのリリース難易度 | AI Foundry画面から簡単な操作でリリース可能 | Web UIの構築やAPI接続設定が別途必要 |
マイクロソフトサポート | あり | 受けられない可能性あり |
課金イメージ | ・Azure OpenAI:トークン数による従量課金 ・Azure AI Search(ベーシック以上):時間単位の課金 ・ストレージコンテナ:GB単位の従量課金 | ・Azure OpenAI: トークン数による従量課金 |
| サポートしているファイルの種類 | On Your Data機能より多くのファイル形式をサポート | |
| 投入できるデータ量 | Azure Blob Storageストレージの容量に応じて大量のデータを投入可能 | 最大10,000個のファイルを投入可能(各ファイルの最大サイズは512MB) |
| 想定される利用シーン | 企業の大量データを活用 | 小さな組織で特定のドキュメントやファイルを活用 |
今回、同じPDFファイルを用いて試してみた限りでは、どちらの方法も検索精度にはそこまで差分はなく、下記のように使い分けできるのではないかと考えました。
今後の利用の参考になりますと幸いです。
Microsoft Azureは、Microsoftが提供するパブリッククラウドプラットフォームです。コンピューティングからデータ保存、アプリケーションなどのリソースを、必要な時に必要な量だけ従量課金で利用することができます。
条件に該当するページがございません