前提
今更ながら、自分含めつまずく人が多かったため記載しておきます。
Azure AI Search は通常の検索(文字列検索・キーワード検索)だけでなく、Vector検索 や Facet検索、Fuzzy検索 もサポートしています。
逆に言えば、これらの検索機能を使わないならAzure AI SearchではなくSQLを使えば十分ですので、以下は参考情報になります。
概要
Azure AI Search では、検索対象のデータ構造を インデックス として定義します。
インデックスを作成したら、検索エクスプローラー(Search Explorer) を使って検索結果を簡単に確認できます。
インデックスの基本概念
インデックスは検索対象データの「設計図」です。各フィールドには以下の属性を設定できます。
- 検索可能 (searchable): テキスト検索に使用
- フィルター可能 (filterable): 絞り込み条件に使用
- 並べ替え可能 (sortable): ソートに使用
- ファセット可能 (facetable): 件数を集計できる
- 検索結果に返す (retrievable): 検索結果に含めるか
- ベクトル (vector): ベクトル検索用フィールド
ベクトルプロファイルについて
ベクトル検索を行う場合は、インデックスに ベクトルフィールドとベクトルプロファイル を設定します。
- 次元数 (Dimensions): 埋め込みベクトルのサイズ
- アルゴリズム設定 (Algorithm Configuration): HNSW などの近似最近傍検索アルゴリズム
- 埋め込みベクトルの格納: 各ドキュメントに float 配列で保持
- ハイブリッド検索: 通常検索フィールドとベクトルフィールドを組み合わせて検索可能
ベクトル検索により、キーワードマッチでは拾えない 意味的類似検索 が可能になります。
インデックス設計のポイント
-
キーとなるフィールドを設定
- ドキュメントIDなど、ユニークな値を持つフィールドを必ず設定
- 複合キーは複数フィールドを連結した一つのフィールドを用意する等して一意になるように設定
-
検索対象フィールドの明確化
- フリーテキスト検索には
searchable - フィルターやソートには
filterable/sortable
- フリーテキスト検索には
-
ベクトルフィールドを追加
- 埋め込みベクトルを格納
- ハイブリッド検索や類似検索に利用
-
ファセット集計を活用
- カテゴリ別件数や範囲集計に
facetableを設定
- カテゴリ別件数や範囲集計に
検索エクスプローラー(Search Explorer)の活用
Azure Portal には Search Explorer があり、作成したインデックスに対して実際に検索を試せます。
-
検索クエリを入力
- フリーテキスト検索やフィルター条件を入力して結果確認
検索時の細かい設定ができるので、なるべく JSONビュー(JSON クエリ エディター) の使用を推奨
-
検索結果の確認
- 各ドキュメントのフィールド内容を確認
- ベクトル検索を設定している場合、類似度順の結果も確認可能
-
フィルター・ソートのテスト
- JSONビューで
filterやsortを設定 -
filterable/sortable等が正しく機能するかチェック
- JSONビューで
-
ベクトル検索の検証
- 検索文字列から生成した埋め込みベクトルと類似度順で結果を確認
Search Explorer は インデックス設計後の動作確認 に非常に便利です。
まとめ
以上、最初につまずきやすい箇所を整理しました。
なお、最低限の内容になりますので、詳しくはMicrosoft公式をご確認ください。