Zenn
🌊

Blob StorageとAI Searchでお手軽RAG環境構築

2025/03/25に公開

基本手順

本記事では、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:「データのインポートとベクター化」を選択
画面1:「データのインポートとベクター化」を選択

画面2:「Azure Blob Storage」を選択
画面2:「Azure Blob Storage」を選択

画面3:データソースの設定とDocument Layout Skillの有効化を行います
画面3:データソースの設定とDocument Layout Skillの有効化を行います

🔴 参照先のBlob Storageを選択

🔵 Document Layout Skillを有効化する場合はチェック(※事前にマルチサービスアカウントの作成が必要)

🟢 Blob Storageの削除追跡を有効化する場合にのみチェック

🟡 認証設定:「マネージドID」か「システム割り当て」を選択可能

画面4:Azure OpenAIを設定
画面4:Azure OpenAIを設定

画面5:画像のベクトル化(今回はスキップ)
画面5:画像のベクトル化(今回はスキップ)

画面6:セマンティックランカーの設定やインデックスフィールドの設定
画面6:セマンティックランカーの設定やインデックスフィールドの設定

⚠️ Blob Storageの削除追跡をOnにする場合は、「プレビューと編集」から別途設定が必要

詳細は手順(削除追跡あり) を参照

画面7:「オブジェクト名のプレフィックス」に任意の名前を設定し、作成ボタンを押す
画面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を追加
「+ フィールドの追加」から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
      • スコープ:リソースグループ

共有プライベートリンクの作成

① 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環境構築までの手順を解説しました。

  1. 事前設定:

    • Blob Storageのストレージアカウントを作成し、ダミーデータを用意します。
    • EastUSリージョンでのマルチサービスアカウントを作成します。
  2. 手順の概要:

    • データのインポートとベクター化を行い、Azure Blob Storageを選択します。
    • Document Layout Skillを有効化し、必要に応じてBlob Storageの削除追跡を設定します。
    • Azure OpenAIの設定を行い、セマンティックランカーやインデックスフィールドを設定します。
  3. 削除追跡の設定:

    • Blob StorageとAI Searchの両方で、Blobのネイティブ論理削除を有効にします
    • Blob Storageから必要なメタデータを継承します。
  4. 閉域化対応:

    • 閉域化環境でのエラーを回避するため、システム割り当てマネージドIDをオンにし、必要なロールを割り当てます。
    • 共有プライベートリンクを作成し、各リソースのネットワーク設定を承認します。
  5. デバッグセッション:

    • Azure AI Searchのデバッグセッションを活用し、スキルセットとインデクサーの動作を視覚的に確認することで、問題の特定と修正を効率的に行うことができます。

以上の手順を通じて、Azure環境でのOCR文書解析とRAG環境の構築がノーコードで行えるようになります。

また最後に、弊社AI Labでは、生成AIを活用したPoCや支援事業を行なっております。
もしご興味があれば、以下リンクよりお問い合わせください。
https://givery.co.jp/lp/ai-lab/

参考

https://learn.microsoft.com/ja-jp/azure/search/search-indexer-howto-access-private?tabs=portal-create

https://learn.microsoft.com/ja-jp/azure/search/search-howto-indexing-azure-blob-storage

https://learn.microsoft.com/ja-jp/azure/search/search-howto-index-changed-deleted-blobs?tabs=portal

Givery AI Lab

Discussion

ログインするとコメントできます