Azure OpenAI Add your data 回答精度&連携ログ確認

こんにちはサイオステクノロジーの前田です。今回は、Azure OpenAIのAdd your dataを利用した場合のログ確認方法を記載します。Azure OpenAIと連携してCognitive Searchの利用が増えていますが、Cognitive Searchに関しては利用方法や概念の把握が難しいです。どのように連携しているか不透明なまま利用している人も多いです。今回は連携時のログを確認し、どのように連携しているか理解して回答精度向上を目指します。

■Azure OpenAI Add your dataを利用した時のOpenAIの回答フロー
Azure OpenAIのAdd your dataではナレッジ検索に対してどのようなデータが送られているのか理解しにくいため、AIからの回答精度が低いときに原因の所在がわからなくなることが多いです。
結論から言うと、問い合わせ文章がそのままCognitive Search側に届けられます。
例)
Azure OpenAI Studioで 『おすすめのご飯はなんですか?』という質問した場合
Azure Cognitive Search では 『おすすめのご飯はなんですか?』というナレッジ検索が行われます。
※下記はAzure Cognitive Searchの検索エクスプローラーの画面で検索
『おすすめのご飯はなんですか?』と短文の場合は関連性を見つけやすいため、影響が少ないです。しかし、長文の場合はナレッジ検索(keyword検索)ではあまり関連性がないと判断されてしまうことも多くなります。

Azure Cognitive Searchの検索精度について

Azure Cognitive Search はindexを選択することにより検索エクスプローラーでデータ検索することが可能です。

検索画面の内容は下図になります。

関連性が高い内容はserch.scoreの高い値となります。その結果はOpenAIに関連情報として転送されます。

 

ナレッジストアの関連性(score)は大事な項目になります。変な回答になる仕組みとしては下記になります。

  1. OpenAIの質問をナレッジデータに確認
  2. ナレッジデータが英語対応等の場合は、質問内容と関連データの関連性がおかしくなり、別の関係性がある内容に高いscoreとして紐づけ
  3. 関連性がおかしい情報がOpenAIに送られて処理
  4. 希望とは違う回答がOpenAIからユーザに返却

 

『おすすめのご飯はなんですか?』の『飯』という漢字と類似文字検索の情報を取り出して、『アニメのキャラクターの〇〇で、よく食べるのは■■です』とか変な回答になったりします。

 

1, 2の個所を改良することで、AIからの返答を人間が希望する回答にすることが可能です。

1の改善点

  • ナレッジデータに質問の意図をAI側で処理して検索する機能を追加。セマンティック検索機能の追加
  • 質問内容をベクトル化する

2の改善点として

  • ナレッジデータを日本語対応
  • ベクトルデータとして保管
  • ベクトル検索とキーワード検索のハイブリッド検索にする
  • データ数をある程度の量用意
  • ナレッジとしてきれいなデータ

 

Cognitive Searchの検索結果が大きく独自データを含んだOpenAIの回答に影響します。ここを適切な形にするには専門知識が必要になります。

診断設定の設定方法とログ確認

どのようなリクエストがAzure Cognitive Searchに送られているか実際確認するためにログ設定方法を記載します。

Azure Cognitive Searchのログ確認にはAzure Cognitive Search の診断設定とLog Analytics ワークスペースの設定が必要です。

診断設定の設定方法

Log Analyticsワークスペースを作成した後にAzure Cognitive Searchのリソース画面の画面左側の診断設定を選択
診断設定を追加するを選択し、下記設定画面を表示
  • ログの項目をすべて選択
  • 宛先の詳細のLog Analyticsワークスペースへの送信を選択
    • 先に作成した LogAnalyticsワークスペースを選択
  • 診断設定の名前を記載

保存 で設定を保存

ログ確認方法

Azure OpenAI Add your data を利用後にログを確認します。ログが表示されるまでは少し時間が必要です。
Azure Cognitive Searchの左側の監視のログを選択し、サンプルクエリ画面は × で閉じます。そうすると下記クエリ検索画面が表示されます。
デフォルトでは過去24時間の結果しか表示しないため注意してください。
下記クエリを入力した後に実行を選択します。
AzureDiagnostics 
| project TimeGenerated, OperationName, resultSignature_d, DurationMs, Query_s, Documents_d, IndexName_s 
| where OperationName == "Query.Search" 
| sort by TimeGenerated

下記のような結果が表示されます。

ここで大事なのは『Query_s』の内容になります。このクエリのsearch=〇〇の個所が検索内容となります。Azure Cognitive Search の検索エクスプローラーで検索したものとほぼ同じ内容になります。実際にどのようなデータが関連情報なのか確認できます。この内容を加工したものが、Azure OpenAIに『tool』として情報が転送されます。
AIが想定の回答をしない場合は、Cognitive Searchの検索結果(search.score)の値が、想定する関連情報と違う場合が多いです。indexフィールドのアナライザーが日本語であるか等確認してください。

さいごに

Azure OpenAI と Azure Cognitive Seachの連携は理解しにくいですが、ログを確認することで連携内容が理解しやすくなります。ファインチューニングのデータなのかグラウンディングなのか理解しないまま利用している方も多いです。Add your dataを利用して回答がおかしいと感じた場合は一度ログを確認してください。この記事がAI導入で悩む人たちの一助になれば幸いです。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

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

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

コメントを残す

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