はじめに
今回は Azure OpenAI と Azure AI Search を利用して RAG(Retrieval-Augmented Generation)を構築する手順を解説します。
想定する読者
- Azure 環境で RAG を構成する具体的な手順を知りたい方
- とにかく簡単に Web アプリケーションとして RAG を実現したい方
RAG とは?
RAG とは大規模言語モデルでの回答生成の際に、外部情報のデータを検索させる手法のことを指します。
大規模言語モデルが有する情報はある一定の期間の限られた情報となります。そのため、質問によっては事実に基づかない回答(ハルシネーション)が発生し、期待した精度が得られない場合があります。
RAG では、意図した情報源を参照するように指定することができるため、結果として回答精度の向上を実現することができます。
今回作成するアプリケーション
今回の記事では、最終的にチャットボットアプリとして機能するような Web アプリケーションを作成します。
情報源の検索方法
今回のアプリケーションでは、Azure AI Search から該当の情報を検索する際、以下の三つの検索方法を選択できるようにしました。
アーキテクチャ
Azure 環境で RAG を実現する場合は、以下のようなアーキテクチャを構成することが可能です。
事前に Azure AI Search に検索させたい情報を格納しておくことで、ユーザーからの質問ごとに以下のフローで回答生成がされます。
- Azure AI Search から関連する情報を取得する
- 「質問文 + 取得した情報」をもとに Auzre OpenAI で回答生成させる
情報の格納場所として、上記の図では Azure Storage Account を指定していますが、その他にもこちらの資料に記載のデータソースを選択できます。
手順
01. Azure リソースの作成
今回構築する RAG で使用する Azure リソースは以下です。
- Azure OpenAI
- Azure AI Search
- Azure Storage Account
Azure OpenAI の作成
リソースグループの作成が完了したらc Azure OpenAI を作成します。
選択するリージョンは、こちらの資料を参考にデプロイしたいモデルがサポートされているリージョンを指定しましょう。
Azure OpenAI の作成が完了したら Azure OpenAI Studio に移動しモデルを作成します。
今回作成するモデルは以下の二つです。
- gpt-4o:テキスト生成用モデル、他のテキスト生成用モデルでも可
- text-embedding-ada-002:ベクトル化用モデル
Azure AI Search の作成
続いて Azure AI Search リソースを作成します。今回のデモについては Free プランで作成しても問題ありません。
Azure Storage Account の作成
最後に、Azure Storage Account を作成します。
02. データソースのアップロード
作成した Azure Storage Account にコンテナを作成し、データソースをアップロードします。今回は、こちらの Azure Sample の GitHub に格納されている PDF ファイルを使用しました。
03. インデックスの作成
作成した Azure AI Search リソースに移動し、「Overview」→ 「Import and vectorize data」からインデックスを作成します。
手順の詳細についてはこちらのドキュメントをご参照ください。
04. Web アプリケーションの作成
今回は Streamlit という Web フレームワークを使用して Web アプリケーションを作成します。今回作成したアプリケーションのコードはこちらの GitHub に公開しています。
ローカル環境での動作確認ができたら、Azure Web Apps 上にデプロイすることも可能です。手順については上記の GitHub の Readme に記載しています。
まとめ
今回は Azure 環境で RAG を構築する手順についてまとめました。慣れれば一時間ほどで上記の手順が完了できると思うので、ぜひ、簡単なデモアプリを作成したい場合にご活用ください。
弊社では、生成 AI を活用したシステム構築、生成 AI についてのセミナー開催を承っております。ご興味がある方はぜひ、お問い合わせください。
コメント