🐨

Azure AI Searchの検索結果にベクトルデータが出ないようにする方法

2024/11/02に公開

課題

AI Searchで登録しているインデックスにベクトルデータがあると、↓のように検索結果に含まれるからめちゃくちゃ邪魔です。


Azure Portal上でインデックスを作る場合は、フィールドタブに遷移して対象のスキーマの「取得可能」のチェックを外すだけで解決します。
しかし運用するにあたってインデックスの登録はコードで自動化させたいです。

実装

結論、対象のSearchFieldクラスのhiddenパラメータをTrueにする。

create_index.py
SearchField(
    name="フィールド名",
    # ↓追加する
    hidden=True,
    type=SearchFieldDataType.Collection(SearchFieldDataType.Single),
    vector_search_dimensions=1536,
    vector_search_profile_name="vector_search_profile",
),


めちゃくちゃシンプルなんですが、MSの記事ではretrivableパラメータをTrueにしてたり、他の人の記事でもretrievableパラメータを指定してたので最初うまくいきませんでした。

https://learn.microsoft.com/ja-jp/azure/search/vector-search-how-to-query?tabs=query-2024-07-01%2Cbuiltin-portal#vector-query-response


PythonのAI Searchのパッケージの中身を確認したらクラスの中に以下の記載がありました。

    :keyword hidden: A value indicating whether the field can be returned in a search result.
        You can enable this option if you want to use a field (for example, margin) as a filter,
        sorting, or scoring mechanism but do not want the field to be visible to the end user. This
        property must be False for key fields. This property can be changed on existing fields.
        Enabling this property does not cause any increase in index storage requirements. Default is
        False.

https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/search/azure-search-documents/azure/search/documents/indexes/models/_index.py


Copilotも間違えてたので、使用するパッケージのソースコードはしっかり確認しましょう...

ヘッドウォータース

Discussion