はじめに
RAGチャットボットの検討を進める中で、まずは実際に動くものを触ってみたいと思い、Microsoftが公式に提供しているサンプルアプリ「azure-search-openai-demo」をAzure上にデプロイしてみました。
このサンプルは Azure AI Search と Azure OpenAI Service を使ったRAG(Retrieval-Augmented Generation)アーキテクチャのデモアプリで、自分のドキュメントに対してChatGPTライクな質問応答ができる環境をコマンド数本で構築できます。RAG実装の参考として広く使われているリポジトリです。
本記事では Windows 11環境でのデプロイ手順と、実際にハマったポイントを共有します。
デモの概要
| 項目 | 内容 |
|---|---|
| リポジトリ | Azure-Samples/azure-search-openai-demo |
| バックエンド | Python(Azure Container Apps) |
| フロントエンド | TypeScript / React |
| 検索 | Azure AI Search |
| LLM | Azure OpenAI Service(GPT-4.1-mini) |
| IaC | Bicep + Azure Developer CLI(azd) |
アーキテクチャ
ユーザーの質問 → Azure AI Search でドキュメントを検索 → 取得したチャンクを文脈としてGPTに渡す → 回答生成、の流れです。(RAGパターン)
前提条件
以下が揃っていることを確認します。
Azureアカウント権限(以下のいずれか)
- Role Based Access Control Administrator
- User Access Administrator
- Owner
ローカルPCへのインストール
Note: PowerShellは、7系(pwsh)が必要です。インストールしていない場合は先に対応してください。
手順
1. 作業フォルダの作成
PowerShellターミナルを開き、作業用ディレクトリを作成します。
mkdir my-rag-demo
cd my-rag-demo
2. ソースコードのダウンロード
azd init でリポジトリのテンプレートを取得します(gitリポジトリが初期化されます)。
azd init -t azure-search-openai-demo
3. Azureへのログイン
azd auth login
ブラウザが起動し、Azureアカウントでの認証を求められます。
4. azd環境の作成
azd env new
プロンプトが表示されるので、リソースグループ名として使いたい名前を入力します。この名前がAzure上のリソースグループ名になります。
5. デプロイのカスタマイズ(環境変数の設定)
オプション機能を有効化する場合は、この段階で環境変数を設定します。今回は以下の3カテゴリを設定しました。
# === EntraID 認証 ===
azd env set AZURE_USE_AUTHENTICATION true
azd env set AZURE_ENFORCE_ACCESS_CONTROL true
azd env set AZURE_ENABLE_GLOBAL_DOCUMENT_ACCESS true
azd env set AZURE_AUTH_TENANT_ID <TENANT-ID> # ← 下記コマンドで確認
# テナントIDの確認方法
az account show --query tenantId -o tsv
# === チャット履歴保存(Cosmos DB) ===
azd env set USE_CHAT_HISTORY_COSMOS true
# === マルチモーダル(画像を含むPDFを扱う) ===
azd env set USE_MULTIMODAL true
Note: マルチモーダルを有効にすると Azure AI Vision も追加でプロビジョニングされ、コストが増加します。必要な場合のみ設定してください。
6. RAGに投入するドキュメントの配置
デプロイ前に、検索インデックスに登録したい資料を ./data フォルダに配置します。PDF・Word・Excel・PowerPointなど、多くの形式に対応しています。
my-rag-demo/
└── data/
├── 社内規程.pdf
├── 製品マニュアル.pdf
└── FAQ.docx
サンプルドキュメントがリポジトリにデフォルトで含まれているので、まずはそのまま試すことも可能です。
Word・Excel・PPTファイルの場合はテキストのみが検索対象として抽出されます。
PDFの場合はテキストに加えて画像および表も抽出されます。(マルチモーダル設定をONにした場合)
7. デプロイ実行
azd up
初回実行時はリージョン選択が求められます(リソース大多数のリージョンと、OpenAIリソース用リージョンの2つ)。デプロイには 15〜30分程度 かかります。
デプロイが成功するとコンソールにエンドポイントのURLが表示されます。
SUCCESS: Your Azure app has been deployed!
- Endpoint: https://app-backend-xxxxxxxxxxxx.azurewebsites.net/
ハマりポイント:デプロイ後にHTTP 500が返る
azd up が SUCCESS になったにもかかわらず、ブラウザでアクセスすると HTTP 500 が返ることがありました。
原因: フロントエンド(React)のビルドが裏側で正常完了していないケースがある。
対処法: フロントエンドを手動でビルドしてから再デプロイします。
# 1. フロントエンドを手動ビルド
cd app/frontend
npm install
npm run build
# 2. プロジェクトルートに戻って再デプロイ
cd ..\..
azd deploy
azd deploy(azd up ではなく)はアプリコードのみを再デプロイするので、インフラを再作成せず短時間で完了します。
動作確認
エンドポイントのURLにアクセスすると、チャット画面が表示されます。
試せること
- 配置したドキュメントに関する質問の入力
- 回答に添付される引用(Citation)の確認
- 「Thought Process」タブで検索クエリや取得チャンクの可視化
- 右上の「Settings」からプロンプトや検索パラメータの変更
引用元のドキュメント名・ページが回答と一緒に表示されるため、「どの資料に基づいて回答したか」がすぐに追跡できる点が便利です。
後片付け
azd down
確認プロンプトに y を入力すると、リソースグループと配下のすべてのリソースが削除されます。
まとめ
azd up 一発でRAGの全コンポーネントが立ち上がるのは非常に体験が良かったです。社内PoC用途や、RAGアーキテクチャの学習素材として活用できると感じました。