Sdílet prostřednictvím


Vytvoření nebo aktualizace indexu (rozhraní REST API verze Preview)

platí pro: 2023-07-01-Preview. Tato verze se už nepodporuje. okamžitě upgradovat na novější verzi.

Důležitý

2023-07-01-Preview přidává vektorové vyhledávání.

  • "vectorSearch" objektu, konfigurace nastavení vektorového vyhledávání. Platí pouze pro algoritmy vektorové vyhledávání.
  • "Collection(Edm.Single)" datový typ požadovaný pro vektorové pole. Představuje číslo s plovoucí desetinnou čárkou s jednoduchou přesností jako primitivní typ.
  • vlastnost "dimenze" vyžadovaná pro vektorové pole. Představuje dimenzionální rozměry vložených vektorů.
  • "vectorSearchConfiguration" vlastnost vyžadovaná pro vektorové pole. Vybere konfiguraci algoritmu pro toto pole.

2021-04-30-Preview přidává:

  • "sémanticConfiguration" sloužící k určení rozsahu sémantického řazení na konkrétní pole.
  • "identity" v části "encryptionKey", která slouží k načtení šifrovacího klíče spravovaného zákazníkem ze služby Azure Key Vault pomocí spravované identity přiřazené uživatelem.

2020-06-30-Preview přidává:

  • "normalizátory", které se používají pro rozlišování malých a malých písmen u řazení a filtrů.

Index určuje schéma indexu, včetně kolekce polí (názvy polí, datové typy a atributy), ale také jiné konstrukty (návrhy, profily bodování a konfigurace CORS), které definují další chování hledání.

V žádosti o vytvoření můžete použít POST nebo PUT. V každém z nich tělo požadavku poskytuje definici objektu.

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

Pro žádosti o aktualizace použijte put a zadejte název indexu na identifikátoru URI.

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

Pro všechny žádosti o služby se vyžaduje HTTPS. Pokud index neexistuje, vytvoří se. Pokud už existuje, aktualizuje se na novou definici.

Vytvoření indexu vytvoří schéma a metadata. Naplnění indexu je samostatná operace. V tomto kroku můžete použít indexer (viz operace indexeru, dostupné pro podporované zdroje dat) nebo Přidat, Aktualizovat nebo Odstranit dokumenty. Maximální počet indexů, které můžete vytvořit, se liší podle cenové úrovně. V každém indexu platí omezení jednotlivých prvků. Další informace najdete v tématu Omezení služby azure AI Search.

Aktualizace existujícího indexu musí obsahovat úplnou definici schématu včetně všech původních definic, které chcete zachovat. Obecně platí, že nejlepší vzor aktualizací je načíst definici indexu pomocí get, upravit ji a pak ji aktualizovat pomocí put.

Vzhledem k tomu, že existující index obsahuje obsah, mnoho úprav indexu vyžaduje přetažení indexu a opětovné sestavení. Následující změny schématu jsou výjimkou tohoto pravidla:

  • Přidání nových polí

  • Přidání nebo změna profilů bodování

  • Přidání nebo změna sémantických konfigurací

  • Změna možností CORS

  • Změna existujících polí s některou z následujících tří úprav:

    • Zobrazení nebo skrytí polí (retrievable: true | false)
    • Změna analyzátoru použitého v době dotazu (searchAnalyzer)
    • Přidání nebo úprava synonymMap použitého v době dotazu (synonymMaps)

Pokud chcete u existujícího indexu provést některou z výše uvedených změn schématu, zadejte název indexu na identifikátoru URI požadavku a pak do nových nebo změněných prvků zahrňte plně zadanou definici indexu.

Při přidání nového pole mají všechny existující dokumenty v indexu hodnotu null pro toto pole. Dokud nedojde k jedné ze dvou věcí, nevyužívají se žádné další prostory úložiště: pro nové pole je zadaná hodnota (pomocí slučovacího) nebo se přidají nové dokumenty.

aktualizace suggester mají podobná omezení: nová pole je možné přidat do suggester současně přidávat pole, ale stávající pole se nedají odebrat ani přidat do suggesters bez opětovného sestavení indexu.

Aktualizace analyzátoru, tokenizátoru, filtru tokenu nebo filtru znaků nejsou povoleny. Nové je možné vytvořit s požadovanými změnami, ale při přidávání nových definic analyzátoru musíte index převést do offline režimu. Nastavení příznaku allowIndexDowntime na hodnotu true v požadavku na aktualizaci indexu přejde do režimu offline:

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

Tato operace přenese index nejméně několik sekund do offline režimu, což znamená, že indexování a požadavky na dotazy selžou, dokud index nebude zase online a připravený zpracovat požadavky.

Parametry identifikátoru URI

Parametr Popis
název služby Požadovaný. Nastavte tuto hodnotu na jedinečný uživatelsky definovaný název vyhledávací služby.
název indexu Vyžaduje se u identifikátoru URI, pokud používáte metodu PUT. Název musí obsahovat malá písmena, začínat písmenem nebo číslicí, nesmí obsahovat lomítka ani tečky a musí mít méně než 128 znaků. Pomlčky nemůžou být po sobě jdoucí.
api-version Požadovaný. Další verze najdete v verzích rozhraní API.
allowIndexDowntime Volitelný. Ve výchozím nastavení je false. Nastavte na hodnotu True pro určité aktualizace, například přidání nebo úpravu analyzátoru, tokenizátoru, filtru tokenů, filtru znaků nebo vlastnosti podobnosti. Index se během aktualizace přebíná offline, obvykle ne déle než několik sekund.

Hlavičky požadavku

Následující tabulka popisuje povinnou a volitelnou hlavičku požadavku.

Pole Popis
Typ obsahu Požadovaný. Nastavte tuto hodnotu na application/json
api-key Volitelné, pokud používáte role Azure a v požadavku je k dispozici nosný token, jinak se vyžaduje klíč. Api-key je jedinečný systémový vygenerovaný řetězec, který ověřuje požadavek ve vaší vyhledávací službě. Žádosti o vytvoření musí obsahovat hlavičku api-key nastavenou na klíč správce (na rozdíl od klíče dotazu). Podrobnosti najdete v tématu Připojení k Azure AI Search pomocí ověřování klíčů.

Text požadavku

Tělo požadavku obsahuje definici schématu, která zahrnuje seznam datových polí v dokumentech, které jsou do tohoto indexu předány.

Následující JSON představuje základní reprezentaci schématu, které podporuje vektorové vyhledávání. Schéma vyžaduje klíčové pole a toto pole klíče může být prohledávatelné, filtrovatelné, řazené a facetable.

Pole vektorového vyhledávání je typu Collection(Edm.Single). Vzhledem k tomu, že vektorová pole nejsou textová, vektorové pole se nedá použít jako klíč a nepřijímá analyzátory, normalizátory, návrhy ani synonyma. Musí mít vlastnost "dimensions" a vlastnost "vectorSearchConfiguration".

Schéma, které podporuje vektorové vyhledávání, může také podporovat hledání klíčových slov. Jiná nevectorová pole v indexu můžou používat všechny analyzátory, synonyma a bodovací profily, které do indexu zahrnete.

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

Požadavek obsahuje následující vlastnosti:

Vlastnost Popis
Jméno Požadovaný. Název indexu. Název indexu musí obsahovat jenom malá písmena, číslice nebo pomlčky, nesmí začínat ani končit pomlčkami a je omezený na 128 znaků.
popis Volitelný popis.
pole Kolekce polí pro tento index, kde každé pole má název, podporovaný datový typ, který odpovídá modelu EDM (Entity Data Model) a atributům, které definují povolené akce pro toto pole. Kolekce polí musí mít jedno pole typu Edm.String s klíčem nastaveným na true. Toto pole představuje jedinečný identifikátor, někdy označovaný jako ID dokumentu, pro každý dokument uložený s indexem. Kolekce polí teď přijímá vektorová pole.
podobnosti Volitelný. U služeb vytvořených před 15. července 2020 nastavte tuto vlastnost tak, aby se přihlásila k algoritmu hodnocení BM25.
návrhy Určuje konstruktor, který ukládá předpony pro porovnávání částečných dotazů, jako jsou automatické dokončování a návrhy.
bodováníprofiles Volitelný. Používá se k ladění relevance pro fulltextové dotazy.
sémantické Volitelný. Definuje parametry indexu vyhledávání, které ovlivňují sémantické možnosti vyhledávání. Pro sémantické dotazy se vyžaduje sémantická konfigurace. Další informace najdete v tématu Vytvoření sémantického dotazu.
vectorSearch Volitelný. Konfiguruje různá nastavení vektorové vyhledávání. Je možné nakonfigurovat pouze algoritmy vektorového vyhledávání.
normalizátory Volitelný. Normalizuje lexikografické řazení řetězců, což vytváří výstup řazení a filtrování nerozlišuje malá a velká písmena.
analyzátory, charFilters, tokenizátory, tokenfiltery Volitelný. Tyto části indexu zadejte, pokud definujete vlastních analyzátorů. Ve výchozím nastavení jsou tyto oddíly null.
výchozího souboruScoringProfile Název vlastního bodovacího profilu, který přepíše výchozí chování vyhodnocování.
corsOptions Volitelný. Používá se pro dotazy mezi zdroji v indexu.
šifrovacího klíče Volitelný. Používá se k dodatečnému šifrování indexu prostřednictvím šifrovacích klíčů spravovaných zákazníkem (CMK) ve službě Azure Key Vault. Dostupné pro fakturovatelné vyhledávací služby vytvořené 1. 1. 2019 nebo po 1. 1. 2019.

Odpověď

V případě úspěšného požadavku na vytvoření by se měl zobrazit stavový kód 201 Created(201 Created). Ve výchozím nastavení text odpovědi obsahuje JSON pro definici indexu, která byla vytvořena. Pokud je však hlavička Prefer request nastavena na return=minimal, text odpovědi je prázdný a stavový kód úspěchu je "204 No Content" místo "201 Created". To platí bez ohledu na to, jestli se k vytvoření indexu používá PUT nebo POST.

V případě úspěšné žádosti o aktualizaci by se měl zobrazit text 204 Bez obsahu. Ve výchozím nastavení je text odpovědi prázdný. Pokud je však hlavička požadavku Prefer nastavená na return=representation, text odpovědi obsahuje JSON pro definici indexu, která byla aktualizována. V tomto případě je stavový kód úspěchu "200 OK".

Příklady

Příklad : Vektorová

Vektorové vyhledávání je implementováno na úrovni pole. Tato definice se zaměřuje na vektorová pole. Vektorová pole musí být typu Collection(Edm.Single) použitá k ukládání hodnot s plovoucí desetinnou čárkou s jednoduchou přesností. Vektorová pole mají vlastnost "dimenze", která obsahuje počet výstupních dimenzí podporovaných modelem strojového učení, který se používá ke generování vložených objektů. Pokud například používáte text-embedding-ada-002, maximální počet výstupních dimenzí je 1536 na tento dokument. AlgoritmusConfiguration je nastavený na název konfigurace vectorSearch v indexu. V indexu můžete definovat více a pak zadat jeden na pole.

Mnoho atributů se vztahuje pouze na nevectorová pole. Atributy jako "filterable", "sortable", "facetable", "analyzer", "normalizer" a "synonymMaps" se pro vektorová pole ignorují. Podobně pokud nastavíte vektorové vlastnosti, jako jsou "dimenze" nebo "vectorSearchConfiguration" u pole obsahujícího alfanumerické obsah, budou tyto atributy ignorovány.

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

Příklad: Kolekce polí s vektorovými a ne vektorovými poli

Vektorové vyhledávání je implementováno na úrovni pole. Pokud chcete podporovat scénáře hybridních dotazů, vytvořte dvojice polí pro vektorové a nevectorové dotazy. Pole "title", "titleVector", "content", "contentVector" se řídí touto konvencí. Pokud chcete také použít sémantické vyhledávání, musíte mít pro toto chování textová pole nevectoru.

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

Příklad : Schéma indexu s jednoduchými a složitými poli

První příklad ukazuje kompletní schéma indexu s jednoduchými a složitými poli. Nejméně jedno pole řetězce musí mít nastavenou hodnotu "key" na hodnotu 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": [ ]
}  

Příklad : Návrhy

Definice pro návrhy by měla obsahovat pole řetězce "prohledávatelná" a "načístelná" (ve výchozím nastavení jsou všechna jednoduchá pole ). Jakmile je nadefinován navrhovač, můžete na něj odkazovat podle názvu u požadavků na dotazy, které používají rozhraní API pro návrhy nebo rozhraní API automatického dokončování– v závislosti na tom, jestli chcete vrátit shodu nebo zbytek termínu dotazu.

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

Příklad : Analyzátory a normalizátory

Analyzátory a normalizátory odkazují na definice polí a můžou být buď předdefinované, nebo vlastní. Pokud používáte vlastní analyzátory nebo normalizátory, zadejte je v indexu v oddílech "analyzátory" a "normalizátory".

Následující příklad znázorňuje vlastní analyzátory a normalizátory pro značky. Ukazuje také předdefinovaný normalizátor (standard) a analyzátor (en.microsoft) pro "HotelName" a "Description".

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

příklad : Podobnost pro relevance vyhledávání

Tato vlastnost nastaví algoritmus řazení použitý k vytvoření skóre relevance ve výsledcích hledání fulltextového vyhledávacího dotazu. Ve službách vytvořených po 15. července 2020 se tato vlastnost ignoruje, protože algoritmus podobnosti je vždy BM25. Pro stávající služby vytvořené před 15. července 2020 se můžete přihlásit k BM25 nastavením tohoto konstruktoru následujícím způsobem:

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

Příklad : Možnosti CORS

JavaScript na straně klienta nemůže ve výchozím nastavení volat žádná rozhraní API, protože prohlížeč brání všem požadavkům mezi zdroji. Pokud chcete povolit dotazy mezi zdroji do indexu, povolte CORS (sdílení prostředků mezi zdroji (Wikipedia)) nastavením atributu corsOptions. Z bezpečnostních důvodů podporují CORS jenom rozhraní API dotazů.

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

Příklad : Šifrovací klíče s přístupovými přihlašovacími údaji

Šifrovací klíče jsou klíče spravované zákazníkem, které se používají k dodatečnému šifrování. Další informace najdete v tématu Šifrování pomocí klíčů spravovaných zákazníkem ve službě 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)"
        }
    }
} 

Příklad : Šifrovací klíče se spravovanou identitou

Ve službě Azure Key Vault se můžete ověřit pomocí spravované identity přiřazené systémem nebo přiřazené uživatelem (Preview). V tomto případě vynecháte přihlašovací údaje pro přístup nebo nastavte hodnotu null. Následující příklad ukazuje spravovanou identitu přiřazenou uživatelem. Pokud chcete použít spravovanou identitu přiřazenou systémem, vynecháte přihlašovací údaje a identitu přístupu. Pokud má systémová identita vaší vyhledávací služby oprávnění ve službě Azure Key Vault, měla by žádost o připojení proběhnout úspěšně.

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

Příklad : bodovací profily

Profil bodování je část schématu, která definuje vlastní chování vyhodnocování, které vám umožní ovlivnit, které dokumenty se ve výsledcích hledání zobrazují výše. Profily bodování se skládají z hmotností a funkcí polí. Pokud je chcete použít, zadejte profil podle názvu v řetězci dotazu. Další informace najdete v tématu Přidání profilů bodování do indexu vyhledávání (rozhraní REST API služby Azure AI Search) podrobnosti.

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

příklad : Sémantické konfigurace

Sémantická konfigurace je součástí definice indexu, která slouží ke konfiguraci polí používaných sémantickým vyhledáváním řazení, titulků, zvýraznění a odpovědí. Chcete-li použít sémantické vyhledávání, je nutné zadat název sémantické konfigurace v době dotazu. Další informace najdete v tématu Vytvoření sémantického dotazu.

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

Definice

Propojit Popis
corsOptions Zobrazí seznam domén nebo původů udělených vašemu indexu.
výchozího souboruScoringProfile Název vlastního bodovacího profilu, který přepíše výchozí chování vyhodnocování.
šifrovacího klíče Nakonfiguruje připojení ke službě Azure Key Vault pro šifrování spravované zákazníkem.
pole Nastaví definice a atributy pole v indexu vyhledávání.
normalizátory Nakonfiguruje vlastní normalizátor. Normalizuje lexikografické řazení řetězců, vytváří řazení bez rozlišování malých a velkých písmen, fasety a filtrování výstupu.
sémantické Konfiguruje pole používaná sémantickým vyhledáváním pro řazení, titulky, zvýraznění a odpovědi.
bodováníprofiles Používá se k ladění relevance pro fulltextové dotazy.
podobnosti
návrhy Konfiguruje interní úložiště předpon pro párování částečných dotazů, jako jsou automatické dokončování a návrhy.
vectorSearch Nakonfiguruje algoritmus použitý pro vektorová pole.

corsOptions

JavaScript na straně klienta nemůže ve výchozím nastavení volat žádná rozhraní API, protože prohlížeč brání všem požadavkům mezi zdroji. Pokud chcete povolit dotazy mezi zdroji pro váš index, povolte CORS (sdílení prostředků mezi zdroji) nastavením atributu corsOptions. Z bezpečnostních důvodů podporují CORS jenom rozhraní API dotazů.

Atribut Popis
allowedOrigins Požadovaný. Čárkami oddělený seznam zdrojů, kterým je udělen přístup k vašemu indexu, kde každý původ je obvykle protocol://<plně kvalifikovaný název domény>:<port> (i když <port> často vynechán). To znamená, že jakýkoli javascriptový kód z těchto zdrojů může dotazovat index (za předpokladu, že poskytuje platný klíč rozhraní API). Pokud chcete povolit přístup ke všem zdrojům, zadejte * jako jednu položku v poli allowedOrigins. To se nedoporučuje pro produkční prostředí, ale může být užitečné pro vývoj nebo ladění.
maxAgeInSeconds Volitelný. Prohlížeče používají tuto hodnotu k určení doby trvání (v sekundách) pro ukládání předběžných odpovědí CORS do mezipaměti. Musí to být nezáporné celé číslo. Výkon se zlepší, pokud je tato hodnota větší, ale tyto zisky se posunou o dobu potřebnou k tomu, aby se změny zásad CORS projevily. Pokud není nastavená, použije se výchozí doba trvání 5 minut.

defaultScoringProfile

Volitelný. Řetězec, který je názvem vlastního profil bodování definovaný v indexu. Výchozí profil se vyvolá vždy, když v řetězci dotazu není explicitně zadaný vlastní profil. Další informace najdete v tématu Přidání profilů bodování do indexu vyhledávání.

encryptionKey

Nakonfiguruje připojení ke službě Azure Key Vault pro doplňkové šifrovacích klíčů spravovaných zákazníkem (CMK). Dostupné pro fakturovatelné vyhledávací služby vytvořené 1. ledna 2019 nebo po uplynutí 1. ledna 2019.

Musí se ověřit připojení k trezoru klíčů. Pro tento účel můžete použít buď accessCredentials, nebo spravovanou identitu.

Spravované identity můžou být systémové nebo uživatelem přiřazené (Preview). Pokud má vyhledávací služba spravovanou identitu přiřazenou systémem i přiřazení role, která uděluje přístup pro čtení k trezoru klíčů, můžete vynechat identitu i accessCredentials a požadavek se ověří pomocí spravované identity. Pokud má vyhledávací služba identitu přiřazenou uživatelem a přiřazení role, nastavte vlastnost identity na ID prostředku této identity.

Atribut Popis
keyVaultKeyName Požadovaný. Název klíče služby Azure Key Vault, který se používá k šifrování.
keyVaultKeyVersion Požadovaný. Verze klíče služby Azure Key Vault
keyVaultUri Požadovaný. Identifikátor URI služby Azure Key Vault (označovaný také jako název DNS), který klíč poskytuje. Příklad identifikátoru URI může být https://my-keyvault-name.vault.azure.net
accessCredentials Volitelný. Tuto vlastnost vynecháte, pokud používáte spravovanou identitu. V opačném případě vlastnosti accessCredentials zahrnují:
"applicationId" (ID aplikace Azure Active Directory, které má přístupová oprávnění k zadané službě Azure Key Vault).
applicationSecret (ověřovací klíč zadané aplikace Azure AD).
identita Volitelné, pokud nepoužíváte spravovanou identitu přiřazenou uživatelem pro připojení vyhledávací služby ke službě Azure Key Vault. Formát je "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]".

pole

Obsahuje informace o atributech v definici pole.

Atribut Popis
Jméno Požadovaný. Nastaví název pole, které musí být jedinečné v rámci kolekce polí indexu nebo nadřazeného pole.
typ Požadovaný. Nastaví datový typ pole. Pole můžou být jednoduchá nebo složitá. Jednoduchá pole jsou primitivních typů, například Edm.String pro text nebo Edm.Int32 pro celá čísla. komplexní pole můžou mít dílčí pole, která jsou buď jednoduchá, nebo složitá. To vám umožní modelovat objekty a pole objektů, které pak umožňují nahrát většinu objektů JSON do indexu. Collection(Edm.Single) se přizpůsobí hodnotám s plovoucí desetinnou čárkou s jednoduchou přesností. Používá se jenom pro vektorová pole a vyžaduje se. Úplný seznam podporovaných typů najdete v podporovaných datových typů.
klíč Požadovaný. Nastavte tento atribut na true a určete, že hodnoty pole jednoznačně identifikují dokumenty v indexu. Maximální délka hodnot v poli klíče je 1024 znaků. Jako klíčové pole musí být vybráno přesně jedno pole nejvyšší úrovně v každém indexu a musí být typu Edm.String. Výchozí hodnota je false pro jednoduchá pole a null pro složitá pole. pole

Klíč lze použít k přímému vyhledání dokumentů a aktualizaci nebo odstranění konkrétních dokumentů. Hodnoty polí klíčů se zpracovávají rozlišováním malých a velkých písmen při vyhledávání nebo indexování dokumentů. Podrobnosti najdete v vyhledávacích dokumentů a přidání, aktualizace nebo odstranění dokumentů.
zobrazitelné Určuje, jestli se pole může vrátit ve výsledku hledání. Tento atribut nastavte na false, pokud chcete použít pole (například okraj) jako filtr, řazení nebo bodovací mechanismus, ale nechcete, aby bylo pole viditelné pro koncového uživatele. Tento atribut musí být true pro klíčová pole a musí být null pro složitá pole. Tento atribut lze změnit u existujících polí. Nastavení načítání na true nezpůsobí žádné zvýšení požadavků na úložiště indexů. Výchozí hodnota je true pro jednoduchá pole a null pro složitá pole.
prohledávatelný Určuje, jestli je pole prohledávatelné fulltextové a lze na toto pole odkazovat ve vyhledávacích dotazech. To znamená, že prochází lexikální analýzou, jako je například dělení slov během indexování. Pokud nastavíte prohledávatelné pole na hodnotu jako "Sunny day", interně se normalizuje do jednotlivých tokenů "sunny" a "day". To umožňuje fulltextové vyhledávání těchto termínů. Pole typu Edm.String nebo Collection(Edm.String) jsou ve výchozím nastavení prohledávatelná. Tento atribut musí být false pro jednoduchá pole jiných datových typů, které se netřetězí, a musí být null pro složitá pole.

Prohledávatelné pole spotřebovává v indexu nadbytečné místo, protože Azure AI Search zpracovává obsah těchto polí a uspořádá je v pomocných datových strukturách pro výkonné vyhledávání. Pokud chcete ušetřit místo v indexu a nepotřebujete pole, které by se mělo zahrnout do hledání, nastavte prohledávatelné na false. Podrobnosti najdete v tématu Jak funguje fulltextové vyhledávání ve službě Azure AI Search.
filtrovatelný Určuje, zda se má na pole odkazovat v $filter dotazech. Filtrovatelné se liší od prohledávatelného způsobu zpracování řetězců. Pole typu Edm.String nebo Collection(Edm.String), která jsou filtrovatelná, neprocházejí lexikální analýzou, takže porovnání jsou určená jenom pro přesnou shodu. Pokud například nastavíte takové pole f na "Slunečný den", $filter=f eq 'sunny' nenajde žádné shody, ale $filter=f eq 'Sunny day' bude. Tento atribut musí být null pro složitá pole. Výchozí hodnota je true pro jednoduchá pole a null pro složitá pole. Pokud chcete zmenšit velikost indexu, nastavte tento atribut na false u polí, na která nebudete filtrovat.
setříditelný Určuje, zda má být pole odkazováno ve výrazech $orderby. Ve výchozím nastavení Azure AI Search seřadí výsledky podle skóre, ale v mnoha prostředích uživatelé chtějí řadit podle polí v dokumentech. Jednoduché pole lze řadit pouze v případě, že je jednohodnotové (má jednu hodnotu v oboru nadřazeného dokumentu).

pole jednoduché kolekce nelze řadit, protože jsou vícehodnotová. Jednoduché podpole komplexních kolekcí jsou také vícehodnotové, a proto není možné řadit. To platí bez ohledu na to, jestli se jedná o okamžité nadřazené pole nebo nadřazené pole, což je složitá kolekce. Složitá pole nelze seřadit a atribut pro řazení musí být null pro taková pole. Výchozí možnost řazení je true pro jednoduchá pole s jednou hodnotou, false pro jednoduchá pole s více hodnotami a null pro složitá pole.
facetable Určuje, jestli se má na pole odkazovat v dotazech omezující vlastnosti. Obvykle se používá v prezentaci výsledků hledání, která zahrnuje počet přístupů podle kategorií (například hledání digitálních fotoaparátů a zobrazení hitů podle značky, podle megapixelů, podle ceny atd.). Tento atribut musí být null pro složitá pole. Pole typu Edm.GeographyPoint nebo Collection(Edm.GeographyPoint) nemohou být omezující. Výchozí hodnota je true pro všechna ostatní jednoduchá pole. Pokud chcete zmenšit velikost indexu, nastavte tento atribut na false u polí, na která nebudete omezující vlastnosti.
analyzátor Nastaví lexikální analyzátor pro tokenizaci řetězců během indexování a operací dotazů. Platné hodnoty pro tuto vlastnost zahrnují analyzátory jazyka, integrované analyzátorya vlastní analyzátory. Výchozí hodnota je standard.lucene. Tento atribut lze použít pouze s prohledávatelnými poli a nedá se nastavit společně s funkcí searchAnalyzer nebo indexAnalyzer. Jakmile je analyzátor vybrán a pole se vytvoří v indexu, nelze ho pro dané pole změnit. Musí být null pro komplexní pole.
searchAnalyzer Nastavte tuto vlastnost společně s indexAnalyzer pro určení různých lexikálních analyzátorů pro indexování a dotazy. Pokud používáte tuto vlastnost, nastavte analyzátor na null a ujistěte se, že indexAnalyzer je nastaven na povolenou hodnotu. Platné hodnoty pro tuto vlastnost zahrnují integrované analyzátory a vlastní analyzátory. Tento atribut lze použít pouze s prohledávatelnými poli. Analyzátor vyhledávání je možné aktualizovat u existujícího pole, protože se používá jenom v době dotazu. Musí být null pro komplexní pole.
indexAnalyzer Tuto vlastnost nastavte společně s funkcí searchAnalyzer a určete různé lexikální analyzátory pro indexování a dotazy. Pokud používáte tuto vlastnost, nastavte analyzátor na null a ujistěte se, že searchAnalyzer je nastavena na povolenou hodnotu. Platné hodnoty pro tuto vlastnost zahrnují integrované analyzátory a vlastní analyzátory. Tento atribut lze použít pouze s prohledávatelnými poli. Jakmile vyberete analyzátor indexu, nedá se pro dané pole změnit. Musí být null pro komplexní pole.
normalizátor Nastaví normalizátor pro operace filtrování, řazení a fasetování. Může to být název předdefinovaného normalizátoru nebo vlastního normalizátoru definovaného v rámci indexu. Výchozí hodnota je null, což vede k přesné shodě u doslovného textu bez analýzy. Tento atribut lze použít pouze s poli Edm.String a Collection(Edm.String), která mají aspoň jednu filtrovatelnou, seřazenou nebo facetable nastavenou na hodnotu true. Normalizátor lze nastavit pouze u pole při přidání do indexu a nelze ho později změnit. Musí být null pro komplexní pole. Mezi platné hodnoty předdefinovaného normalizátoru patří:

standard– malá písmena textu následovaného generováním ascii.
lowercase– transformuje znaky na malá písmena.
uppercase – transformuje znaky na velká písmena.
asciifolding – Transformuje znaky, které nejsou v bloku Základní latinka Unicode, na ekvivalent ASCII, pokud existuje. Například změna "à" na "a".
elision– odebere elizi od začátku tokenů.
synonymMaps Seznam názvů map synonym, které se mají přidružit k tomuto poli. Tento atribut lze použít pouze s prohledávatelnými poli. V současné době je podporováno pouze jedno mapování synonym pro každé pole. Přiřazení mapování synonym k poli zajišťuje, aby se termíny dotazu, které cílí na toto pole, rozšířily v době dotazu pomocí pravidel v mapě synonym. Tento atribut lze změnit u existujících polí. Pro složitá pole musí být null nebo prázdná kolekce.
pole Seznam dílčích polí, pokud se jedná o pole typu Edm.ComplexType nebo Collection(Edm.ComplexType). Pro jednoduchá pole musí být null nebo prázdná. Další informace o tom, jak a kdy používat dílčí pole, najdete v tématu Modelování složitých datových typů ve službě Azure AI Search.
dimenze Celé číslo. Povinné pro vektorová pole. **To musí odpovídat velikosti vkládání výstupu modelu vkládání. Například u oblíbeného modelu Azure OpenAI text-embedding-ada-002je jeho výstupní dimenze 1536, takže by to byly dimenze, které se mají pro toto vektorové pole nastavit. Atribut dimenzí má minimálně 2 a maximálně 2 048 hodnot s plovoucí desetinou čárkou.
vectorSearchConfiguration Požadováno pro definice vektorových polí. Určuje název konfigurace algoritmu vectorSearch, používá vektorové pole. Po vytvoření pole nemůžete změnit název vectorSearchConfiguration, ale můžete změnit vlastnosti konfigurace algoritmu v indexu. To umožňuje úpravy typu a parametrů algoritmu.

Poznámka

Pole typu Edm.String, která jsou filtrovatelná, řaditelná nebo facetable, můžou mít maximálně 32 kilobajtů. Důvodem je, že hodnoty těchto polí se považují za jeden hledaný termín a maximální délka termínu ve službě Azure AI Search je 32 kilobajtů. Pokud potřebujete uložit více textu v jednom řetězcovém poli, budete muset explicitně nastavit filtrovatelné, řaditelné a facetable pro false v definici indexu.

Nastavení pole jako prohledávatelného, filtrovatelného, řaditelného nebo facetable má vliv na velikost indexu a výkon dotazů. Nenastavujte tyto atributy u polí, na která se nemají odkazovat ve výrazech dotazu.

Pokud pole není nastaveno tak, aby bylo prohledávatelné, filtrovatelné, řazené nebo fasetovatelné, nelze na pole odkazovat v žádném výrazu dotazu. To je užitečné pro pole, která se nepoužívají v dotazech, ale jsou potřeba ve výsledcích hledání.

normalizátory

Definuje vlastního normalizátoru, který má uživatelsky definovanou kombinaci filtrů znaků a filtrů tokenů. Po definování vlastního normalizátoru v indexu ho můžete zadat podle názvu v definici pole .

Atribut Popis
Jméno Požadovaný. Řetězcové pole, které určuje buď uživatelem definovaný vlastní normalizátor.
charFilters Používá se ve vlastním normalizátoru. Může to být jeden nebo více dostupných filtrů znaků podporované pro použití ve vlastním normalizátoru:
mapování
pattern_replace
tokenFilters Používá se ve vlastním normalizátoru. Může se jednat o jeden nebo více dostupných naklápěčů tokenů podporované pro použití ve vlastním normalizátoru:
arabic_normalization

cjk_width
elizi
german_normalization
hindi_normalization
indic_normalization
persian_normalization
scandinavian_normalization
scandinavian_folding
sorani_normalization
malá
velká písmena

bodováníProfiles

Profily bodování platí pro fulltextové vyhledávání. Profil je definován v indexu a určuje vlastní logiku, která může udělit vyšší skóre hledání pro odpovídající dokumenty, které splňují kritéria definovaná v profilu. Můžete vytvořit více hodnoticího profilu a pak přiřadit ten, který chcete dotazem.

Pokud vytvoříte vlastní profil, můžete ho nastavit jako výchozí nastavením defaultScoringProfile. Další informace najdete v tématu Přidání profilů bodování do indexu vyhledávání.

sémantický

Sémantická konfigurace je součástí definice indexu, která slouží ke konfiguraci polí používaných sémantickým vyhledáváním řazení, titulků, zvýraznění a odpovědí. Sémantické konfigurace se skládají z pole názvu, pole s prioritním obsahem a pole s prioritním klíčovým slovem. Pro každé ze tří dílčích období je potřeba zadat alespoň jedno pole (titleField, prioritizedKeywordsFields a prioritizedContentFields). Jakékoli pole typu Edm.String nebo Collection(Edm.String) lze použít jako součást sémantické konfigurace.

Chcete-li použít sémantické vyhledávání, je nutné zadat název sémantické konfigurace v době dotazu. Další informace najdete v tématu Vytvoření sémantického dotazu.

{
   "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": "..."
             }
           ]
         }
       }
     ]
   }
}
Atribut Popis
Jméno Požadovaný. Název sémantické konfigurace.
priorityfields Požadovaný. Popisuje pole názvu, obsahu a klíčových slov, která se mají použít pro sémantické řazení, titulky, zvýraznění a odpovědi. Je potřeba nastavit aspoň jednu ze tří dílčích vlastností (titleField, prioritizedKeywordsFields a prioritizedContentFields).
prioritizedFields.titleField Definuje pole názvu, které se má použít pro sémantické řazení, titulky, zvýraznění a odpovědi. Pokud v indexu nemáte pole názvu, nechejte toto pole prázdné.
prioritizedFields.prioritizedContentFields Definuje pole obsahu, která se mají použít pro sémantické řazení, titulky, zvýraznění a odpovědi. Pro nejlepší výsledek by vybraná pole měla obsahovat text ve formátu přirozeného jazyka. Pořadí polí v poli představuje jejich prioritu. Pole s nižší prioritou se můžou zkrátit, pokud je obsah dlouhý.
prioritizedFields.prioritizedKeywordsFields Definuje pole klíčových slov, která se mají použít pro sémantické řazení, titulky, zvýraznění a odpovědi. Pro nejlepší výsledek by vybraná pole měla obsahovat seznam klíčových slov. Pořadí polí v poli představuje jejich prioritu. Pole s nižší prioritou se můžou zkrátit, pokud je obsah dlouhý.

podobnost

Volitelná vlastnost, která se vztahuje na služby vytvořené před 15. červencem 2020. U těchto služeb můžete tuto vlastnost nastavit tak, aby používala algoritmus řazení BM25, který byl zaveden v červenci 2020. Platné hodnoty zahrnují "#Microsoft.Azure.Search.ClassicSimilarity" (předchozí výchozí) nebo "#Microsoft.Azure.Search.BM25Similarity".

U všech služeb vytvořených po červenci 2020 nemá nastavení této vlastnosti žádný vliv. Všechny novější služby používají BM25 jako jediný algoritmus řazení pro fulltextové vyhledávání. Další informace najdete v tématu Algoritmy řazení ve službě Azure AI Search.

návrhy

Určuje konstruktor, který ukládá předpony pro porovnávání částečných dotazů, jako jsou automatické dokončování a návrhy.

Atribut Popis
Jméno Požadovaný. Název směšovače.
sourceFields Požadovaný. Jedno nebo více řetězcových polí, pro která povolíte automatické dokončování nebo navrhované výsledky.
searchMode Povinné a vždy nastaveno na analyzingInfixMatching. Určuje, že porovnávání probíhá u libovolného termínu v řetězci dotazu.

vectorSearch

VectorSearch objekt umožňuje konfiguraci vlastností vektorového vyhledávání. V současné době je možné nakonfigurovat pouze konfigurace algoritmů. To umožňuje konfiguraci typu algoritmu a parametrů algoritmu používaných pro vektorová pole. Můžete mít více konfigurací. Jakékoli konfigurace odkazované vektorovým polem nelze upravit ani odstranit. Jakékoli konfigurace, na které se neodkazují, se můžou upravit nebo odstranit. Definice vektorového pole (v kolekci polí) musí určovat konfiguraci algoritmu vektorového vyhledávání (prostřednictvím vlastnosti vectorSearchConfiguration), kterou pole používá.

"vectorSearch": {
    "algorithmConfigurations": [
        {
            "name": "my-vector-config",
            "kind": "hnsw",
            "hnswParameters": {
                "m": 4,
                "efConstruction": 400,
                "efSearch": 500,
                "metric": "cosine"
            }
        }
    ]
}
Atribut Popis
Jméno Požadovaný. Název konfigurace algoritmu.
laskavý Typ algoritmu, který se má použít. Podporuje se pouze "hnsw", což je algoritmus Hierarchical Navigable Small World (HNSW).
hnswParameters Volitelný. Parametry pro algoritmus "hnsw". Pokud tento objekt vynecháte, použijí se výchozí hodnoty.

hnswParameters

Tento objekt obsahuje vlastní nastavení hnsw parametrů algoritmu. Všechny vlastnosti jsou volitelné a výchozí hodnoty se použijí, pokud nějaké vynecháte.

Atribut Popis
metrický Řetězec. Metrika podobnosti, která se má použít pro porovnání vektorů. Pro hnswjsou povolené hodnoty "kosinus", "euclidean" a "dotProduct". Výchozí hodnota je "kosinus".
m Celé číslo. Počet obousměrných propojení vytvořených pro každý nový prvek během výstavby. Výchozí hodnota je 4. Povolený rozsah je 4 až 10. Větší hodnoty vedou k hustším grafům, zlepšení výkonu dotazů, ale vyžadují více paměti a výpočtů.
efConstruction Celé číslo. Velikost dynamického seznamu pro nejbližší sousedy použité při indexování. Výchozí hodnota je 400. Povolený rozsah je 100 až 1000.Větší hodnoty vedou k lepší kvalitě indexu, ale vyžadují více paměti a výpočtu.
efSearch Celé číslo. Velikost dynamického seznamu obsahujícího nejbližší sousedy, který se používá během hledání. Výchozí hodnota je 500. Povolený rozsah je 100 až 1000. Zvýšení tohoto parametru může zlepšit výsledky hledání, ale zpomalí výkon dotazů.

Vzhledem k tomu, že efSearch je parametr doby dotazu, lze tuto hodnotu aktualizovat i v případě, že existující pole používá konfiguraci algoritmu.

Viz také