Microsoft Azure OpenAIを利用したRAG構築

目次

1. はじめに

2. Microsoft Azure OpenAIによるRAG構築

2.1 リソースグループの作成

2.2 Azure OpenAIの作成

2.3 ストレージアカウントの作成

2.4 社内データの配置

2.5 チャットボットの試用

3. 最後に

1.はじめに

初めまして、入社2年目のArc Tanです。

近年、生成AIの進化とともに注目を集めている技術のひとつが RAG(Retrieval-Augmented Generation) です。RAGとは、社内データ等の事前に用意したデータを検索して活用しながら回答を生成する仕組みのことです。大規模言語モデル(LLM)単体では困難だった「最新情報の参照」や「業務固有ドキュメントの活用」などの課題を、RAGのアプローチによって解決することが可能となり、多くの業界で実用化が進んでいます。

本ブログでは、Microsoft Azure OpenAI Service を用いたRAGシステムの構築方法について、実際のアーキテクチャや実装手順を交えながらご紹介します。特に、以下のような方に向けた内容となっています。

  • Azure OpenAIの導入を検討している方
  • 独自データを使った社内向けチャットシステムの構築に関心がある方
  • RAGの基本的な仕組みと構成方法を学びたい方

「生成AIを業務に活かしたいけれど、どこから手を付けていいか分からない」そんな方の一助となれば幸いです。それでは、Azure OpenAI を用いた RAG 構築を実施していきましょう。

2.Microsoft Azure OpenAIによるRAG構築

本ブログでは、社内データを使用した社内向けチャットシステムを構築します。今回は社内のISMS文書を参照させます。流れは以下の通りです。

2.1 リソースグループの作成

2.2 Azure OpenAIの作成

2.3 ストレージアカウントの作成

2.4 社内データの配置

2.5 チャットボットの試用

2.1リソースグループの作成

まずは、Azure上でリソースを一元的に管理するための「リソースグループ」を作成します。リソースグループは、Azureにおけるリソース(AIサービス、ストレージ、仮想マシンなど)を論理的にまとめる単位であり、作成必須の項目です。後続のリソース(Azure OpenAIやストレージアカウントなど)もすべてこのリソースグループ内に作成していきます。

リソースグループ作成手順

  1. Azureポータルにログインし、左側メニューから「リソース グループ」を選択します。
  2. + 追加」をクリックし、新しいリソースグループを作成します。
  3. 以下の情報を入力します。
  • サブスクリプション:該当のAzureサブスクリプションを選択
  • リソースグループ名:例)isms-openai-rg01(用途が分かる名前が望ましい)
  • リージョン:Azure OpenAIを利用可能なリージョンを選択

補足

Azure OpenAIはすべてのリージョンで利用可能ではありません。利用可能なリージョンも高頻度で更新されています。必ず Azure OpenAI の対応リージョン を事前に確認してください。本ブログでは、Azure OpenAIの機能が最も充実している“eastus2”を選択しております。

参考: Azure OpenAI in Azure AI Foundry Models – Azure OpenAI | Microsoft Learn

  1. 入力内容を確認し、「作成」をクリックして完了します。

2.2 Azure OpenAIの作成

次に、今回のRAG構成の中核となる Azure OpenAI リソースを作成します。Azure OpenAIは、OpenAIの大規模言語モデル(GPT-4 など)をAzureのインフラ上でセキュアに利用できるサービスです。自社データと組み合わせることで、高度な自然言語処理や対話型AIを実現することが可能です。

Azure OpenAI作成手順

1.Azureポータルの検索バーから「Azure OpenAI」を検索し、選択します。

2.「+ 作成」をクリックします。

3.以下の項目を入力します。

  • サブスクリプション:該当のAzureサブスクリプションを選択
  • リソースグループ:上記で作成したもの(例:isms-openai-rg01)を選択
  • リソースグループ:上記で作成したもの(例:isms-openai-rg01)を選択
  • 名前:一意の名前を入力(例:isms-IOAI-01)
  • 価格レベル:標準(Standard)を選択

入力内容を確認して「確認および作成」をクリック → 「作成」を実行します。

※ネットワークの項目ではPrivate Endpointを設定可能です。Azure OpenAIでは、API経由の通信はHTTPSにより暗号化されますが、作成後のチャットボットを社内ネットワークと統合する場合は Private Endpointも検討する必要があります。

2.3 ストレージアカウントの作成

RAG構成において、社内データを格納・検索対象とするためのストレージ基盤が必要です。本ステップでは、Azureのストレージアカウントを作成し、後続のインデキシング処理や検索用データ配置に備えます。
今回は機密性の高い社内文書を格納するため、ネットワークアクセス範囲を適切に扱うことが重要です。

ストレージアカウント作成手順
1. Azureポータルで「ストレージ アカウント」を検索し、「+ 作成」をクリックします。
2. 「基本」タブにて、以下の情報を入力します。

  • サブスクリプション:該当のAzureサブスクリプションを選択
  • リソースグループ:先ほど作成したもの(例:isms-openai-rg01)を選択
  • ストレージアカウント名:グローバル一意の名前を入力(例:ismsstorage01)
  • リージョン:上記で選択したリージョンを選択
  • プライマリサービス:Azure Blob Storage または Azure Data Lake Storage Gen2を選択
  • パフォーマンス:Standardを選択
  • 冗長性:LRS(ローカル冗長ストレージ)を選択

3. 「ネットワーク」タブにて、必要に応じて以下を設定します。※詳細タブはデフォルトで設定

  • ネットワークアクセス:選択した仮想ネットワークとIPアドレスからのパブリックアクセスを有効にする

4. 内容を確認し「作成」をクリックします。

※「データ保護」、「暗号化設定」タブに関してはデフォルト設定のまま作成します。

2.4 社内データの配置

ストレージアカウントの作成が完了したら、社内データの配置作業を行います。まずはデータ配置先のコンテナー作成から始めます。

コンテナー作成手順

  1. Azureポータルで対象の「ストレージ アカウント」から「コンテナー」のタブを選択し、「+ コンテナーの追加」をクリックします。
  2. 新しいコンテナー名(例:isms-openai-blob01)を入力して「作成」をクリックします。

コンテナーの作成ができたら、作成したコンテナーに社内データの配置を行います。Azure Cognitive Search などのインデクサーを通じて検索対象とするため、以下のような形式のファイルが扱いやすく、一般的に推奨されます。

  • PDF (.pdf)
  • Word (.docx)
  • Excel (.xlsx)
  • プレーンテキスト (.txt)
  • Markdown (.md) など

本ブログではpdf形式の文書を配置します。

データの配置手順

1. Azureポータルからストレージアカウントを開きます。

  • 「コンテナー」メニューから、先ほど作成したコンテナーを選択

2.「アップロード」ボタンをクリックし、対象ファイルをアップロードします。

※複数ファイルを一括でアップロード可能です。

※必要に応じて、フォルダ構成を作成し、分類ごとに格納します。

2.5 チャットボットの試用

コンテナーへのデータの配置が完了したら、実際にチャットが使用できるか試してみましょう。

チャットボット試用手順

1.作成したAzure Open AIサービスより「Azure AI Foundry ポータルに移動」をクリックします。

2.「チャット」>「+ デプロイの作成」をクリックし、チャット完了モデルを選択します。

本ブログでは「gpt-4o」を選択しています。
※モデル作成時点ではgpt-4oは最新モデルでしたが、ブログ公開時点ではgpt-5が公開されています。

各モデルの性能は以下のサイトでも確認できます。

参考: Azure AI Foundry における Azure OpenAI モデル – Azure OpenAI | Microsoft Learn

3. Azure AI Foundry ポータルの「チャットプレイグラウンド」より「+ データソースの追加」をクリックし、以下の項目を設定します。

  • データソースの選択:Azure Blob Storageを選択
  • サブスクリプション:該当のAzureサブスクリプションを選択
  • Azure Blob ストレージリソースの選択:作成したストレージアカウント 
    (例: ismsstorage01)を選択
  • ストレージコンテナーを選択してください:作成したBLOB
    (例: isms-openai-blob01)を選択
  • Azure AI 検索リソースを選択:使用するAzure AI Searchを選択 
    ※作成してなければ新規で作成
  • インデックス名を入力してください:新規で使用するインデックス名を入力
  • インデクサーのスケジュール:Onceを選択

4.接続設定において、認証の種類を「APIキー」に変更し、保存します。

※データ管理タブはデフォルトで設定しています。

5. チャットボットの試用

Azure AI Foundry ポータルの「チャットプレイグラウンド」より、与えた社内データに関する質問をします。

質問内容:

==========================================

ISMSの適応範囲の組織や対象者を教えてください。

==========================================

回答:

==========================================

ISMS (情報セキュリティマネジメントシステム)の適応範囲における組織や対象者について、以下の情報が確認できます

・組織: 適応範囲内の組織は「株式会社Y2S」です。

・対象者: 適応範囲内の対象者は「すべての要員」とされています。

この情報は、ISMS文書における適用範囲の記載に基づいています。
===========================================

質問をしたところ、回答には「株式会社Y2S」という単語が含まれており、確かに弊社のデータを利用してAIが回答していることが確認できました。

3. 最後に

今回、Azure OpenAI を活用し、社内データを活用したチャットシステム(RAG)を構築することで、社内情報の活用方法に新たな可能性を感じました。

従来、関係部署に問い合わせが必要だったナレッジも、自然言語で手軽に参照できるようになり、業務効率の向上や属人化の解消が期待されます。

今回はAzureポータルでのチャットプレイグラウンドにおけるチャットを実施しました。

作成したチャットボットをWEB UIに落とし込み、社内ネットワークからの安全で使いやすいチャットボットを作成することも可能です。

本ブログでAzure OpenAIによるRAG構築に興味を持った方は是非自身でも作成してみてください。