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

Platí pro: 2023-07-01-Preview, 2021-04-30-Preview, 2020-06-30-Preview

Důležité

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

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

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

Verze 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é dalších konstruktorů (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. U obou z nich text 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 aktualizaci použijte PUT a zadejte název indexu v identifikátoru URI.

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

Https se vyžaduje pro všechny žádosti o služby. 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 rámci každého indexu existují omezení pro jednotlivé prvky. Další informace najdete v tématu Limity služeb pro 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 pro aktualizace 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 odstranění a opětovné sestavení indexu. Následující změny schématu jsou výjimkou z tohoto pravidla:

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

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

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

  • Změna možností CORS

  • Změna existujících polí pomocí některé 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 mapy synonym použité v době dotazu (synonymMaps)

Chcete-li provést některou z výše uvedených změn schématu existujícího indexu, zadejte název indexu v identifikátoru URI požadavku a pak přidejte plně určenou definici indexu s novými nebo změněnými prvky.

Po přidání nového pole mají všechny existující dokumenty v indexu automaticky hodnotu null pro toto pole. Žádné další místo úložiště se spotřebuje, dokud nedojde k jedné ze dvou věcí: pro nové pole se poskytne hodnota (pomocí sloučení) nebo se nepřidají nové dokumenty.

Aktualizace na suggester mají podobná omezení: nová pole se dají přidat do suggester polí současně, ale existující pole se nedají odebrat ani přidat suggesters do bez opětovného sestavení indexu.

Aktualizace do analyzátoru, tokenizátoru, filtru tokenů 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 režimu offline. Nastavením příznaku allowIndexDowntime na hodnotu true v požadavku na aktualizaci indexu se index přenese 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 alespoň na několik sekund do offline režimu, což znamená, že indexování a požadavky na dotazy selžou, dokud index nebude znovu online a připravený na zpracování požadavků.

Parametry identifikátoru URI

Parametr Popis
název služby Povinná hodnota. Nastavte tuto hodnotu na jedinečný, uživatelem definovaný název vaší vyhledávací služby.
název indexu Vyžaduje se u identifikátoru URI, pokud používáte PUT. Název musí mít malá písmena, musí začínat písmenem nebo číslicí, nesmí mít lomítka ani tečky a musí být kratší než 128 znaků. Pomlčky nemohou být po sobě jdoucí.
verze-api Povinná hodnota. Aktuální verze Preview je 2023-07-23-preview. Další verze najdete v tématu Verze rozhraní API .
allowIndexDowntime Nepovinný parametr. Ve výchozím nastavení nepravda. U určitých aktualizací, jako je přidání nebo úprava analyzátoru, tokenizátoru, filtru tokenů, filtru znaků nebo vlastnosti podobnosti, nastavte hodnotu true. Index se během aktualizace přemístit do režimu offline, obvykle ne déle než několik sekund.

Hlavičky požadavku

Následující tabulka popisuje požadované a volitelné hlavičky požadavků.

Pole Description
Typ obsahu Povinná hodnota. 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íč. Klíč api-key je jedinečný systémově vygenerovaný řetězec, který ověřuje požadavek pro vaši vyhledávací službu. Požadavky na vytvoření musí obsahovat hlavičku nastavenou api-key na klíč správce (na rozdíl od klíče dotazu). Podrobnosti najdete v tématu Připojení ke službě Azure AI Search pomocí ověřování pomocí klíče .

Text požadavku

Tělo požadavku obsahuje definici schématu, která obsahuje seznam datových polí v dokumentech, které jsou do tohoto indexu zaváděné.

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

Vektorové vyhledávací pole je typu Collection(Edm.Single). Vzhledem k tomu, že vektorová pole nejsou textová, nelze vektorové pole použít jako klíč a nepřijímá analyzátory, normalizátory, sugestory ani synonyma. Musí mít vlastnost dimensions a vlastnost vectorSearchConfiguration.

Schéma, které podporuje vektorové vyhledávání, může také podporovat vyhledávání klíčových slov. Ostatní pole nonvectoru v indexu můžou používat jakékoli analyzátory, synonyma a profily hodnocení, které zahrnete do indexu.

{  
  "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
name Povinná hodnota. Název indexu. Název indexu musí obsahovat pouze malá písmena, číslice nebo pomlčky, nesmí začínat ani končit pomlčkami a je omezený na 128 znaků.
description 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 atributy, které definují povolené akce pro toto pole. Kolekce polí musí mít jedno pole typu Edm.String s hodnotou "key" nastavenou na hodnotu "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.
Podobnost Nepovinný parametr. U služeb vytvořených před 15. červencem 2020 nastavte tuto vlastnost tak, aby se přihlásila k algoritmu hodnocení BM25.
navrhovatelé Určuje konstruktor, který ukládá předpony pro párování u částečných dotazů, jako jsou automatické dokončování a návrhy.
scoringProfiles Nepovinný parametr. Používá se pro ladění relevance pro fulltextové dotazy.
Sémantické Nepovinný parametr. Definuje parametry indexu vyhledávání, které ovlivňují možnosti sémantického 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 Nepovinný parametr. Konfiguruje různá nastavení vektorové vyhledávání. Konfigurovat lze pouze algoritmy vektorové vyhledávání.
normalizátory Nepovinný parametr. Normalizuje lexikografické řazení řetězců a vytváří výstup řazení a filtrování bez rozlišování velkých a malých písmen.
analyzers, charFilters, tokenizers, tokenFilters Nepovinný parametr. Pokud definujete vlastní analyzátory, zadejte tyto části indexu. Ve výchozím nastavení mají tyto oddíly hodnotu null.
defaultScoringProfile Název vlastního bodovacího profilu, který přepíše výchozí chování při vyhodnocování.
corsOptions Nepovinný parametr. Používá se pro dotazy mezi zdroji na váš index.
šifrovací klíč Nepovinný parametr. Používá se k dodatečnému šifrování indexu prostřednictvím šifrovacích klíčů spravovaných zákazníkem (CMK) v Azure Key Vault. K dispozici pro fakturovatelné vyhledávací služby vytvořené 1. 1. 2019 nebo později.

Odpověď

V případě úspěšného vytvoření žádosti by se měl zobrazit stavový kód 201 Vytvořeno. Ve výchozím nastavení tělo odpovědi obsahuje json pro definici indexu, která byla vytvořena. Pokud je ale hlavička preferovat požadavek nastavená na return=minimal, text odpovědi je prázdný a stavový kód úspěchu je "204 Žádný obsah" místo "201 Vytvořeno". 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ěla zobrazit zpráva 204 Bez obsahu. Ve výchozím nastavení je text odpovědi prázdný. Pokud je ale hlavička Prefer požadavku nastavená na return=representation, text odpovědi obsahuje JSON pro aktualizovanou definici indexu. V tomto případě je stavový kód úspěchu "200 OK".

Příklady

Příklad: Vector

Vektorové vyhledávání je implementováno na úrovni pole. Tato definice umístí fokus na vektorová pole. Vektorová pole musí být typu Collection(Edm.Single) , který slouží k ukládání hodnot s plovoucí desetinou čárkou s jednou přesností. Vektorová pole mají vlastnost "dimensions", která obsahuje počet výstupních dimenzí podporovaných modelem strojového učení, který se používá ke generování vkládání. Pokud například používáte text-embedding-ada-002, maximální počet výstupních dimenzí je pro tento dokument 1536. Parametr "algorithmConfiguration" je nastavený na název konfigurace vectorSearch ve vašem indexu. Můžete definovat více v indexu a pak zadat jedno pro každé pole.

Mnoho atributů se vztahuje pouze na pole nonvectoru. U vektorových polí se ignorují atributy jako "filterable", "sortable", "facetable", "analyzer", "normalizer" a "synonymMaps". Podobně pokud nastavíte pouze vektorové vlastnosti, jako jsou "dimensions" nebo "vectorSearchConfiguration" v poli obsahujícím alfanumerické obsahy, 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 nonvectorové 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 úplné schéma indexu s jednoduchými a složitými poli. Nejméně jedno pole řetězce musí mít hodnotu "key" nastavenou 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 návrhu by měla určovat pole řetězce "prohledávatelná" a "získatelná" (v rozhraníCH REST API jsou "retrievable": true ve výchozím nastavení všechna jednoduchá pole). Po definování návrhu na něj můžete odkazovat podle názvu na žádosti o dotazy, které používají rozhraní API návrhy nebo rozhraní API automatického dokončování, podle toho, 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

Na analyzátory a normalizátory se odkazuje v definicích 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. Předvádí 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 relevanci hledání

Tato vlastnost nastaví algoritmus řazení, který se používá 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. červenci 2020 se tato vlastnost ignoruje, protože algoritmus podobnosti je vždy BM25. U existujících služeb vytvořených před 15. červencem 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č zabraňuje všem žádostem mezi zdroji. Pokud chcete povolit dotazy mezi zdroji do indexu, povolte CORS (Sdílení prostředků mezi zdroji (Wikipedie)) nastavením atributu corsOptions . Z bezpečnostních důvodů podporují CORS jenom rozhraní API pro dotazy.

{
   "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: Šifrování klíčů pomocí přístupových přihlašovacích údajů

Šifrovací klíče jsou klíče spravované zákazníkem, které slouží k dodatečnému šifrování. Další informace najdete v tématu Šifrování pomocí klíčů spravovaných zákazníkem v 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 uživatelem (Preview). V tomto případě vyněž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, vyněžte přístupové přihlašovací údaje a identitu. Pokud má identita systému vaší vyhledávací služby oprávnění v 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: Profily hodnocení

Bodovací profil je část schématu, která definuje vlastní chování při vyhodnocování, které vám umožní ovlivnit, které dokumenty se ve výsledcích hledání zobrazí výše. Profily bodování se skládají z váhou polí a funkcí. 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 vyhledávacího indexu (rozhraní REST API služby Azure AI Search).

{
   "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á se používá ke konfiguraci polí, která se používají k sémantickému vyhledávání pro řazení, titulky, zvýraznění a odpovědi. 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

Odkaz Description
corsOptions Zobrazí seznam domén nebo původů, které jsou uděleny vašemu indexu.
defaultScoringProfile Název vlastního hodnoticího profilu, který přepíše výchozí chování vyhodnocování.
šifrovací klíč Nakonfiguruje připojení k 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í normalizační nástroj. Normalizuje lexikografické řazení řetězců a vytváří řazení, fasety a filtrování výstupu, které nerozlišují malá a velká písmena.
Sémantické Konfiguruje pole používaná sémantickým vyhledáváním pro řazení, titulky, zvýraznění a odpovědi.
ScoringProfiles Používá se k ladění relevance pro fulltextové dotazy.
Podobnost
navrhovatelé Nakonfiguruje interní úložiště předpon pro porovnávání částečných dotazů, jako jsou automatické dokončování a návrhy.
vectorSearch Konfiguruje algoritmus používaný 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 z více zdrojů. Pokud chcete do indexu povolit dotazy mezi zdroji, povolte CORS (Sdílení prostředků mezi zdroji) nastavením atributu corsOptions. Z bezpečnostních důvodů podporují CORS pouze rozhraní API pro dotazy.

Atribut Popis
allowedOrigins Povinná hodnota. Seznam původů oddělených čárkami, kterým je udělen přístup k indexu, kde každý původ má obvykle tvar protocol://<-qualified-název-domény>:<port> (i když <se tento port> často vynechá). To znamená, že jakýkoli kód JavaScriptu zadaný z těchto zdrojů může dotazovat váš index (za předpokladu, že poskytuje platný klíč rozhraní API). Pokud chcete povolit přístup ke všem původům, zadejte * jako jednu položku pole allowedOrigins. Tento postup se nedoporučuje pro produkční prostředí, ale může být užitečný pro vývoj nebo ladění.
maxAgeInSeconds Nepovinný parametr. 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í se jednat o nezáporné celé číslo. Výkon se zvýší, pokud je tato hodnota větší, ale tyto nárůsty se vyrovnají časem potřebným k tomu, aby se změny zásad CORS projevily. Pokud není nastavená, použije se výchozí doba trvání 5 minut.

defaultScoringProfile

Nepovinný parametr. Řetězec, který je názvem vlastního hodnoticího profilu definovaného 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í.

šifrovací klíč

Nakonfiguruje připojení k Azure Key Vault pro doplňkové šifrovací klíče spravované zákazníkem (CMK). K dispozici pro fakturovatelné vyhledávací služby vytvořené 1. ledna 2019 nebo později.

Připojení k trezoru klíčů se musí ověřit. K tomuto účelu můžete použít buď "accessCredentials", nebo spravovanou identitu.

Spravované identity můžou být přiřazené systémem nebo uživatelem (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 "identity" i "accessCredentials" a požadavek se ověří pomocí spravované identity. Pokud má vyhledávací služba identitu a přiřazení role přiřazené uživatelem, nastavte vlastnost identity na ID prostředku této identity.

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

fields

Obsahuje informace o atributech v definici pole.

Atribut Popis
name Povinná hodnota. Nastaví název pole, který musí být jedinečný v rámci kolekce polí indexu nebo nadřazeného pole.
typ Povinná hodnota. 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 celá čísla. Složitá pole můžou mít dílčí pole, která jsou sama o sobě jednoduchá nebo složitá. To vám umožní modelovat objekty a pole objektů, což vám umožní nahrát do indexu většinu struktur objektů JSON. Collection(Edm.Single) umožňuje používat hodnoty s plovoucí desetinou čárkou s jednoduchou přesností. Používá se jenom pro vektorová pole a je povinný. Úplný seznam podporovaných typů najdete v tématu Podporované datové typy.
key Povinná hodnota. Nastavením tohoto atributu na hodnotu true určíte, že hodnoty pole jednoznačně identifikují dokumenty v indexu. Maximální délka hodnot v poli s klíčem je 1024 znaků. Jako pole s klíčem musí být zvoleno právě 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.

Klíčová pole se dají použít k přímému vyhledávání dokumentů a aktualizaci nebo odstranění konkrétních dokumentů. Při vyhledávání nebo indexování dokumentů se hodnoty polí s klíči zpracovávají způsobem, který rozlišuje velká a malá písmena. Podrobnosti najdete v tématech Vyhledávání dokumentů a Přidání, aktualizace nebo odstranění dokumentů .
možnost načtení Určuje, zda lze pole 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í pro načtení na true nezpůsobí 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é Označuje, jestli je pole fulltextové prohledávatelné a zda lze na pole odkazovat ve vyhledávacích dotazech. To znamená, že během indexování prochází lexikální analýzou , například dělení slov. Pokud nastavíte prohledávatelné pole na hodnotu jako "Slunečný den", 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 typů dat bez řetězce a musí být null pro složitá pole.

Prohledávatelné pole spotřebovává v indexu další místo, protože Azure AI Search zpracovává obsah těchto polí a uspořádá je do pomocných datových struktur pro výkonné vyhledávání. Pokud chcete ušetřit místo v indexu a nepotřebujete, aby se pole zahrnulo do hledání, nastavte prohledávatelné na falsehodnotu . Podrobnosti najdete v tématu Jak funguje fulltextové vyhledávání ve službě Azure AI Search .
Filtrovatelné Určuje, zda se má povolit odkaz na pole v $filter dotazech. Filtrovatelné se liší od prohledávatelného způsobu zpracování řetězců. Pole typu Edm.String nebo Collection(Edm.String) pole, která lze filtrovat, neprocházejí lexikální analýzou, takže porovnání jsou určena pouze pro přesné shody. 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 pole, která nebudete filtrovat.
Sortable Určuje, zda má být na pole odkazováno ve $orderby výrazech. Azure AI Search ve výchozím nastavení seřadí výsledky podle skóre, ale v mnoha prostředích chtějí uživatelé řadit podle polí v dokumentech. Jednoduché pole lze seřadit pouze v případě, že je jednohodnotové (v oboru nadřazeného dokumentu má jednu hodnotu).

Jednoduchá pole kolekce nelze seřadit, protože mají více hodnot. Jednoduchá dílčí pole složitých kolekcí jsou také vícehodnotová, a proto je nelze seřadit. To platí bez ohledu na to, jestli se jedná o bezprostředně nadřazené pole nebo nadřazené pole, což je složitá kolekce. Složitá pole nelze seřadit a atribut ř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á povolit odkaz na pole ve fasetových dotazech. Obvykle se používá v prezentaci výsledků hledání, která zahrnuje počet přístupů podle kategorie (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) nelze použít jako facetable. Výchozí hodnota je true pro všechna ostatní jednoduchá pole. Pokud chcete zmenšit velikost indexu, nastavte tento atribut na false pole, u kterého nebudete mít omezující vlastnosti.
Analyzer Nastaví lexikální analyzátor pro tokenizaci řetězců během operací indexování a dotazování. Platné hodnoty pro tuto vlastnost zahrnují analyzátory jazyka, předdefinované analyzátory a vlastní analyzátory. Výchozí formát je standard.lucene. Tento atribut lze použít pouze s prohledávatelnými poli a nelze ho nastavit společně s searchAnalyzerem ani indexAnalyzerem. Jakmile je analyzátor vybrán a pole se vytvoří v indexu, nelze ho pro pole změnit. Musí být null pro složitá pole.
searchAnalyzer Nastavte tuto vlastnost společně s indexAnalyzer a určete různé lexikální analyzátory pro indexování a dotazy. Pokud použijete tuto vlastnost, nastavte analyzátor na null a ujistěte se, že indexAnalyzer je nastavená na povolenou hodnotu. Platné hodnoty této vlastnosti zahrnují předdefinované 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 složitá pole.
indexAnalyzer Nastavte tuto vlastnost společně s searchAnalyzer a určete různé lexikální analyzátory pro indexování a dotazy. Pokud použijete tuto vlastnost, nastavte analyzer na null a ujistěte se, že searchAnalyzer je nastavená na povolenou hodnotu. Platné hodnoty této vlastnosti zahrnují předdefinované analyzátory a vlastní analyzátory. Tento atribut lze použít pouze s prohledávatelnými poli. Jakmile je analyzátor indexu vybraný, nelze ho pro pole změnit. Musí být null pro složitá pole.
Normalizer Nastaví normalizátor pro operace filtrování, řazení a facetingu. Může to být název předdefinovaného normalizátoru nebo vlastního normalizátoru definovaného v indexu. Výchozí hodnota je null, což má za následek přesnou shodu s doslovným a neanalyovaným textem. Tento atribut lze použít pouze s Edm.String poli a Collection(Edm.String) , která mají alespoň jedno z polí filtrovatelných, seřazených nebo facetable nastavených na hodnotu true. Normalizátor se dá nastavit jenom v poli při přidání do indexu a později ho nejde změnit. Musí být null pro složitá pole. Platné hodnoty pro předdefinovaný normalizátor zahrnují:

standard– Text je zadaný malými písmeny, za kterými následuje asciifolding.
lowercase– Převede znaky na malá písmena.
uppercase – Převede znaky na velká písmena.
asciifolding – Transformuje znaky, které nejsou v bloku Basic Latin Unicode, na jejich ekvivalent ASCII, pokud existuje. Například změna "à" na "a".
elision– Odebere elizi od začátku tokenů.
synonymMaps Seznam názvů map synonym, které chcete 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 zajistí, že termíny dotazu, které cílí na toto pole, se v době dotazu rozbalí pomocí pravidel v mapě synonym. Tento atribut lze změnit u existujících polí. Musí být null nebo prázdná kolekce pro složitá pole.
fields 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. **Tato hodnota musí odpovídat velikosti pro vložení výstupu modelu vkládání. Například u oblíbeného modelu text-embedding-ada-002Azure OpenAI je jeho výstupní dimenze 1536, takže by to byly dimenze, které se mají pro toto vektorové pole nastavit. Atribut dimensions má minimálně 2 a maximálně 2048 hodnot s plovoucí desetinou čárkou.
vectorSearchConfiguration Povinné pro definice vektorových polí. Určuje název konfigurace algoritmu vectorSearch používané polem vektoru. 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 délku maximálně 32 kB. Důvodem je to, ž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 do pole s jedním řetězcem uložit více textu, budete muset v definici indexu explicitně nastavit filtrovatelné, seřazené a facetable false .

Nastavení pole jako prohledávatelného, filtrovatelného, seř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 dotazů.

Pokud pole není nastavené tak, aby bylo prohledávatelné, filtrovatelné, seřazené nebo facetable, 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řebná ve výsledcích hledání.

normalizátory

Definuje vlastní normalizátor , který má uživatelem 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
name Povinná hodnota. Pole řetězce, 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ých pro použití ve vlastním normalizátoru:
mapování
pattern_replace
tokenFilters Používá se ve vlastním normalizátoru. Může to být jeden nebo více dostupných sklopovačů tokenů podporovaných pro použití ve vlastním normalizátoru:
arabic_normalization
asciifolding
cjk_width
elision
german_normalization hindi_normalization

indic_normalization
persian_normalization scandinavian_normalization

scandinavian_folding
sorani_normalization
malá velká písmena

scoringProfiles

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í odpovídajícím dokumentům, které splňují kritéria definovaná v profilu. Můžete vytvořit více profilů bodování a pak přiřadit ten, který chcete k dotazu.

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á se používá ke konfiguraci polí, která se používají k sémantickému vyhledávání pro řazení, titulky, zvýraznění a odpovědi. Sémantické konfigurace se skládají z pole názvu, polí obsahu s prioritou a polí klíčových slov podle priority. Pro každou ze tří dílčích vlastností (titleField, prioritizedKeywordsFields a priorityizedContentFields) je potřeba zadat alespoň jedno pole. Libovolné pole typu Edm.String nebo Collection(Edm.String) lze použít jako součást sémantické konfigurace.

Pokud chcete použít sémantické vyhledávání, musíte 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
name Povinná hodnota. Název sémantické konfigurace.
prioritní pole Povinná hodnota. Popisuje pole názvu, obsahu a klíčového slova, která se mají použít pro sémantické řazení, titulky, zvýraznění a odpovědi. Musí být nastavena alespoň jedna ze tří dílčích vlastností (titleField, priorityizedKeywordsFields 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 s názvem, nechte toto pole prázdné.
prioritizedFields.priorityizedContentFields 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ě 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.priorityizedKeywordsFields 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.

navrhovatelé

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

Atribut Popis
name Povinná hodnota. Jméno navrhovatele.
sourceFields Povinná hodnota. Jedno nebo více řetězcových polí, pro která povolujete automatické dokončování nebo navrhované výsledky.
searchMode Povinné a vždy nastavené na analyzingInfixMatching. Určuje, že ke shodě dojde u libovolného termínu v řetězci dotazu.

vectorSearch

Objekt vectorSearch umožňuje konfiguraci vlastností vektorového vyhledávání. V současné době je možné konfigurovat 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í. Žádné konfigurace odkazované vektorovým polem nelze změnit ani odstranit. Všechny konfigurace, na které se neodkazuje, mohou být změněny nebo odstraněny. Definice vektorového pole (v kolekci polí) musí určovat konfiguraci algoritmu vektorového vyhledávání (prostřednictvím vectorSearchConfiguration vlastnosti), kterou pole používá.

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

hnswParameters

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

Atribut Popis
Metrika Řetězec. Metrika podobnosti, která se má použít pro porovnání vektorů. Pro hnswjsou povolené hodnoty "kosinus", "euklidovské" 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, což zlepšuje výkon dotazů, ale vyžaduje 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čtů.
efSearch Celé číslo. Velikost dynamického seznamu obsahujícího nejbližší sousedy, který se používá během doby 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 efSearch , že se jedná o parametr doby dotazu, lze tuto hodnotu aktualizovat i v případě, že existující pole používá konfiguraci algoritmu.

Viz také