usomaru技術ぶろぐ

学んだことをちょこちょこメモ( ..)φ

Azure Open AI Service の On Your Dataを試してみる

はじめに

仕事でAzure Open AI Service On Your Dataに関して調査する機会があったので、調べたことをまとめています。

そもそもOn Your Dataとは

チャット検索をユーザー独自のデータを対象にして実行できるようになるというものです。
ファイル検索にはAzure Cognitive Searchが使われます。
※gpt-35-turboまたはgpt-4でのみ利用可能

On Your Dataを使おうと思ったら、ナレッジベース指定方法は3通りあります。
1. 既存の Azure Cognitive Search インデックスを指定 (ユーザー任意のインデックスを作成)
2. データが格納された Azure Blob コンテナーを指定 (インデックス自動作成)
3. Azure Blob コンテナーにファイルをアップロード (インデックス自動作成)

種類の指定はAzure OpenAI StudioでAdd your dataを選択したときに選べます。
つくりかたのほうでまた登場します。

種類を選ぶ際の注意点として、インデックス自動作成では、アナライザーの言語が英語固定となり、精度が低くなるそうです。
対策としては、こちらの記事を参考にするとよいかと思います。
生成AI用Cognitive Searchの言語アナライザーを日本語にしたい

つくりかた

今回私は「既存の Azure Cognitive Search インデックスを指定」する方法で試しています。

1. Azure Open AIのリソースを作成

申請が必要なので注意が必要です。

2. ストレージのリソースを作成・PDFをアップロード

リソースが作成できたら、コンテナーを追加し、検索に使用したいファイルをアップロードします。
今回私は国税庁が公開しているインボイスに関する資料をあげてみました。

3. Cognitive Search のリソースを作成

価格レベルをBasic以上にしないとOn Your Dataを使用できなかったので注意。

4. インデックスの設定をする

ストレージアカウント>データ管理>Azure Searchを選択します。
作成したCognitive Searchのリソース名が表示されていると思うので、選択したら「次:データに接続します」をクリック。

データ接続の設定画面に移動するかと思います。
ここでデータソース名を決めて記入します。
コンテナー名は3.のストレージにコンテナを作成したときのコンテナ名です。

コグニティブスキルの追加はとくに変更していません。

ここで検索に使用したいフィールド名の設定をしたりします。
フィールドのアナライザーを日本語にするのを忘れずに…

最後にインデクサーの作成でインデクサー名を記入し、送信を押せば設定完了です。

5. Azure OpenAI StudioでOn Your Dataを追加する

Azure OpenAI Studioに移動し、チャット>アシスタントのセットアップでAdd your dataを選択します。

Add a data sourceボタンを押すとナレッジ指定画面になります。
私は「Azure Cognitive Search」を選択しています。
インデックス名はインデックスの設定をした際につけたお名前。

対象インデックスのカスタマイズで検索可能にしているフィールド名がここで選択できるようになります。

セマンティック検索をするかどうかを選べます。
セマンティック検索とは、意図的に近しい検索をすることで、全文検索とは異なり違うワードや文章でも意図的に近しい答えを回答してくれます。
こちらは使用料によって課金が発生することと、Standartプラン以上でないと使用できないため、選択はしませんでした。(日本語にも対応してないっぽい)

完成品

気になったこと

  • Cognitive Searchの価格レベルがBasic以上でないと使えず、Cognitive Searchのお値段は高め…

    サービスの作成後、課金レートはサービスの 24 時間実行に関する "固定コスト" と、容量を追加した場合の "増分コスト" の両方になります。 検索サービスには、"パーティション" (ストレージ用) と "レプリカ" (クエリ エンジンのインスタンス) の形でコンピューティング リソースが割り当てられます。
    料金表:Azure Cognitive Search の価格

  • Cognitive Searcの価格レベルを決定すると後から変更できないので不便

    サービスのアップグレード、ダウングレード、名前変更、または移動ができますか?
    サービス レベル、名前、リージョンは、サービスの有効期間中は固定されます。

  • Pocレベルを作るのは簡単にできたけど、精度をここから運用レベルに上げるにはもっと調査と手間が必要そう

参考