
みなさん、こんにちは。
今や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つを組み合わせて構成されています。

スクラッチでAIシステムを構築する場合は、上記のようなコンポーネントを0から作る必要がありますが、それを実現するためにデータサイエンティストやAIエンジニアといった人材を確保するには、かなりのコストがかかるのも事実です。
このような課題を持つ企業に対して、GPT-4oなどの開発済みモデルを利用し、かつその他のコンポーネントもあらかじめ用意されたツール群をTerraformにより簡単に構築できることがNetApp GenAI Toolkit最大のメリットになります。
※Terraformは、マルチクラウド上のコンピュータやネットワークの構築を自動化するInfrastructure as Code(IaC)の1種で、HashiCorp社からオープンソースとして公開されています。

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の作成
Azure NetApp Files(以下:ANF)のパラメータは以下になります。
- サービスレベル:Standard
- 容量プール:1TiB ※最小構成
- プロトコル:NFS
- ボリューム容量:50TiB
- Azureポータルにアクセスし、「Azure NetApp Files」で検索します。
- 「作成」をクリックします。
- ANFアカウントの各パラメータを入力し、「作成」をクリックします。
名前:ANFの名前(任意)
サブスクリプション:利用するサブスクリプション
リソースグループ:ANFを配置するリソースグループ
場所:ANFのリージョン - ANFアカウントの作成が完了したことを確認します。
- ANFの管理画面に戻り、作成したANFアカウントをクリックします。
- 「ストレージサービス」-「容量プール」-「プールの追加」をクリックします。
- プールの各パラメータを入力し、「作成」をクリックします。
名前:プールの名前(任意)
サービスレベル:IOPS、スループットのレベルを選択
サイズ:デプロイする容量 - プールが作成されたことを確認します。
- 「ストレージサービス」-「ボリューム」-「ボリュームの追加」をクリックします。
- ボリュームの各パラメータを入力し、「次:プロトコル」をクリックします。
ボリューム名:ボリュームの名前(任意)
容量プール:事前に作成したプール
クォータ:プールからボリュームに切り出す容量
仮想ネットワーク:事前に作成した仮想ネットワーク
委任されたサブネット:事前に作成した仮想サブネット
※上記以外はデフォルト設定で構築 - プロトコルの各パラメータを入力し、「次:タグ」をクリックします。
プロトコルの種類:利用するプロトコル
ファイルパス:作成中のボリューム
バージョン:プロトコルのバージョン
※上記以外はデフォルト設定で構築 - デフォルトのまま「次:確認および作成」をクリックします。
- 各パラメータを確認し、「作成」をクリックします。
- ボリュームが作成されたことを確認します。
- 「ストレージサービス」-「マウントに関する指示」からマウントに必要な情報を確認しておきます。
② Azure OpenAIの作成
続いて、Azure OpenAIのインスタンスとAIモデルをデプロイします。
Azure OpenAIのパラメータは以下になります。
- リソースグループ:ANFと同じ
- リージョン:ANFと同じ
- AIモデル:gpt-4o(文章生成)、text-embedding-3-large(ベクトル化)、dall-e-3(画像生成)
※AIモデルはNetApp GenAI ToolkitのReadmeに記載されているものを採用
- 「Azure OpenAI」で検索します。
- 「作成」をクリックします。
- インスタンスの各パラメータを入力し、「次へ」をクリックします。
サブスクリプション:利用するサブスクリプション
リソースグループ:ANFと同じ
リージョン:ANFと同じ
名前:インスタンスの名前(任意)
価格レベル:Standard(検証時点ではStandardのみ選択可能) - デフォルトのまま「次へ」をクリックします。
- デフォルトのまま「次へ」をクリックします。
- 各パラメータを確認し、「作成」をクリックします。
- インスタンスが作成されたことを確認します。
- 「リソース管理」-「モデル デプロイ」-「展開の管理」をクリックします。
- Azure OpenAI Studioへ移動するので、「モデルのデプロイ」-「基本モデルをデプロイする」をクリックします。
- gpt-4oを選択し、「確認」をクリックします。
- モデルの各パラメータを入力し、「デプロイ」をクリックします。
デプロイ名:モデルの名前(任意)
モデル バージョン:2024-05-13(既定)
※NetApp GenAI ToolkitのReadmeに記載されているバージョンを採用
※上記以外はデフォルト設定で構築 - モデルがデプロイされたことを確認します。
- 同様に「text-embedding-3-large」「dall-e-3」モデルについてもデプロイします。
- 「リソース管理」-「キーとエンドポイント」からAzure OpenAIへのアクセス用エンドポイントを確認しておきます。
③ Terraform実行環境の作成
続いて、NetApp GenAI ToolkitをデプロイするためのTerraform実行環境を作成します。
今回はAzure上にLinuxサーバーとして構築するため、パラメータは以下になります。
- リソースグループ:ANFと同じ
- リージョン:ANFと同じ
- OS:CentOS-base 8.2
また、Terraformを実行するために以下のツールをインストールします。
- Terraformモジュール
- AzureCLI
- Git
- 「Virtual Machines」で検索します。
- 「作成」-「Azure 仮想マシン」をクリックします。
- 仮想マシンの各パラメータを入力し、「次:ディスク」をクリックします。
サブスクリプション:利用するサブスクリプション
リソースグループ:ANFと同じ
仮想マシン名:仮想マシンの名前(任意)
リージョン:ANFと同じ
イメージ:仮想マシンのOSを選択
サイズ:仮想マシンのCPU、メモリ、ディスク容量を選択
キーの組名:SSHキーの名前(任意)
※上記以外はデフォルト設定で構築
※仮想マシン名を「GenAI-VM」にするとNetApp GenAI ToolkitでデプロイされるLinuxサーバーと同じになり、デプロイ中にエラーが発生するので注意してください。 - ディスクの各パラメータを入力し、「次:ネットワーク」をクリックします。
OS ディスクの種類:ディスクの種類を選択
※上記以外はデフォルト設定で構築 - ネットワークの各パラメータを入力し、「次:管理」をクリックします。
仮想ネットワーク:ANFと同じ
※上記以外はデフォルト設定で構築 - デフォルトのまま「次:監視」をクリックします。
- デフォルトのまま「次:詳細」をクリックします。
- デフォルトのまま「次:タグ」をクリックします。
- デフォルトのまま「次:確認および作成」をクリックします。
- 各パラメータを確認し、「作成」をクリックします。
- 「秘密キーのダウンロードとリソースの作成」をクリックします。
- 仮想マシンが作成されたことを確認します。
- 「SSHキー」で検索します。
- SSHキーが作成されていることを確認し、該当のSSHキーをクリックします。
- 「概要」-「公開キー」に表示されている内容をコピーし、「~.pem」ファイルとして作業端末の任意の場所に保管します。
- TeratermなどのターミナルソフトからSSHで仮想マシンにアクセスします。
ユーザー名:仮想マシン作成時に指定したユーザー(デフォルト:azureuser)
キーファイル:手順15で作成した「~.pem」ファイル - 以下のコマンドを実行し、NetApp GenAI Toolkitで作成されるVMとSSH接続をするための公開鍵を作成します。
>ssh-keygen - 以下のコマンドを実行し、Terraformをダウンロードします。
>curl -OL https://releases.hashicorp.com/terraform/1.9.8/terraform_1.9.8_linux_amd64.zip - 以下のコマンドを実行し、ダウンロードしたファイルを解凍します。
>unzip terraform_1.9.8_linux_amd64.zip - 以下のコマンドを実行し、Terraformのインストールとパスの設定を行います。
>mkdir bin
>install terraform ./bin/
>export PATH=$(pwd)/bin:$PATH
>terraform version - 以下のコマンドを実行し、AzureCLIをインストールします。
>curl -L https://aka.ms/InstallAzureCli | bash
>az version - 以下のコマンドを実行し、Azureへの認証を行います。
>az login
※認証用のコードを控えておいてください。 - 以下のURLへアクセスし、認証用コードを入力し、「次へ」をクリックします。
URL:https://microsoft.com/devicelogin - 認証用のアカウントを選択します。
- 「続行」をクリックします。
- 認証が完了したことを確認します。
- 以下のコマンドを実行し、Gitをインストールします。
>sudo dnf install git
④ NetApp GenAI Toolkitの作成
ここまでの手順で事前準備は完了しました。
いよいよNetApp GenAI Toolkitをデプロイします。
Terraformを実行することで以下のリソースが自動作成されます。
- Linux VM:Docker用サーバー
- ChatApp用コンテナ:チャットアプリ(インターフェース)
- ChromaDB用コンテナ:ベクトルデータベース
- LangChain Retriever用コンテナ:ANFやOpenAIとのAPI連携
- 以下のコマンドを実行し、NetApp GenAI Toolkitのリポジトリをクローンします。
>git clone https://github.com/NetAppLabs/genai-toolkit-terraform-deployment - 以下のコマンドを実行し、Terraformの変数ファイルにANFへ接続するための情報を入力します。
>cd genai-toolkit-terraform-deployment/anf/
>vi terraform.tfvars
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へのアクセスパス
※画像はdiffコマンドによる差分チェック(赤文字:編集前、緑文字:編集後) - 以下のコマンドを実行し、Terraformを初期化します。
>terraform init - 以下のコマンドを実行し、変数ファイルを読み込ませます。
>terraform plan - 以下のコマンドを実行し、Terraformを起動します。
>terraform apply - NetApp GenAI Toolkitがデプロイされ、アプリケーションのURLが発行されることを確認します。
- 発行されたURLにアクセスします。
⑤ NetApp GenAI Toolkitの設定
NetApp GenAI Toolkitのデプロイが完了しましたが、このままではAIチャットとして利用することはできません。
最後にNetApp GenAI ToolkitとANF、AIモデルを紐づける設定を行います。
- 「Register」をクリックします。
- NetApp GenAI Toolkitの利用アカウントを登録し、「Register」をクリックします。
- アカウントを入力し、「Login」をクリックします。
- 「アカウント名」-「API Keys」をクリックします。
- 「+ Create」をクリックします。
- Azure OpenAIと連携するためのAPIキーに関するパラメータを入力し、「Save」をクリックします。
Name:APIキーの名前(任意)
Key:APIキー
※APIキーはAzure OpenAI Studioから事前に作成したインスタンスのキーをコピーします。 - 「アカウント名」-「Models」をクリックします。
- 「gpt-4o(Azure OpenAI)」-「Edit」をクリックします。
- gpt-4oの各パラメータを入力し、「Save」をクリックします。
API Key:手順6で作成したAPIキー
API version:AIモデルのAPIバージョン
Endpoint:AIモデルへのアクセスパス
※API versionとEndpointはAzure OpenAI Studioからデプロイしたモデルの情報を確認します。 - 同様に「Text-embedding-3-large」「dall-e-3」モデルについてもAPI KeyとAPI version、Endpointを設定します。
※設定が完了するとステータスが「CONFIGURED」に変わります。 - 「Azure NetApp Files」-「事前作成したANFのボリューム」-「Open AI」を選択します。
- 「Azure-GPT-4o(Azure OpenAI)」を選択し、「Explore」をクリックします。
- チャット画面が表示されることを確認します。
以上でNetApp GenAI Toolkitの構築は完了です。
動作検証 |
今回、動作検証として以下の項目について確認を行います。
① 文章生成ができること
② 画像生成ができること
③ RAG(検索拡張生成)ができること
① 文章生成ができること
まずは、生成AIとしてチャットへ記載した質問に正しく回答ができるか確認します。
今回は、分かりやすく「SB C&Sとはどんな会社ですか?」と質問を投げてみました。
すると・・・
回答として、ある程度納得できる内容が返ってきました。
文章生成は問題なく動いているようです。
ちなみに、画面右下の「Chat with your data」をクリックすると、生成された文章をエクスポートしたり、別ウィンドウで表示させたりすることが可能です。
また、画像生成についてもここから行います。
② 画像生成ができること
では、続いて画像生成ができるかどうか確認します。
「SB C&Sをイメージした画像を生成してください。」
ちょっと無茶ぶりな感じもしますがどうでしょうか・・・
まぁ良いでしょう!!!
一応、「海沿いにある」「スマートビルと呼ばれる近未来型のビル」といったような、ある程度の要件は加味しているようにも見えます笑
画像生成としてはちゃんとできていますしね。
③ RAG(検索拡張生成)ができること
いよいよ、最終確認です。
まず、RAG用の検索拡張データとしてANF内にいくつかのデータを保存します。
※私が普段使用しているNetAppの勉強会用資料を保存
この状態で、「NetAppについて勉強したい、資料はあるか」と聞いてみると・・・
ANF内に保存した資料の情報を用いて回答してくれました!
さらに、ただ単に資料を紹介するだけでなく、資料内に記載されている情報を要約して文章を作ることまでできています!
ANF内のデータをベクトル化して保存できていることが分かりますね!
また、それだけでなくページを下の方にスクロールすると参考にした資料の簡易的な紹介文や、資料の内容に限定したチャットをすることができたりと、無償のツールとは思えない機能性も確認することができました。
以上で、動作検証も無事完了しました。
まとめ |
また、今回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に関するさまざまな情報を公開しています。
皆様フォロー宜しくお願いいたします。
TwitterアプリからはこちらのQRコードもどうぞ。
他のおすすめ記事はこちら
著者紹介

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