Blob StorageとAI Searchでお手軽RAG環境構築
基本手順
本記事では、Azure Portal上からノーコードでOCR文書レイアウト解析(Document Layout Skill)〜RAG環境構築までを行う方法をご紹介します。
※Document Layout Skillとは、Azure Portal内のAI Searchメニュー上からDocument IntelligenceをAI Searchの前処理として設定できる機能です。
⚠️ 2025/03/06時点では、AI SearchのJapanリージョンは未対応で、EastUSリージョンでの利用になります。
事前設定
- Blob Storage ストレージアカウントの作成
- Blob Storageに適当なダミーデータを入れておく
- マルチサービスアカウント(EastUS)の作成
手順
画面1:「データのインポートとベクター化」を選択
画面2:「Azure Blob Storage」を選択
画面3:データソースの設定とDocument Layout Skillの有効化を行います
🔴 参照先のBlob Storageを選択
🔵 Document Layout Skillを有効化する場合はチェック(※事前にマルチサービスアカウントの作成が必要)
🟢 Blob Storageの削除追跡を有効化する場合にのみチェック
🟡 認証設定:「マネージドID」か「システム割り当て」を選択可能
画面4:Azure OpenAIを設定
画面5:画像のベクトル化(今回はスキップ)
画面6:セマンティックランカーの設定やインデックスフィールドの設定
⚠️ Blob Storageの削除追跡をOnにする場合は、「プレビューと編集」から別途設定が必要
詳細は手順(削除追跡あり) を参照
画面7:「オブジェクト名のプレフィックス」に任意の名前を設定し、作成ボタンを押す
ここで設定したオブジェクト名のプレフィックスが、Indexの名前になる。
また、自動生成されるデータソース、スキルセット、インデクサーもこれに準じた名前になる。
例:「test」にした場合、それぞれ「test-datasource」「test-skillset」「test-indexer」となる
手順(削除追跡あり)
Blob Storageの設定
Blob StorageとAI Searchどちらも、Blobのネイティブ論理削除をOnにする設定を行う
「ストレージアカウント」-->「データ保護」から「BLOB の論理的な削除を有効にする」にチェック
AI Searchの設定
詳細は手順の画面3を参照してください。
⚠️ 追加で以下の画面からBlob Storageのmetadata_storage_last_modeified
をメタデータとして継承をする必要がある
「インデックス フィールド」—> 「プレビューと編集」を押す
「+ フィールドの追加」からmetadata_storage_last_modifiedを追加
閉域化している場合
閉域化している場合、上記手順で進めると、インデクサー実行時に以下のエラーで停止します。
Web Api response status: 'Forbidden', Web Api response details: '{"error":{"code":"403","message": "Access denied due to Virtual Network/Firewall rules."}}'
Azure Portal 上で、AI Search —> ID
- 「システム割り当てマネージド ID」をオンにします
- 続いて以下のロールを割り当てます
- ストレージ BLOB データ共同作成者
- スコープ:ストレージ
- Cognitive Services OpenAI User
- スコープ:リソースグループ
- ストレージ BLOB データ共同作成者
共有プライベートリンクの作成
① AI Searchのネットワーク⇒共有プライベートアクセス⇒共有プライベートリンクを追加する
② 接続先のAOAI、Document Intelligence、Blob Storageなどを指定
- AI Search → AOAI、Document Intelligence、Blob Storage全てに設定するのが無難
- 設定後、それぞれのリソースのネットワーク設定画面で承認をする必要がある
Storage Accoutをネットワーク制限していた場合には例外として「信頼されたサービスの一覧にある Azure サービスがこのストレージ アカウントにアクセスすることを許可します」にチェックが入っていればマネージドIDの認証で接続が可能
③ AOAI側のネットワーク⇒プライベートエンドポイント接続⇒承認
インデクサーの再実行
①インデクサーのJSONで以下のパラメーターを設定する
"parameters": {
"configuration": {
"executionEnvironment": "private"
}
}
インデクサーJSON全体
```python
{
"@odata.context": "https://xxxxxx.search.windows.net/$metadata#indexers/$entity",
"@odata.etag": "\"xxxxxxxxxx\"",
"name": "xxxxxxx-indexer",
"description": null,
"dataSourceName": "xxxxxxxx-datasource",
"skillsetName": "xxxxxxxxx-skillset",
"targetIndexName": "xxxxxxxxx",
"disabled": null,
"schedule": null,
"parameters": {
"batchSize": null,
"maxFailedItems": null,
"maxFailedItemsPerBatch": null,
"base64EncodeKeys": null,
"configuration": {
"executionEnvironment": "private",
"dataToExtract": "contentAndMetadata",
"parsingMode": "default"
}
},
"fieldMappings": [
{
"sourceFieldName": "metadata_storage_name",
"targetFieldName": "title",
"mappingFunction": null
}
],
"outputFieldMappings": [],
"cache": null,
"encryptionKey": null
}
```
② インデクサーを実行 成功すればOK
デバッグセッション
Azure AI Searchのデバッグセッションは、スキルセットとインデクサーの動作を視覚的に確認し、問題を特定・修正するためのツールです。
- ユースケース例
- スキルセット内でエラーが起こっている場合の問題箇所特定
- 変更をテストしてから、本番環境に適用
- スキルセットの各段階での中間処理結果の確認
デバッグセッションを使用することで、Azure AI Searchのインデクサーとスキルセットの動作を詳細に把握し、効率的に問題解決や最適化を行うことができます。
デバッグセッションの場所
デバッグセッション例
デバッグセッションでは、画面左側にIndexerのワークフローがグラフ形式で表示、画面右側に各ノードでの変数情報が表示されます。
まとめ
本記事では、Azure Portalを利用してノーコードでOCR文書レイアウト解析からRAG環境構築までの手順を解説しました。
-
事前設定:
- Blob Storageのストレージアカウントを作成し、ダミーデータを用意します。
- EastUSリージョンでのマルチサービスアカウントを作成します。
-
手順の概要:
- データのインポートとベクター化を行い、Azure Blob Storageを選択します。
- Document Layout Skillを有効化し、必要に応じてBlob Storageの削除追跡を設定します。
- Azure OpenAIの設定を行い、セマンティックランカーやインデックスフィールドを設定します。
-
削除追跡の設定:
- Blob StorageとAI Searchの両方で、Blobのネイティブ論理削除を有効にします
- Blob Storageから必要なメタデータを継承します。
-
閉域化対応:
- 閉域化環境でのエラーを回避するため、システム割り当てマネージドIDをオンにし、必要なロールを割り当てます。
- 共有プライベートリンクを作成し、各リソースのネットワーク設定を承認します。
-
デバッグセッション:
- Azure AI Searchのデバッグセッションを活用し、スキルセットとインデクサーの動作を視覚的に確認することで、問題の特定と修正を効率的に行うことができます。
以上の手順を通じて、Azure環境でのOCR文書解析とRAG環境の構築がノーコードで行えるようになります。
また最後に、弊社AI Labでは、生成AIを活用したPoCや支援事業を行なっております。
もしご興味があれば、以下リンクよりお問い合わせください。
参考
Discussion