こんにちはサイオステクノロジーの前田です。今回は、Azure OpenAIのAdd your dataを利用した場合のログ確認方法を記載します。Azure OpenAIと連携してCognitive Searchの利用が増えていますが、Cognitive Searchに関しては利用方法や概念の把握が難しいです。どのように連携しているか不透明なまま利用している人も多いです。今回は連携時のログを確認し、どのように連携しているか理解して回答精度向上を目指します。
Azure Cognitive SearchとAzure OpenAIの連携
Azure Cognitive Searchの検索精度について
Azure Cognitive Search はindexを選択することにより検索エクスプローラーでデータ検索することが可能です。
検索画面の内容は下図になります。
関連性が高い内容はserch.scoreの高い値となります。その結果はOpenAIに関連情報として転送されます。
ナレッジストアの関連性(score)は大事な項目になります。変な回答になる仕組みとしては下記になります。
- OpenAIの質問をナレッジデータに確認
- ナレッジデータが英語対応等の場合は、質問内容と関連データの関連性がおかしくなり、別の関係性がある内容に高いscoreとして紐づけ
- 関連性がおかしい情報がOpenAIに送られて処理
- 希望とは違う回答がOpenAIからユーザに返却
『おすすめのご飯はなんですか?』の『飯』という漢字と類似文字検索の情報を取り出して、『アニメのキャラクターの〇〇で、よく食べるのは■■です』とか変な回答になったりします。
1, 2の個所を改良することで、AIからの返答を人間が希望する回答にすることが可能です。
1の改善点
- ナレッジデータに質問の意図をAI側で処理して検索する機能を追加。セマンティック検索機能の追加
- 質問内容をベクトル化する
2の改善点として
- ナレッジデータを日本語対応
- ベクトルデータとして保管
- ベクトル検索とキーワード検索のハイブリッド検索にする
- データ数をある程度の量用意
- ナレッジとしてきれいなデータ
Cognitive Searchの検索結果が大きく独自データを含んだOpenAIの回答に影響します。ここを適切な形にするには専門知識が必要になります。
診断設定の設定方法とログ確認
どのようなリクエストがAzure Cognitive Searchに送られているか実際確認するためにログ設定方法を記載します。
Azure Cognitive Searchのログ確認にはAzure Cognitive Search の診断設定とLog Analytics ワークスペースの設定が必要です。
診断設定の設定方法
- ログの項目をすべて選択
- 宛先の詳細のLog Analyticsワークスペースへの送信を選択
- 先に作成した LogAnalyticsワークスペースを選択
- 診断設定の名前を記載
保存 で設定を保存
AzureDiagnostics
| project TimeGenerated, OperationName, resultSignature_d, DurationMs, Query_s, Documents_d, IndexName_s
| where OperationName == "Query.Search"
| sort by TimeGenerated
下記のような結果が表示されます。