はじめに
組織内に貯まっている大量な構造化・非構造化データから、新たな価値を見出すためのフルマネージド全文検索サービスである Azure Cognitive Search を使えば、誰でも簡単に AI 搭載検索エンジンを開発することができます。
Simple Cognitive Search Tester
Simple Cognitive Search Tester は私が開発している Azure Cognitive Search 用の全文検索クエリテスター&検索デモ UI です。コンセプトは開発環境を必要とせず、どなたでもダウンロードするだけですぐに利用可能!
今回こちらに Azure Blob ストレージ上にある PDF、XLSX、画像ファイルを簡易プレビュー表示する機能を実装してみました。デモなどで検索結果の中身を同じ画面で表示したい場合などに役立ちます。
使い方
Simple Cognitive Search Tester で使うためのインデックス構築方法はこちらの手順に従う必要がありましたが、今回は Azure Blob ストレージ上のファイルの実体にアクセスする必要がありますので追加で以下の作業が必要になります。
インデックスにフィールドを追加
-
metadata_storage_content_type
フィールドを「取得可能」にする -
metadata_storage_sas_token
フィールドを追加し、「取得可能」にする -
metadata_storage_path_plain
フィールドを追加し、「取得可能」にする
インデクサーにフィールドマッピングを追加
デフォルトでは metadata_storage_path
フィールドを Base64 エンコードしてキーとして利用していると思います。今回はエンコードしていない平文のファイルパスが欲しいので、以下のような平文パスの保管用フィールドを追加で作成して、マッピングを行なっています。
"fieldMappings": [
,{
"sourceFieldName": "metadata_storage_path",
"targetFieldName": "metadata_storage_path_plain"
}
]
平文フィードを追加せずにフロントエンドで Base64 デコードすればよいかと思いましたが、こちらの理由により javascript で .Net と完全に同じデコードを行うコードを書くのがメンドイためです。ふつーに書いたらエラー出まくる件。。。
Azure Blob ストレージに CORS 設定を追加
- 許可されたオリジン:
*
- 許可されたメソッド:
GET
- 最長有効期間:
300
セキュリティガバ設定なので Blob 上にはデモ用のファイルのみ置いてください。
インデクサーリセット&再実行
いったんインデクサーをリセットしてから実行してください。
注意
SAS トークン
インデックスフィールドに metadata_storage_sas_token
を追加すると、自動的にインデクサーの Azure Blob コネクターが一時的に利用可能な SAS トークンを発行して格納します。一時的とは実際には2時間5分間だけ有効なトークンであり、こちらでも解説している通り、カスタムスキルなどの利用のための非永続的なトークンです。
デモの前にインデクサーをリセット&実行しとかないとプレビューできません😭
実際のプロダクト開発においてプログラムで SAS トークンを生成するにはこちらなどを参照してください。
セキュリティ
ファイルにアクセスする際に考慮すべきセキュリティについて解説しています。
さいごに
Simple Cognitive Search Tester のアップデートで最新のセマンティック検索 API にも対応しています。こちらの解説はまた後ほど。
参考
Azure Cognitive Search の全文検索を重点的に学習するワークショップを公開
Azure Cognitive Search 全文検索の新機能セマンティック検索を試せるデモ