Dela via


Skapa eller uppdatera index (förhandsversion av REST API)

gäller för: 2023-07-01-Preview. Den här versionen stöds inte längre. Uppgradera omedelbart till en nyare version.

Viktig

2023-07-01-Preview lägger till vektorsökning.

  • "vectorSearch" objekt, en konfiguration av vektorsökningsinställningar. Gäller endast algoritmer för vektorsökning.
  • "Collection(Edm.Single)" datatyp som krävs för ett vektorfält. Representerar ett flyttal med enkel precision som primitiv typ.
  • "dimensions" egenskap som krävs för ett vektorfält. Representerar dimensionaliteten för dina vektorbäddningar.
  • "vectorSearchConfiguration" egenskap som krävs för ett vektorfält. Väljer algoritmkonfigurationen för det här fältet.

2021-04-30-Preview lägger till:

  • "semanticConfiguration" används för att omfångsbegränsa semantisk rangordning till specifika fält.
  • "identitet", under "encryptionKey", som används för att hämta en kundhanterad krypteringsnyckel från Azure Key Vault med hjälp av en användartilldelad hanterad identitet.

2020-06-30-Preview lägger till:

  • "normalizers", som används för skiftlägeskänslighet för sortering och filter.

Ett index anger indexschemat, inklusive fältsamlingen (fältnamn, datatyper och attribut), men även andra konstruktioner (förslagsgivare, bedömningsprofiler och CORS-konfiguration) som definierar andra sökbeteenden.

Du kan använda POST eller PUT på en create-begäran. För någon av dem innehåller begärandetexten objektdefinitionen.

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

För uppdateringsbegäranden använder du PUT och anger indexnamnet på URI:n.

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

HTTPS krävs för alla tjänstbegäranden. Om indexet inte finns skapas det. Om den redan finns uppdateras den till den nya definitionen.

Att skapa ett index upprättar schemat och metadata. Att fylla i indexet är en separat åtgärd. I det här steget kan du använda en indexerare (se Indexer-åtgärder, tillgängliga för datakällor som stöds) eller Lägg till, uppdatera eller ta bort dokument. Det maximala antalet index som du kan skapa varierar beroende på prisnivå. Inom varje index finns det gränser för enskilda element. Mer information finns i Service-gränser för Azure AI Search.

Uppdatera ett befintligt index måste innehålla den fullständiga schemadefinitionen, inklusive eventuella ursprungliga definitioner som du vill bevara. I allmänhet är det bästa mönstret för uppdateringar att hämta indexdefinitionen med en GET, ändra den och sedan uppdatera den med PUT.

Eftersom ett befintligt index innehåller innehåll kräver många indexändringar en index släppa och återskapa. Följande schemaändringar är ett undantag från den här regeln:

  • Lägga till nya fält

  • Lägga till eller ändra bedömningsprofiler

  • Lägga till eller ändra semantiska konfigurationer

  • Ändra CORS-alternativ

  • Ändra befintliga fält med någon av följande tre ändringar:

    • Visa eller dölj fält (retrievable: true | false)
    • Ändra analysatorn som används vid frågetillfället (searchAnalyzer)
    • Lägga till eller redigera synonymmappen som används vid frågetillfället (synonymMaps)

Om du vill göra någon av ovanstående schemaändringar i ett befintligt index anger du namnet på indexet på begärande-URI:n och inkluderar sedan en fullständigt angiven indexdefinition med de nya eller ändrade elementen.

När ett nytt fält läggs till har alla befintliga dokument i indexet automatiskt ett null-värde för fältet. Inget extra lagringsutrymme förbrukas förrän någon av två saker inträffar: ett värde anges för det nya fältet (med koppling), eller så läggs nya dokument till.

Uppdateringar av en suggester har liknande begränsningar: nya fält kan läggas till i en suggester samtidigt som fält läggs till, men befintliga fält kan inte tas bort från eller läggas till i suggesters utan att indexet återskapas.

Uppdateringar till en analysator, en tokeniserare, ett tokenfilter eller ett teckenfilter tillåts inte. Nya kan skapas med de ändringar du vill ha, men du måste ta indexet offline när du lägger till de nya analysdefinitionerna. Om du anger flaggan allowIndexDowntime till true i begäran om indexuppdatering kopplas indexet från:

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

Den här åtgärden tar indexet offline i minst några sekunder, vilket innebär att indexering och frågebegäranden misslyckas tills indexet är online igen och är redo att hantera begäranden.

URI-parametrar

Parameter Beskrivning
tjänstnamn Krävs. Ange det här värdet till det unika, användardefinierade namnet på söktjänsten.
indexnamn Krävs på URI:n om du använder PUT. Namnet måste vara gemener, börja med en bokstav eller siffra, ha inga snedstreck eller punkter och vara färre än 128 tecken. Bindestreck kan inte vara i följd.
api-version Krävs. Se API-versioner för fler versioner.
allowIndexDowntime Valfri. Falskt som standard. Ställ in på true för vissa uppdateringar, till exempel att lägga till eller ändra en analysator, tokeniserare, tokenfilter, teckenfilter eller likhetsegenskap. Indexet tas offline under uppdateringen, vanligtvis inte mer än flera sekunder.

Begärandehuvuden

I följande tabell beskrivs de obligatoriska och valfria begäranderubrikerna.

Fält Beskrivning
Innehållstyp Krävs. Ange det här värdet till application/json
api-key Valfritt om du använder Azure-roller och en ägartoken anges i begäran, annars krävs en nyckel. En API-nyckel är en unik, systemgenererad sträng som autentiserar begäran till din söktjänst. Skapa begäranden måste innehålla ett api-key huvud inställt på administratörsnyckeln (till skillnad från en frågenyckel). Mer information finns i Anslut till Azure AI Search med hjälp av nyckelautentisering.

Begärandetext

Brödtexten i begäran innehåller en schemadefinition som innehåller listan över datafält i dokument som matas in i det här indexet.

Följande JSON är en övergripande representation av ett schema som stöder vektorsökning. Ett schema kräver ett nyckelfält och det nyckelfältet kan vara sökbart, filterbart, sorterbart och fasettbart.

Ett vektorsökfält är av typen Collection(Edm.Single). Eftersom vektorfält inte är textbaserade kan ett vektorfält inte användas som en nyckel, och det accepterar inte analysverktyg, normaliserare, förslagsgivare eller synonymer. Den måste ha egenskapen "dimensions" och egenskapen "vectorSearchConfiguration".

Ett schema som stöder vektorsökning kan också stödja nyckelordssökning. Andra icke-bevektorfält i indexet kan använda alla analysverktyg, synonymer och bedömningsprofiler som du inkluderar i ditt index.

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

Begäran innehåller följande egenskaper:

Egenskap Beskrivning
Namn Krävs. Namnet på indexet. Ett indexnamn får bara innehålla gemener, siffror eller bindestreck, kan inte starta eller sluta med bindestreck och är begränsat till 128 tecken.
beskrivning En valfri beskrivning.
fält En samling fält för det här indexet, där varje fält har ett namn, en datatyp som stöds som överensstämmer med entitetsdatamodellen (EDM) och attribut som definierar tillåtna åtgärder i fältet. Fältsamlingen måste ha ett fält av typen Edm.String med "nyckel" inställt på "true". Det här fältet representerar den unika identifieraren, som ibland kallas dokument-ID, för varje dokument som lagras med indexet. Fältsamlingen accepterar nu vektorfält.
likhet Valfri. För tjänster som skapats före 15 juli 2020 anger du den här egenskapen så att den väljer BM25-rankningsalgoritmen.
förslagsgivare Anger en konstruktion som lagrar prefix för matchning på partiella frågor som automatisk komplettering och förslag.
scoringProfiles Valfri. Används för relevansjustering för fulltextfrågor.
semantisk Valfri. Definierar parametrarna för ett sökindex som påverkar semantiska sökfunktioner. En semantisk konfiguration krävs för semantiska frågor. Mer information finns i Skapa en semantisk fråga.
vectorSearch Valfri. Konfigurerar olika inställningar för vektorsökning. Endast vektorsökningsalgoritmer kan konfigureras.
normaliserare Valfri. Normaliserar lexicographical ordning av strängar, producerar skiftlägesokänslig sortering och filtrering utdata.
analysverktyg, charFilters, tokenizers, tokenFilters Valfri. Ange de här avsnitten i indexet om du definierar anpassade analysverktyg. Som standard är dessa avsnitt null.
defaultScoringProfile Namn på en anpassad bedömningsprofil som skriver över standardbedömningsbeteenden.
corsOptions Valfri. Används för frågor mellan ursprung till ditt index.
encryptionKey Valfri. Används för extra kryptering av indexet via kundhanterade krypteringsnycklar (CMK) i Azure Key Vault. Tillgänglig för fakturerbara söktjänster som skapats på eller efter 2019-01-01.

Svar

För en lyckad begäran om att skapa bör du se statuskoden "201 Skapad". Som standard innehåller svarstexten JSON för indexdefinitionen som skapades. Men om begäranderubriken Prefer är inställd på return=minimal är svarstexten tom och statuskoden "204 Inget innehåll" i stället för "201 Skapad". Detta gäller oavsett om PUT eller POST används för att skapa indexet.

För en lyckad uppdateringsbegäran bör du se "204 Inget innehåll". Svarstexten är som standard tom. Men om Prefer begärandehuvudet är inställt på return=representationinnehåller svarstexten JSON för indexdefinitionen som uppdaterades. I det här fallet är statuskoden "200 OK".

Exempel

Exempel: Vektor

Vektorsökning implementeras på fältnivå. Den här definitionen fokuserar på vektorfält. Vektorfält måste vara av typen Collection(Edm.Single) som används för att lagra flyttalsvärden med enkel precision. Vektorfält har egenskapen "dimensions" som innehåller det antal utdatadimensioner som stöds av maskininlärningsmodellen som används för att generera inbäddningar. Om du till exempel använder text-embedding-ada-002 är det maximala antalet utdatadimensioner 1 536 per det här dokumentet. "algorithmConfiguration" är inställt på namnet på konfigurationen "vectorSearch" i ditt index. Du kan definiera flera i indexet och sedan ange ett per fält.

Många attribut gäller endast för icke-bevektorfält. Attribut som "filterable", "sortable", "facetable", "analyzer", "normalizer" och "synonymMaps" ignoreras för vektorfält. På samma sätt ignoreras dessa attribut om du anger egenskaper som endast vektor som "dimensioner" eller "vectorSearchConfiguration" i fält som innehåller alfanumeriskt innehåll.

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

Exempel: Fältsamlingar med vektor- och icke-vektorfält

Vektorsökning implementeras på fältnivå. För att stödja hybridfrågescenarier skapar du fältpar för vektor- och nonvector-frågor. Fälten "title", "titleVector", "content", "contentVector" följer den här konventionen. Om du också vill använda semantisk sökning måste du ha icke-bevektoriska textfält för dessa beteenden.

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

Exempel: Ett indexschema med enkla och komplexa fält

Det första exemplet visar ett fullständigt indexschema med enkla och komplexa fält. Minst ett strängfält måste ha "nyckel" inställt på sant.

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

exempel: Förslagsgivare

En förslagslämnare definition ska ange strängfälten "sökbar" och "hämtningsbar" (i REST-API:erna är alla enkla fält "retrievable": true som standard). När en förslagslämnare har definierats kan du referera till den med namn på frågebegäranden som använder api:et förslag eller API för automatisk komplettering, beroende på om du vill returnera en matchning eller resten av en frågeterm.

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

Exempel: Analysverktyg och normaliserare

Analysverktyg och normaliserare refereras till i fältdefinitioner och kan antingen vara fördefinierade eller anpassade. Om du använder anpassade analysverktyg eller normaliserare anger du dem i indexet i avsnitten "analyzeers" och "normalizers".

I följande exempel visas anpassade analysverktyg och normaliserare för "Taggar". Den visar också en fördefinierad normaliserare (standard) och analysverktyg (en.microsoft) för "HotelName" respektive "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" ]
    }
  ]
}  

Exempel: Likhet för sökrelevans

Den här egenskapen anger rangordningsalgoritmen som används för att skapa en relevanspoäng i sökresultaten för en fulltextsökningsfråga. I tjänster som skapats efter 15 juli 2020 ignoreras den här egenskapen eftersom likhetsalgoritmen alltid är BM25. För befintliga tjänster som skapats före 15 juli 2020 kan du välja BM25 genom att ange den här konstruktionen på följande sätt:

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

exempel: CORS-alternativ

JavaScript på klientsidan kan inte anropa några API:er som standard eftersom webbläsaren förhindrar alla begäranden mellan ursprung. Om du vill tillåta korsande frågor till ditt index aktiverar du CORS (Resursdelning mellan ursprung (Wikipedia)) genom att ange attributet corsOptions. Av säkerhetsskäl stöder endast fråge-API:er CORS.

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

exempel: Krypteringsnycklar med åtkomstautentiseringsuppgifter

Krypteringsnycklar är kundhanterade nycklar som används för extra kryptering. Mer information finns i Kryptering med kundhanterade nycklar i 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)"
        }
    }
} 

exempel: Krypteringsnycklar med hanterad identitet

Du kan autentisera till Azure Key Vault med hjälp av en systemtilldelad eller användartilldelad (förhandsversion) hanterad identitet. I det här fallet utelämnar du åtkomstautentiseringsuppgifter eller anger till null. I följande exempel visas en användartilldelad hanterad identitet. Om du vill använda en systemtilldelad hanterad identitet utelämnar du åtkomstautentiseringsuppgifter och identitet. Så länge systemidentiteten för söktjänsten har behörigheter i Azure Key Vault bör anslutningsbegäran lyckas.

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

exempel: Bedömningsprofiler

En bedömningsprofil är ett avsnitt i schemat som definierar anpassade bedömningsbeteenden som gör att du kan påverka vilka dokument som visas högre i sökresultaten. Bedömningsprofiler består av fältvikter och funktioner. Om du vill använda dem anger du en profil efter namn på frågesträngen. Mer information finns i Lägga till bedömningsprofiler i ett sökindex (Azure AI Search REST API) för mer information.

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

Exempel: Semantiska konfigurationer

En semantisk konfiguration är en del av en indexdefinition som används för att konfigurera vilka fält som används av semantisk sökning efter rangordning, bildtexter, markeringar och svar. Om du vill använda semantisk sökning måste du ange namnet på en semantisk konfiguration vid frågetillfället. Mer information finns i Skapa en semantisk fråga.

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

Definitioner

Länk Beskrivning
corsOptions Visar en lista över de domäner eller ursprung som har beviljats till ditt index.
defaultScoringProfile Namn på en anpassad bedömningsprofil som skriver över standardbedömningsbeteenden.
encryptionKey Konfigurerar en anslutning till Azure Key Vault för kundhanterad kryptering.
fält Anger definitioner och attribut för ett fält i ett sökindex.
normaliserare Konfigurerar en anpassad normaliserare. Normaliserar lexicographical ordning av strängar, producerar skiftlägesokänslig sortering, fasettering och filtrering utdata.
semantisk Konfigurerar fält som används av semantisk sökning efter rangordning, bildtexter, markeringar och svar.
scoringProfiles Används för relevansjustering för fulltextfrågor.
likhet
förslagsgivare Konfigurerar intern prefixlagring för matchning på partiella frågor som automatisk komplettering och förslag.
vectorSearch Konfigurerar algoritmen som används för vektorfält.

corsOptions

JavaScript på klientsidan kan inte anropa några API:er som standard eftersom webbläsaren förhindrar alla begäranden mellan ursprung. Om du vill tillåta korsande frågor till ditt index aktiverar du CORS (Resursdelning mellan ursprung) genom att ange attributet "corsOptions". Av säkerhetsskäl stöder endast fråge-API:er CORS.

Attribut Beskrivning
allowedOrigins Krävs. En kommaavgränsad lista över ursprung som beviljas åtkomst till ditt index, där varje ursprung vanligtvis är av formuläret protocol://<fullständigt kvalificerade domännamnet>:<port> (även om <port> utelämnas ofta). Det innebär att javascript-kod som hanteras från dessa ursprung tillåts köra frågor mot ditt index (förutsatt att det innehåller en giltig API-nyckel). Om du vill tillåta åtkomst till alla ursprung anger du * som ett enda objekt i matrisen "allowedOrigins". Detta rekommenderas inte för produktion, men kan vara användbart för utveckling eller felsökning.
maxAgeInSeconds Valfri. Webbläsare använder det här värdet för att fastställa varaktigheten (i sekunder) för att cachelagras CORS-förljussvar. Detta måste vara ett icke-negativt heltal. Prestanda förbättras om det här värdet är större, men dessa vinster kompenseras av den tid som krävs för att CORS-principändringar ska börja gälla. Om den inte har angetts används en standardvaraktighet på 5 minuter.

defaultScoringProfile

Valfri. En sträng som är namnet på en anpassad bedömningsprofil som definierats i indexet. En standardprofil anropas när en anpassad profil inte uttryckligen anges i frågesträngen. Mer information finns i Lägg till bedömningsprofiler i ett sökindex.

encryptionKey

Konfigurerar en anslutning till Azure Key Vault för kompletterande kundhanterade krypteringsnycklar (CMK). Tillgänglig för fakturerbara söktjänster som skapats den 1 januari 2019 eller senare.

En anslutning till nyckelvalvet måste autentiseras. Du kan använda antingen "accessCredentials" eller en hanterad identitet för detta ändamål.

Hanterade identiteter kan vara system- eller användartilldelade (förhandsversion). Om söktjänsten har både en systemtilldelad hanterad identitet och en rolltilldelning som ger läsåtkomst till nyckelvalvet kan du utelämna både "identitet" och "accessCredentials", och begäran autentiseras med hjälp av den hanterade identiteten. Om söktjänsten har användartilldelad identitet och rolltilldelning anger du egenskapen "identitet" till resurs-ID:t för den identiteten.

Attribut Beskrivning
keyVaultKeyName Krävs. Namnet på Azure Key Vault-nyckeln som används för kryptering.
keyVaultKeyVersion Krävs. Version av Azure Key Vault-nyckeln.
keyVaultUri Krävs. URI för Azure Key Vault (kallas även DNS-namn) som tillhandahåller nyckeln. Ett exempel på en URI kan vara https://my-keyvault-name.vault.azure.net
accessCredentials Valfri. Utelämna den här egenskapen om du använder en hanterad identitet. I annat fall omfattar egenskaperna för "accessCredentials" :
"applicationId" (ett Azure Active Directory-program-ID som har åtkomstbehörighet till ditt angivna Azure Key Vault).
"applicationSecret" (autentiseringsnyckeln för det angivna Azure AD-programmet).
identitet Valfritt om du inte använder en användartilldelad hanterad identitet för söktjänstens anslutning till Azure Key Vault. Formatet är "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]".

Fält

Innehåller information om attribut i en fältdefinition.

Attribut Beskrivning
Namn Krävs. Anger namnet på fältet, som måste vara unikt i fältsamlingen för indexet eller det överordnade fältet.
typ Krävs. Anger datatypen för fältet. Fält kan vara enkla eller komplexa. Enkla fält är av primitiva typer, till exempel Edm.String för text eller Edm.Int32 för heltal. Komplexa fält kan ha underfält som själva är enkla eller komplexa. På så sätt kan du modellera objekt och matriser med objekt, vilket i sin tur gör att du kan ladda upp de flesta JSON-objektstrukturer till ditt index. Collection(Edm.Single) rymmer flyttalsvärden med enkel precision. Den används endast för vektorfält och krävs. Se datatyper som stöds för en fullständig lista över typer som stöds.
nyckel Krävs. Ange det här attributet till true för att ange att ett fälts värden unikt identifierar dokument i indexet. Den maximala längden på värden i ett nyckelfält är 1 024 tecken. Exakt ett fält på den översta nivån i varje index måste väljas som nyckelfält och det måste vara av typen Edm.String. Standardvärdet är false för enkla fält och null för komplexa fält.

Nyckelfält kan användas för att söka efter dokument direkt och uppdatera eller ta bort specifika dokument. Värdena för nyckelfält hanteras på ett skiftlägeskänsligt sätt när du letar upp eller indexerar dokument. Mer information finns i Lookup Document and Add, Update or Delete Documents (Lägg till, uppdatera eller ta bort dokument).
hämtningsbar Anger om fältet kan returneras i ett sökresultat. Ange det här attributet till false om du vill använda ett fält (till exempel marginal) som ett filter, sortering eller bedömningsmekanism men inte vill att fältet ska vara synligt för slutanvändaren. Det här attributet måste vara true för nyckelfält, och det måste vara null för komplexa fält. Det här attributet kan ändras i befintliga fält. Om du ställer in hämtningsbar till true leder det inte till någon ökning av indexlagringskraven. Standardvärdet är true för enkla fält och null för komplexa fält.
sökbar Anger om fältet är sökbart i fulltext och kan refereras till i sökfrågor. Det innebär att den genomgår lexikal analys till exempel ordbrytning under indexering. Om du anger ett sökbart fält till ett värde som "Sunny day" normaliseras det internt till de enskilda tokens "sunny" och "day". Detta möjliggör fulltextsökningar för dessa termer. Fält av typen Edm.String eller Collection(Edm.String) är sökbara som standard. Det här attributet måste vara false för enkla fält av andra datatyper som inte är datatyper, och det måste vara null för komplexa fält.

Ett sökbart fält förbrukar extra utrymme i ditt index eftersom Azure AI Search bearbetar innehållet i dessa fält och organiserar dem i hjälpdatastrukturer för att utföra sökning. Om du vill spara utrymme i indexet och du inte behöver ett fält som ska inkluderas i sökningar anger du sökbart till false. Mer information finns i Så här fungerar fulltextsökning i Azure AI Search.
filterbar Anger om fältet ska refereras i $filter frågor. Filterable skiljer sig från sökbara i hur strängar hanteras. Fält av typen Edm.String eller Collection(Edm.String) som är filterbara genomgår inte lexikal analys, så jämförelser är endast för exakta matchningar. Om du till exempel anger ett sådant fält f till "Solig dag" hittar $filter=f eq 'sunny' inga matchningar, men $filter=f eq 'Sunny day' kommer att göra det. Det här attributet måste vara null för komplexa fält. Standardvärdet är true för enkla fält och null för komplexa fält. Om du vill minska indexstorleken anger du det här attributet till false på fält som du inte filtrerar på.
Sorterbar Anger om fältet ska refereras till i $orderby uttryck. Som standard sorterar Azure AI Search resultat efter poäng, men i många upplevelser vill användarna sortera efter fält i dokumenten. Ett enkelt fält kan bara sorteras om det är envärdesvärde (det har ett enda värde i omfånget för det överordnade dokumentet).

Enkla samlingsfält kan inte sorteras eftersom de är flervärdesfält. Enkla underfält för komplexa samlingar är också flervärdesbaserade och kan därför inte sorteras. Detta gäller oavsett om det är ett omedelbart överordnat fält eller ett överordnat fält, som är den komplexa samlingen. Komplexa fält kan inte sorteras och det sorterbara attributet måste vara null för sådana fält. Standardvärdet för sorterbar är true för enkla fält med enkelvärde, false för enkla fält med flera värden och null för komplexa fält.
facetable Anger om fältet ska refereras till i fasetterade frågor. Används vanligtvis i en presentation av sökresultat som inkluderar antal träffar per kategori (till exempel söka efter digitalkameror och se träffar efter varumärke, megapixlar, pris och så vidare). Det här attributet måste vara null för komplexa fält. Fält av typen Edm.GeographyPoint eller Collection(Edm.GeographyPoint) kan inte vara fasettbara. Standardvärdet är true för alla andra enkla fält. Om du vill minska indexstorleken anger du det här attributet till false på fält som du inte fasetterar på.
Analyzer Anger den lexikala analysatorn för tokenisering av strängar under indexerings- och frågeåtgärder. Giltiga värden för den här egenskapen omfattar språkanalysverktyg, inbyggda analysverktygoch anpassade analysverktyg. Standardvärdet är standard.lucene. Det här attributet kan bara användas med sökbara fält, och det kan inte anges tillsammans med antingen searchAnalyzer eller indexAnalyzer. När analysatorn har valts och fältet har skapats i indexet kan det inte ändras för fältet. Måste vara null för komplexa fält.
searchAnalyzer Ange den här egenskapen tillsammans med indexAnalyzer för att ange olika lexikala analysverktyg för indexering och frågor. Om du använder den här egenskapen anger du analyzer till null och kontrollerar att indexAnalyzer är inställt på ett tillåtet värde. Giltiga värden för den här egenskapen omfattar inbyggda analysverktyg och anpassade analysverktyg. Det här attributet kan endast användas med sökbara fält. Sökanalysen kan uppdateras i ett befintligt fält eftersom den endast används vid frågetillfället. Måste vara null för komplexa fält.
indexAnalyzer Ange den här egenskapen tillsammans med searchAnalyzer för att ange olika lexikala analysverktyg för indexering och frågor. Om du använder den här egenskapen anger du analyzer till null och kontrollerar att searchAnalyzer är inställt på ett tillåtet värde. Giltiga värden för den här egenskapen omfattar inbyggda analysverktyg och anpassade analysverktyg. Det här attributet kan endast användas med sökbara fält. När indexanalysatorn har valts kan den inte ändras för fältet. Måste vara null för komplexa fält.
Normalizer Anger normaliseraren för filtrerings-, sorterings- och fasetteringsåtgärder. Det kan vara namnet på en fördefinierad normaliserare eller en anpassad normaliserare som definierats i indexet. Standardvärdet är null, vilket resulterar i en exakt matchning av ordagrann, oanalyserad text. Det här attributet kan endast användas med Edm.String och Collection(Edm.String) fält som har minst ett av filtreringsbara, sorterbara eller facetable inställda på true. En normaliserare kan bara anges i fältet när den läggs till i indexet och kan inte ändras senare. Måste vara null för komplexa fält. Giltiga värden för en fördefinierad normaliserare är:

standard– Gemener texten följt av asciifolding.
lowercase– Omvandlar tecken till gemener.
uppercase – Omvandlar tecken till versaler.
asciifolding – Omvandlar tecken som inte finns i Basic Latin Unicode-blocket till deras ASCII-motsvarighet, om det finns något. Du kan till exempel ändra "à" till "a".
elision– Tar bort elision från början av token.
synonymMaps En lista över namnen på synonymkartor som ska associeras med det här fältet. Det här attributet kan endast användas med sökbara fält. För närvarande stöds endast en synonymkarta per fält. Om du tilldelar en synonymkarta till ett fält ser du till att frågetermer som riktar sig mot det fältet expanderas vid frågetillfället med hjälp av reglerna i synonymkartan. Det här attributet kan ändras i befintliga fält. Måste vara null eller en tom samling för komplexa fält.
Fält En lista över underfält om det här är ett fält av typen Edm.ComplexType eller Collection(Edm.ComplexType). Måste vara null eller tom för enkla fält. Mer information om hur och när du ska använda underfält finns i Så här modellerar du komplexa datatyper i Azure AI Search.
mått Heltal. Krävs för vektorfält. **Detta måste matcha inbäddningsstorleken för utdata för inbäddningsmodellen. För en populär Azure OpenAI-modell text-embedding-ada-002är dess utdatadimensioner till exempel 1536, så det här är de dimensioner som ska anges för det vektorfältet. Dimensionsattributet har minst 2 och högst 2 048 flyttalsvärden vardera.
vectorSearchConfiguration Krävs för definitioner av vektorfält. Anger namnet på algoritmkonfigurationen "vectorSearch" som används av vektorfältet. När fältet har skapats kan du inte ändra namnet på vectorSearchConfiguration, men du kan ändra egenskaperna för algoritmkonfigurationen i indexet. Detta möjliggör justeringar av algoritmtypen och parametrarna.

Not

Fält av typen Edm.String som är filterbara, sorterbara eller fasettbara kan vara högst 32 kilobyte långa. Det beror på att värden för sådana fält behandlas som en enda sökterm och att den maximala längden på en term i Azure AI Search är 32 kilobyte. Om du behöver lagra mer text än detta i ett enda strängfält måste du uttryckligen ange filtreringsbar, sorterbar och facetable för att false i indexdefinitionen.

Att ange ett fält som sökbart, filterbart, sorterbart eller fasettbart påverkar indexstorleken och frågeprestandan. Ange inte attributen för fält som inte är avsedda att refereras till i frågeuttryck.

Om ett fält inte är inställt på att vara sökbart, filterbart, sorterbart eller fasettbart kan fältet inte refereras till i något frågeuttryck. Detta är användbart för fält som inte används i frågor, men som behövs i sökresultaten.

normalizers

Definierar en anpassad normaliserare som har en användardefinierad kombination av teckenfilter och tokenfilter. När du har definierat en anpassad normaliserare i indexet kan du ange den med namn på en fältdefinition.

Attribut Beskrivning
Namn Krävs. Strängfält som anger antingen en användardefinierad anpassad normaliserare.
charFilters Används i en anpassad normaliserare. Det kan vara ett eller flera tillgängliga teckenfilter stöds för användning i en anpassad normaliserare:
mappning
pattern_replace
tokenFilters Används i en anpassad normaliserare. Det kan vara en eller flera av de tillgängliga tokenlutningarna som stöds för användning i en anpassad normaliserare:
arabic_normalization
asciifolding
cjk_width
elision
german_normalization
hindi_normalization
indic_normalization
persian_normalization
scandinavian_normalization
scandinavian_folding
sorani_normalization
gemener
versaler

scoringProfiles

Bedömningsprofiler gäller för fulltextsökning. En profil definieras i ett index och anger anpassad logik som kan tilldela högre sökpoäng till matchande dokument som uppfyller de kriterier som definierats i profilen. Du kan skapa flera bedömningsprofiler och sedan tilldela den du vill ha till en fråga.

Om du skapar en anpassad profil kan du göra den till standard genom att ange defaultScoringProfile. Mer information finns i Lägg till bedömningsprofiler i ett sökindex.

semantisk

En semantisk konfiguration är en del av en indexdefinition som används för att konfigurera vilka fält som används av semantisk sökning efter rangordning, bildtexter, markeringar och svar. Semantiska konfigurationer består av ett rubrikfält, prioriterade innehållsfält och prioriterade nyckelordsfält. Minst ett fält måste anges för vart och ett av de tre underegenskaperna (titleField, prioritizedKeywordsFields och prioritizedContentFields). Alla fält av typen Edm.String eller Collection(Edm.String) kan användas som en del av en semantisk konfiguration.

Om du vill använda semantisk sökning måste du ange namnet på en semantisk konfiguration vid frågetillfället. Mer information finns i Skapa en semantisk fråga.

{
   "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": "..."
             }
           ]
         }
       }
     ]
   }
}
Attribut Beskrivning
Namn Krävs. Namnet på den semantiska konfigurationen.
prioritizedFields Krävs. Beskriver de rubrik-, innehålls- och nyckelordsfält som ska användas för semantisk rangordning, undertexter, markeringar och svar. Minst en av de tre underegenskaperna (titleField, prioritizedKeywordsFields och prioritizedContentFields) måste anges.
prioritizedFields.titleField Definierar det rubrikfält som ska användas för semantisk rangordning, undertexter, markeringar och svar. Om du inte har något rubrikfält i indexet lämnar du det tomt.
prioritizedFields.prioritizedContentFields Definierar de innehållsfält som ska användas för semantisk rangordning, undertexter, markeringar och svar. För bästa resultat bör de markerade fälten innehålla text i naturligt språk. Ordningen på fälten i matrisen representerar deras prioritet. Fält med lägre prioritet kan trunkeras om innehållet är långt.
prioritizedFields.prioritizedKeywordsFields Definierar nyckelordsfälten som ska användas för semantisk rangordning, undertexter, markeringar och svar. För bästa resultat bör de markerade fälten innehålla en lista med nyckelord. Ordningen på fälten i matrisen representerar deras prioritet. Fält med lägre prioritet kan trunkeras om innehållet är långt.

likhet

Valfri egenskap som gäller för tjänster som skapats före den 15 juli 2020. För dessa tjänster kan du ange att den här egenskapen ska använda BM25-rankningsalgoritmen som introducerades i juli 2020. Giltiga värden inkluderar "#Microsoft.Azure.Search.ClassicSimilarity" (föregående standard) eller "#Microsoft.Azure.Search.BM25Similarity".

För alla tjänster som skapats efter juli 2020 har inställningen av den här egenskapen ingen effekt. Alla nyare tjänster använder BM25 som den enda rangordningsalgoritmen för fulltextsökning. Mer information finns i Ranking-algoritmer i Azure AI Search.

förslagsgivare

Anger en konstruktion som lagrar prefix för matchning på partiella frågor som automatisk komplettering och förslag.

Attribut Beskrivning
Namn Krävs. Namnet på förslagsverktyget.
sourceFields Krävs. Ett eller flera strängfält där du aktiverar automatisk komplettering eller föreslagna resultat.
searchMode Krävs och anges alltid till analyzingInfixMatching. Den anger att matchning sker på valfri term i frågesträngen.

vectorSearch

VectorSearch-objektet tillåter konfiguration av egenskaper för vektorsökning. Endast algoritmkonfigurationer kan konfigureras för närvarande. Detta möjliggör konfiguration av algoritmtyp och algoritmparametrar som används för vektorfält. Du kan ha flera konfigurationer. Konfigurationer som refereras till av ett vektorfält kan inte ändras eller tas bort. Alla konfigurationer som inte refereras kan ändras eller tas bort. En vektorfältdefinition (i fältsamlingen) måste ange vilken algoritmkonfiguration för vektorsökning (via egenskapen vectorSearchConfiguration) som fältet använder.

"vectorSearch": {
    "algorithmConfigurations": [
        {
            "name": "my-vector-config",
            "kind": "hnsw",
            "hnswParameters": {
                "m": 4,
                "efConstruction": 400,
                "efSearch": 500,
                "metric": "cosine"
            }
        }
    ]
}
Attribut Beskrivning
Namn Krävs. Namnet på algoritmkonfigurationen.
sort Den algoritmtyp som ska användas. Endast "hnsw" stöds, vilket är HNSW-algoritmen (Hierarchical Navigable Small World).
hnswParameters Valfri. Parametrar för algoritmen "hnsw". Om det här objektet utelämnas används standardvärden.

hnswParameters

Det här objektet innehåller anpassningarna till hnsw algoritmparametrar. Alla egenskaper är valfria och standardvärden används om några utelämnas.

Attribut Beskrivning
metrisk Sträng. Likhetsmåttet som ska användas för vektorjämförelser. För hnswär de tillåtna värdena "cosinus", "euclidean" och "dotProduct". Standardvärdet är "cosiné".
m Heltal. Antalet dubbelriktade länkar som skapats för varje nytt element under konstruktionen. Standardvärdet är 4. Det tillåtna intervallet är 4 till 10. Större värden leder till tätare grafer, vilket förbättrar frågeprestanda, men kräver mer minne och beräkning.
efConstruction Heltal. Storleken på den dynamiska listan för närmaste grannar som används under indexeringen. Standardvärdet är 400. Det tillåtna intervallet är 100 till 1 000.Större värden leder till bättre indexkvalitet, men kräver mer minne och beräkning.
efSearch Heltal. Storleken på den dynamiska listan som innehåller närmaste grannar, som används under söktiden. Standardvärdet är 500. Det tillåtna intervallet är 100 till 1 000. Om du ökar den här parametern kan sökresultaten förbättras, men frågeprestandan försämras.

Eftersom efSearch är en frågetidsparameter kan det här värdet uppdateras även om ett befintligt fält använder en algoritmkonfiguration.

Se även