フォーム読み込み中
2023年1月(ChatGPT対応は3月)から提供が開始されたAzure OpenAI Service を企業内で使う場合、セキュアな通信環境が求められます。
このブログでは、Azure OpenAI Service の機能を自社データと連携するする方法について複数回に分けて紹介していきます。
第1回の記事では、Azure OpenAI Service の「On your data」機能で自社データを組み込んでみました。第2回となる今回は「日本語アナライザーの最適活用」と「プロンプトの向上」に焦点を当て、より高度な「On your data」の検索精度向上を試みました。
前回の記事で触れましたが、「Upload files」機能を活用することで、手元に保持しているPDFファイルを容易にアップロードできます。この機能を利用することで、チャンク分割からインデックス作成までの一連のプロセスがワンクリックで自動的に実行され、GPTとのシームレスな連携が可能です。
しかしながら、「On your data」を介してCognitive Searchのインデックスを自動生成する場合、いくつかの課題が浮上します。
まず一つ目は「検索精度」です。 「On your data」を経由してインデックスを作成する際に、contentフィールドの言語アナライザーがデフォルトで英語に設定されてしまいます。これにより、Cognitive Searchの日本語における検索精度が少し低下してしまいます。この問題は深刻ではありませんが、本番環境への展開に際しては、より一層の精度向上が求められるでしょう。
今回の記事では、検索精度向上のための対策をご紹介します。
日本語アナライザーの活用
contentフィールドに対して日本語専用のアナライザーを使用することで、検索精度を向上させることができます。適切なアナライザーを選択し、日本語テキストに特化した索引を作成することで、より正確な検索結果を得ることができます。
プロンプトの改善
ユーザが検索クエリを入力する際のプロンプトを改善することで、ユーザが求める情報を的確に抽出しやすくなります。適切なキーワードやフレーズを提示することで、ユーザエクスペリエンスを向上させることができます。
これらの対策を取ることで、Cognitive Searchの日本語における検索精度を向上させることが可能です。
「On your data」のメカニズムでは、2つの主要な場面でプロンプトが活用されています。
クエリ生成時のプロンプト利用
ユーザの入力をもとに、Cognitive Searchへ投げるためのクエリを生成する際にプロンプトが使用されます。このプロセスにより、ユーザの意図を正確に捉えてクエリを構築し、最適な検索結果を得ることが可能です。
回答生成時のプロンプト利用
Cognitive Searchからの応答をもとに、ユーザに対して適切な回答を生成するためにもプロンプトが活用されます。これにより、ユーザが求める情報に基づいた意義深い回答を提供できます。
これらのプロンプトは、「On your data」のマネージド機能として隠されています。一般的なChatGPTでも利用可能なのは、"role": "system"というシステムプロンプト、およびCompletions extensions API内のroleInformationプロパティだけです。しかし、それぞれのプロンプトにはトークン数の制限があり(それぞれ200トークンと100トークン)、高度なコンテキストを提供するのは難しい場合もあります。
ちなみに、Azure OpenAI Studioの「Deploy to...」ボタンを使用して自動的にデプロイされるアプリは、すべて同じ値(環境変数:AZURE_OPENAI_SYSTEM_MESSAGE)を持つシステムプロンプトを使用しています。
システムプロンプトの例としては、以下のような推奨設定が公式ドキュメントで示されています。それぞれのトークン上限に留意しつつ、多言語サポートや最適なコンテキスト提供を考慮してプロンプトを選択することが重要です。
プロンプト例:「あなたは、情報の検索を支援する AI アシスタントです。日本語のドキュメントを取得し、それを日本語で注意深く読み、日本語で回答する必要があります。」
自前実装の場合、プロンプトを含むカスタム実装を行う際にはSemantic KernelやLangChainを活用するかどうかを検討することが重要です。これにより、効率的な実装が可能となります。
公式提供のデータ準備ツールを使用すると、以下の手順で挙動します(PDFドキュメントの場合)。
事前にCognitive SearchとForm Recognizerのセットアップが必要です。Cognitive Searchの価格プランについては、「Basic」プラン以上である必要があります。なお、Azure OpenAIとの連携は「Free」プランでは利用できませんので、予めご注意ください。
Form Recognizer、Azure Cognitive Search、Azure OpenAI Service などのリソースを作成し、公式提供のデータ準備ツールを用いて検証用の電話料金資料を処理してインデックスを作成します。作成されたインデックスはChatGPTと連携してデプロイされ、質問をすることで動作確認を行います。
まず、Azure Cognitive Search、Form Recognizerのリソースを作成します。
次に、検証用データを準備し、検証環境のフォルダーに保存します。データ準備ツールを実行すると、config.jsonに記載された設定で既存のリソースがあればそれを利用し、ない場合は新規作成という挙動になります。
その後、プレイグラウンドからAzure Cognitive Search に接続し、検索可能な状態にします。[Azure search]のStorage Accountsから作成したCognitive Searchのリソースを選択して接続します。
日本語のプロンプトを設定します。
Azure OpenAI Service を利用するためには、まずAzure サブスクリプションが必要です。Azure サブスクリプションを作成するには、以下のリンクにアクセスして手順に従ってください。
アクセス申請については以下のブログで詳しく説明しましたので、ご参照ください。
Azure OpenAI Service へのアクセスを申請する
Azure ポータルにログインして、Azure OpenAI Service リソースを作成し、モデルをデプロイできます。具体的な手順については、以下のリンクを参照してください。
Azure OpenAI Service を使用してリソースを作成し、モデルをデプロイする
以下のようにChatGPT プレイグラウンドで「Add a data source」ボタンを押して、データソースに「Azure Cognitive Search 」を選択して、この前準備したインデックスを選択します。
プレイグラウンドでモデル「Limit responses to your data content」をチェックした上で、以下の質問してみます。
質問1「シンプルスタイル専用パケット定額サービスとは」
前回の回答は下記でした。
今回の回答は前回と比べると、より詳細な回答をもらいました。
質問2「シンプルスタイル専用パケット定額料金はなにがありますか」
前回の回答は下記で間違っていました。
今回の回答は正解です。
今回の記事では以下の検索精度向上の対策を実施してみました。
これらのアプローチにより、「On your data」において日本語検索の精度向上が可能となりました。ぜひ、実際の運用において検討いただき、より効果的な検索体験を実現していただければ幸いです。
最後までお読みいただき、ありがとうございました。
Azure OpenAI serviceは、OpenAIのAIモデルをMicrosoft Azure上のセキュアな環境で利用できるサービスで、機械学習や自然言語処理などの高度な機能を提供します。簡単にAIを組み込み、スケーラブルなソリューションを構築し、効率的にビジネス価値を生み出すことができます。
Microsoft Azureは、Microsoftが提供するパブリッククラウドプラットフォームです。コンピューティングからデータ保存、アプリケーションなどのリソースを、必要なときに必要な量だけ従量課金で利用することができます。
社内データの構造化により、検索拡張生成(RAG)システムの回答精度の向上・改善支援を行い、業務で使えるデータを構築します。
条件に該当するページがございません