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

: 2023-07-01-Preview に適用されます。 このバージョンはサポートされなくなりました。 新しいバージョンにすぐに アップグレードします。

大事な

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

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

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

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

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 から削除したり、suggesters に追加したりすることはできません。

アナライザー、トークナイザー、トークン フィルター、または文字フィルター への更新は許可されません。 必要な変更で新しいものを作成できますが、新しいアナライザー定義を追加するときは、インデックスをオフラインにする必要があります。 インデックスの更新要求で 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 必須。 その他のバージョンについては、API のバージョン を参照してください。
allowIndexDowntime 随意。 既定では False です。 アナライザー、トークナイザー、トークン フィルター、文字フィルター、類似性プロパティの追加や変更など、特定の更新の場合は true に設定します。 インデックスは更新中にオフラインになります。通常は数秒以下です。

要求ヘッダー

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

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

要求本文

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

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

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

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

{  
  "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) { }  
}  

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

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

応答

作成要求が成功すると、状態コード "201 Created" が表示されます。 既定では、応答本文には、作成されたインデックス定義の JSON が含まれます。 ただし、Prefer 要求ヘッダーが return=minimal に設定されている場合、応答本文は空で、成功状態コードは "201 Created" ではなく "204 No Content" になります。 これは、インデックスの作成に PUT と POST のどちらを使用するかに関係なく当てはまります。

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

例: ベクター

ベクター検索はフィールド レベルで実装されます。 この定義は、ベクトル フィールドにフォーカスを置きます。 ベクター フィールドは、単精度浮動小数点値の格納に使用 Collection(Edm.Single) 型である必要があります。 ベクター フィールドには、埋め込みの生成に使用される機械学習モデルでサポートされる出力ディメンションの数を保持する "dimensions" プロパティがあります。 たとえば、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 またはオートコンプリート 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"]  
    } 
  ]
} 

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

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

次の例は、"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 を呼び出すことはできません。 インデックスに対するクロスオリジン クエリを許可するには、corsOptions 属性を設定して CORS (クロスオリジン リソース共有 (Wikipedia)) を有効にします。 セキュリティ上の理由から、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"
             }
           ]
         }
       }
     ]
   }
}

定義

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

corsOptions

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

属性 形容
allowedOrigins 必須。 インデックスへのアクセスが許可される配信元のコンマ区切りのリスト。各配信元は通常、完全修飾ドメイン名>protocol://<形式です。ポート><します (ただし、<ポート> は省略されることがよくあります)。 つまり、これらのオリジンから提供されるすべての 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 の URI (DNS 名とも呼ばれます)。 URI の例が https://my-keyvault-name.vault.azure.net
accessCredentials 随意。 マネージド ID を使用している場合は、このプロパティを省略します。 それ以外の場合、"accessCredentials" のプロパティには、
"applicationId" (指定した Azure Key Vault へのアクセス許可を持つ Azure Active Directory アプリケーション ID) が含まれます。 "applicationSecret" (指定した Azure AD アプリケーションの認証キー) を
します。
同一性 Azure Key Vault への検索サービス接続にユーザー割り当てマネージド ID を使用している場合を除き、省略可能です。 形式は "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]"です。

田畑

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

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

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

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

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

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

手記

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

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

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

ノーマライザー

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

属性 形容
名前 必須。 ユーザー定義カスタム ノーマライザーのいずれかを指定する文字列フィールド。
charFilters カスタム ノーマライザーで使用されます。 カスタム ノーマライザーで使用するためにサポート 使用可能な文字フィルターを 1 つ以上指定できます。マッピングpattern_replace
tokenFilters カスタム ノーマライザーで使用されます。 カスタム ノーマライザーでの使用がサポート 使用可能なトークン ティラーの 1 つ以上を指定できます。arabic_normalizationasciifoldingcjk_widthelisiongerman_normalizationhindi_normalizationindic_normalizationpersian_normalizationscandinavian_normalizationscandinavian_foldingsorani_normalization小文字大文字

scoringProfiles

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

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

セマンティック

セマンティック構成は、ランキング、キャプション、強調表示、回答のセマンティック検索で使用されるフィールドを構成するために使用されるインデックス定義の一部です。 セマンティック構成は、タイトル フィールド、優先順位付けされたコンテンツ フィールド、および優先順位付けされたキーワード フィールドで構成されます。 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": "..."
             }
           ]
         }
       }
     ]
   }
}
属性 形容
名前 必須。 セマンティック構成の名前。
prioritizedFields 必須。 セマンティック ランク付け、キャプション、強調表示、回答に使用するタイトル、コンテンツ、およびキーワード フィールドについて説明します。 3 つのサブプロパティ (titleField、prioritizedKeywordsFields、prioritizedContentFields) のうち少なくとも 1 つを設定する必要があります。
prioritizedFields.titleField セマンティック ランク付け、キャプション、強調表示、回答に使用するタイトル フィールドを定義します。 インデックスにタイトル フィールドがない場合は、空白のままにします。
prioritizedFields.prioritizedContentFields セマンティック ランク付け、キャプション、強調表示、回答に使用するコンテンツ フィールドを定義します。 最適な結果を得る場合は、選択したフィールドに自然言語形式のテキストが含まれている必要があります。 配列内のフィールドの順序は、その優先順位を表します。 コンテンツが長い場合、優先順位の低いフィールドは切り捨てられる可能性があります。
prioritizedFields.prioritizedKeywordsFields セマンティック ランク付け、キャプション、強調表示、回答に使用するキーワード フィールドを定義します。 最適な結果を得る場合は、選択したフィールドにキーワードの一覧が含まれている必要があります。 配列内のフィールドの順序は、その優先順位を表します。 コンテンツが長い場合、優先順位の低いフィールドは切り捨てられる可能性があります。

相似

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

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

suggesters

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

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

vectorSearch

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

"vectorSearch": {
    "algorithmConfigurations": [
        {
            "name": "my-vector-config",
            "kind": "hnsw",
            "hnswParameters": {
                "m": 4,
                "efConstruction": 400,
                "efSearch": 500,
                "metric": "cosine"
            }
        }
    ]
}
属性 形容
名前 必須。 アルゴリズム構成の名前。
種類 使用するアルゴリズムの種類。 "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 はクエリ時間パラメーターであるため、既存のフィールドがアルゴリズム構成を使用している場合でも、この値を更新できます。

関連項目