12
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Azure更新情報をデータソースとしたRAGを用いてチャットボットを構築してみた #1

12
Last updated at Posted at 2026-03-25

はじめに

Microsoftが提供するクラウドサービスのAzureではサービスのアップデートや廃止など日々更新が行われています。
特にMicrosoftの新技術や新サービスを発表するMicrosoft Igniteの期間中には、約70件の更新情報が発表されました。

日々、業務でクラウドサービスを使用する中で各種サービスの更新情報を追うのは非常に重要である反面、更新情報だけでは「数が多すぎて追いきれない」、「結局どう変わったかが分からない」などの問題が生じると思います。

そこで、Azureの更新情報をデータソースとしたRAGを構築し、情報の収集と要約をするチャットボットを構築してみたので、その話をまとめます。

Azureの更新情報とは

まず、今回データソースとするのは公式が提供している「Azureの更新情報」についてです。
以下リンクにて閲覧が可能です。

リンクを踏むと以下のスクリーンショットのように更新情報の一覧が表示されます。
image.png

RAGについて 

※RAGに関する詳細な説明は本記事では省略します。

次にRAGについてです。RAGとはRetrieval-Augmented Generationの略で日本語では「検索拡張生成」と訳される手法のことです。LLMが外部の知識ベースやデータベースを検索し、その結果を動的に参照しながら回答を生成することで、最新情報や専門的な情報に基づいた応答を可能にするアーキテクチャのことを指します。

サービス構成図

今回は以下のようなサービスを用いて構築しました。
image.png

主要なサービスと今回の構成における責務は以下の通りです。

  • Azure AI Search
    データソースの蓄積、及び、回答に用いる情報の検索を担う
  • Azure OpenAI Service
    ユーザーからの質問の理解や回答文の生成などLLMの動作を担う
  • Azure Container Apps environment(ACA環境)
    ACAの動作やネットワーク制御を担う
  • Azure Container Apps(ACA)
    ユーザーインターフェースの提供、及び、各種サービスへの指示を担う
  • Azure Container Registry(ACR)
    ACAのコンテナイメージを格納するレジストリを担う

今回は実験的に構築するためACAを用いた最小限の構成を目指し、コンテナアプリ1つで構築する方針とします。

手順

ここからは実際に構築する際の手順になります。

クラウドリソースのデプロイ

  1. VNetをデプロイ(サブネットも作成)
  2. Azure AI Searchをデプロイ(インデックスも作成)
    フィールドは「title」、「link」、「description」、「date」と定義
  3. Azure OpenAI Serviceをデプロイ
  4. ACA環境をデプロイ
  5. ACRをデプロイ
  6. ACRにコンテナイメージをpush
  7. ACAをデプロイ

ローカルPCでデータソースの準備、及び、登録

  1. 更新情報の取得
    以下の赤枠をクリックしRSSフィードが公開されているページを開いて、画面上のテキストを全選択しローカルPCに「任意のファイル名.xml」として保存する。
    image.png

    以下はRSSフィードの例になります。
    ※非常に長いので抜粋した情報です。

    <?xml version="1.0" encoding="utf-8"?>
    <rss xmlns:a10="http://www.w3.org/2005/Atom" version="2.0">
        <channel>
            <title>Azure service updates</title>
            <link>https://www.microsoft.com/releasecommunications/api/v2/Azure/rss</link>
            <description>Azure service updates</description>
            <lastBuildDate>Wed, 11 Mar 2026 18:00:35 Z</lastBuildDate>
            <ttl>1440</ttl>
            <item>
                <guid isPermaLink="false">558145</guid>
                <link>https://azure.microsoft.com/updates?id=558145</link>
                <category>Launched</category>
                <category>Databases</category>
                <category>Hybrid + multicloud</category>
            <category>Azure Database for PostgreSQL</category>
                <category>Features</category>
                <title>[Launched] Generally Available: Terraform, Bicep, Ansible support for elastic clusters on Azure Database for PostgreSQL </title>
                <description>You can now provision and manage Azure Database for PostgreSQL elastic clusters using Terraform, Bicep, and Ansible, with full General Availability support. With native infrastructure-as-code support, you can consistently create, scale, and manage elastic</description>
                <pubDate>Wed, 11 Mar 2026 18:00:35 Z</pubDate>
                <a10:updated>2026-03-11T18:00:35Z</a10:updated>
            </item>
            <item>
                <guid isPermaLink="false">558140</guid>
                <link>https://azure.microsoft.com/updates?id=558140</link>
                <category>Launched</category>
                <category>Databases</category>
                <category>Hybrid + multicloud</category>
                <category>Azure Database for PostgreSQL</category>
                <category>Features</category>
                <title>[Launched] Generally Available: Azure Database for PostgreSQL dashboards with Grafana </title>
                <description>You can now monitor your Azure Database for PostgreSQL with rich, built-in Grafana dashboards—right from the Azure portal. This native integration with Azure Monitor means you no longer need to set up or manage a separate Grafana instance to get deep visi</description>
                <pubDate>Wed, 11 Mar 2026 18:00:35 Z</pubDate>
                <a10:updated>2026-03-11T18:00:35Z</a10:updated>
            </item>
            ・
            ・
            ・
    

    Visual Studio Codeの拡張機能「XML Tools」をインストールし、以下ショートカットで成型すると見やすくなります。
    Windows: Shift + Alt + F
    MacOS: Shift + Option + F
    Linux: Ctrl + Shift + I

  2. インデックス登録
    ローカルPCに保存したXMLファイルを作成済みのインデックスに合うように整形し、インデックスへ登録を行う。今回はChatGPTにXMLファイルとインデックスの要件を伝えて作成したpythonスクリプトを使用することにしました。

    ChatGPTに入力した例文
    xmlファイルを参照し、Azure AI Searchのインデックスに登録するようなpythonスクリプトを作成して
    - (例)XMLファイル内のエレメント → Azure AI Searchのフィールド
    - title → title
    - link → link
    - description → description
    - pubDate → date
    

    イメージは以下の図の通り。
    image.png

    RSSフィードのリンクを提示して、pythonスクリプトの作成を指示したところ上手くいかなかったので、xmlファイルに転記してから参照することで、上手く生成されました。

結果

実際にACAのコンソール上で以下のコマンドを実行することで、質問に対する回答が生成されました。

curl -s http://localhost:8080/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "AKSについて教えて", "top_k": 10, "mode": "summary"}' \
| python3 -c "import sys, json; print(json.loads(sys.stdin.read())['answer'])"

実行コマンドの中でも「-d '{"message": "AKSについて教えて", "top_k": 10, "mode": "summary"}' 」で質問に関する情報を記述します。それぞれの内容は以下の通りです。

  • "message":質問内容
  • "top_k":検索インデックスから上位何件分の関連情報を取得するかを指定
  • "mode":更新情報を列挙した後に総括を出力するモードを指定

回答の精度や出力形式はアプリの実装次第なため、まだまだ改修が必要ですが、Azure更新情報を基に「総括」として文章を生成しているのでRAGの構築は出来たと思います!

# curl -s http://localhost:8080/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "AKSについて教えて", "top_k": 10, "mode": "summary"}' \
| python3 -c "import sys, json; print(json.loads(sys.stdin.read())['answer'])"> > > 
# 更新情報概要

## 1. 主な一般提供 (GA)
- **タイトル (Title):** Launched: Generally Available: AKS Automatic 
  - **日付 (Date):** 2025年9月16日
  - **要点の要約:** AKS 自動化機能が一般提供されました。
  
- **タイトル (Title):** Launched: Generally Available: AI toolchain operator add-on (KAITO) for AKS 
  - **日付 (Date):** 2025年10月7日
  - **要点の要約:** AKS 用の AI ツールチェーンオペレーター アドオン (KAITO) が一般提供されました。

- **タイトル (Title):** Launched: Generally Available: AKS Automatic pod readiness SLA 
  - **日付 (Date):** 2025年11月18日
  - **要点の要約:** AKS の自動ポッドレディネス SLA が一般提供されました。

- **タイトル (Title):** Launched: Generally Available: Pod sandboxing on AKS 
  - **日付 (Date):** 2025年11月18日
  - **要点の要約:** AKS 上でのポッドサンドボックス機能が一般提供されました。

## 2. 主な Public Preview
- **タイトル (Title):** In preview: Public Preview: Agentic CLI for AKS 
  - **日付 (Date):** 2025年11月11日
  - **要点の要約:** AKS 向けの Agentic CLI がプレビュー提供されました。

- **タイトル (Title):** In preview: Public Preview: Azure Linux OS Guard for AKS 
  - **日付 (Date):** 2025年11月11日
  - **要点の要約:** AKS 向けの Azure Linux OS Guard がプレビュー提供されました。

- **タイトル (Title):** In preview: Public Preview: Azure Kubernetes Service desktop 
  - **日付 (Date):** 2025年11月18日
  - **要点の要約:** Azure Kubernetes Service のデスクトップ版がプレビュー提供されました。

- **タイトル (Title):** In preview: Public Preview: Azure Network Watcher Topology – AKS Visualization
  - **日付 (Date):** 2025年11月18日
  - **要点の要約:** AKS のための Azure Network Watcher トポロジー可視化がプレビュー提供されました。

- **タイトル (Title):** In preview: Public Preview: Windows Server 2025 on AKS
  - **日付 (Date):** 2025年11月18日
  - **要点の要約:** AKS 上での Windows Server 2025 がプレビュー提供されました。

- **タイトル (Title):** In preview: Public Preview: AKS Automatic managed system node pools
  - **日付 (Date):** 2025年11月18日
  - **要点の要約:** AKS の自動管理されたシステムノードプールがプレビュー提供されました。

## 3. 廃止 / Retirement
- 現在廃止情報は存在しません。

## 4. 総括
最近の AKS に関する更新では、多数の機能が一般提供される一方で、いくつかの重要な機能がプレビュー提供されています。特に、AKS の自動化と新しいツールの追加に注力されており、今後のアップデートが期待されます。プレビュー機能が多いことから、ユーザーからのフィードバックを受けつつさらなる改善が進められるでしょう。

さいごに

今回はAzureの更新情報をデータソースとしたRAGの構築を行いました。これで情報収集の効率化を図る土壌が整ったと思っています。

しかし、今回の構成では「Azure上のリソース+ローカルPC」が必要、かつ、更新情報の増えるたびにローカルPCからAzure AI Searchに定期的にデータを投入を実施する必要があるため非常に手間が多いと思います。
ですので今後はAzure上でのみ完結するように改修していきたいと思います。

また、ACAには「ジョブ」という機能があり、タイマトリガやHTTPトリガを設定して定期的なコンテナの起動、実行が可能です。このジョブ機能を用いることで、現在ローカルPCで行っている「データソースの準備+登録作業」を定期的かつ自動的にRSSフィードを取得し、インデックスへデータを登録する等を考えています。

これらを踏まえた改良版を後日「Azure更新情報をデータソースとしたRAGを用いてチャットボットを構築してみた #2」として投稿予定です。

12
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?