Azure AI Searchの機能が多かったので、データインポートウィザードの内容をベースに理解しようと記録してみました。
2種類のウィザード
Azure Portal で Azure AI Search を開き、メニュー 「概要」に2種類のインデックス作成モードあり
- データのインポート: ベクトル化を含まないインデックス作成
- データのインポートとベクトル化: 読んで字のごとくベクトル化を含むインデックス作成
ウィザード内容
データのインポートとベクトル化
1. RAG
1.1. データへの接続
Azure Document Intelligenceのレイアウトモードを選べます(リソースはAzure AI Services)。
「削除の追跡を有効にする」を選択して削除も拾えます(前提としてBlobの場合はSoft Deleteが有効になっていること)。Blobで論理削除を示すメタデータのKeyを「列を論理的に削除」に入れ、値を「マーカー値の削除」に入れます(未検証)。
1.2. テクストをベクトル化する
1.3. 画像をベクター化してエンリッチする
マルチモーダルRAGと違って、こちらは画像→ベクトルで、画像内容のテキスト化はしない。
「画像のベクトル化」をONにすると「次へ」ボタンが押せない。どうするべきか、未調査。
1.4. 詳細設定
1.5. 作成されたフィールド
検索エクスプローラーで見たインデックス内容。ベクトル項目content_embedding
は省略。
{
"@search.score": 0.629663,
"chunk_id": "34ac31ddf0f1_aHR0cHM6Ly9zdG9yYWdlcmFnanBlLmJsb2IuY29yZS53aW5kb3dzLm5ldC9yYWctZG9jL2Zvb2RrYWt1NS5wZGY1_pages_17",
"parent_id": "aHR0cHM6Ly9zdG9yYWdlcmFnanBlLmJsb2IuY29yZS53aW5kb3dzLm5ldC9yYWctZG9jL2Zvb2RrYWt1NS5wZGY1",
"chunk": "/ESP <FEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f0062006500200050004400460020007000610072006100200063006f006e00730065006700750069007200200069006d0070007200650073006900f3006e002000640065002000630061006c006900640061006400200065006e00200069006d0070007200650073006f0072006100730020006400650020006500730063007200690074006f00720069006f00200079002000680065007200720061006d00690065006e00740061007300200064006500200063006f00720072006500630063006900f3006e002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200035002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002e>",
"title": "foodkaku5.pdf"
},
2. マルチモーダルRAG
2.1. データへの接続
RAGとほぼ同じだが、「解析モード」とDocument Intelligence(Azure AI Services)選択がなし。
2.2. コンテンツ抽出
2つ選択できるが、どちらを選んでも以後のウィザードでの入力内容は同じ。
2.2.1. 「規定値」選択時
2.2.2. 「AIドキュメント インテリジェンス」選択時
Azure AI Services のリソースをひもづける(Document Intelligenceではない)。
AI ドキュメントインテリジェンスは限られたリージョンしか使えないので注意。Supported regions参照。確認していないが、Azure Portalのウィザード以外からスキル登録すればDocument Intelligenceが使えるかも。
2.3. コンテンツの埋め込み
2.3.1. 画像の言語化
2.3.3.1.1. 画像の言語化
「RAG」と違って、こちらの画像対応は、画像内容のテキスト化をしてくれる。「RAG」はベクトル化。
AOAIサービス でないとだめ
2.3.1.2. テキストのベクター化
「RAG」選択時と同じ入力項目。AOAIサービス でないとだめ。
2.3.2. マルチモーダル埋め込み
「マルチモーダル埋め込み」はテキストと画像を同じモデルを使ったベクトル空間にマッピング。画像のテキスト化はしないでベクトル化。例えば「犬」で検索すると、テキストの「犬」と犬の画像をHitさせる。
Kindを「AI Visionのベクトル化」にすると、AI サービスのリソースが必要。Regionが厳しいので要注意。
ちなみに Document Intelligenceを選んでいると、少し画面が異なる。
Kindを「AI Foundry Hub カタログモデル」にするとCohereモデルが必要らしいが未確認。
2.4. 画像出力
実際にインデックス作成後にストレージを参照。画像が切り取られて、入っています。
2.5. 詳細設定
2.6. 作成されたフィールド
検索エクスプローラーで見たインデックス内容。画像有無で2つを出してみました。ベクトル項目content_embedding
は省略。
{
"@search.score": 0.58086026,
"content_id": "a9a0d3874d51_aHR0cHM6Ly9zdG9yYWdlcmFnanBlLmJsb2IuY29yZS53aW5kb3dzLm5ldC9yYWctZG9jLzAwMDA0MDM2OS5wZGY1_text_sections_29",
"text_document_id": "aHR0cHM6Ly9zdG9yYWdlcmFnanBlLmJsb2IuY29yZS53aW5kb3dzLm5ldC9yYWctZG9jLzAwMDA0MDM2OS5wZGY1",
"document_title": "000040369.pdf",
"image_document_id": null,
"content_text": "mazDaAxela tri-stop塗装ハゲ 2ミリX2ミリヘコミ 10ミリ×15ミリ図 4-8 外装部品の登録情報(3) 機能部品機能部品とは車を正常に動かす(走る、曲がる、止まる)部品のことを言う。エンジン、 ミッション、ダイナモ、デフホーシングなどが代表例である。機能部品については走行 距離が登録される。エンジンの場合は、始動性·アイドリング状態などの情報が登録される。また機能部 品9品目(エンジン、ミッション、セルモーター、オルタネーター、クーラーコンプレッサ ー、パワステベーンポンプ、ターボチャージャー、噴射ポンプ、スロットル·ボディー)の 検査結果も登録される。このときの検査方法も登録される。4.3 注文方法4.3.1 問合せから納品までのフローリユース部品の問合せから納品までのフローは図 4-9 の通りである。整備工場から の在庫問合せは「電話」又は「FAX」で行われる(STEP1)。注文用紙の書き方は後述 する。その情報を基に、問合せを受けたリユース部品供給業者は自社在庫を検索し、- 25 -",
"content_path": null
},
{
"@search.score": 0.5796704,
"content_id": "839a91d1053d_aHR0cHM6Ly9zdG9yYWdlcmFnanBlLmJsb2IuY29yZS53aW5kb3dzLm5ldC9yYWctZG9jLzIwMjIwNjAxbGEwMl8wNy5wZGY1_normalized_images_3",
"text_document_id": null,
"document_title": "20220601la02_07.pdf",
"image_document_id": "aHR0cHM6Ly9zdG9yYWdlcmFnanBlLmJsb2IuY29yZS53aW5kb3dzLm5ldC9yYWctZG9jLzIwMjIwNjAxbGEwMl8wNy5wZGY1",
"content_text": "An online order confirmation interface displaying the final details of a purchase. The layout includes sections for itemized products ordered, their prices, quantities, and the total sale price. It lists two items: an alarm clock priced at 2,200 yen and a set of batteries priced at 660 yen, with specified quantities of one and two, respectively. Payment methods and timing are also noted, indicating the total amount due is 3,160 yen, including tax and shipping. Delivery options and cancellation/return policies are mentioned, along with instructions for modifying the order if necessary.",
"content_path": "images/aHR0cHM6Ly9zdG9yYWdlcmFnanBlLmJsb2IuY29yZS53aW5kb3dzLm5ldC9yYWctZG9jLzIwMjIwNjAxbGEwMl8wNy5wZGY1/normalized_images_3.jpg"
},
データのインポート
データに接続します
コグニティブ スキルを追加します (省略可能)
対象インデックスをカスタマイズします
インデクサーの作成
追記
インデックスフィールドの定義
「データのインポートとベクトル化」でインデックスフィールドを追加定義してみました。この画面です。
追加に使える項目はデータソースに依存します。例えばADLS Gen2だとこちら。