1
1

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 AI Foundry に 無料版など独自設定したAzure AI Search を設定する手順

Posted at

背景

RAGのお手軽検証環境として Azure AI FoundryのPlaygroundは本当に便利です。私もよく使っています。

  • PlayGroundでの動作確認
  • 複数のモデルの切り替え
  • 複数のモデルの評価環境。MLOps含む

デフォルトのままですと、幾つかやりづらい点もあったりします。そのために、ここでは独自のAzure AI Searchを追加する手順をメモしておきます。

Azure AI Search のサービス レベルを選択する:

  • Azure AI SearchのSKUの選択が柔軟ではない。デフォルト設定のStandardの能力ほど、利用しない。
  • Azure AI Searchでは、Standardで作成すると、それ以下のBasicやFreeに変更できない。以上には出来る

  • Azure AI Foundryで作成する Azure AI SearchのIndexer (クローラー的なもの) が参照する先データソースのBlob Storageなどが、扱いづらい...ファイル追加などの際に不便

  • 独自に作成したAzure AI SearchをAzure AI Foundryに追加する際にアクセス権設定が煩雑
  • この手順書 (チュートリアル) はあるものの。SDKベース。Portalのみではない。

ポイント

こちらが全体像ですね。

ファイルはBlob Storageに置きます。一番簡単なので

image.png

必要なもの

手順

やっていきますね。

同じリソースグループに作成します。

後で、まとめて削除できるように

1. Azure Storage Account 作成

ご参考。

1.1. ファイルのアップロード

手元のファイルをBlob Storageにアップロードします。

少量であれば、Azure Portalのストレージ ブラウザーで十分です😊

image.png

はい。楽勝ー

image.png

2. Azure OpenAI Service の作成

ベクトル化。つまり、Embedding 用です。Azure AI Search から参照させます。

text-embedding-3-small をデプロイします。

ご参考

Azure OpenAI Serviceでのモデルのデプロイは、Azure AI Foundry | Azure OpenAI Service の画面から行えます。

image.png

デフォルトのままですと、検索エンジンでのIndex作成時に、一度に大量にAPI呼び出しをする可能性があります。
1分あたりのトークン数レート制限を少し多めにしておきます。この数字は、課金には影響しませんが、自分のSubscription全体での上限があるので、大きくし過ぎると、別のデプロイ時に、そちらは少ししか処理できない可能性があります。
並列実行の観点で、どうするか考えたいですね😊

image.png

3. Azure AI Search の作成

さて。いよいよコアのSearchです。

ここではSKUを無料Freeにします。

  • 無償版はコンピューター能力や機能に制限があります。ベクトル化を含むRAG検証で、大量のデータからの検索時などには適さない場合がある点は十二分に留意しましょう。
  • 1つのSubscriptionで、FreeのSKUは1つだけ作成できます。
  • 無償版の Azure AI Searchから、Azure Storage アカウントへの認証は、キー認証のみ。ロールベースのアクセスはサポートしていない。

image.png

こちらを適時参照ください。

3.1. Azure AI Search のアカウント作成

さて、ここから Azure AI Searchを使って、検索用のIndexを作成します。

まず、Entra IDにAzure AI Searchのアカウントを作成します。
デフォルトですと作成されていません。

Azure AI Searchの画面に移動します。

  • [ID]に移動します
  • [システム割り当て済み]が、オフになっています。「オン」にして[保存]を押します。

image.png

作成が終わると以下の画面の様にオブジェクト(プリンシパル)IDが作成されます。

image.png

  • 無償版のSKUから、Azure Storageアカウントにアクセスするために、キー認証を有効化します。

image.png

3.2. Azure AI SearchにAzure Storageアカウントのアクセス権を設定

Azure Storage Accountの画面に移動します。

  • [アクセス制御]に移動します。
    • ここで、ユーザーや各種Azureのリソースなどのアクセス権設定を行います。この画面は、Subscriptionやリソースグループなど、Azureのリソースの各層で同じ操作で設定ができます。

image.png

  • [ロール]の検索用のテキストボックスを使って、ストレージ BLOB データ閲覧者 を検索します。

image.png

  • [メンバー]の画面でAzure AI Searchを検索します
  • [マネージドID]を選択
  • 画面右側に出てくる[マネージドIDの選択]の[マネージドID]で「Search Services」を選択します。
  • 先ほど作成した Azure AI Search が見つかります。サービス名とアカウント名が同じになります。これを選択します。選択すると、下の[選択したメンバー]に移動します。
  • [選択]ボタンを押します。

image.png

  • [レビューと割り当て]を押して、アクセス権を設定します。

3.2. インデックス作成

Azure AI SearchのPortal画面上から、Indexerの設定を行います。

こちらのドキュメントを適時参考にしてください。

クイックスタート: Azure portal を使用してテキストと画像をベクトル化する:

  • Azure Storage 作成時に階層型名前空間の設定が、オンなのかオフなのかで、Azure Blob Storage なのか、Azure Data Lake Storage Gen2なのかが変わります。注意してください。

image.png

Embedding (ベクトル化) のAPI設定で、先にデプロイしたAzure OpenAI ServiceのEmbeddingモデルを選択します。

image.png

今回は画像を扱いません。
その後はデフォルト設定のまま進めます。

image.png

数分待つと、Indexingが終了します。

image.png

インデックスのジョブが正しく終了したかを確認します。

Azure AI Searchの[インデックサー]の画面から、成功したドキュメントなどを確認します。

image.png

大丈夫そうであれば、実際に検索を試してみましょう。

[インデックス]から、作成したIndexを選択します。

image.png

早速「文章」で検索をしてみます。
鎌倉武将に関連するものであれば、なんでもいいです。

image.png

RAG 実施時の大事な点

  • 本来は、ここで検索の精度の確認を行います。上位n件に何がヒットしているかを確認します
  • デフォルトで取得できているデータ項目、フィールドに注目してください。
    • chunk に取得できたデータの内容が入っています。そうなんです、デフォルトで元ファイルを分割しています
    • title にファイル名が入っています。Indexerは、特定のフォルダー以下を検索していますからね。特定ということは固定のURLになるわけで。このtitleと合わせて、データソースになります

4. Azure AI Foundry の作成

いよいよ Azure AI Foundry の作成を行います。

諸々関連リソースも作成されるため、 ai.azure.com から行うのがおススメです。

画面右上の [プロジェクトの作成] から行います。

image.png

プロジェクトの作成画面です。ここでは、これまで作成してきたリソースと同じリソースグループに保存をしたいので[カスタマイズ]を押します。

image.png

実は、ここでは既存のリソースを全て選択します。新規に何かの作成を行いません。

image.png

いろんな関連リソースの作成状況を確認できます。

image.png

3-5分くらいで出来ました!

image.png

4.1. Modelのデプロイ

Chat の PlayGround で利用するModelをデプロイします。

ここでは、GPT-4.1 を選択します。

image.png

4.2. Index の追加

Azure AI Foundryの画面の左側のメニューからIndexの追加画面に移動します。

  • [データとインデックス] - [インデックス]
    • [新しいインデックス]

image.png

ベクトルインデックスを作成するから[Azure AI 検索]を選択します。

image.png

外部インデックスの画面で、先に作成した Azure AI Service と Index を選択します。

image.png

ストアがベクトルで保存されています。そのため、[検索設定の設定]画面で、Azure OpenAI ServiceのEmbeddingモデルを選択します。

image.png

ベクターインデックスの画面です。
ちょっと混乱しますね。先にIndexは作成済みなんですがね..

ベクターインデックス名は、適時変更してください。

image.png

作成できました!

image.png

5. Azure AI Foundry の PlayGround で動作確認

これで PlayGround の画面で、インデックスが参照できるようになります。

image.png

先に Azure AI Search で作成したインデックスではなく、Azure AI Foundryで作成したインデックスですね。

image.png

PlayGournd では、デフォルトの出力トークン数800と大変少ないです!
ここは、max にしておきましょう😊

image.png

Prompt:

源頼朝が行ったことについて要点をリストアップしてください。

相当適当です...

image.png

image.png

動作の確認ができるかと思います。
チャンクしたファイルが見えますね。

まとめ

こちらが今回作成したリソースたちです。

image.png

特に気になる Azure AI Search のIndexは、1つだけですね。

image.png

Azure AI FoundryのPlayGroundから見えているIndexについては、参照されているBlobに格納されているファイルを見てみても。事前作成したIndexへのリンクが見えているのみです。

数日放置してみましたが、特に課金もされず、モニター上も確認ができず、でした。

この辺りは追加の調査が必要とは思いますが。

image.png

これで、初期のRAGの挙動など、楽しんでください!!!!

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?