Azure AI Search (旧称 "Azure Cognitive Search")の削除検出をやってみた(Azure Blob Storage編)

※2024/1/10 Azure Cognitive Searchの言葉のみAzure AI Searchへと変更しております。
そのため、画像や機能の一部は当時のままの表記となりますのでご注意ください。
はじめに
今回は、BLOBをデータソースにしたAzure AI Searchを構成する際、
ファイルが削除されたことを検索サービスに正しく反映するための、
「削除検出」の設定方法と、その動きについてご紹介します。
Azure AI Searchにおける削除検出について
データソースによって異なりますが、BLOBの場合デフォルト設定のままでは削除検出が行われません。
削除検出を行うには、以下2通りの方法からどちらかを自分で設定する必要があります。
- ネイティブ BLOB の論理的な削除
BLOBの論理削除機能を利用し、削除を検出する方法です。 - カスタムメタデータを利用した論理的な削除
BLOBのファイルに削除検出するためのメタデータを用意・管理し、
データソースでそのメタデータを追跡するように設定することで、削除を検出する方法です。
https://learn.microsoft.com/ja-jp/azure/search/search-howto-index-changed-deleted-blobs?tabs=portal
今回の記事では、「ネイティブBLOBの論理的な削除」について試していきます。
デフォルトの動き
動きの確認のため、1ファイル1ドキュメントとなるような簡単なインデックスを用意しました。
まずは、デフォルト設定のままファイルを削除すると、インデックスがどうなるかを見ていきましょう。
「part-00000.txt」を削除し、インデクサーを手動で実行してみます。
インデクサーの実行画面では、ドキュメントの更新が行われていないように見えます。
ファイルが削除されたことを、インデクサーが更新として検出できていないようです。
ドキュメントの数も変わっていません。
削除されたはずのファイルに対応するドキュメントがそのまま残っているので、
検索を行うと本来削除されていてほしいものがヒットしてしまうことになります。
こうなると、インデクサーのリセット操作を行っても、削除が反映されることはありません。
余談ですが、このようにデータソースから孤立してしまい、
インデクサーから更新されることのないドキュメントを「孤立したドキュメント」と呼ぶそうです。
孤立したドキュメントを処理するためには、API経由で直接ドキュメントを操作するか、
インデックスごと作り直すしかありません。
ファイルが削除されるたびにいちいちインデックスを作り直したり、
APIを叩いてドキュメントを操作するようでは面倒ですよね。
インデクサーがちゃんと削除されたことを検出してドキュメントを操作できるよう、
設定変更だけで対応する方法とその動きを見ていきましょう。
「ネイティブBLOBの論理的な削除」の設定方法
まず、データソースの設定画面で削除の追跡ができるように設定していきます。
「削除の追跡」にチェックを入れると、その下に「データ削除検出ポリシー」の設定が出てくるので、
ここで「ネイティブBLOBの論理的な削除」を選択して保存します。
次に、BLOB側でファイルが物理削除されないように設定していきます。
データ保護の項目に「BLOBの論理的な削除を有効にする」という項目があるので、
これのチェックが外れている場合は、チェックを入れて有効にします。※デフォルトで有効になっています。
ここまでで設定は終了です。UI上の操作だけで完結しているので簡単ですね。
早速動きを見ていきます。
論理削除を実装した場合の動き
デフォルトの動きを試した時と同様に、「part-00000.txt」を削除してインデクサーを実行します。
先ほどとは違い、インデクサーが1件の更新を検出できています。
インデックスのドキュメント数もちゃんと減っていますね。
非常に簡単な設定で、削除を検出してインデックスに反映させることができるようになりました。
まとめ
Azure AI Searchのデータソースを何にするか検討する際、
変更検出や削除検出は非常に重要なポイントとなります。
BLOBを使う場合、変更検出はデフォルトで利用できますし、
削除検出も簡単に設定出来てお手軽です。
もちろんどういうケースでも利用できるわけではなく、
「ネイティブBLOBの論理的な削除」が利用できないケースもあるので、
本格的な検討を行う際は公式のリファレンスを参照ください。
https://learn.microsoft.com/ja-jp/azure/search/search-howto-index-changed-deleted-blobs?tabs=portal#requirements-for-native-soft-delete
QESでは、Azureだけでなく、Microsoft製品に関するソリューションに取り組んでおります。
他プロダクトに関するブログも投稿しておりますので、下記のリンクから是非ご覧ください。
また、QESでは採用活動を強化しております。
ブログを読んで弊社の業務内容に興味を持っていただけましたら、採用情報にもお目通しいただければ幸いです。
https://www.qes.co.jp/recruit.html