独自データを利用したチャット_AzureOpenAI_Add_your_data

こんにちはサイオステクノロジーの前田です。今回は、Azure OpenAI で独自データを利用するための Add your  dataについて紹介していきます。この機能はAzure Cognitive Searchの独自データを利用したチャット回答を行います。
生成AIで独自データを利用する方法は主に2つあります。
  1. 関連データを学習させる、追加学習(ファインチューニング)というAIモデル自体の追加学習
  2. AIの質問時に補足情報を付けたして送信しAIが回答する、Groundingというナレッジサービスとの連携

方法

モデルの運用 必要データ量 独自カスタマイズ性の回答制度 複雑な文章への対応
追加学習 元のモデルの新規バージョンに対応が難しい 大量 データ量とデータ精度 精度高い
Grounding 元のモデルの新規バージョンに対応しやすい 少量 ナレッジの精度による 精度低い
Add your dataではGroundingという手法を使います。そのため、独自データを一度Cognitive Searchというナレッジストアに格納します。
■Add your data データ投入フロー
■Add your dataを利用した時のOpenAIの回答フロー
OpenAIと連携時は通常3つのロールを利用します。Add your dataを利用する場合一つロールが追加されます。
  • role (OpenAIと連携時のロール)
    • system:        AIアシスタントの設定等を記述、ChatGPTでは特に見えない箇所
    • assistant:     AIからの回答
    • user:          ユーザーからの質問
    • tool:              ナレッジデータ

通常はuser情報だけを送信するのですが、Add your dataを利用する場合は toolにナレッジデータを付与してAI側に送信します。AI側はその情報を含めて回答します。そのため、ナレッジデータの精度によりAIからの回答制度はだいぶ変わります。OpenAIの仕様でトークン数という渡せるデータ量に限りがあるため、大きな文章量は処理できなくなります。送信時に2000語ぐらいを想定してください。

Azure Cognitive Searchとは

Cognitive Searchとは、Azure Cognitiveの一つで、ナレッジストアと呼ばれる機能を持っています。ナレッジストアとは、様々な形式のデータを統合的に管理し、検索や分析ができるようにするものです。例えば、PDFやWordなどの文書ファイル、画像や動画などのメディアファイル、CSVやJSONなどの構造化データなどを、一つのサービスで扱えます。

Cognitive Searchのデプロイ

Cognitive Searchを利用するには、まずAzureポータルからCognitive Searchリソースを作成します。リソースを作成する際には、サービス名やプランなどを指定します。OpenAIと連携する場合でプランは、有料プランである基本(basic)プラン以上を選んでください。

データのインポート(インデックスへデータ格納)

Cognitive Servchのナレッジストアとしてindex(インデックス)の作成を行います。インデックスはナレッジ形式にデータが格納されたものになります。一種のデータベースみたいなものを想定してください。
Cognitive Searchにデータをインポートするには、以下の3つの要素が必要です。
– データソース (インデックスに入れたい内容)
– インデックス (ナレッジストア)
– インデクサー (データソースをインデックスに格納するもの)
OpenAI Add your dataではインデックスと連携します。インデックスのデータをどこから設定するかで違いがでます。最初はインデックスと連携するということだけ考えてください。

データソースの設定

データソースとは、Cognitive Searchがデータを取得する場所です。Cognitive Searchでは、Azure StorageやAzure SQL DatabaseなどのAzureサービスだけでなく、外部のWebサイトやAPIなどもデータソースとして指定できます。データソースを設定する際には、接続情報や認証情報などを入力します。
Add your dateではデータをアップロードしてAzure Storage に保管、解析してインデックスにデータを格納します。

インデックスの作成

インデックスとは、Cognitive Searchがデータを検索可能な形式に変換して保存する場所です。
インデックスの作成には注意が必要です。インデックスの設定により日本語の回答精度が変わります。デフォルトでは英語コンテンツ対応になるため、日本語コンテンツの回答精度は下がります。
インデックスを作成する方法主な方法は3種類あります。
データ格納方法 データ格納形式(拡張子) 言語対応 備考
Azure OpenAI Studio TEXT, Markdown, HTML, Microsoft Word, Microsoft Power Point, PDF 英語のみ対応

大量データを運用しずらい

データ形式とファイルの種類

Azure Cognitive Search Indexer

CSV, EML, EPUB, GZ, HTML, JSON, KML, Microsoft Office形式,オープンドキュメント形式, PDF, TEXT(プレーンテキスト), RTF, XML, ZIP 

複数言語対応

(日本語対応)

長い文章を含んだファイルはインデックスに格納されるが、OpenAIと連携不可

サポートされるドキュメントの形式

データ取得スプリプト TEXT, Markdown, HTML, PYTHON, PDF

複数言語対応

(日本語言語対応)

PDFをインデックスデータに格納するためにはAzure Form Recognizerのデプロイが必要

OpenAIと連携できる文字数に分割

サポートされるデータ形式とファイルの種類

インデクサーの動作

インデクサー(Indexer)はAzure OpenAI Studio のAdd your data の場合ではOpenAI Studioの後ろ側でインデクサーとしてデータをインデックスに格納してくれます。

Azure OpenAI Add your dataの利用

Azure OpenAI Add your dataの簡易検証を実施します。

データの設定

前提条件
  • ストレージアカウント作成済み
  • Azure Cognitive Searchデプロイ済み
  • Azure OpenAIモデルデプロイ済み

データの登録

Azure OpenAI Studioにアクセスします。

PlaygroundのChatを選択して下記画面を表示します。

画面真ん中のAdd your data(preview) を選択します。その後 Add a data sourceを選択します。

■ Data Sourceの設定

Select data sourceで Upload files を選択します。 ※ここで3種類の選択があります。既存のインデックスと連携するときは変更します。

Select Azure Blob storage resourceには、先に作成したストレージアカウントを選択します。CORSの許可が出る場合は許可します。

Select Azure Cognitive Search resourceには、先に作成したCognitive Searchを選択します。※Freeプランでは利用できません。

Enter the index nameには、作成するindexの名前を入力します。

※Add vector search to this search resourceでは検索精度を高める一つベクトルデータ形式にする方法ですが、今回は利用しないためチェックしません。

一番下のチェックリストCognitive Searchを利用するとお金がかかることにチェックを入れます。

最後にNextを選択します。

■ Upload filesの設定

ドラッグ&ドロップでファイルをアップロードします。その後、Upload filesを選択するとファイルがストレージアカウントに格納されます。StateがUploadedになりましたら、Nextを選択します。

アップロードするファイルとしてサンプルでは下記の記載になります。

 

maedalike.txt

前田周哉はSIOSのエンジニアです。みかんをこよなく愛しており、ミカンジュースを飲みすぎて病気になりました。
前田周哉の女性の好みは北斗晶です。

■Data management

デフォルト設定のままNextを選択します。

Search TypeはKeywordを選択してNextを選択します。

※検索精度を上げるためにSemanticにする場合はCognitive Searchの設定を追加する必要があります。追加コストが必要です。

■ Review and finish

下記画面のように表示されます。Save and closeを選択します。

  

■元の画面に戻りインデックスのデータ登録

 

独自データの検証

独自データの検証を行います。

Limit responses to your data contentがチェックされた状態だと、登録したデータの内容をもとに回答します。

日本語データの検索性能は低く(英語認識のため)、さらにデータ数が少ないため、ConfigurationのParametersの設定でTemparture(創造的な回答度合い)を0.5に上げます。

その後上記データで、『前田周哉の好みは何ですか?』と入力するとが回答が返ってきます。

回答が返され、さらにreferences情報が表示されます。リファレンスを確認するとリファレンスの内容も表示されます。

このように独自データを利用して生成AIの回答をすることができます。

さいごに

今回は、Azure OpenAIのAdd your dataを利用しながらAzure Cognitive Searchというサービスについても紹介しました。Cognitive Searchでは、様々な形式のデータをナレッジストアとして管理し、AIスキルを適用して情報を豊かに抽出し、検索や分析に活用できます。2023年9月現状は日本語データはAzure OpenAI Studioからのデータ投入では回答精度が低い状態です。Azure OpenAIと連携したナレッジデータを作るには自作で設定する必要があります。日本語データの登録に関しては別の機会に記載します。

tech.labの関連記事
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です