インデックスの作成または更新 (REST API のプレビュー)

適用対象: 2023-07-01-Preview、2021-04-30-Preview、2020-06-30-Preview

重要

2023-07-01-Preview はベクター検索を追加します。

  • "vectorSearch" オブジェクト。ベクター検索設定の構成です。 ベクター検索アルゴリズムにのみ適用されます。
  • ベクター フィールドに必要な "Collection(Edm.Single)" データ型。 プリミティブ型として単精度浮動小数点数を表します。
  • ベクター フィールドに必要な "dimensions" プロパティ。 ベクター埋め込みの次元を表します。
  • ベクター フィールドに必要な "vectorSearchConfiguration" プロパティ。 このフィールドのアルゴリズム構成を選択します。

2021-04-30-Preview では次のものが追加されます。

  • 特定のフィールドへのセマンティック ランク付けのスコープに使用される "semanticConfiguration"
  • ユーザー割り当てマネージド ID を使用して Azure Key Vaultからカスタマー マネージド暗号化キーを取得するために使用される 、"encryptionKey" の下の "identity"

2020-06-30-Preview では次のものが追加されます。

インデックスは、フィールド コレクション (フィールド名、データ型、属性) だけでなく、他の検索動作を定義する他のコンストラクト (suggesters、スコアリング プロファイル、CORS 構成) を含むインデックス スキーマを指定します。

作成要求で POST または PUT を使用できます。 いずれの場合も、要求本文はオブジェクト定義を提供します。

POST https://[servicename].search.windows.net/indexes?api-version=[api-version]  
  Content-Type: application/json
  api-key: [admin key]  

更新要求の場合は、PUT を使用し、URI にインデックス名を指定します。

PUT https://[servicename].search.windows.net/indexes/[index name]?api-version=[api-version]
  Content-Type: application/json
  api-key: [admin key]

HTTPS はすべてのサービス要求に必要です。 インデックスが存在しない場合は、作成されます。 既に存在する場合は、新しい定義に更新されます。

インデックスを作成すると、 スキーマとメタデータが確立されます。 インデックスを設定するのは、別の操作です。 この手順では、インデクサー (サポートされているデータ ソースで使用できる インデクサー操作に関するページを参照) または ドキュメントの追加、更新、または削除を使用できます。 作成できるインデックスの最大数は、料金階層によって異なります。 各インデックス内には、個々の要素に制限があります。 詳細については、「 Azure AI Search のサービス制限」を参照してください。

既存のインデックスを更新するには 、保持する元の定義を含む完全なスキーマ定義を含める必要があります。 一般に、更新の最適なパターンは、GET を使用してインデックス定義を取得し、それを変更してから PUT で更新することです。

既存のインデックスにはコンテンツが含まれているため、多くのインデックス変更では インデックスの削除と再構築が必要です。 次のスキーマ変更は、この規則の例外です。

  • 新しいフィールドの追加

  • スコアリング プロファイルの追加または変更

  • セマンティック構成の追加または変更

  • CORS オプションの変更

  • 次の 3 つの変更のいずれかを使用して既存のフィールドを変更します。

    • フィールドの表示/非表示 (retrievable: true | false)
    • クエリ時に使用されるアナライザーを変更する (searchAnalyzer)
    • クエリ時に使用される synonymMap を追加または編集する (synonymMaps)

上記のスキーマを既存のインデックスに変更するには、要求 URI でインデックスの名前を指定し、新しい要素または変更された要素を含む完全に指定されたインデックス定義を含めます。

新しいフィールドが追加されると、インデックス内のすべての既存のドキュメントには、そのフィールドの null 値が自動的に設定されます。 新しいフィールドに値が指定されるか (マージを使用)、または新しいドキュメントが追加されるまで、追加のストレージ領域は使用されません。

に更新にはsuggester同様の制約があります。新しいフィールドは、フィールドの追加と同時に に にsuggester追加できますが、インデックスの再構築なしでは既存のフィールドを削除したり、 にsuggesters追加したりすることはできません。

アナライザー、トークナイザー、トークン フィルター、または char フィルターへの更新は許可されません。 必要な変更で新しいものを作成できますが、新しいアナライザー定義を追加するときは、インデックスをオフラインにする必要があります。 インデックス更新 allowIndexDowntime 要求で フラグを true に設定すると、インデックスはオフラインになります。

PUT https://[search service name].search.windows.net/indexes/[index name]?api-version=[api-version]&allowIndexDowntime=true

この操作では、インデックスが少なくとも数秒間オフラインになります。つまり、インデックスがオンラインに戻り、要求を処理する準備ができるまで、インデックス作成とクエリ要求は失敗します。

URI パラメーター

パラメーター 説明
サービス名 必須。 この値を、検索サービスの一意のユーザー定義名に設定します。
インデックス名 PUT を使用する場合は、URI で必須です。 名前は小文字で、文字または数字で始まり、スラッシュやドットがなく、128 文字未満である必要があります。 ダッシュを連続することはできません。
api-version 必須。 現在のプレビュー バージョンは です 2023-07-23-preview。 その他 のバージョンについては、「API のバージョン 」を参照してください。
allowIndexDowntime 省略可能。 既定では false です。 アナライザー、トークナイザー、トークン フィルター、文字フィルター、類似性プロパティの追加や変更など、特定の更新プログラムの場合は true に設定します。 インデックスは更新中にオフラインになります。通常は数秒以下です。

要求ヘッダー

次の表では、必須と省略可能の要求ヘッダーについて説明します。

フィールド 説明
Content-Type 必須。 この値を に設定します。 application/json
api-key Azure ロールを使用していて、要求でベアラー トークンが提供されている場合は省略可能。それ以外の場合はキーが必要です。 api-key は、検索サービスに対する要求を認証する一意のシステム生成文字列です。 要求の作成には、(クエリ キーではなく) 管理者キーに設定されたヘッダーを含める api-key 必要があります。 詳細については、「 キー認証を使用して Azure AI Search に接続 する」を参照してください。

要求本文

要求の本文には、このインデックスにフィードされるドキュメント内のデータ フィールドの一覧を含むスキーマ定義が含まれています。

次の JSON は、ベクター検索をサポートするスキーマの大まかな表現です。 スキーマにはキー フィールドが必要であり、そのキー フィールドは検索可能、フィルター可能、並べ替え可能、ファセット可能にすることができます。

ベクター検索フィールドの型 Collection(Edm.Single)は です。 ベクター フィールドはテキスト形式ではないので、ベクター フィールドをキーとして使用することはできません。また、アナライザー、ノーマライザー、サジェスター、またはシノニムを受け入れることはできません。 "dimensions" プロパティと "vectorSearchConfiguration" プロパティが必要です。

ベクター検索をサポートするスキーマは、キーワード (keyword)検索もサポートできます。 インデックス内の他の非ベクトル フィールドでは、インデックスに含めるアナライザー、シノニム、スコアリング プロファイルを使用できます。

{  
  "name": (optional on PUT; required on POST) "Name of the index",
  "description": (optional) "Description of the index",  
  "fields": [  
    {  
      "name": "name_of_field",  
      "type": "Edm.String | Edm.Int32 | Edm.Int64 | Edm.Double | Edm.Boolean | Edm.DateTimeOffset | Edm.GeographyPoint | Edm.ComplexType | Collection(Edm.String) | Collection(Edm.Int32) | Collection(Edm.Int64) | Collection(Edm.Single) | Collection(Edm.Double) | Collection(Edm.Boolean) | Collection(Edm.DateTimeOffset) | Collection(Edm.GeographyPoint) | Collection(Edm.ComplexType)",
      "key": true | false (default, only Edm.String fields can be keys, enable on one field only),  
      "searchable": true (default where applicable) | false (only Edm.String and Collection(Edm.String) fields can be searchable),  
      "filterable": true (default) | false,  
      "sortable": true (default where applicable) | false (Collection(Edm.String) fields cannot be sortable),  
      "facetable": true (default where applicable) | false (Edm.GeographyPoint fields cannot be facetable),  
      "retrievable": true (default) | false,  
      "analyzer": "name_of_analyzer_for_search_and_indexing", (only if 'searchAnalyzer' and 'indexAnalyzer' are not set)
      "searchAnalyzer": "name_of_search_analyzer", (only if 'indexAnalyzer' is set and 'analyzer' is not set)
      "indexAnalyzer": "name_of_indexing_analyzer", (only if 'searchAnalyzer' is set and 'analyzer' is not set)
      "normalizer": "name_of_normalizer", (optional, applies only to filterable, facetable, or sortable Edm.String and Collection(Edm.String) fields.)
      "synonymMaps": [ "name_of_synonym_map" ], (optional, only one synonym map per field is currently supported),
      "fields" : [ ... ], (optional, a list of sub-fields if this is a field of type Edm.ComplexType or Collection(Edm.ComplexType). Must be null or empty for simple fields.)
      "dimensions": 1234, (required for vector field definitions. Prohibited for non-vector fields. Integer specifying the dimensionality of the embeddings generated by a machine learning model)
      "vectorSearchConfiguration": "name_of_algorithm_config" (required for vector field definitions. Prohibited for non-vector fields. This should reference an algorithm configuration.)
    }
  ],
  "similarity": (optional) { },
  "suggesters": (optional) [ ... ],  
  "scoringProfiles": (optional) [ ... ],  
  "semantic": (optional) { },
  "vectorSearch": (optional) {
    "algorithmConfigurations": [
        {
            "name": "name_of_algorithm_config",
            "kind": "hnsw" (algorithm type. Only "hnsw" is supported currently.),
            "hnswParameters": {
                "m": 4,
                "efConstruction": 400,
                "efSearch": 500,
                "metric": "cosine"
            }
        }
    ]},
  "normalizers":(optional) [ ... ],
  "analyzers":(optional) [ ... ],
  "charFilters":(optional) [ ... ],
  "tokenizers":(optional) [ ... ],
  "tokenFilters":(optional) [ ... ],
  "defaultScoringProfile": (optional) "Name of a custom scoring profile to use as the default",  
  "corsOptions": (optional) { },
  "encryptionKey":(optional) { }  
}  

要求には次のプロパティが含まれます。

プロパティ 説明
name 必須。 インデックスの名前です。 インデックス名には小文字、数字、ダッシュのみを含める必要があり、ダッシュで始めたり終わったりすることはできません。128 文字に制限されています。
description 任意の説明です。
fields このインデックスのフィールドのコレクション。各フィールドには名前、エンティティ データ モデル (EDM) に準拠する サポートされているデータ型 、およびそのフィールドに対して許可されるアクションを定義する属性があります。 fields コレクションには、"key" が "true" に設定された型 Edm.String のフィールドが 1 つ必要です。 このフィールドは、インデックスと共に格納されている各ドキュメントの一意識別子 (ドキュメント ID とも呼ばれます) を表します。 fields コレクションはベクター フィールドを受け入れるようになりました。
similarity 省略可能。 2020 年 7 月 15 日 より前に 作成されたサービスの場合は、BM25 ランク付けアルゴリズムをオプトインするようにこのプロパティを設定します。
suggesters オートコンプリートや候補などの部分的なクエリで一致するプレフィックスを格納するコンストラクトを指定します。
scoringProfiles 省略可能。 フルテキスト クエリの関連性チューニングに使用されます。
"セマンティック" 省略可能。 セマンティック検索機能に影響を与える検索インデックスのパラメーターを定義します。 セマンティック クエリにはセマンティック構成が必要です。 詳細については、「セマンティック クエリを作成する」を参照してください。
vectorSearch 省略可能。 さまざまなベクター検索設定を構成します。 ベクター検索アルゴリズムのみを構成できます。
ノーマライザー 省略可能。 文字列の辞書順序を正規化し、大文字と小文字を区別しない並べ替えとフィルター処理の出力を生成します。
アナライザー、charFilters、トークナイザー、tokenFilters 省略可能。 カスタム アナライザーを定義する場合は、インデックスのこれらのセクションを指定します。 既定では、これらのセクションは null です。
defaultScoringProfile 既定のスコアリング動作を上書きするカスタム スコアリング プロファイルの名前。
corsOptions 省略可能。 インデックスへのクロスオリジン クエリに使用されます。
encryptionKey 省略可能。 Azure Key Vault のカスタマー マネージド暗号化キー (CMK) を使用したインデックスの追加暗号化に使用されます。 2019-01-01 以降に作成された課金対象の検索サービスで使用できます。

Response

作成要求が正常に完了すると、状態コード "201 Created" が表示されます。 既定では、応答本文には、作成されたインデックス定義の JSON が含まれます。 ただし、Prefer 要求ヘッダーが return=minimal に設定されている場合、応答本文は空であり、成功状態コードは "201 Created" ではなく "204 No Content" になります。 インデックスの作成に PUT と POST のいずれを使用しても、同じ結果になります。

更新要求が成功すると、"204 コンテンツなし" と表示されます。 既定では、応答本文は空です。 ただし、要求ヘッダーが Preferreturn=representation設定されている場合、応答本文には、更新されたインデックス定義の JSON が含まれます。 この場合、成功状態コードは "200 OK" です。

例: Vector

ベクター検索はフィールド レベルで実装されます。 この定義は、ベクトル フィールドにフォーカスを置きます。 ベクター フィールドは、単精度浮動小数点値を格納するために使用される型 Collection(Edm.Single) である必要があります。 ベクター フィールドには、埋め込みの生成に使用される機械学習モデルでサポートされる出力ディメンションの数を保持する "ディメンション" プロパティがあります。 たとえば、text-embedding-ada-002 を使用している場合、 このドキュメントの出力ディメンションの最大数は 1536 です。 "algorithmConfiguration" は、インデックス内の "vectorSearch" 構成の名前に設定されます。 インデックスに複数を定義し、フィールドごとに 1 つを指定できます。

多くの属性は、ベクトル以外のフィールドにのみ適用されます。 ベクター フィールドでは、"filterable"、"sortable"、"facetable"、"analyzer"、"normalizer"、"synonymMaps" などの属性は無視されます。 同様に、英数字のコンテンツを含むフィールドに "dimensions" や "vectorSearchConfiguration" などのベクターのみのプロパティを設定した場合、これらの属性は無視されます。

{
    "name": "{{index-name}}",
    "fields": [
        {
            "name": "id",
            "type": "Edm.String",
            "key": true,
            "searchable": true,
            "retrievable": true,
            "filterable": true
        },
        {
            "name": "titleVector",
            "type": "Collection(Edm.Single)",
            "key": false,
            "searchable": true,
            "retrievable": true,
            "filterable": false,  
            "sortable": false,  
            "facetable": false,
            "analyzer": "",
            "searchAnalyzer": "",
            "indexAnalyzer": "",
            "normalizer": "",
            "synonymMaps": "", 
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        },
        {
            "name": "contentVector",
            "type": "Collection(Edm.Single)",
            "key": false,
            "searchable": true,
            "retrievable": true,
            "filterable": false,  
            "sortable": false,  
            "facetable": false,
            "analyzer": "",
            "searchAnalyzer": "",
            "indexAnalyzer": "",
            "normalizer": "",
            "synonymMaps": "", 
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        }
    ],
    "vectorSearch": {
        "algorithmConfigurations": [
            {
                "name": "my-vector-config",
                "kind": "hnsw",
                "hnswParameters": {
                    "m": 4,
                    "efConstruction": 400,
                    "efSearch": 500,
                    "metric": "cosine"
                }
            }
        ]
    }
}

例: ベクター フィールドと非ベクター フィールドを含むフィールド コレクション

ベクター検索はフィールド レベルで実装されます。 ハイブリッド クエリ シナリオをサポートするには、ベクター クエリと非ベクトル クエリのフィールドのペアを作成します。 "title"、"titleVector"、"content"、"contentVector" フィールドは、この規則に従います。 セマンティック検索も使用する場合は、それらの動作に非ベクトル テキスト フィールドが必要です。

{
    "name": "{{index-name}}",
    "fields": [
        {
            "name": "id",
            "type": "Edm.String",
            "key": true,
            "filterable": true
        },
        {
            "name": "title",
            "type": "Edm.String",
            "searchable": true,
            "retrievable": true
        },
        {
            "name": "content",
            "type": "Edm.String",
            "searchable": true,
            "retrievable": true
        },
        {
            "name": "category",
            "type": "Edm.String",
            "filterable": true,
            "searchable": true,
            "retrievable": true
        },
        {
            "name": "titleVector",
            "type": "Collection(Edm.Single)",
            "searchable": true,
            "retrievable": true,
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        },
        {
            "name": "contentVector",
            "type": "Collection(Edm.Single)",
            "searchable": true,
            "retrievable": true,
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        }
    ],
    "corsOptions": {
        "allowedOrigins": [
            "*"
        ],
        "maxAgeInSeconds": 60
    },
    "vectorSearch": {
        "algorithmConfigurations": [
            {
                "name": "my-vector-config",
                "kind": "hnsw",
                "hnswParameters": {
                    "m": 4,
                    "efConstruction": 400,
                    "efSearch": 500,
                    "metric": "cosine"
                }
            }
        ]
    },
    "semantic": {
        "configurations": [
            {
                "name": "my-semantic-config",
                "prioritizedFields": {
                    "titleField": {
                        "fieldName": "title"
                    },
                    "prioritizedContentFields": [
                        {
                            "fieldName": "content"
                        }
                    ],
                    "prioritizedKeywordsFields": [
                        {
                            "fieldName": "category"
                        }
                    ]
                }
            }
        ]
    }
}

例: 単純フィールドと複合フィールドを含むインデックス スキーマ

最初の例は、単純なフィールドと複雑なフィールドを含む完全なインデックス スキーマを示しています。 少なくとも 1 つの文字列フィールドに "key" が true に設定されている必要があります。

{
  "name": "hotels",  
  "fields": [
    { "name": "HotelId", "type": "Edm.String", "key": true, "filterable": true },
    { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false },
    { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.microsoft" },
    { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.microsoft" },
    { "name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
    { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "tagsAnalyzer", "normalizer": "tagsNormalizer" },
    { "name": "ParkingIncluded", "type": "Edm.Boolean", "filterable": true, "sortable": true, "facetable": true },
    { "name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "filterable": true, "sortable": true, "facetable": true },
    { "name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true },
    { "name": "Address", "type": "Edm.ComplexType", 
      "fields": [
          { "name": "StreetAddress", "type": "Edm.String", "filterable": false, "sortable": false, "facetable": false, "searchable": true },
          { "name": "City", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true, "normalizer": "lowercase" },
          { "name": "StateProvince", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "PostalCode", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "Country", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true }
        ]
    },
    { "name": "Location", "type": "Edm.GeographyPoint", "filterable": true, "sortable": true },
    { "name": "Rooms", "type": "Collection(Edm.ComplexType)", 
      "fields": [
          { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.lucene" },
          { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.lucene" },
          { "name": "Type", "type": "Edm.String", "searchable": true },
          { "name": "BaseRate", "type": "Edm.Double", "filterable": true, "facetable": true },
          { "name": "BedOptions", "type": "Edm.String", "searchable": true },
          { "name": "SleepsCount", "type": "Edm.Int32", "filterable": true, "facetable": true },
          { "name": "SmokingAllowed", "type": "Edm.Boolean", "filterable": true, "facetable": true },
          { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "facetable": true, "analyzer": "tagsAnalyzer", "normalizer": "tagsNormalizer" }
        ]
    }
  ],
  "suggesters": [ ],
  "analyzers": [ ],
  "normalizers": [ ],
  "encryptionKey": [ ]
}  

例: Suggesters

suggester 定義では、"検索可能" および "取得可能" の文字列フィールドを指定する必要があります (REST API では、すべての単純なフィールドが"retrievable": true既定で使用されます)。 suggester を定義した後、クエリ用語の一致または残りの部分を返すかどうかに応じて、 Suggestions API または Autocomplete API を使用するクエリ要求で名前で参照できます。

{
  "name": "hotels",  
  "fields": [
    { "name": "HotelId", "type": "Edm.String", "key": true, "filterable": true },
    { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false },
    { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.microsoft" },
    { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.microsoft" },
    { "name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
    { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "tagsAnalyzer", "normalizer": "tagsNormalizer" },
    { "name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true },

  ],
  "suggesters": [
    {  
      "name": "sg",  
      "searchMode": "analyzingInfixMatching",  
      "sourceFields": ["HotelName", "Category", "Tags"]  
    } 
  ]
} 

例: アナライザーとノーマライザー

アナライザーノーマライザー はフィールド定義で参照され、定義済みまたはカスタムにすることができます。 カスタム アナライザーまたはノーマライザーを使用している場合は、"アナライザー" セクションと "ノーマライザー" セクションのインデックスでそれらを指定します。

次の例は、"タグ" のカスタム アナライザーとノーマライザーを示しています。 また、"HotelName" と "Description" の定義済みのノーマライザー (標準) とアナライザー (en.microsoft) についても説明します。

{
  "name": "hotels",  
  "fields": [
    { "name": "HotelId", "type": "Edm.String", "key": true, "filterable": true },
    { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false, "normalizer": standard  },
    { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.microsoft"},
    { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.microsoft" },
    { "name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
    { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "tagsAnalyzer", "normalizer": "tagsNormalizer" },
    { "name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true },

  ],
  "analyzers": [
    {
      "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
      "name": "tagsAnalyzer",
      "charFilters": [ "html_strip" ],
      "tokenizer": "standard_v2"
    }
  ],
  "normalizers": [
    {
      "@odata.type": "#Microsoft.Azure.Search.CustomNormalizer",
      "name": "tagsNormalizer",
      "tokenFilters": [ "asciifolding", "lowercase" ]
    }
  ]
}  

例: 検索の関連性の類似性

このプロパティは、フルテキスト検索クエリの検索結果に関連性スコアを作成するために使用されるランク付けアルゴリズムを設定します。 2020 年 7 月 15 日以降に作成されたサービスでは、類似性アルゴリズムは常に BM25 であるため、このプロパティは無視されます。 2020 年 7 月 15 日 より前に 作成された既存のサービスの場合は、次のようにこのコンストラクトを設定して BM25 にオプトインできます。

 "similarity": {
     "@odata.type": "#Microsoft.Azure.Search.BM25Similarity"
 }

例: CORS オプション

ブラウザーではすべてのクロスオリジン要求が禁止されるため、クライアント側の JavaScript は既定で API を呼び出すことはできません。 インデックスへのクロスオリジン クエリを許可するには、 属性を設定して CORS (クロスオリジン リソース共有 (Wikipedia)) を corsOptions 有効にします。 セキュリティ上の理由から、CORS がサポートされているのはクエリ API だけです。

{
   "name": "hotels",  
   "fields": [ omitted for brevity ],
   "suggesters": [ omitted for brevity ],
   "analyzers": [ omitted for brevity ],
   "corsOptions": (optional) {  
       "allowedOrigins": ["*"] | ["https://docs.microsoft.com:80", "https://azure.microsoft.com:80", ...],  
       "maxAgeInSeconds": (optional) max_age_in_seconds (non-negative integer)  
     }
}

例: アクセス資格情報を使用した暗号化キー

暗号化キーは、追加の暗号化に使用されるカスタマー マネージド キーです。 詳細については、「Azure Key Vault でのカスタマー マネージド キーを使用した暗号化」を参照してください。

{
    "name": "hotels",  
    "fields": [ omitted for brevity ],
    "suggesters": [ omitted for brevity ],
    "analyzers": [ omitted for brevity ],
    "encryptionKey": (optional) { 
       "keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
       "keyVaultKeyVersion": "Version of the Azure Key Vault key",
       "keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key. An example URI might be https://my-keyvault-name.vault.azure.net",
       "accessCredentials": (optional, only if not using managed system identity) {
          "applicationId": "AAD Application ID that was granted access permissions to your specified Azure Key Vault",
          "applicationSecret": "Authentication key of the specified AAD application)"
        }
    }
} 

例: マネージド ID を使用した暗号化キー

システム割り当てマネージド ID またはユーザー割り当て (プレビュー) マネージド ID を使用して、Azure Key Vaultに対して認証を行うことができます。 この場合は、アクセス資格情報を省略するか、null に設定します。 次の例は、ユーザー割り当てマネージド ID を示しています。 システム割り当てマネージド ID を使用するには、アクセス資格情報と ID を省略します。 検索サービスのシステム ID に Azure Key Vault のアクセス許可がある限り、接続要求は成功するはずです。

{
  "name": "hotels",  
  "fields": [ omitted for brevity ],
  "suggesters": [ omitted for brevity ],
  "analyzers": [ omitted for brevity ],
  "encryptionKey": (optional) { 
      "keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
      "keyVaultKeyVersion": "Version of the Azure Key Vault key",
      "keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key. An example URI might be https://my-keyvault-name.vault.azure.net",
      "accessCredentials": null,
          "identity" : { 
              "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
              "userAssignedIdentity" : "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]"
          }
    }
} 

例: スコアリング プロファイル

スコアリング プロファイルは、検索結果の上位に表示されるドキュメントに影響を与えるカスタム スコアリング動作を定義するスキーマのセクションです。 スコアリング プロファイルは、フィールドの重みと関数で構成されます。 使用するには、クエリ文字列にプロファイル名を指定します。 詳細については、「 検索インデックスにスコアリング プロファイルを追加する (Azure AI Search REST API)」 を参照してください。

{
   "name": "hotels",  
   "fields": [ omitted for brevity ],
   "suggesters": [ omitted for brevity ],
   "analyzers": [ omitted for brevity ],
   "scoringProfiles": [  
   {  
     "name": "name of scoring profile",  
     "text": (optional, only applies to searchable fields) {  
       "weights": {  
         "searchable_field_name": relative_weight_value (positive #'s),  
         ...  
       }  
     },  
     "functions": (optional) [  
       {  
         "type": "magnitude | freshness | distance | tag",  
         "boost": # (positive number used as multiplier for raw score != 1),  
         "fieldName": "...",  
         "interpolation": "constant | linear (default) | quadratic | logarithmic",  
         "magnitude": {  
           "boostingRangeStart": #,  
           "boostingRangeEnd": #,  
           "constantBoostBeyondRange": true | false (default)  
         },  
         "freshness": {  
           "boostingDuration": "..." (value representing timespan leading to now over which boosting occurs)  
         },  
         "distance": {  
           "referencePointParameter": "...", (parameter to be passed in queries to use as reference location)  
           "boostingDistance": # (the distance in kilometers from the reference location where the boosting range ends)  
         },  
         "tag": {  
           "tagsParameter": "..." (parameter to be passed in queries to specify a list of tags to compare against target fields)  
         }  
       }  
     ],  
     "functionAggregation": (optional, applies only when functions are specified)   
       "sum (default) | average | minimum | maximum | firstMatching"  
       }  
 ]
}

例: セマンティック構成

セマンティック構成は、インデックス定義の一部であり、ランク付け、キャプション、強調表示、回答のセマンティック検索で使用されるフィールドを構成するために使用されます。 セマンティック検索を使用するには、クエリ時にセマンティック構成の名前を指定する必要があります。 詳細については、「セマンティック クエリを作成する」を参照してください。

{
   "name": "hotels",  
   "fields": [ omitted for brevity ],
   "suggesters": [ omitted for brevity ],
   "analyzers": [ omitted for brevity ],
   "semantic": {
     "configurations": [
       {
         "name": "my-semantic-config",
         "prioritizedFields": {
           "titleField": {
                 "fieldName": "hotelName"
               },
           "prioritizedContentFields": [
             {
               "fieldName": "description"
             },
             {
               "fieldName": "description_fr"
             }
           ],
           "prioritizedKeywordsFields": [
             {
               "fieldName": "tags"
             },
             {
               "fieldName": "category"
             }
           ]
         }
       }
     ]
   }
}

定義

Link 説明
corsOptions インデックスに付与されているドメインまたは配信元を一覧表示します。
defaultScoringProfile 既定のスコアリング動作を上書きするカスタム スコアリング プロファイルの名前。
encryptionKey カスタマー マネージド暗号化用に Azure Key Vaultへの接続を構成します。
fields 検索インデックス内のフィールドの定義と属性を設定します。
ノーマライザー カスタム ノーマライザーを構成します。 文字列の辞書順序を正規化し、大文字と小文字を区別しない並べ替え、ファセット、フィルター処理の出力を生成します。
"セマンティック" ランク付け、キャプション、強調表示、回答のセマンティック検索で使用されるフィールドを構成します。
scoringProfiles フルテキスト クエリの関連性チューニングに使用されます。
類似
suggesters オートコンプリートや提案などの部分的なクエリで一致するように内部プレフィックス ストレージを構成します。
vectorSearch ベクター フィールドに使用されるアルゴリズムを構成します。

corsOptions

ブラウザーではすべてのクロスオリジン要求が禁止されるため、クライアント側の JavaScript は既定で API を呼び出すことはできません。 インデックスへのクロスオリジン クエリを許可するには、"corsOptions" 属性を設定して CORS (クロスオリジン リソース共有) を有効にします。 セキュリティ上の理由から、CORS がサポートされているのはクエリ API だけです。

属性 説明
allowedOrigins 必須。 インデックスへのアクセスが許可される配信元のコンマ区切りのリスト。各配信元は通常、protocol://< fully-qualified-domain-name>:<port という形式です (<ただし>、ポート>は省略されることがよくあります)。 つまり、これらのオリジンから提供された JavaScript コードは、インデックスのクエリを実行できます (有効な API キーが提供されていると仮定)。 すべてのオリジンへのアクセスを許可する場合は、"allowedOrigins" 配列で 1 つの項目として を指定 * します。 これは運用環境では推奨されませんが、開発やデバッグに役立つ場合があります。
maxAgeInSeconds 省略可能。 ブラウザーでは、この値を使用して、CORS プレフライト応答をキャッシュする期間 (秒) が決定されます。 負ではない整数を指定する必要があります。 この値が大きい場合はパフォーマンスが向上しますが、これらの利益は CORS ポリシーの変更を有効にするために必要な時間によって相殺されます。 設定されていない場合は、既定の期間 5 分が使用されます。

defaultScoringProfile

省略可能。 インデックスで定義されているカスタム スコアリング プロファイルの名前である文字列。 カスタム プロファイルがクエリ文字列で明示的に指定されていない場合は常に、既定のプロファイルが呼び出されます。 詳細については、「 検索インデックスにスコアリング プロファイルを追加する」を参照してください。

encryptionKey

追加のカスタマー マネージド暗号化キー (CMK) 用に Azure Key Vaultへの接続を構成します。 2019 年 1 月 1 日以降に作成された課金対象の検索サービスで使用できます。

キー コンテナーへの接続を認証する必要があります。 この目的には、"accessCredentials" またはマネージド ID を使用できます。

マネージド ID は、システムまたはユーザー割り当て (プレビュー) にすることができます。 検索サービスにシステム割り当てマネージド ID と、キー コンテナーへの読み取りアクセスを許可するロールの割り当ての両方がある場合は、"identity" と "accessCredentials" の両方を省略でき、要求はマネージド ID を使用して認証されます。 検索サービスにユーザー割り当て ID とロールの割り当てがある場合は、"identity" プロパティをその ID のリソース ID に設定します。

属性 説明
keyVaultKeyName 必須。 暗号化に使用される Azure Key Vault キーの名前。
keyVaultKeyVersion 必須。 Azure Key Vault キーのバージョン。
keyVaultUri 必須。 キーを提供する Azure Key Vault (DNS 名とも呼ばれます) の URI。 URI の例を次に示します。 https://my-keyvault-name.vault.azure.net
accessCredentials 省略可能。 マネージド ID を使用している場合は、このプロパティを省略します。 それ以外の場合、"accessCredentials" のプロパティには、"applicationId" (指定した Azure Key Vaultへのアクセス許可を持つ Azure Active Directory アプリケーション ID) が含まれます

"applicationSecret" (指定した Azure AD アプリケーションの認証キー)。
identity Azure Key Vault への検索サービス接続にユーザー割り当てマネージド ID を使用している場合を除き、省略可能です。 形式は "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]" です。

fields

フィールド定義の属性に関する情報が含まれます。

属性 説明
name 必須。 フィールドの名前を設定します。フィールドの名前は、インデックスまたは親フィールドの fields コレクション内で一意である必要があります。
type 必須。 フィールドのデータ型を設定します。 フィールドは単純でも複雑でもかまいません。 単純フィールドは、テキストやEdm.Int32整数などのEdm.Stringプリミティブ型です。 複合フィールド には、それ自体が単純または複雑なサブフィールドを含めることができます。 これにより、オブジェクトとオブジェクトの配列をモデル化できます。これにより、ほとんどの JSON オブジェクト構造をインデックスにアップロードできます。 Collection(Edm.Single) は単精度浮動小数点値に対応します。 これはベクター フィールドにのみ使用され、必須です。 サポートされている型の完全な一覧については、「 サポートされているデータ 型」を参照してください。
key 必須。 フィールドの値がインデックス内のドキュメントを一意に識別するように指定するには、この属性を true に設定します。 キー フィールドの値の最大長は 1024 文字です。 キー フィールドとして各インデックスの最上位フィールドを 1 つだけ選択する必要があり、 型 Edm.Stringである必要があります。 既定値は、 false 単純なフィールドと null 複合フィールドの場合です。

キー フィールドを使用すると、ドキュメントを直接検索したり、特定のドキュメントを更新または削除したりできます。 キー フィールドの値は、ドキュメントを検索またはインデックス作成するときに、大文字と小文字を区別して処理されます。 詳細については、「 ドキュメントの参照 」および「 ドキュメントの追加、更新、または削除 」を参照してください。
retrievable フィールドを検索結果で返すことができるかどうかを示します。 フィルター、並べ替え、スコアリングのメカニズムとしてフィールド (余白など) を使用するが、フィールドをエンド ユーザーに表示しない場合は、この属性 false を に設定します。 この属性はキー フィールド用で true 、複合フィールド用である null 必要があります。 この属性は、既存のフィールドで変更できます。 取得可能に を true 設定しても、インデックス ストレージの要件は増加しません。 既定値は、 true 単純なフィールドと null 複合フィールドの場合です。
searchable フィールドがフルテキスト検索可能で、検索クエリで参照できるかどうかを示します。 つまり、インデックス作成中に単語区切りなどの 字句分析 が行われます。 検索可能なフィールドを "Sunny day" などの値に設定すると、内部的には個々のトークン "sunny" と "day" に正規化されます。 これにより、これらの語句をフルテキスト検索できます。 または Collection(Edm.String)Edm.Stringのフィールドは、既定で検索できます。 この属性は、 false 他の非文字列データ型の単純なフィールドの場合は である必要があり、複合フィールドの場合は である null 必要があります。

Azure AI Search はそれらのフィールドの内容を処理し、パフォーマンスの高い検索のために補助データ構造で整理するため、検索可能なフィールドはインデックスに余分な領域を消費します。 インデックスの領域を節約し、検索にフィールドを含める必要がない場合は、searchable を に false設定します。 詳細については、「 Azure AI Search でのフルテキスト検索のしくみ 」を参照してください。
filterable クエリで $filter フィールドを参照できるようにするかどうかを示します。 フィルター可能は、文字列の処理方法で検索可能とは異なります。 型またはCollection(Edm.String)フィルター可能なフィールドEdm.Stringは字句分析を受けないので、比較は完全一致のみを対象とします。 たとえば、このようなフィールド f を "晴れた日" に設定すると、 $filter=f eq 'sunny' 一致は見つかりませんが $filter=f eq 'Sunny day' 、 は見つかります。 この属性は、複合フィールドに対して である null 必要があります。 既定値は、 true 単純なフィールドと null 複合フィールドの場合です。 インデックス サイズを小さくするには、フィルター処理しないフィールドでこの属性 false を に設定します。
sortable 式で $orderby フィールドを参照できるようにするかどうかを示します。 既定では、Azure AI Search は結果をスコア順に並べ替えますが、多くのエクスペリエンスでは、ユーザーはドキュメント内のフィールドで並べ替えたいと考えています。 単純なフィールドは、単一値の場合にのみ並べ替えることができます (親ドキュメントのスコープに 1 つの値があります)。

単純なコレクション フィールドは複数値であるため、並べ替えできません。 複雑なコレクションの単純なサブフィールドも複数値であるため、並べ替えできません。 これは、それが直接の親フィールドであるか、先祖フィールドであるかに関係なく、複雑なコレクションです。 複合フィールドを並べ替え可能にすることはできません。また、このようなフィールドには並べ替え可能な属性を指定 null する必要があります。 並べ替え可能の既定値は、 true 単一値の単純フィールド、 false 複数値の単純フィールド、および null 複合フィールドの場合です。
facetable ファセット クエリでフィールドを参照できるようにするかどうかを示します。 通常、カテゴリ別のヒット数を含む検索結果のプレゼンテーションで使用されます (たとえば、デジタルカメラを検索し、ブランド別、メガピクセル別、価格別などのヒット数を確認します)。 この属性は、複合フィールドに対して である null 必要があります。 型 Edm.GeographyPoint または Collection(Edm.GeographyPoint) 型のフィールドをファセット可能にすることはできません。 既定値は、 true 他のすべての単純なフィールドに対してです。 インデックス サイズを小さくするには、ファセットを設定しないフィールドでこの属性 false を に設定します。
アナライザー インデックス作成およびクエリ操作中に文字列をトークン化するための構文アナライザーを設定します。 このプロパティの有効な値には、 言語アナライザー組み込みのアナライザーおよびカスタム アナライザーが含まれます。 既定値は、standard.lucene です。 この属性は、検索可能なフィールドでのみ使用でき、searchAnalyzer または indexAnalyzer と共に設定することはできません。 アナライザーが選択され、フィールドがインデックスに作成されると、フィールドに対して変更することはできません。 複合フィールドの 場合は であるnull必要があります。
searchAnalyzer このプロパティを indexAnalyzer と共に設定して、インデックス作成とクエリに対してさまざまな構文アナライザーを指定します。 このプロパティを使用する場合は、アナライザーを に null 設定し、indexAnalyzer が許可される値に設定されていることを確認します。 このプロパティの有効な値には、 組み込みのアナライザーカスタム アナライザーが含まれます。 この属性は、検索可能なフィールドでのみ使用できます。 検索アナライザーはクエリ時にのみ使用されるため、既存のフィールドで更新できます。 複合フィールドの 場合は であるnull必要があります。
indexAnalyzer このプロパティを searchAnalyzer と共に設定して、インデックス作成とクエリに異なる構文アナライザーを指定します。 このプロパティを使用する場合は、アナライザーを に null 設定し、searchAnalyzer が許可される値に設定されていることを確認します。 このプロパティの有効な値には、 組み込みのアナライザーカスタム アナライザーが含まれます。 この属性は、検索可能なフィールドでのみ使用できます。 インデックス アナライザーを選択すると、フィールドに対して変更することはできません。 複合フィールドの 場合は であるnull必要があります。
ノーマライザー フィルター処理、並べ替え、ファセット操作のノーマライザーを設定します。 定義済みのノーマライザーの名前、またはインデックス内で定義されたカスタム ノーマライザーを指定できます。 既定値は です null。これにより、逐語的で分析されていないテキストと完全に一致します。 この属性は、フィルター可能、並べ替え可能、またはファセット可能の少なくとも 1 つが true に設定されている フィールドと Collection(Edm.String) フィールドでのみEdm.String使用できます。 ノーマライザーは、インデックスに追加された場合にのみフィールドに設定でき、後で変更することはできません。 複合フィールドの 場合は であるnull必要があります。 定義済みのノーマライザーの有効な値には、

standard- テキストの後に asciifolding が続く小文字が含まれます。
lowercase- 文字を小文字に変換します。
uppercase - 文字を大文字に変換します。
asciifolding - Basic Latin Unicode ブロックに含まれていない文字を、ASCII に相当する文字 (存在する場合) に変換します。 たとえば、"à" を "a" に変更します。
elision- トークンの先頭からエリジオンを削除します。
synonymMaps このフィールドに関連付けるシノニム マップの名前の一覧。 この属性は、検索可能なフィールドでのみ使用できます。 現時点では、フィールドごとに 1 つのシノニム マップのみがサポートされています。 シノニム マップをフィールドに割り当てると、シノニム マップのルールを使用して、そのフィールドを対象とするクエリ用語がクエリ時に展開されます。 この属性は、既存のフィールドで変更できます。 複合フィールドの場合は null 、 または 空のコレクションである必要があります。
fields これが 型 Edm.ComplexType または Collection(Edm.ComplexType)のフィールドである場合のサブフィールドのリスト。 単純なフィールドの場合は null 、 または を空にする必要があります。 サブフィールドの使用方法と使用方法の詳細については、「 Azure AI Search で複雑なデータ型をモデル 化する方法」を参照してください。
dimensions 整数。 ベクター フィールドに必要です。 **これは、埋め込みモデルの出力埋め込みサイズと一致する必要があります。 たとえば、一般的な Azure OpenAI モデル text-embedding-ada-002の場合、その出力ディメンションは 1536 であるため、これはそのベクター フィールドに設定するディメンションになります。 ディメンション属性は、それぞれ最小 2 個、最大 2048 個の浮動小数点値を持っています。
vectorSearchConfiguration ベクター フィールド定義に必要です。 ベクター フィールドで使用される "vectorSearch" アルゴリズム構成 の名前を指定します。 フィールドが作成されたら、vectorSearchConfiguration の名前を変更することはできませんが、インデックス内のアルゴリズム構成のプロパティを変更することはできます。 これにより、アルゴリズムの種類とパラメーターを調整できます。

注意

フィルター可能、並べ替え可能、またはファセット可能な型 Edm.String のフィールドの長さは、最大 32 キロバイトです。 これは、このようなフィールドの値は 1 つの検索用語として扱われ、Azure AI Search の用語の最大長は 32 キロバイトであるためです。 これより多くのテキストを 1 つの文字列フィールドに格納する必要がある場合は、インデックス定義でフィルター可能、並べ替え可能、ファセット可能を に明示的に設定する false 必要があります。

フィールドを検索可能、フィルター可能、並べ替え可能、またはファセット可能として設定すると、インデックス サイズとクエリのパフォーマンスに影響します。 これらの属性は、クエリ式で参照されることを意図していないフィールドには設定しないでください。

フィールドが検索可能、フィルター可能、並べ替え可能、またはファセット可能に設定されていない場合、フィールドはどのクエリ式でも参照できません。 これは、クエリでは使用されず、検索結果に必要なフィールドに役立ちます。

ノーマライザー

文字フィルターとトークン フィルターのユーザー定義の組み合わせを持つ カスタム ノーマライザー を定義します。 インデックスでカスタム ノーマライザーを定義した後、 フィールド定義で名前で指定できます。

属性 説明
name 必須。 ユーザー定義のカスタム ノーマライザーのいずれかを指定する文字列フィールド。
charFilters カスタム ノーマライザーで使用されます。 カスタム ノーマライザーで使用するためにサポートされている 1 つ以上の 文字フィルター を指定できます:
マッピング
pattern_replace
tokenFilters カスタム ノーマライザーで使用されます。 カスタム ノーマライザー
で使用するためにサポートされている 1 つ以上のトークン ティッターを指定できます。arabic_normalizationasciifolding
cjk_width
elision
german_normalization

hindi_normalization indic_normalization
persian_normalization
scandinavian_normalization
scandinavian_folding
sorani_normalization

小文字の
大文字

scoringProfiles

スコアリング プロファイルは、フルテキスト検索に適用されます。 プロファイルはインデックスで定義され、プロファイルで定義されている条件を満たす一致するドキュメントに高い検索スコアを付与できるカスタム ロジックを指定します。 複数のスコアリング プロファイルを作成し、クエリに割り当てることができます。

カスタム プロファイルを作成する場合は、 を設定 defaultScoringProfileして既定にすることができます。 詳細については、「 検索インデックスにスコアリング プロファイルを追加する」を参照してください。

"セマンティック"

セマンティック構成は、ランク付け、キャプション、強調表示、回答のセマンティック検索によって使用されるフィールドを構成するために使用されるインデックス定義の一部です。 セマンティック構成は、タイトル フィールド、優先順位付けされたコンテンツ フィールド、優先順位付けされたキーワード (keyword) フィールドで構成されます。 3 つのサブプロパティ (titleField、prioritizedKeywordsFields、prioritizedContentFields) のそれぞれに少なくとも 1 つのフィールドを指定する必要があります。 型 Edm.String または Collection(Edm.String) の任意のフィールドは、セマンティック構成の一部として使用できます。

セマンティック検索を使用するには、クエリ時にセマンティック構成の名前を指定する必要があります。 詳細については、「セマンティック クエリを作成する」を参照してください。

{
   "name": "hotels",  
   "fields": [ omitted for brevity ],
   "suggesters": [ omitted for brevity ],
   "analyzers": [ omitted for brevity ],
   "semantic": {
     "configurations": [
       {
         "name": "name of the semantic configuration",
         "prioritizedFields": {
           "titleField": {
                 "fieldName": "..."
               },
           "prioritizedContentFields": [
             {
               "fieldName": "..."
             },
             {
               "fieldName": "..."
             }
           ],
           "prioritizedKeywordsFields": [
             {
               "fieldName": "..."
             },
             {
               "fieldName": "..."
             }
           ]
         }
       }
     ]
   }
}
属性 説明
name 必須。 セマンティック構成の名前。
prioritizedFields 必須。 セマンティック ランク付け、キャプション、強調表示、回答に使用するタイトル、コンテンツ、およびキーワード (keyword)フィールドについて説明します。 3 つのサブプロパティ (titleField、prioritizedKeywordsFields、prioritizedContentFields) のうち少なくとも 1 つを設定する必要があります。
prioritizedFields.titleField セマンティック ランク付け、キャプション、強調表示、回答に使用するタイトル フィールドを定義します。 インデックスにタイトル フィールドがない場合は、空白のままにします。
prioritizedFields.prioritizedContentFields セマンティック ランク付け、キャプション、強調表示、回答に使用するコンテンツ フィールドを定義します。 最適な結果を得られるには、選択したフィールドに自然言語形式のテキストが含まれている必要があります。 配列内のフィールドの順序は、その優先順位を表します。 コンテンツが長い場合、優先度の低いフィールドは切り捨てられる可能性があります。
prioritizedFields.prioritizedKeywordsFields セマンティック ランク付け、キャプション、強調表示、回答に使用するキーワード (keyword) フィールドを定義します。 最適な結果を得るには、選択したフィールドにキーワードの一覧が含まれている必要があります。 配列内のフィールドの順序は、その優先順位を表します。 コンテンツが長い場合、優先度の低いフィールドは切り捨てられる可能性があります。

similarity

2020 年 7 月 15 日より前に作成されたサービスに適用される省略可能なプロパティ。 これらのサービスでは、2020 年 7 月に導入された BM25 ランク付けアルゴリズムを使用するようにこのプロパティを設定できます。 有効な値には、(前の既定値) または が"#Microsoft.Azure.Search.BM25Similarity"含まれます"#Microsoft.Azure.Search.ClassicSimilarity"

2020 年 7 月以降に作成されたすべてのサービスでは、このプロパティを設定しても効果はありません。 新しいサービスはすべて、フルテキスト検索の唯一のランク付けアルゴリズムとして BM25 を使用します。 詳細については、「 Azure AI Search でのアルゴリズムのランク付け」を参照してください。

suggesters

オートコンプリートや候補などの部分クエリで一致するプレフィックスを格納するコンストラクトを指定します。

属性 説明
name 必須。 suggester の名前。
sourceFields 必須。 オートコンプリートまたは推奨される結果を有効にする 1 つ以上の文字列フィールド。
searchMode 必須。常に に設定します analyzingInfixMatching。 クエリ文字列内の任意の用語で照合が行われることを指定します。

vectorSearch

vectorSearch オブジェクトを使用すると、ベクター検索プロパティを構成できます。 現在、アルゴリズム構成のみを構成できます。 これにより、ベクター フィールドに使用されるアルゴリズム型とアルゴリズム パラメーターを構成できます。 複数の構成を使用できます。 ベクター フィールドによって参照される構成は、変更も削除もできません。 参照されていない構成は、変更または削除できます。 (fields コレクション内の) ベクター フィールド定義では、フィールドが使用するベクター検索アルゴリズムの構成 (プロパティを使用 vectorSearchConfiguration ) を指定する必要があります。

"vectorSearch": {
    "algorithmConfigurations": [
        {
            "name": "my-vector-config",
            "kind": "hnsw",
            "hnswParameters": {
                "m": 4,
                "efConstruction": 400,
                "efSearch": 500,
                "metric": "cosine"
            }
        }
    ]
}
属性 説明
name 必須。 アルゴリズム構成の名前。
kind 使用するアルゴリズムの種類。 '"hnsw"' のみがサポートされています。これは階層ナビゲーション可能 Small World (HNSW) アルゴリズムです。
hnswParameters 省略可能。 "hnsw" アルゴリズムのパラメーター。 このオブジェクトを省略すると、既定値が使用されます。

hnswParameters

このオブジェクトには、アルゴリズム パラメーターのカスタマイズが hnsw 含まれています。 すべてのプロパティは省略可能であり、省略された場合は既定値が使用されます。

属性 説明
メトリック 文字列。 ベクター比較に使用する類似性メトリック。 の場合 hnsw、使用できる値は "cosine"、"euclidean"、"dotProduct" です。 既定値は "cosine" です。
m 整数。 構築中に新しい要素ごとに作成された双方向リンクの数。 既定値は 4 です。 許容範囲は 4 ~ 10 です。 値を大きくすると、グラフが高密度になり、クエリのパフォーマンスが向上しますが、より多くのメモリと計算が必要になります。
efConstruction 整数。 インデックス作成中に使用される最も近い近隣ノードの動的リストのサイズ。 既定値は 400 です。 許容範囲は 100 ~ 1000 です。値を大きくすると、インデックスの品質が向上しますが、より多くのメモリと計算が必要になります。
efSearch 整数。 検索時に使用される、最も近い近隣ノードを含む動的リストのサイズ。 既定値は 500 です。 許容範囲は 100 ~ 1000 です。 このパラメーターを大きくすると検索結果が向上する可能性がありますが、クエリのパフォーマンスが低下します。

はクエリ時間パラメーターであるため efSearch 、既存のフィールドがアルゴリズム構成を使用している場合でも、この値を更新できます。

こちらもご覧ください