SB C&Sの最新技術情報 発信サイト

C&S ENGINEER VOICE

SB C&S

「NetApp GenAI Toolkit for Azure」によるRAG+生成AIシステムの作り方を徹底解説!

ストレージ / HCI
2025.03.12

みなさん、こんにちは。
SB C&S 技術担当の河村です。
   
いきなりですが「RAG」ってご存じですか?

今やITに携わる方であれば、避けては通れないAIというカテゴリ。
その中でも注目を一際集めているのはやはり生成AIではないでしょうか。
RAGは、そんな生成AIの検索能力を拡張してくれる機能で、例えばChatGPTを代表する対話型のAIであれば、ユーザーからの質問を一般的な情報をもとに回答してくれますが、それでは専門性に富んだ質問や自社内の固有情報などの回答は難しくなります。

そんなとき、専門性のあるデータや自社内データにアクセスして、独自の回答を作り出してくれる技術をRAG(Retrieval Augmented Generation)と言います。

今回は、そんなRAGを使った生成AIシステムを簡単に作ることができるツール「NetApp GenAI Toolkit」について、構築の条件や気を付けるポイントなどをご紹介させていただきます。

 NetApp GenAI Toolkit             


NetApp GenAI Toolkitとは、RAGを使用した生成AIシステムを迅速に実装するためのフレームワーク(ツール群)です。

一般的にRAGを使用した生成AIは「ユーザーの依頼を受け付けるアプリケーション」「人間の言語をAI用に変換し、保存するベクトルDB」「RAG用のデータを保存するストレージ」「回答を生成するAIモデル」の4つを組み合わせて構成されています。

01.png

スクラッチでAIシステムを構築する場合は、上記のようなコンポーネントを0から作る必要がありますが、それを実現するためにデータサイエンティストやAIエンジニアといった人材を確保するには、かなりのコストがかかるのも事実です。

このような課題を持つ企業に対して、GPT-4oなどの開発済みモデルを利用し、かつその他のコンポーネントもあらかじめ用意されたツール群をTerraformにより簡単に構築できることがNetApp GenAI Toolkit最大のメリットになります。

※Terraformは、マルチクラウド上のコンピュータやネットワークの構築を自動化するInfrastructure as Code(IaC)の1種で、HashiCorp社からオープンソースとして公開されています。

02.png

NetApp GenAI ToolkitはAzure版とGoogle Cloud版の2種類がリリースされており、どちらもオープンソースとしてGitHubから情報を入手することができます。

「NetApp GenAI Toolkitはこちら」

Azure版、Google Cloud版それぞれの構成は以下になります。

【Azure版】
  • AIモデル:Azure OpenAI
  • RAG用ストレージ:Azure NetApp Files/Cloud Volumes ONTAP(Azure)
  • ChatApp:NetApp GenAI Toolkit for Azure
  • ベクトルDB:NetApp GenAI Toolkit for Azure

【Google Cloud版】

  • AIモデル:Vertex AI
  • RAG用ストレージ:Google Cloud NetApp Volumes/Cloud Volumes ONTAP(Google Cloud)
  • ChatApp:NetApp GenAI Toolkit for Google Cloud
  • ベクトルDB:NetApp GenAI Toolkit for Google Cloud

今回は、Azure版を使用しての検証結果をご紹介します。

 前提条件             


今回、以下の条件でNetApp GenAI Toolkitを構築します。
  • Terraform実行環境:Azure上のLinux VM(CentOS 8.2)
  • RAG用のストレージ環境:Azure NetApp Files(NFSプロトコル)
  • Azure OpenAI環境:Azure OpenAIインスタンス
  • AIモデル:gpt-4o、text-embedding-3-large、dall-e-3

また、今回は事前にAzure側で以下の設定が完了している前提となります。

  • リソースグループ
  • 仮想ネットワーク
  • 仮想サブネット

Azure環境を利用する場合は事前にMicrosoft アカウントおよびAzureサブスクリプションを用意する必要があります。

 構築手順             


NetApp GenAI Toolkitの構築は大きく以下の5つのフェーズに分かれます。

① Azure NetApp Filesの作成
② Azure OpenAIの作成
③ Terraform実行環境の作成
④ NetApp GenAI Toolkitの作成
⑤ NetApp GenAI Toolkitの設定

ここからは、各フェーズの手順に分けて詳しく解説していきます。

① Azure NetApp Filesの作成

まずは、RAG用のデータを格納するためのストレージを用意します。
Azure NetApp Files(以下:ANF)のパラメータは以下になります。
  • サービスレベル:Standard
  • 容量プール:1TiB ※最小構成
  • プロトコル:NFS
  • ボリューム容量:50TiB
  1. Azureポータルにアクセスし、「Azure NetApp Files」で検索します。
    03.png

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

  3. ANFアカウントの各パラメータを入力し、「作成」をクリックします。
    名前:ANFの名前(任意)
    サブスクリプション:利用するサブスクリプション
    リソースグループ:ANFを配置するリソースグループ
    場所:ANFのリージョン
    05.png

  4. ANFアカウントの作成が完了したことを確認します。
    06.png

  5. ANFの管理画面に戻り、作成したANFアカウントをクリックします。
    07.png

  6. 「ストレージサービス」-「容量プール」-「プールの追加」をクリックします。
    08.png

  7. プールの各パラメータを入力し、「作成」をクリックします。
    名前:プールの名前(任意)
    サービスレベル:IOPS、スループットのレベルを選択
    サイズ:デプロイする容量
    09.png

  8. プールが作成されたことを確認します。
    10.png

  9. 「ストレージサービス」-「ボリューム」-「ボリュームの追加」をクリックします。
    11.png

  10. ボリュームの各パラメータを入力し、「次:プロトコル」をクリックします。
    ボリューム名:ボリュームの名前(任意)
    容量プール:事前に作成したプール
    クォータ:プールからボリュームに切り出す容量
    仮想ネットワーク:事前に作成した仮想ネットワーク
    委任されたサブネット:事前に作成した仮想サブネット
    ※上記以外はデフォルト設定で構築
    12.png
    13.png

  11. プロトコルの各パラメータを入力し、「次:タグ」をクリックします。
    プロトコルの種類:利用するプロトコル
    ファイルパス:作成中のボリューム
    バージョン:プロトコルのバージョン
    ※上記以外はデフォルト設定で構築
    14.png

  12. デフォルトのまま「次:確認および作成」をクリックします。
    15.png

  13. 各パラメータを確認し、「作成」をクリックします。
    16.png

  14. ボリュームが作成されたことを確認します。
    17.png

  15. 「ストレージサービス」-「マウントに関する指示」からマウントに必要な情報を確認しておきます。
    18.png

② Azure OpenAIの作成

続いて、Azure OpenAIのインスタンスとAIモデルをデプロイします。
Azure OpenAIのパラメータは以下になります。

  • リソースグループ:ANFと同じ
  • リージョン:ANFと同じ
  • AIモデル:gpt-4o(文章生成)、text-embedding-3-large(ベクトル化)、dall-e-3(画像生成)
    ※AIモデルはNetApp GenAI ToolkitのReadmeに記載されているものを採用
  1. 「Azure OpenAI」で検索します。
    01.png

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

  3. インスタンスの各パラメータを入力し、「次へ」をクリックします。
    サブスクリプション:利用するサブスクリプション
    リソースグループ:ANFと同じ
    リージョン:ANFと同じ
    名前:インスタンスの名前(任意)
    価格レベル:Standard(検証時点ではStandardのみ選択可能)
    03.png
    04.png

  4. デフォルトのまま「次へ」をクリックします。
    05.png

  5. デフォルトのまま「次へ」をクリックします。
    06.png

  6. 各パラメータを確認し、「作成」をクリックします。
    07.png

  7. インスタンスが作成されたことを確認します。
    08.png

  8. 「リソース管理」-「モデル デプロイ」-「展開の管理」をクリックします。
    09.png

  9. Azure OpenAI Studioへ移動するので、「モデルのデプロイ」-「基本モデルをデプロイする」をクリックします。
    10.png

  10. gpt-4oを選択し、「確認」をクリックします。
    11.png

  11. モデルの各パラメータを入力し、「デプロイ」をクリックします。
    デプロイ名:モデルの名前(任意)
    モデル バージョン:2024-05-13(既定)
    ※NetApp GenAI ToolkitのReadmeに記載されているバージョンを採用
    ※上記以外はデフォルト設定で構築
    12.png
    13.png

  12. モデルがデプロイされたことを確認します。
    14.png

  13. 同様に「text-embedding-3-large」「dall-e-3」モデルについてもデプロイします。
    15.png

  14. 「リソース管理」-「キーとエンドポイント」からAzure OpenAIへのアクセス用エンドポイントを確認しておきます。
    16.png

③ Terraform実行環境の作成

続いて、NetApp GenAI ToolkitをデプロイするためのTerraform実行環境を作成します。
今回はAzure上にLinuxサーバーとして構築するため、パラメータは以下になります。

  • リソースグループ:ANFと同じ
  • リージョン:ANFと同じ
  • OS:CentOS-base 8.2

また、Terraformを実行するために以下のツールをインストールします。

  • Terraformモジュール
  • AzureCLI
  • Git
  1. 「Virtual Machines」で検索します。
    1.png

  2. 「作成」-「Azure 仮想マシン」をクリックします。
    2.png

  3. 仮想マシンの各パラメータを入力し、「次:ディスク」をクリックします。
    サブスクリプション:利用するサブスクリプション
    リソースグループ:ANFと同じ
    仮想マシン名:仮想マシンの名前(任意)
    リージョン:ANFと同じ
    イメージ:仮想マシンのOSを選択
    サイズ:仮想マシンのCPU、メモリ、ディスク容量を選択
    キーの組名:SSHキーの名前(任意)
    ※上記以外はデフォルト設定で構築
    3.png
    4.png
    5.png
    6.png
    7.png
    ※仮想マシン名を「GenAI-VM」にするとNetApp GenAI ToolkitでデプロイされるLinuxサーバーと同じになり、デプロイ中にエラーが発生するので注意してください。

  4. ディスクの各パラメータを入力し、「次:ネットワーク」をクリックします。
    OS ディスクの種類:ディスクの種類を選択
    ※上記以外はデフォルト設定で構築
    8.png

  5. ネットワークの各パラメータを入力し、「次:管理」をクリックします。
    仮想ネットワーク:ANFと同じ
    ※上記以外はデフォルト設定で構築
    9.png

  6. デフォルトのまま「次:監視」をクリックします。
    10.png
  7. デフォルトのまま「次:詳細」をクリックします。
    11.png

  8. デフォルトのまま「次:タグ」をクリックします。
    12.png

  9. デフォルトのまま「次:確認および作成」をクリックします。
    13.png

  10. 各パラメータを確認し、「作成」をクリックします。
    14.png

  11. 「秘密キーのダウンロードとリソースの作成」をクリックします。
    15.png

  12. 仮想マシンが作成されたことを確認します。
    16.png

  13. 「SSHキー」で検索します。
    17.png

  14. SSHキーが作成されていることを確認し、該当のSSHキーをクリックします。
    18.png

  15. 「概要」-「公開キー」に表示されている内容をコピーし、「~.pem」ファイルとして作業端末の任意の場所に保管します。
    19.png

  16. TeratermなどのターミナルソフトからSSHで仮想マシンにアクセスします。
    ユーザー名:仮想マシン作成時に指定したユーザー(デフォルト:azureuser)
    キーファイル:手順15で作成した「~.pem」ファイル
    20.png

  17. 以下のコマンドを実行し、NetApp GenAI Toolkitで作成されるVMとSSH接続をするための公開鍵を作成します。
    >ssh-keygen
    画像1.jpg

  18. 以下のコマンドを実行し、Terraformをダウンロードします。
    >curl -OL https://releases.hashicorp.com/terraform/1.9.8/terraform_1.9.8_linux_amd64.zip
    22.jpg

  19. 以下のコマンドを実行し、ダウンロードしたファイルを解凍します。
    >unzip terraform_1.9.8_linux_amd64.zip
    23.jpg

  20. 以下のコマンドを実行し、Terraformのインストールとパスの設定を行います。
    >mkdir bin
    >install terraform ./bin/
    >export PATH=$(pwd)/bin:$PATH
    >terraform version
    24.jpg

  21. 以下のコマンドを実行し、AzureCLIをインストールします。
    >curl -L https://aka.ms/InstallAzureCli | bash
    >az version
    25.png

  22. 以下のコマンドを実行し、Azureへの認証を行います。
    >az login
    ※認証用のコードを控えておいてください。
    26.png

  23. 以下のURLへアクセスし、認証用コードを入力し、「次へ」をクリックします。
    URL:https://microsoft.com/devicelogin
    27.png

  24. 認証用のアカウントを選択します。
    28.png

  25. 「続行」をクリックします。
    29.png

  26. 認証が完了したことを確認します。
    30.jpg

  27. 以下のコマンドを実行し、Gitをインストールします。
    >sudo dnf install git
    31.png

④ NetApp GenAI Toolkitの作成

ここまでの手順で事前準備は完了しました。
いよいよNetApp GenAI Toolkitをデプロイします。
Terraformを実行することで以下のリソースが自動作成されます。

  • Linux VM:Docker用サーバー
  • ChatApp用コンテナ:チャットアプリ(インターフェース)
  • ChromaDB用コンテナ:ベクトルデータベース
  • LangChain Retriever用コンテナ:ANFやOpenAIとのAPI連携
  1. 以下のコマンドを実行し、NetApp GenAI Toolkitのリポジトリをクローンします。
    >git clone https://github.com/NetAppLabs/genai-toolkit-terraform-deployment
    32.jpg

  2. 以下のコマンドを実行し、Terraformの変数ファイルにANFへ接続するための情報を入力します。
    >cd genai-toolkit-terraform-deployment/anf/
    >vi terraform.tfvars
    33.jpg
    subscription:利用するサブスクリプション
    resource_group_name:ANFが利用するリソースグループ
    location:ANFが利用するロケーション
    vnet:ANFが利用する仮想ネットワーク
    subnetid:ANFが利用する仮想サブネット
    admin_username:NetApp GenAI ToolkitでデプロイされるLinuxのアカウント名
    admin_password:NetApp GenAI ToolkitでデプロイされるLinuxのパスワード
    admin_ssh_key_file:NetApp GenAI ToolkitでデプロイされるLinuxのSSHキー
    anf_volumes:ANFへのアクセスパス
    34.png
    ※画像はdiffコマンドによる差分チェック(赤文字:編集前緑文字:編集後)

  3. 以下のコマンドを実行し、Terraformを初期化します。
    >terraform init
    35.jpg

  4. 以下のコマンドを実行し、変数ファイルを読み込ませます。
    >terraform plan
    1.png

  5. 以下のコマンドを実行し、Terraformを起動します。
    >terraform apply
    2.png

  6. NetApp GenAI Toolkitがデプロイされ、アプリケーションのURLが発行されることを確認します。
    3.png

  7. 発行されたURLにアクセスします。
    4.jpg

⑤ NetApp GenAI Toolkitの設定

NetApp GenAI Toolkitのデプロイが完了しましたが、このままではAIチャットとして利用することはできません。
最後にNetApp GenAI ToolkitとANF、AIモデルを紐づける設定を行います。

    1. 「Register」をクリックします。
      5.png

    2. NetApp GenAI Toolkitの利用アカウントを登録し、「Register」をクリックします。
      6.png

    3. アカウントを入力し、「Login」をクリックします。
      7.png

    4. 「アカウント名」-「API Keys」をクリックします。
      8.png

    5. 「+ Create」をクリックします。
      9.png

    6. Azure OpenAIと連携するためのAPIキーに関するパラメータを入力し、「Save」をクリックします。
      Name:APIキーの名前(任意)
      Key:APIキー
      10.png
      ※APIキーはAzure OpenAI Studioから事前に作成したインスタンスのキーをコピーします。
      11.png

    7. 「アカウント名」-「Models」をクリックします。
      12.png

    8. 「gpt-4o(Azure OpenAI)」-「Edit」をクリックします。
      13.png

    9. gpt-4oの各パラメータを入力し、「Save」をクリックします。
      API Key:手順6で作成したAPIキー
      API version:AIモデルのAPIバージョン
      Endpoint:AIモデルへのアクセスパス
      14.png
      ※API versionとEndpointはAzure OpenAI Studioからデプロイしたモデルの情報を確認します。
      15.png

    10. 同様に「Text-embedding-3-large」「dall-e-3」モデルについてもAPI KeyとAPI version、Endpointを設定します。
      ※設定が完了するとステータスが「CONFIGURED」に変わります。
      16.png

    11. 「Azure NetApp Files」-「事前作成したANFのボリューム」-「Open AI」を選択します。
      17.png

    12. 「Azure-GPT-4o(Azure OpenAI)」を選択し、「Explore」をクリックします。
      18.png

    13. チャット画面が表示されることを確認します。
      19.png

    以上でNetApp GenAI Toolkitの構築は完了です。

     動作検証             


    今回、動作検証として以下の項目について確認を行います。

    ① 文章生成ができること
    ② 画像生成ができること
    ③ RAG(検索拡張生成)ができること

    ① 文章生成ができること

    まずは、生成AIとしてチャットへ記載した質問に正しく回答ができるか確認します。
    今回は、分かりやすく「SB C&Sとはどんな会社ですか?」と質問を投げてみました。

    すると・・・
    01.png

    回答として、ある程度納得できる内容が返ってきました。
    文章生成は問題なく動いているようです。

    ちなみに、画面右下の「Chat with your data」をクリックすると、生成された文章をエクスポートしたり、別ウィンドウで表示させたりすることが可能です。
    また、画像生成についてもここから行います。

    ② 画像生成ができること

    では、続いて画像生成ができるかどうか確認します。

    「SB C&Sをイメージした画像を生成してください。」

    ちょっと無茶ぶりな感じもしますがどうでしょうか・・・

    02.png

    まぁ良いでしょう!!!

    一応、「海沿いにある」「スマートビルと呼ばれる近未来型のビル」といったような、ある程度の要件は加味しているようにも見えます笑
    画像生成としてはちゃんとできていますしね。

    ③ RAG(検索拡張生成)ができること

    いよいよ、最終確認です。
    まず、RAG用の検索拡張データとしてANF内にいくつかのデータを保存します。

    03.png
    ※私が普段使用しているNetAppの勉強会用資料を保存

    この状態で、「NetAppについて勉強したい、資料はあるか」と聞いてみると・・・

    04.png

    ANF内に保存した資料の情報を用いて回答してくれました!
    さらに、ただ単に資料を紹介するだけでなく、資料内に記載されている情報を要約して文章を作ることまでできています!
    ANF内のデータをベクトル化して保存できていることが分かりますね!

    また、それだけでなくページを下の方にスクロールすると参考にした資料の簡易的な紹介文や、資料の内容に限定したチャットをすることができたりと、無償のツールとは思えない機能性も確認することができました。
    05.png

    以上で、動作検証も無事完了しました。

     まとめ    


    今回は、NetApp GenAI Toolkitについて紹介させていただきました。
    AIシステムの開発なんて個人的に全くイメージができていなかったのですが、このツールを使うことで簡易的なシステムを作ることができ、自分の中で勝手に抱いていた苦手意識が取り除かれたような気がします。

    「AIシステムがどんな構成になっているのか知りたい」という方々にも非常に良いツールなんじゃないかと思います。

    また、今回NetApp GenAI Toolkitを構築していく中で「オンプレONTAPサポートしてほしい」「AIエージェントみたいな最新のトレンドに対応はするだろうか」なんてことを考えていたら、直近のアップデートでNetApp GenAI Toolkitが進化しました!

    • バグの修正
       ⇒データの読み込みが遅かったり、GUIの動作不具合が解消される
    • オンプレへの対応
       ⇒デプロイ方式がTerraformからHelmへ変更
       ⇒AKS、GKS、ローカルK8sをサポート
       ⇒オンプレONTAPをサポート
    • 最新トレンドへの対応
       ⇒AIアシスタント/AIエージェントの実装を示唆
         ※こちらについては現段階では未実装です。

    ということで、次回はNetApp GenAI Toolkitの最新版を検証してみようと思います。
    気になる方は是非、次のブログもチェックいただけますと幸いです。

    ※サービスや製品の仕様ならびに動作に関しては、予告なく改変される場合があります。
    ※本記事は2025年3月時点の情報に基づいて作成しています。
     その後のアップデートによる仕様変更等についてはメーカードキュメントをご参照ください。


    SB C&S NetAppプロモーションTwitterアカウント】

    NetAppに関するさまざまな情報を公開しています。
    皆様フォロー宜しくお願いいたします。

    @sbcas_netapp_pr

    TwitterアプリからはこちらのQRコードもどうぞ。

    blog14.png

    著者紹介

    SB C&S株式会社
    ICT事業本部 技術本部 技術統括部 第1技術部 2課
    河村 龍 - Ryu Kawamura -